@soxa-ui/setup 0.0.0-stage → 0.3.0-beta.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/LICENSE +21 -0
- package/README.md +63 -2
- package/dist/content/descriptors/components/accordion/accordion.descriptor.d.ts +205 -0
- package/dist/content/descriptors/components/accordion/accordion.descriptor.js +80 -0
- package/dist/content/descriptors/components/accordion/collection.descriptor.d.ts +76 -0
- package/dist/content/descriptors/components/accordion/collection.descriptor.js +60 -0
- package/dist/content/descriptors/components/accordion/index.d.ts +3 -0
- package/dist/content/descriptors/components/accordion/item.descriptor.d.ts +244 -0
- package/dist/content/descriptors/components/accordion/item.descriptor.js +93 -0
- package/dist/content/descriptors/components/button.descriptor.d.ts +192 -0
- package/dist/content/descriptors/components/button.descriptor.js +39 -0
- package/dist/content/descriptors/components/calendar/calendar.descriptor.d.ts +261 -0
- package/dist/content/descriptors/components/calendar/calendar.descriptor.js +142 -0
- package/dist/content/descriptors/components/calendar/collection.descriptor.d.ts +85 -0
- package/dist/content/descriptors/components/calendar/collection.descriptor.js +88 -0
- package/dist/content/descriptors/components/calendar/index.d.ts +3 -0
- package/dist/content/descriptors/components/calendar/item.descriptor.d.ts +154 -0
- package/dist/content/descriptors/components/calendar/item.descriptor.js +65 -0
- package/dist/content/descriptors/components/check-box.descriptor.d.ts +227 -0
- package/dist/content/descriptors/components/check-box.descriptor.js +65 -0
- package/dist/content/descriptors/components/clearable.descriptor.d.ts +213 -0
- package/dist/content/descriptors/components/clearable.descriptor.js +51 -0
- package/dist/content/descriptors/components/collection/collection.descriptor.d.ts +47 -0
- package/dist/content/descriptors/components/collection/collection.descriptor.js +67 -0
- package/dist/content/descriptors/components/collection/index.d.ts +1 -0
- package/dist/content/descriptors/components/component-view.descriptor.d.ts +110 -0
- package/dist/content/descriptors/components/component-view.descriptor.js +103 -0
- package/dist/content/descriptors/components/component.descriptor.d.ts +31 -0
- package/dist/content/descriptors/components/component.descriptor.js +22 -0
- package/dist/content/descriptors/components/control.descriptor.d.ts +135 -0
- package/dist/content/descriptors/components/control.descriptor.js +33 -0
- package/dist/content/descriptors/components/date-input.descriptor.d.ts +319 -0
- package/dist/content/descriptors/components/date-input.descriptor.js +171 -0
- package/dist/content/descriptors/components/date-picker.descriptor.d.ts +445 -0
- package/dist/content/descriptors/components/date-picker.descriptor.js +255 -0
- package/dist/content/descriptors/components/dialog.descriptor.d.ts +256 -0
- package/dist/content/descriptors/components/dialog.descriptor.js +94 -0
- package/dist/content/descriptors/components/drag-and-drop.descriptor.d.ts +49 -0
- package/dist/content/descriptors/components/drag-and-drop.descriptor.js +32 -0
- package/dist/content/descriptors/components/drawer.descriptor.d.ts +244 -0
- package/dist/content/descriptors/components/drawer.descriptor.js +83 -0
- package/dist/content/descriptors/components/entity.descriptor.d.ts +39 -0
- package/dist/content/descriptors/components/entity.descriptor.js +37 -0
- package/dist/content/descriptors/components/field.descriptor.d.ts +192 -0
- package/dist/content/descriptors/components/field.descriptor.js +109 -0
- package/dist/content/descriptors/components/frame.descriptor.d.ts +191 -0
- package/dist/content/descriptors/components/frame.descriptor.js +66 -0
- package/dist/content/descriptors/components/icon.descriptor.d.ts +129 -0
- package/dist/content/descriptors/components/icon.descriptor.js +41 -0
- package/dist/content/descriptors/components/index.d.ts +50 -0
- package/dist/content/descriptors/components/input-control.descriptor.d.ts +176 -0
- package/dist/content/descriptors/components/input-control.descriptor.js +32 -0
- package/dist/content/descriptors/components/input.descriptor.d.ts +241 -0
- package/dist/content/descriptors/components/input.descriptor.js +62 -0
- package/dist/content/descriptors/components/interactive.descriptor.d.ts +100 -0
- package/dist/content/descriptors/components/interactive.descriptor.js +30 -0
- package/dist/content/descriptors/components/item-group.descriptor.d.ts +113 -0
- package/dist/content/descriptors/components/item-group.descriptor.js +44 -0
- package/dist/content/descriptors/components/item-row.descriptor.d.ts +199 -0
- package/dist/content/descriptors/components/item-row.descriptor.js +25 -0
- package/dist/content/descriptors/components/label.descriptor.d.ts +130 -0
- package/dist/content/descriptors/components/label.descriptor.js +41 -0
- package/dist/content/descriptors/components/layer.descriptor.d.ts +99 -0
- package/dist/content/descriptors/components/layer.descriptor.js +27 -0
- package/dist/content/descriptors/components/list-box/collection.descriptor.d.ts +113 -0
- package/dist/content/descriptors/components/list-box/collection.descriptor.js +96 -0
- package/dist/content/descriptors/components/list-box/group.descriptor.d.ts +115 -0
- package/dist/content/descriptors/components/list-box/group.descriptor.js +21 -0
- package/dist/content/descriptors/components/list-box/index.d.ts +4 -0
- package/dist/content/descriptors/components/list-box/item.descriptor.d.ts +219 -0
- package/dist/content/descriptors/components/list-box/item.descriptor.js +66 -0
- package/dist/content/descriptors/components/list-box/list-box.descriptor.d.ts +253 -0
- package/dist/content/descriptors/components/list-box/list-box.descriptor.js +106 -0
- package/dist/content/descriptors/components/list.d.ts +40 -0
- package/dist/content/descriptors/components/list.js +38 -0
- package/dist/content/descriptors/components/menu/checkbox-item.descriptor.d.ts +226 -0
- package/dist/content/descriptors/components/menu/checkbox-item.descriptor.js +43 -0
- package/dist/content/descriptors/components/menu/collection.descriptor.d.ts +201 -0
- package/dist/content/descriptors/components/menu/collection.descriptor.js +101 -0
- package/dist/content/descriptors/components/menu/group.descriptor.d.ts +112 -0
- package/dist/content/descriptors/components/menu/group.descriptor.js +18 -0
- package/dist/content/descriptors/components/menu/index.d.ts +10 -0
- package/dist/content/descriptors/components/menu/item.descriptor.d.ts +195 -0
- package/dist/content/descriptors/components/menu/item.descriptor.js +45 -0
- package/dist/content/descriptors/components/menu/menu.descriptor.d.ts +262 -0
- package/dist/content/descriptors/components/menu/menu.descriptor.js +177 -0
- package/dist/content/descriptors/components/menu/popover-item.descriptor.d.ts +278 -0
- package/dist/content/descriptors/components/menu/popover-item.descriptor.js +87 -0
- package/dist/content/descriptors/components/menu/radio-group.descriptor.d.ts +134 -0
- package/dist/content/descriptors/components/menu/radio-group.descriptor.js +30 -0
- package/dist/content/descriptors/components/menu/radio-item.descriptor.d.ts +236 -0
- package/dist/content/descriptors/components/menu/radio-item.descriptor.js +51 -0
- package/dist/content/descriptors/components/menu/separator.descriptor.d.ts +87 -0
- package/dist/content/descriptors/components/menu/separator.descriptor.js +17 -0
- package/dist/content/descriptors/components/menu/submenu.descriptor.d.ts +336 -0
- package/dist/content/descriptors/components/menu/submenu.descriptor.js +144 -0
- package/dist/content/descriptors/components/modal-layer.descriptor.d.ts +197 -0
- package/dist/content/descriptors/components/modal-layer.descriptor.js +101 -0
- package/dist/content/descriptors/components/number-input.descriptor.d.ts +353 -0
- package/dist/content/descriptors/components/number-input.descriptor.js +209 -0
- package/dist/content/descriptors/components/pagination/collection.descriptor.d.ts +54 -0
- package/dist/content/descriptors/components/pagination/collection.descriptor.js +55 -0
- package/dist/content/descriptors/components/pagination/index.d.ts +3 -0
- package/dist/content/descriptors/components/pagination/item.descriptor.d.ts +156 -0
- package/dist/content/descriptors/components/pagination/item.descriptor.js +68 -0
- package/dist/content/descriptors/components/pagination/pagination.descriptor.d.ts +265 -0
- package/dist/content/descriptors/components/pagination/pagination.descriptor.js +152 -0
- package/dist/content/descriptors/components/popover.descriptor.d.ts +231 -0
- package/dist/content/descriptors/components/popover.descriptor.js +156 -0
- package/dist/content/descriptors/components/progress-linear.descriptor.d.ts +165 -0
- package/dist/content/descriptors/components/progress-linear.descriptor.js +43 -0
- package/dist/content/descriptors/components/progress-spinner.descriptor.d.ts +161 -0
- package/dist/content/descriptors/components/progress-spinner.descriptor.js +36 -0
- package/dist/content/descriptors/components/progress.descriptor.d.ts +149 -0
- package/dist/content/descriptors/components/progress.descriptor.js +53 -0
- package/dist/content/descriptors/components/radio-group/collection.descriptor.d.ts +70 -0
- package/dist/content/descriptors/components/radio-group/collection.descriptor.js +56 -0
- package/dist/content/descriptors/components/radio-group/index.d.ts +3 -0
- package/dist/content/descriptors/components/radio-group/item.descriptor.d.ts +193 -0
- package/dist/content/descriptors/components/radio-group/item.descriptor.js +47 -0
- package/dist/content/descriptors/components/radio-group/radio-group.descriptor.d.ts +197 -0
- package/dist/content/descriptors/components/radio-group/radio-group.descriptor.js +66 -0
- package/dist/content/descriptors/components/rating.descriptor.d.ts +233 -0
- package/dist/content/descriptors/components/rating.descriptor.js +89 -0
- package/dist/content/descriptors/components/scroller.descriptor.d.ts +208 -0
- package/dist/content/descriptors/components/scroller.descriptor.js +91 -0
- package/dist/content/descriptors/components/select/collection.descriptor.d.ts +135 -0
- package/dist/content/descriptors/components/select/collection.descriptor.js +119 -0
- package/dist/content/descriptors/components/select/group.descriptor.d.ts +115 -0
- package/dist/content/descriptors/components/select/group.descriptor.js +21 -0
- package/dist/content/descriptors/components/select/index.d.ts +4 -0
- package/dist/content/descriptors/components/select/item.descriptor.d.ts +210 -0
- package/dist/content/descriptors/components/select/item.descriptor.js +56 -0
- package/dist/content/descriptors/components/select/select.descriptor.d.ts +454 -0
- package/dist/content/descriptors/components/select/select.descriptor.js +267 -0
- package/dist/content/descriptors/components/skeleton.descriptor.d.ts +127 -0
- package/dist/content/descriptors/components/skeleton.descriptor.js +53 -0
- package/dist/content/descriptors/components/slider.descriptor.d.ts +298 -0
- package/dist/content/descriptors/components/slider.descriptor.js +205 -0
- package/dist/content/descriptors/components/stylable.descriptor.d.ts +126 -0
- package/dist/content/descriptors/components/stylable.descriptor.js +52 -0
- package/dist/content/descriptors/components/switch.descriptor.d.ts +217 -0
- package/dist/content/descriptors/components/switch.descriptor.js +53 -0
- package/dist/content/descriptors/components/table/collection.descriptor.d.ts +183 -0
- package/dist/content/descriptors/components/table/collection.descriptor.js +178 -0
- package/dist/content/descriptors/components/table/column.descriptor.d.ts +237 -0
- package/dist/content/descriptors/components/table/column.descriptor.js +173 -0
- package/dist/content/descriptors/components/table/index.d.ts +4 -0
- package/dist/content/descriptors/components/table/row.descriptor.d.ts +166 -0
- package/dist/content/descriptors/components/table/row.descriptor.js +75 -0
- package/dist/content/descriptors/components/table/table.descriptor.d.ts +271 -0
- package/dist/content/descriptors/components/table/table.descriptor.js +164 -0
- package/dist/content/descriptors/components/tabs/collection.descriptor.d.ts +72 -0
- package/dist/content/descriptors/components/tabs/collection.descriptor.js +59 -0
- package/dist/content/descriptors/components/tabs/content.descriptor.d.ts +136 -0
- package/dist/content/descriptors/components/tabs/content.descriptor.js +52 -0
- package/dist/content/descriptors/components/tabs/index.d.ts +4 -0
- package/dist/content/descriptors/components/tabs/item.descriptor.d.ts +213 -0
- package/dist/content/descriptors/components/tabs/item.descriptor.js +67 -0
- package/dist/content/descriptors/components/tabs/tabs.descriptor.d.ts +220 -0
- package/dist/content/descriptors/components/tabs/tabs.descriptor.js +105 -0
- package/dist/content/descriptors/components/tags/collection.descriptor.d.ts +79 -0
- package/dist/content/descriptors/components/tags/collection.descriptor.js +63 -0
- package/dist/content/descriptors/components/tags/index.d.ts +3 -0
- package/dist/content/descriptors/components/tags/item.descriptor.d.ts +216 -0
- package/dist/content/descriptors/components/tags/item.descriptor.js +73 -0
- package/dist/content/descriptors/components/tags/tags.descriptor.d.ts +240 -0
- package/dist/content/descriptors/components/tags/tags.descriptor.js +109 -0
- package/dist/content/descriptors/components/textable.descriptor.d.ts +147 -0
- package/dist/content/descriptors/components/textable.descriptor.js +24 -0
- package/dist/content/descriptors/components/textarea.descriptor.d.ts +249 -0
- package/dist/content/descriptors/components/textarea.descriptor.js +95 -0
- package/dist/content/descriptors/components/toasts/collection.descriptor.d.ts +59 -0
- package/dist/content/descriptors/components/toasts/collection.descriptor.js +39 -0
- package/dist/content/descriptors/components/toasts/index.d.ts +3 -0
- package/dist/content/descriptors/components/toasts/item.descriptor.d.ts +173 -0
- package/dist/content/descriptors/components/toasts/item.descriptor.js +106 -0
- package/dist/content/descriptors/components/toasts/toasts.descriptor.d.ts +167 -0
- package/dist/content/descriptors/components/toasts/toasts.descriptor.js +94 -0
- package/dist/content/descriptors/components/tooltip.descriptor.d.ts +156 -0
- package/dist/content/descriptors/components/tooltip.descriptor.js +83 -0
- package/dist/content/descriptors/components/value-control.descriptor.d.ts +151 -0
- package/dist/content/descriptors/components/value-control.descriptor.js +36 -0
- package/dist/content/descriptors/components/virtual.descriptor.d.ts +55 -0
- package/dist/content/descriptors/components/virtual.descriptor.js +37 -0
- package/dist/content/descriptors/index.d.ts +2 -0
- package/dist/content/descriptors/plugins/accordion-item-ids.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/accordion-item-ids.plugin.js +16 -0
- package/dist/content/descriptors/plugins/action.plugin.d.ts +11 -0
- package/dist/content/descriptors/plugins/action.plugin.js +27 -0
- package/dist/content/descriptors/plugins/anchor.plugin.d.ts +47 -0
- package/dist/content/descriptors/plugins/anchor.plugin.js +73 -0
- package/dist/content/descriptors/plugins/aria.plugin.d.ts +34 -0
- package/dist/content/descriptors/plugins/aria.plugin.js +55 -0
- package/dist/content/descriptors/plugins/calendar-ids.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/calendar-ids.plugin.js +16 -0
- package/dist/content/descriptors/plugins/calendar-keyboard.plugin.d.ts +11 -0
- package/dist/content/descriptors/plugins/calendar-keyboard.plugin.js +18 -0
- package/dist/content/descriptors/plugins/calendar-names.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/calendar-names.plugin.js +17 -0
- package/dist/content/descriptors/plugins/calendar-pointer.plugin.d.ts +11 -0
- package/dist/content/descriptors/plugins/calendar-pointer.plugin.js +18 -0
- package/dist/content/descriptors/plugins/clearable-names.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/clearable-names.plugin.js +17 -0
- package/dist/content/descriptors/plugins/collection-bundles.plugin.d.ts +7 -0
- package/dist/content/descriptors/plugins/collection-bundles.plugin.js +14 -0
- package/dist/content/descriptors/plugins/collection-elements.plugin.d.ts +7 -0
- package/dist/content/descriptors/plugins/collection-elements.plugin.js +14 -0
- package/dist/content/descriptors/plugins/date-input-clipboard.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/date-input-clipboard.plugin.js +16 -0
- package/dist/content/descriptors/plugins/date-input-ids.plugin.d.ts +8 -0
- package/dist/content/descriptors/plugins/date-input-ids.plugin.js +15 -0
- package/dist/content/descriptors/plugins/date-input-keyboard.plugin.d.ts +11 -0
- package/dist/content/descriptors/plugins/date-input-keyboard.plugin.js +18 -0
- package/dist/content/descriptors/plugins/date-input-pointer.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/date-input-pointer.plugin.js +17 -0
- package/dist/content/descriptors/plugins/date-input-touch.plugin.d.ts +12 -0
- package/dist/content/descriptors/plugins/date-input-touch.plugin.js +19 -0
- package/dist/content/descriptors/plugins/date-picker-focus.plugin.d.ts +12 -0
- package/dist/content/descriptors/plugins/date-picker-focus.plugin.js +25 -0
- package/dist/content/descriptors/plugins/date-picker-ids.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/date-picker-ids.plugin.js +17 -0
- package/dist/content/descriptors/plugins/date-picker-names.plugin.d.ts +32 -0
- package/dist/content/descriptors/plugins/date-picker-names.plugin.js +38 -0
- package/dist/content/descriptors/plugins/date-picker-trigger.plugin.d.ts +7 -0
- package/dist/content/descriptors/plugins/date-picker-trigger.plugin.js +20 -0
- package/dist/content/descriptors/plugins/dialog-ids.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/dialog-ids.plugin.js +17 -0
- package/dist/content/descriptors/plugins/dialog-layout.plugin.d.ts +26 -0
- package/dist/content/descriptors/plugins/dialog-layout.plugin.js +34 -0
- package/dist/content/descriptors/plugins/dialog-names.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/dialog-names.plugin.js +16 -0
- package/dist/content/descriptors/plugins/dismiss.plugin.d.ts +34 -0
- package/dist/content/descriptors/plugins/dismiss.plugin.js +51 -0
- package/dist/content/descriptors/plugins/drag.plugin.d.ts +5 -0
- package/dist/content/descriptors/plugins/drag.plugin.js +12 -0
- package/dist/content/descriptors/plugins/drawer-layout.plugin.d.ts +22 -0
- package/dist/content/descriptors/plugins/drawer-layout.plugin.js +28 -0
- package/dist/content/descriptors/plugins/element.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/element.plugin.js +15 -0
- package/dist/content/descriptors/plugins/field-ids.plugin.d.ts +12 -0
- package/dist/content/descriptors/plugins/field-ids.plugin.js +19 -0
- package/dist/content/descriptors/plugins/frame-layout.plugin.d.ts +14 -0
- package/dist/content/descriptors/plugins/frame-layout.plugin.js +18 -0
- package/dist/content/descriptors/plugins/hide-outside.plugin.d.ts +19 -0
- package/dist/content/descriptors/plugins/hide-outside.plugin.js +29 -0
- package/dist/content/descriptors/plugins/icon-layout.plugin.d.ts +15 -0
- package/dist/content/descriptors/plugins/icon-layout.plugin.js +19 -0
- package/dist/content/descriptors/plugins/id.plugin.d.ts +26 -0
- package/dist/content/descriptors/plugins/id.plugin.js +31 -0
- package/dist/content/descriptors/plugins/index.d.ts +114 -0
- package/dist/content/descriptors/plugins/input-bool.plugin.d.ts +7 -0
- package/dist/content/descriptors/plugins/input-bool.plugin.js +14 -0
- package/dist/content/descriptors/plugins/input-control.plugin.d.ts +7 -0
- package/dist/content/descriptors/plugins/input-control.plugin.js +14 -0
- package/dist/content/descriptors/plugins/input.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/input.plugin.js +16 -0
- package/dist/content/descriptors/plugins/item-group-ids.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/item-group-ids.plugin.js +17 -0
- package/dist/content/descriptors/plugins/label-nested-warn.plugin.d.ts +8 -0
- package/dist/content/descriptors/plugins/label-nested-warn.plugin.js +15 -0
- package/dist/content/descriptors/plugins/list-height.plugin.d.ts +8 -0
- package/dist/content/descriptors/plugins/list-height.plugin.js +15 -0
- package/dist/content/descriptors/plugins/list-item.plugin.d.ts +15 -0
- package/dist/content/descriptors/plugins/list-item.plugin.js +19 -0
- package/dist/content/descriptors/plugins/list-keyboard.plugin.d.ts +5 -0
- package/dist/content/descriptors/plugins/list-keyboard.plugin.js +12 -0
- package/dist/content/descriptors/plugins/list-scroll.plugin.d.ts +16 -0
- package/dist/content/descriptors/plugins/list-scroll.plugin.js +23 -0
- package/dist/content/descriptors/plugins/locale.plugin.d.ts +13 -0
- package/dist/content/descriptors/plugins/locale.plugin.js +20 -0
- package/dist/content/descriptors/plugins/menu-focus.plugin.d.ts +11 -0
- package/dist/content/descriptors/plugins/menu-focus.plugin.js +18 -0
- package/dist/content/descriptors/plugins/menu-hover.plugin.d.ts +12 -0
- package/dist/content/descriptors/plugins/menu-hover.plugin.js +19 -0
- package/dist/content/descriptors/plugins/menu-ids.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/menu-ids.plugin.js +17 -0
- package/dist/content/descriptors/plugins/menu-keyboard.plugin.d.ts +15 -0
- package/dist/content/descriptors/plugins/menu-keyboard.plugin.js +22 -0
- package/dist/content/descriptors/plugins/menu-pointer.plugin.d.ts +13 -0
- package/dist/content/descriptors/plugins/menu-pointer.plugin.js +20 -0
- package/dist/content/descriptors/plugins/menu-popover-item-focus.plugin.d.ts +15 -0
- package/dist/content/descriptors/plugins/menu-popover-item-focus.plugin.js +22 -0
- package/dist/content/descriptors/plugins/menu-popover-item-keyboard.plugin.d.ts +13 -0
- package/dist/content/descriptors/plugins/menu-popover-item-keyboard.plugin.js +20 -0
- package/dist/content/descriptors/plugins/menu-popup-ids.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/menu-popup-ids.plugin.js +17 -0
- package/dist/content/descriptors/plugins/menu-submenu-focus.plugin.d.ts +12 -0
- package/dist/content/descriptors/plugins/menu-submenu-focus.plugin.js +19 -0
- package/dist/content/descriptors/plugins/menu-submenu-keyboard.plugin.d.ts +15 -0
- package/dist/content/descriptors/plugins/menu-submenu-keyboard.plugin.js +22 -0
- package/dist/content/descriptors/plugins/modal-focus.plugin.d.ts +11 -0
- package/dist/content/descriptors/plugins/modal-focus.plugin.js +24 -0
- package/dist/content/descriptors/plugins/modal-ids.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/modal-ids.plugin.js +16 -0
- package/dist/content/descriptors/plugins/modal-names.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/modal-names.plugin.js +16 -0
- package/dist/content/descriptors/plugins/number-input-keyboard.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/number-input-keyboard.plugin.js +17 -0
- package/dist/content/descriptors/plugins/number-input-names.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/number-input-names.plugin.js +17 -0
- package/dist/content/descriptors/plugins/number-input-stepper.plugin.d.ts +12 -0
- package/dist/content/descriptors/plugins/number-input-stepper.plugin.js +19 -0
- package/dist/content/descriptors/plugins/number-input-touch.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/number-input-touch.plugin.js +17 -0
- package/dist/content/descriptors/plugins/number-input-typing.plugin.d.ts +11 -0
- package/dist/content/descriptors/plugins/number-input-typing.plugin.js +18 -0
- package/dist/content/descriptors/plugins/option-ids.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/option-ids.plugin.js +16 -0
- package/dist/content/descriptors/plugins/pagination-focus.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/pagination-focus.plugin.js +17 -0
- package/dist/content/descriptors/plugins/pagination-names.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/pagination-names.plugin.js +17 -0
- package/dist/content/descriptors/plugins/popover-focus.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/popover-focus.plugin.js +23 -0
- package/dist/content/descriptors/plugins/popover-ids.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/popover-ids.plugin.js +16 -0
- package/dist/content/descriptors/plugins/popover-names.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/popover-names.plugin.js +16 -0
- package/dist/content/descriptors/plugins/popover-pointer.plugin.d.ts +8 -0
- package/dist/content/descriptors/plugins/popover-pointer.plugin.js +21 -0
- package/dist/content/descriptors/plugins/radio-group-checked.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/radio-group-checked.plugin.js +16 -0
- package/dist/content/descriptors/plugins/radio-group-name.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/radio-group-name.plugin.js +16 -0
- package/dist/content/descriptors/plugins/rating-hover.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/rating-hover.plugin.js +17 -0
- package/dist/content/descriptors/plugins/rating-names.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/rating-names.plugin.js +16 -0
- package/dist/content/descriptors/plugins/rating-validity.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/rating-validity.plugin.js +17 -0
- package/dist/content/descriptors/plugins/ready.plugin.d.ts +7 -0
- package/dist/content/descriptors/plugins/ready.plugin.js +14 -0
- package/dist/content/descriptors/plugins/scroll-lock.plugin.d.ts +18 -0
- package/dist/content/descriptors/plugins/scroll-lock.plugin.js +29 -0
- package/dist/content/descriptors/plugins/scroller-names.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/scroller-names.plugin.js +16 -0
- package/dist/content/descriptors/plugins/scroller-viewport.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/scroller-viewport.plugin.js +16 -0
- package/dist/content/descriptors/plugins/select-backspace.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/select-backspace.plugin.js +25 -0
- package/dist/content/descriptors/plugins/select-editable.plugin.d.ts +18 -0
- package/dist/content/descriptors/plugins/select-editable.plugin.js +31 -0
- package/dist/content/descriptors/plugins/select-ids.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/select-ids.plugin.js +16 -0
- package/dist/content/descriptors/plugins/select-keyboard.plugin.d.ts +21 -0
- package/dist/content/descriptors/plugins/select-keyboard.plugin.js +33 -0
- package/dist/content/descriptors/plugins/select-pointer.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/select-pointer.plugin.js +24 -0
- package/dist/content/descriptors/plugins/skeleton-layout.plugin.d.ts +14 -0
- package/dist/content/descriptors/plugins/skeleton-layout.plugin.js +18 -0
- package/dist/content/descriptors/plugins/slide-keyboard.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/slide-keyboard.plugin.js +16 -0
- package/dist/content/descriptors/plugins/slide-pointer.plugin.d.ts +12 -0
- package/dist/content/descriptors/plugins/slide-pointer.plugin.js +19 -0
- package/dist/content/descriptors/plugins/swipe.plugin.d.ts +13 -0
- package/dist/content/descriptors/plugins/swipe.plugin.js +20 -0
- package/dist/content/descriptors/plugins/table-column-ids.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/table-column-ids.plugin.js +17 -0
- package/dist/content/descriptors/plugins/table-column-names.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/table-column-names.plugin.js +16 -0
- package/dist/content/descriptors/plugins/table-column-reorder.plugin.d.ts +13 -0
- package/dist/content/descriptors/plugins/table-column-reorder.plugin.js +20 -0
- package/dist/content/descriptors/plugins/table-column-resize.plugin.d.ts +12 -0
- package/dist/content/descriptors/plugins/table-column-resize.plugin.js +19 -0
- package/dist/content/descriptors/plugins/table-grid.plugin.d.ts +15 -0
- package/dist/content/descriptors/plugins/table-grid.plugin.js +22 -0
- package/dist/content/descriptors/plugins/table-layout.plugin.d.ts +12 -0
- package/dist/content/descriptors/plugins/table-layout.plugin.js +19 -0
- package/dist/content/descriptors/plugins/table-names.plugin.d.ts +16 -0
- package/dist/content/descriptors/plugins/table-names.plugin.js +20 -0
- package/dist/content/descriptors/plugins/table-row-ids.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/table-row-ids.plugin.js +16 -0
- package/dist/content/descriptors/plugins/tabs-active-tab.plugin.d.ts +5 -0
- package/dist/content/descriptors/plugins/tabs-active-tab.plugin.js +12 -0
- package/dist/content/descriptors/plugins/tabs-content-warn.plugin.d.ts +8 -0
- package/dist/content/descriptors/plugins/tabs-content-warn.plugin.js +15 -0
- package/dist/content/descriptors/plugins/tabs-item-ids.plugin.d.ts +8 -0
- package/dist/content/descriptors/plugins/tabs-item-ids.plugin.js +15 -0
- package/dist/content/descriptors/plugins/tabs-item-names.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/tabs-item-names.plugin.js +16 -0
- package/dist/content/descriptors/plugins/tabs-keyboard.plugin.d.ts +8 -0
- package/dist/content/descriptors/plugins/tabs-keyboard.plugin.js +15 -0
- package/dist/content/descriptors/plugins/tabs-layout.plugin.d.ts +5 -0
- package/dist/content/descriptors/plugins/tabs-layout.plugin.js +12 -0
- package/dist/content/descriptors/plugins/tags-item-names.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/tags-item-names.plugin.js +16 -0
- package/dist/content/descriptors/plugins/tags-keyboard.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/tags-keyboard.plugin.js +16 -0
- package/dist/content/descriptors/plugins/tags-scroll.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/tags-scroll.plugin.js +17 -0
- package/dist/content/descriptors/plugins/textarea-autoresize.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/textarea-autoresize.plugin.js +17 -0
- package/dist/content/descriptors/plugins/textarea-ids.plugin.d.ts +11 -0
- package/dist/content/descriptors/plugins/textarea-ids.plugin.js +18 -0
- package/dist/content/descriptors/plugins/textarea-names.plugin.d.ts +17 -0
- package/dist/content/descriptors/plugins/textarea-names.plugin.js +21 -0
- package/dist/content/descriptors/plugins/toasts-cascade.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/toasts-cascade.plugin.js +17 -0
- package/dist/content/descriptors/plugins/toasts-item-names.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/toasts-item-names.plugin.js +16 -0
- package/dist/content/descriptors/plugins/toasts-keyboard.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/toasts-keyboard.plugin.js +16 -0
- package/dist/content/descriptors/plugins/toasts-layout.plugin.d.ts +16 -0
- package/dist/content/descriptors/plugins/toasts-layout.plugin.js +20 -0
- package/dist/content/descriptors/plugins/toasts-names.plugin.d.ts +8 -0
- package/dist/content/descriptors/plugins/toasts-names.plugin.js +15 -0
- package/dist/content/descriptors/plugins/toasts-removal.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/toasts-removal.plugin.js +16 -0
- package/dist/content/descriptors/plugins/toasts-timer.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/toasts-timer.plugin.js +16 -0
- package/dist/content/descriptors/plugins/tooltip-ids.plugin.d.ts +9 -0
- package/dist/content/descriptors/plugins/tooltip-ids.plugin.js +16 -0
- package/dist/content/descriptors/plugins/tooltip-trigger.plugin.d.ts +10 -0
- package/dist/content/descriptors/plugins/tooltip-trigger.plugin.js +23 -0
- package/dist/content/extensions/collection/collection-item.extension.class.d.ts +64 -0
- package/dist/content/extensions/collection/collection-item.extension.class.js +111 -0
- package/dist/content/extensions/collection/collection.extension.class.d.ts +21 -0
- package/dist/content/extensions/collection/collection.extension.class.js +57 -0
- package/dist/content/extensions/collection/index.d.ts +3 -0
- package/dist/content/extensions/collection/item-props.d.ts +13 -0
- package/dist/content/extensions/collection/item-props.js +20 -0
- package/dist/content/extensions/collection/keys.d.ts +23 -0
- package/dist/content/extensions/collection/keys.js +17 -0
- package/dist/content/extensions/collection/members.class.d.ts +24 -0
- package/dist/content/extensions/collection/members.class.js +18 -0
- package/dist/content/extensions/collection/types.d.ts +41 -0
- package/dist/content/extensions/drag-and-drop/drag-and-drop-collection.extension.class.d.ts +26 -0
- package/dist/content/extensions/drag-and-drop/drag-and-drop-collection.extension.class.js +34 -0
- package/dist/content/extensions/drag-and-drop/drag-and-drop.extension.class.d.ts +21 -0
- package/dist/content/extensions/drag-and-drop/drag-and-drop.extension.class.js +9 -0
- package/dist/content/extensions/drag-and-drop/index.d.ts +3 -0
- package/dist/content/extensions/drag-and-drop/keys.d.ts +15 -0
- package/dist/content/extensions/drag-and-drop/keys.js +9 -0
- package/dist/content/extensions/drag-and-drop/types.d.ts +10 -0
- package/dist/content/extensions/field/field-control.extension.class.d.ts +63 -0
- package/dist/content/extensions/field/field-control.extension.class.js +172 -0
- package/dist/content/extensions/field/field.extension.class.d.ts +21 -0
- package/dist/content/extensions/field/field.extension.class.js +14 -0
- package/dist/content/extensions/field/index.d.ts +3 -0
- package/dist/content/extensions/field/keys.d.ts +14 -0
- package/dist/content/extensions/field/keys.js +8 -0
- package/dist/content/extensions/field/types.d.ts +36 -0
- package/dist/content/extensions/index.d.ts +8 -0
- package/dist/content/extensions/item-group/index.d.ts +2 -0
- package/dist/content/extensions/item-group/item-group.extension.class.d.ts +49 -0
- package/dist/content/extensions/item-group/item-group.extension.class.js +91 -0
- package/dist/content/extensions/item-group/keys.d.ts +15 -0
- package/dist/content/extensions/item-group/keys.js +9 -0
- package/dist/content/extensions/item-group/types.d.ts +34 -0
- package/dist/content/extensions/menu/index.d.ts +3 -0
- package/dist/content/extensions/menu/keys.d.ts +10 -0
- package/dist/content/extensions/menu/keys.js +5 -0
- package/dist/content/extensions/menu/radio-group.extension.class.d.ts +22 -0
- package/dist/content/extensions/menu/radio-group.extension.class.js +9 -0
- package/dist/content/extensions/menu/radio-item.extension.class.d.ts +20 -0
- package/dist/content/extensions/menu/radio-item.extension.class.js +10 -0
- package/dist/content/extensions/menu/types.d.ts +10 -0
- package/dist/content/extensions/tabs/index.d.ts +2 -0
- package/dist/content/extensions/tabs/tabs-content-binding.extension.class.d.ts +69 -0
- package/dist/content/extensions/tabs/tabs-content-binding.extension.class.js +184 -0
- package/dist/content/extensions/tabs/types.d.ts +11 -0
- package/dist/content/extensions/toasts/index.d.ts +3 -0
- package/dist/content/extensions/toasts/keys.d.ts +11 -0
- package/dist/content/extensions/toasts/keys.js +5 -0
- package/dist/content/extensions/toasts/toasts-api.extension.class.d.ts +23 -0
- package/dist/content/extensions/toasts/toasts-api.extension.class.js +9 -0
- package/dist/content/extensions/toasts/types.d.ts +19 -0
- package/dist/content/extensions/virtual/index.d.ts +3 -0
- package/dist/content/extensions/virtual/keys.d.ts +15 -0
- package/dist/content/extensions/virtual/keys.js +8 -0
- package/dist/content/extensions/virtual/types.d.ts +40 -0
- package/dist/content/extensions/virtual/virtual-collection.extension.class.d.ts +33 -0
- package/dist/content/extensions/virtual/virtual-collection.extension.class.js +15 -0
- package/dist/content/extensions/virtual/virtual.extension.class.d.ts +36 -0
- package/dist/content/extensions/virtual/virtual.extension.class.js +74 -0
- package/dist/content/icons/index.d.ts +2 -0
- package/dist/content/icons/roles.d.ts +29 -0
- package/dist/content/icons/roles.js +36 -0
- package/dist/content/index.d.ts +3 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +236 -0
- package/dist/protected/adapter/common/index.d.ts +6 -0
- package/dist/protected/adapter/common/parts.d.ts +30 -0
- package/dist/protected/adapter/common/parts.js +35 -0
- package/dist/protected/adapter/common/props.types.d.ts +48 -0
- package/dist/protected/adapter/common/slots.d.ts +25 -0
- package/dist/protected/adapter/common/slots.js +25 -0
- package/dist/protected/adapter/common/slots.types.d.ts +37 -0
- package/dist/protected/adapter/common/state.d.ts +14 -0
- package/dist/protected/adapter/common/state.js +14 -0
- package/dist/protected/adapter/common/state.types.d.ts +39 -0
- package/dist/protected/adapter/context/adapter-context.class.d.ts +68 -0
- package/dist/protected/adapter/context/adapter-context.class.js +118 -0
- package/dist/protected/adapter/context/create-adapter-context.d.ts +34 -0
- package/dist/protected/adapter/context/create-adapter-context.js +91 -0
- package/dist/protected/adapter/context/external-plugins.class.d.ts +51 -0
- package/dist/protected/adapter/context/external-plugins.class.js +80 -0
- package/dist/protected/adapter/context/index.d.ts +2 -0
- package/dist/protected/adapter/context/own-bundle.class.d.ts +25 -0
- package/dist/protected/adapter/context/own-bundle.class.js +86 -0
- package/dist/protected/adapter/context/shared-bundle.class.d.ts +25 -0
- package/dist/protected/adapter/context/shared-bundle.class.js +24 -0
- package/dist/protected/adapter/context/types.d.ts +184 -0
- package/dist/protected/adapter/elevator/elevator.class.d.ts +21 -0
- package/dist/protected/adapter/elevator/elevator.class.js +19 -0
- package/dist/protected/adapter/elevator/index.d.ts +3 -0
- package/dist/protected/adapter/elevator/keys.d.ts +12 -0
- package/dist/protected/adapter/elevator/keys.js +7 -0
- package/dist/protected/adapter/elevator/types.d.ts +31 -0
- package/dist/protected/adapter/exchange/assembling.class.d.ts +39 -0
- package/dist/protected/adapter/exchange/assembling.class.js +55 -0
- package/dist/protected/adapter/exchange/cell.class.d.ts +31 -0
- package/dist/protected/adapter/exchange/cell.class.js +37 -0
- package/dist/protected/adapter/exchange/event-relay.class.d.ts +29 -0
- package/dist/protected/adapter/exchange/event-relay.class.js +53 -0
- package/dist/protected/adapter/exchange/exchange.class.d.ts +78 -0
- package/dist/protected/adapter/exchange/exchange.class.js +129 -0
- package/dist/protected/adapter/exchange/index.d.ts +8 -0
- package/dist/protected/adapter/exchange/input-port.class.d.ts +64 -0
- package/dist/protected/adapter/exchange/input-port.class.js +68 -0
- package/dist/protected/adapter/exchange/line.class.d.ts +53 -0
- package/dist/protected/adapter/exchange/line.class.js +39 -0
- package/dist/protected/adapter/exchange/member.class.d.ts +20 -0
- package/dist/protected/adapter/exchange/member.class.js +11 -0
- package/dist/protected/adapter/exchange/routing.class.d.ts +25 -0
- package/dist/protected/adapter/exchange/routing.class.js +94 -0
- package/dist/protected/adapter/exchange/state-store.class.d.ts +57 -0
- package/dist/protected/adapter/exchange/state-store.class.js +76 -0
- package/dist/protected/adapter/exchange/tap.class.d.ts +54 -0
- package/dist/protected/adapter/exchange/tap.class.js +51 -0
- package/dist/protected/adapter/exchange/types.d.ts +55 -0
- package/dist/protected/adapter/exchange/update-port.class.d.ts +25 -0
- package/dist/protected/adapter/exchange/update-port.class.js +26 -0
- package/dist/protected/adapter/exchange/value.d.ts +17 -0
- package/dist/protected/adapter/exchange/value.js +31 -0
- package/dist/protected/adapter/index.d.ts +5 -0
- package/dist/protected/adapter/surface/index.d.ts +2 -0
- package/dist/protected/adapter/surface/surface.class.d.ts +34 -0
- package/dist/protected/adapter/surface/surface.class.js +87 -0
- package/dist/protected/adapter/surface/types.d.ts +29 -0
- package/dist/protected/define/component-descriptor.class.d.ts +55 -0
- package/dist/protected/define/component-descriptor.class.js +112 -0
- package/dist/protected/define/component.d.ts +14 -0
- package/dist/protected/define/component.js +12 -0
- package/dist/protected/define/contribution.d.ts +20 -0
- package/dist/protected/define/contribution.js +18 -0
- package/dist/protected/define/contribution.types.d.ts +66 -0
- package/dist/protected/define/descriptor.d.ts +21 -0
- package/dist/protected/define/descriptor.js +27 -0
- package/dist/protected/define/index.d.ts +11 -0
- package/dist/protected/define/inference.types.d.ts +247 -0
- package/dist/protected/define/inherit.d.ts +21 -0
- package/dist/protected/define/inherit.js +11 -0
- package/dist/protected/define/name.class.d.ts +21 -0
- package/dist/protected/define/name.class.js +31 -0
- package/dist/protected/define/plugin-definition.class.d.ts +45 -0
- package/dist/protected/define/plugin-definition.class.js +49 -0
- package/dist/protected/define/plugin.d.ts +18 -0
- package/dist/protected/define/plugin.js +20 -0
- package/dist/protected/define/prop-spec.class.d.ts +70 -0
- package/dist/protected/define/prop-spec.class.js +79 -0
- package/dist/protected/define/prop-type.d.ts +12 -0
- package/dist/protected/define/prop-type.js +6 -0
- package/dist/protected/define/slot-declaration.class.d.ts +20 -0
- package/dist/protected/define/slot-declaration.class.js +14 -0
- package/dist/protected/define/types.d.ts +235 -0
- package/dist/protected/index.d.ts +4 -0
- package/dist/protected/naming/common-profile.d.ts +10 -0
- package/dist/protected/naming/common-profile.js +16 -0
- package/dist/protected/naming/index.d.ts +4 -0
- package/dist/protected/naming/naming.d.ts +33 -0
- package/dist/protected/naming/naming.js +34 -0
- package/dist/protected/naming/naming.types.d.ts +49 -0
- package/dist/protected/naming/strategy.types.d.ts +27 -0
- package/dist/protected/registry/extensions.d.ts +29 -0
- package/dist/protected/registry/extensions.js +28 -0
- package/dist/protected/registry/icons.d.ts +44 -0
- package/dist/protected/registry/icons.js +59 -0
- package/dist/protected/registry/index.d.ts +5 -0
- package/dist/protected/registry/plugins.d.ts +40 -0
- package/dist/protected/registry/plugins.js +29 -0
- package/dist/protected/registry/registrations.d.ts +15 -0
- package/dist/protected/registry/registrations.js +30 -0
- package/dist/protected/registry/theme.d.ts +29 -0
- package/dist/protected/registry/theme.js +40 -0
- package/dist/protected/registry/types.d.ts +85 -0
- package/package.json +44 -4
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contracts of the adapter context, its options and extension constructors.
|
|
3
|
+
*/
|
|
4
|
+
import type { TEvented } from '@soxa-ui/core';
|
|
5
|
+
import type { ILocaleSource, IPluginBundle } from '@soxa-ui/plugins';
|
|
6
|
+
import type { IComponentContract, IComponentDescriptor, IPluginsContract } from '../../define';
|
|
7
|
+
import type { IAdapterProfile } from '../../naming';
|
|
8
|
+
import type { TExchange } from '../exchange/exchange.class';
|
|
9
|
+
import type { TMember } from '../exchange/member.class';
|
|
10
|
+
/**
|
|
11
|
+
* The context's life: `attach` — the framework accepted the assembled
|
|
12
|
+
* component, `detach` — it began removing it, `destroy` — it let it go. Each
|
|
13
|
+
* comes once and in this order. The adapter's runtime sends all three;
|
|
14
|
+
* `detach` may also come earlier from the collection the component is a
|
|
15
|
+
* member of (`TCollectionMembers`).
|
|
16
|
+
*/
|
|
17
|
+
export type TAdapterEvents = {
|
|
18
|
+
attach: () => void;
|
|
19
|
+
detach: () => void;
|
|
20
|
+
destroy: () => void;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* A context contract with the instance and the plugins named, the rest as for
|
|
24
|
+
* any component. By it `createAdapterContext` resolves the instance from two
|
|
25
|
+
* sources: the descriptor's `ctor` and the given `ctrl`.
|
|
26
|
+
*/
|
|
27
|
+
export type TContextContract<TInstance extends object, TPlugins extends IPluginsContract = IPluginsContract> = IComponentContract & {
|
|
28
|
+
instance: TInstance;
|
|
29
|
+
plugins: TPlugins;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* A context of which only the instance is known. This is how an extension
|
|
33
|
+
* declares what it works with: `TInstanceContext<TCollectionOwner>` — any
|
|
34
|
+
* component whose instance has an `engine`.
|
|
35
|
+
*/
|
|
36
|
+
export type TInstanceContext<TInstance extends object> = IAdapterContext<TContextContract<TInstance>>;
|
|
37
|
+
/**
|
|
38
|
+
* An extension constructor with options. `TInstance` is the instance the
|
|
39
|
+
* extension needs (`TCollectionExtension` — a facade with `engine`);
|
|
40
|
+
* `IAdapterContext.use()` checks it against the context's instance at compile
|
|
41
|
+
* time, so an extension cannot go on a component that lacks what it works
|
|
42
|
+
* with.
|
|
43
|
+
*/
|
|
44
|
+
export interface IAdapterExtensionCtor<T = unknown, TOpts = unknown, TInstance extends object = object> {
|
|
45
|
+
new (context: TInstanceContext<TInstance>, options: TOpts): T;
|
|
46
|
+
}
|
|
47
|
+
/** An extension constructor without options. */
|
|
48
|
+
export interface IAdapterExtensionCtorNoOpts<T = unknown, TInstance extends object = object> {
|
|
49
|
+
new (context: TInstanceContext<TInstance>): T;
|
|
50
|
+
}
|
|
51
|
+
/** Any extension constructor: a registry key and an item of the starting set. */
|
|
52
|
+
export type TAnyExtensionCtor = new (...args: any[]) => unknown;
|
|
53
|
+
/** Options of creating an adapter context: a ready instance (`ctrl`) or the constructor's props and options. */
|
|
54
|
+
export interface IAdapterContextOptions<TInstance extends object = object> {
|
|
55
|
+
ctrl?: TInstance;
|
|
56
|
+
/**
|
|
57
|
+
* The framework's props. `object`, not `Record<string, unknown>`: adapters
|
|
58
|
+
* declare props as interfaces without an index signature. They are read by
|
|
59
|
+
* the descriptor's names through `Reflect.get`.
|
|
60
|
+
*/
|
|
61
|
+
props?: object;
|
|
62
|
+
options?: object;
|
|
63
|
+
/**
|
|
64
|
+
* The place's name if the component is a detail of another component's
|
|
65
|
+
* markup (a tag's row and close button). It goes into the mount's
|
|
66
|
+
* composition (`resolveComposition`): registry plugins with `scope: 'own'`
|
|
67
|
+
* are not installed on an embedded component.
|
|
68
|
+
*/
|
|
69
|
+
embedded?: string;
|
|
70
|
+
/**
|
|
71
|
+
* The mount id — from the framework's `useId`, the same on the server and
|
|
72
|
+
* in the browser. It goes to the own plugin bundle, from which plugins build
|
|
73
|
+
* the parts' `id`s (`IPluginBundle.createId`); the instance does not get it —
|
|
74
|
+
* ids are the document's business, not the core's. With a bundle not its
|
|
75
|
+
* own (`config.bundle`) the mount id is of whoever assembled the bundle.
|
|
76
|
+
*/
|
|
77
|
+
mountId?: string;
|
|
78
|
+
/**
|
|
79
|
+
* The subtree's locale — from the framework's nearest locale provider above:
|
|
80
|
+
* the Intl tag and the library's strings, with a change event. It goes to
|
|
81
|
+
* the own plugin bundle, as the mount id does (`IPluginBundle.locale`), and
|
|
82
|
+
* the language and names plugins write the tag and the button names from it,
|
|
83
|
+
* on assembly and on every change. The instance does not get it: the
|
|
84
|
+
* language is known by the component's place in the tree, not by the
|
|
85
|
+
* instance. Not given — the bundle has its own English one. With a bundle
|
|
86
|
+
* not its own (`config.bundle`) the locale is of whoever assembled it.
|
|
87
|
+
*/
|
|
88
|
+
locale?: ILocaleSource;
|
|
89
|
+
}
|
|
90
|
+
/** What the own bundle takes from the mount: the mount id and the subtree's locale. */
|
|
91
|
+
export type TBundleMount = Pick<IAdapterContextOptions, 'mountId' | 'locale'>;
|
|
92
|
+
export interface IAdapterContextConfig {
|
|
93
|
+
/**
|
|
94
|
+
* A ready plugin bundle, passed by whoever assembled it (a collection
|
|
95
|
+
* adapter shares the component's bundle with the facade). Without it the
|
|
96
|
+
* bundle is assembled by the composition: the descriptor's plugins plus the
|
|
97
|
+
* application's registrations.
|
|
98
|
+
*/
|
|
99
|
+
bundle?: IPluginBundle | null;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The adapter context: the assembled component and its extensions.
|
|
103
|
+
*
|
|
104
|
+
* The parameter is the descriptor contract the context was assembled by
|
|
105
|
+
* (`IComponentContract`). `createAdapterContext` infers it, and the adapters'
|
|
106
|
+
* `useAdapter` takes from it the instance type and the plugins' outputs for
|
|
107
|
+
* the state type (`TAdapterState`), so components write no generics.
|
|
108
|
+
*/
|
|
109
|
+
export interface IAdapterContext<C extends IComponentContract = IComponentContract> {
|
|
110
|
+
/** A phantom field: absent at runtime, it only carries the contract in the type. */
|
|
111
|
+
readonly __contract?: C;
|
|
112
|
+
readonly instance: C['instance'];
|
|
113
|
+
readonly bundle: IPluginBundle | null;
|
|
114
|
+
readonly descriptor: IComponentDescriptor;
|
|
115
|
+
/**
|
|
116
|
+
* The assembly props, until the first `connect()`: extensions read them in
|
|
117
|
+
* their constructors and the exchange starts its input memory from them.
|
|
118
|
+
* After `connect()` — `undefined`: the input memory lives in its own cells
|
|
119
|
+
* and the context lets the props go.
|
|
120
|
+
*/
|
|
121
|
+
readonly props: object | undefined;
|
|
122
|
+
/** The place's name if the component is a detail of another's markup (`IAdapterContextOptions.embedded`). */
|
|
123
|
+
readonly embedded: string | undefined;
|
|
124
|
+
readonly events: TEvented<TAdapterEvents>;
|
|
125
|
+
/** Install an extension WITHOUT options. */
|
|
126
|
+
use<T>(ExtensionCtor: IAdapterExtensionCtorNoOpts<T, C['instance']>): this;
|
|
127
|
+
/** Install an extension WITH required options. */
|
|
128
|
+
use<T, TOpts>(ExtensionCtor: IAdapterExtensionCtor<T, TOpts, C['instance']>, options: TOpts): this;
|
|
129
|
+
/** The installed extension of the given class. */
|
|
130
|
+
get<T>(ctor: new (...args: any[]) => T): T | undefined;
|
|
131
|
+
/**
|
|
132
|
+
* Bind the markup's root node to the bundle's `TElementPlugin`; `null`
|
|
133
|
+
* unbinds. Without that plugin the call does nothing.
|
|
134
|
+
*/
|
|
135
|
+
bindElement(element: Element | null): void;
|
|
136
|
+
/**
|
|
137
|
+
* The value exchange with the framework, in its profile's names: state,
|
|
138
|
+
* inputs, events. The input memory starts from the assembly props; the
|
|
139
|
+
* assembly has already applied the initial values.
|
|
140
|
+
*
|
|
141
|
+
* One exchange per mount: the first call creates it and releases the
|
|
142
|
+
* assembly props, a repeat with the same profile returns it, another
|
|
143
|
+
* profile is an error.
|
|
144
|
+
*/
|
|
145
|
+
connect(profile: IAdapterProfile): TExchange;
|
|
146
|
+
/**
|
|
147
|
+
* The framework accepted the assembled component: from now on it is part of
|
|
148
|
+
* the live tree, not an assembly draft. Whatever writes into someone else's
|
|
149
|
+
* storage (an item entering its owner's collection) waits for `attach`.
|
|
150
|
+
* Called once, between assembly and `destroy()`, by the adapter's runtime,
|
|
151
|
+
* not by the component.
|
|
152
|
+
*/
|
|
153
|
+
attach(): void;
|
|
154
|
+
/**
|
|
155
|
+
* The framework began removing the component: the first moment of its
|
|
156
|
+
* teardown, before its children go. The context only reports it (the
|
|
157
|
+
* `detach` event); the adapter stops the consumer on it. A collection
|
|
158
|
+
* detaches its members too (`TCollectionMembers`): siblings leave one by
|
|
159
|
+
* one, and a member still heard would hear them go. Once: a repeat does
|
|
160
|
+
* nothing.
|
|
161
|
+
*/
|
|
162
|
+
detach(): void;
|
|
163
|
+
/** Destroy the context; detached first, if it was not. */
|
|
164
|
+
destroy(): void;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Ownership of the plugin bundle: own (`TOwnBundle`) or shared
|
|
168
|
+
* (`TSharedBundle`). Not a flag every user of the bundle checks: everything
|
|
169
|
+
* that depends on it is done by one of the two objects.
|
|
170
|
+
*/
|
|
171
|
+
export interface IBundleTenancy {
|
|
172
|
+
readonly bundle: IPluginBundle | null;
|
|
173
|
+
/**
|
|
174
|
+
* The exchange members from the bundle: the descriptor's plugins and, for
|
|
175
|
+
* an own bundle, the binding too. Built per call: the assembly and the
|
|
176
|
+
* exchange need them, the bundle does not keep them.
|
|
177
|
+
*/
|
|
178
|
+
members(): readonly TMember[];
|
|
179
|
+
/** Which of the bundle's members (`members()`) this assembly writes initial values to. */
|
|
180
|
+
seeded(members: readonly TMember[]): readonly TMember[];
|
|
181
|
+
/** Finish the assembly after the initial values: registry plugins and announcing the bundle. */
|
|
182
|
+
complete(): void;
|
|
183
|
+
destroy(): void;
|
|
184
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Абстрактный класс TElevator — база для всех фреймворк-специфичных элеваторов.
|
|
3
|
+
*
|
|
4
|
+
* Кэширует строковые/symbol ключи в уникальные символы, чтобы
|
|
5
|
+
* гарантировать одинаковый InjectionKey во всех вызовах provide/inject
|
|
6
|
+
* (или их аналогах в React/Solid/Angular).
|
|
7
|
+
*
|
|
8
|
+
* Конкретные реализации:
|
|
9
|
+
* - TVueElevator extends TElevator (provide/inject)
|
|
10
|
+
* - TReactElevator extends TElevator (React.Context)
|
|
11
|
+
* - TSolidElevator extends TElevator (Solid Context)
|
|
12
|
+
* - TSvelteElevator extends TElevator (setContext/getContext)
|
|
13
|
+
* - TAngularElevator extends TElevator (DI: InjectionToken)
|
|
14
|
+
*/
|
|
15
|
+
import type { IContextElevator } from './types';
|
|
16
|
+
export declare abstract class TElevator<T = any> implements IContextElevator<T> {
|
|
17
|
+
protected readonly _key: symbol;
|
|
18
|
+
constructor(key: string | symbol);
|
|
19
|
+
abstract down(value: T): void;
|
|
20
|
+
abstract up(): T | undefined;
|
|
21
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region protected/adapter/elevator/elevator.class.ts
|
|
2
|
+
/** Кэш: строковый ключ → уникальный символ */
|
|
3
|
+
var KEY_MAP = /* @__PURE__ */ new Map();
|
|
4
|
+
function resolveKey(key) {
|
|
5
|
+
let k = KEY_MAP.get(key);
|
|
6
|
+
if (!k) {
|
|
7
|
+
k = Symbol(key.toString());
|
|
8
|
+
KEY_MAP.set(key, k);
|
|
9
|
+
}
|
|
10
|
+
return k;
|
|
11
|
+
}
|
|
12
|
+
var TElevator = class {
|
|
13
|
+
_key;
|
|
14
|
+
constructor(key) {
|
|
15
|
+
this._key = resolveKey(key);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { TElevator };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ключи элеваторов — единое пространство имён для всех фреймворков.
|
|
3
|
+
*
|
|
4
|
+
* Конкретная реализация IContextElevator (TVueElevator, React.Context, ...)
|
|
5
|
+
* живёт в своём UI-пакете и передаётся сюда через TElevatorFactory.
|
|
6
|
+
*/
|
|
7
|
+
import type { TCollectionEngine } from '@soxa-ui/core';
|
|
8
|
+
import type { IElevatorKey, TCollectionItemRegister } from './types';
|
|
9
|
+
/** Родительская коллекция. Ребёнок толкает { instance, bundle } наверх. */
|
|
10
|
+
export declare const COLLECTION_ENGINE_ELEVATOR: IElevatorKey<TCollectionItemRegister>;
|
|
11
|
+
/** Контекст коллекции для дочернего элемента. Родитель → дочерний элемент. */
|
|
12
|
+
export declare const ITEM_CONTEXT_ELEVATOR: IElevatorKey<TCollectionEngine<any, any>>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//#region protected/adapter/elevator/keys.ts
|
|
2
|
+
/** Родительская коллекция. Ребёнок толкает { instance, bundle } наверх. */
|
|
3
|
+
var COLLECTION_ENGINE_ELEVATOR = { name: "soxa:collection-engine" };
|
|
4
|
+
/** Контекст коллекции для дочернего элемента. Родитель → дочерний элемент. */
|
|
5
|
+
var ITEM_CONTEXT_ELEVATOR = { name: "soxa:item-context" };
|
|
6
|
+
//#endregion
|
|
7
|
+
export { COLLECTION_ENGINE_ELEVATOR, ITEM_CONTEXT_ELEVATOR };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Контракт лифта: типизированный ключ, фабрика фреймворка и регистрация элемента коллекции.
|
|
3
|
+
*/
|
|
4
|
+
import type { IPluginBundle } from '@soxa-ui/plugins';
|
|
5
|
+
/** Лифт: значения от родителя к детям поверх механизма фреймворка (`provide`/`inject`, React Context, DI Angular). */
|
|
6
|
+
export interface IContextElevator<T = any> {
|
|
7
|
+
down(value: T): void;
|
|
8
|
+
up(): T | undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Ключ elevator'а вместе с типом значения — как `InjectionKey<T>` во Vue.
|
|
12
|
+
*
|
|
13
|
+
* Фабрика выводит `T` из ключа, поэтому `up()` отдаёт значение нужного типа без
|
|
14
|
+
* приведения, а `down()` не примет чужое.
|
|
15
|
+
*/
|
|
16
|
+
export interface IElevatorKey<T> {
|
|
17
|
+
readonly name: string;
|
|
18
|
+
/** Фантом: только несёт тип значения, в рантайме не заполняется. */
|
|
19
|
+
readonly __value?: T;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Фабрика, которую предоставляет конкретный фреймворк (Vue, React и т.д.).
|
|
23
|
+
*
|
|
24
|
+
* Пример для Vue:
|
|
25
|
+
* ```ts
|
|
26
|
+
* const VueElevatorFactory: TElevatorFactory = (key) => new TVueElevator(key.name)
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export type TElevatorFactory = <T>(key: IElevatorKey<T>) => IContextElevator<T>;
|
|
30
|
+
/** Регистрация элемента в родительской коллекции; возвращает снятие регистрации. */
|
|
31
|
+
export type TCollectionItemRegister = (item: object, bundle: IPluginBundle | null) => () => void;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TAssembling — сборка над инстансом атомарна для остальных его монтирований.
|
|
3
|
+
*
|
|
4
|
+
* Над одним инстансом бывает больше одного монтирования: `ctrl` снаружи
|
|
5
|
+
* переехал в другое место дерева, и фреймворк собирает новый компонент, пока
|
|
6
|
+
* прежний ещё не снят. Сборка пишет в инстанс — начальные значения внешнему
|
|
7
|
+
* `ctrl`, `id` плагинов связок от нового монтирования, — и прежнее
|
|
8
|
+
* монтирование слышит каждую запись, пока сборка ещё идёт. Фреймворк, который
|
|
9
|
+
* собирает компонент на рендере, получил бы обновление чужого компонента
|
|
10
|
+
* посреди этого рендера, а повтор рендера (`Suspense`) — новую запись и новое
|
|
11
|
+
* обновление на каждый повтор.
|
|
12
|
+
*
|
|
13
|
+
* Поэтому, пока над инстансом идёт сборка (`run`), обмены остальных
|
|
14
|
+
* монтирований копят его состояние и уведомления и выпускают их одной
|
|
15
|
+
* микрозадачей после сборки (`defer`, правило выпуска — `TExchange`): итог, а
|
|
16
|
+
* не каждый шаг. Микрозадача не вклинивается в тело рендера, а граница тишины
|
|
17
|
+
* — сама сборка, синхронно: от того, примет ли сборку фреймворк, тишина не
|
|
18
|
+
* зависит, и сборка, которую он выбросил, её не держит.
|
|
19
|
+
*
|
|
20
|
+
* Отменяемые события (`*:before`) тишина не задерживает: это вопрос, ответ на
|
|
21
|
+
* который нужен сейчас, и `preventDefault` приёмника прежнего монтирования
|
|
22
|
+
* отменяет запись сборки, как вне её.
|
|
23
|
+
*
|
|
24
|
+
* Механика одна на все адаптеры и включена всегда: у инстанса с одним
|
|
25
|
+
* монтированием копить в тишине некому, и стоит она одну проверку `WeakMap`
|
|
26
|
+
* на событие.
|
|
27
|
+
*/
|
|
28
|
+
export declare class TAssembling {
|
|
29
|
+
/** Сколько сборок идёт над инстансом: сборка вправе собрать вложенную над тем же. */
|
|
30
|
+
private readonly _depth;
|
|
31
|
+
/** Собрать над инстансом: на время `build` состояние остальных монтирований молчит. */
|
|
32
|
+
run<T>(instance: object, build: () => T): T;
|
|
33
|
+
/** Над кем-то из владельцев идёт сборка. */
|
|
34
|
+
covers(owners: readonly object[]): boolean;
|
|
35
|
+
/** Перечитать после сборки: одной микрозадачей, вне тела, которое сейчас выполняется. */
|
|
36
|
+
defer(reread: () => void): void;
|
|
37
|
+
}
|
|
38
|
+
/** Сборки процесса — общие для всех адаптеров, как и инстансы, над которыми они идут. */
|
|
39
|
+
export declare const assembling: TAssembling;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
//#region protected/adapter/exchange/assembling.class.ts
|
|
2
|
+
/**
|
|
3
|
+
* TAssembling — сборка над инстансом атомарна для остальных его монтирований.
|
|
4
|
+
*
|
|
5
|
+
* Над одним инстансом бывает больше одного монтирования: `ctrl` снаружи
|
|
6
|
+
* переехал в другое место дерева, и фреймворк собирает новый компонент, пока
|
|
7
|
+
* прежний ещё не снят. Сборка пишет в инстанс — начальные значения внешнему
|
|
8
|
+
* `ctrl`, `id` плагинов связок от нового монтирования, — и прежнее
|
|
9
|
+
* монтирование слышит каждую запись, пока сборка ещё идёт. Фреймворк, который
|
|
10
|
+
* собирает компонент на рендере, получил бы обновление чужого компонента
|
|
11
|
+
* посреди этого рендера, а повтор рендера (`Suspense`) — новую запись и новое
|
|
12
|
+
* обновление на каждый повтор.
|
|
13
|
+
*
|
|
14
|
+
* Поэтому, пока над инстансом идёт сборка (`run`), обмены остальных
|
|
15
|
+
* монтирований копят его состояние и уведомления и выпускают их одной
|
|
16
|
+
* микрозадачей после сборки (`defer`, правило выпуска — `TExchange`): итог, а
|
|
17
|
+
* не каждый шаг. Микрозадача не вклинивается в тело рендера, а граница тишины
|
|
18
|
+
* — сама сборка, синхронно: от того, примет ли сборку фреймворк, тишина не
|
|
19
|
+
* зависит, и сборка, которую он выбросил, её не держит.
|
|
20
|
+
*
|
|
21
|
+
* Отменяемые события (`*:before`) тишина не задерживает: это вопрос, ответ на
|
|
22
|
+
* который нужен сейчас, и `preventDefault` приёмника прежнего монтирования
|
|
23
|
+
* отменяет запись сборки, как вне её.
|
|
24
|
+
*
|
|
25
|
+
* Механика одна на все адаптеры и включена всегда: у инстанса с одним
|
|
26
|
+
* монтированием копить в тишине некому, и стоит она одну проверку `WeakMap`
|
|
27
|
+
* на событие.
|
|
28
|
+
*/
|
|
29
|
+
var TAssembling = class {
|
|
30
|
+
/** Сколько сборок идёт над инстансом: сборка вправе собрать вложенную над тем же. */
|
|
31
|
+
_depth = /* @__PURE__ */ new WeakMap();
|
|
32
|
+
/** Собрать над инстансом: на время `build` состояние остальных монтирований молчит. */
|
|
33
|
+
run(instance, build) {
|
|
34
|
+
this._depth.set(instance, (this._depth.get(instance) ?? 0) + 1);
|
|
35
|
+
try {
|
|
36
|
+
return build();
|
|
37
|
+
} finally {
|
|
38
|
+
const depth = (this._depth.get(instance) ?? 1) - 1;
|
|
39
|
+
if (depth > 0) this._depth.set(instance, depth);
|
|
40
|
+
else this._depth.delete(instance);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** Над кем-то из владельцев идёт сборка. */
|
|
44
|
+
covers(owners) {
|
|
45
|
+
return owners.some((owner) => this._depth.has(owner));
|
|
46
|
+
}
|
|
47
|
+
/** Перечитать после сборки: одной микрозадачей, вне тела, которое сейчас выполняется. */
|
|
48
|
+
defer(reread) {
|
|
49
|
+
queueMicrotask(reread);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
/** Сборки процесса — общие для всех адаптеров, как и инстансы, над которыми они идут. */
|
|
53
|
+
var assembling = new TAssembling();
|
|
54
|
+
//#endregion
|
|
55
|
+
export { TAssembling, assembling };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TCell — ячейка: значение, правило «то же самое» и подписчики.
|
|
3
|
+
*
|
|
4
|
+
* Единственная изменяемая память слоя. Всё, что слой обязан помнить между
|
|
5
|
+
* вызовами, лежит в ячейках: последнее отданное значение свойства, последнее
|
|
6
|
+
* значение, которое задал фреймворк, мешок `pluginProps`. Отдельных «памятей»
|
|
7
|
+
* с ручными флагами «задан / не задан» нет — их роль играет само значение
|
|
8
|
+
* ячейки и её правило равенства.
|
|
9
|
+
*
|
|
10
|
+
* Контракт подписки — как у стора Svelte и атома nanostores: `subscribe` сразу
|
|
11
|
+
* отдаёт текущее значение («инициализация — это и есть подписка»), `listen` —
|
|
12
|
+
* только изменения.
|
|
13
|
+
*
|
|
14
|
+
* Набор подписчиков заводится с первым `listen`: состояние и входы обмена на
|
|
15
|
+
* свои ячейки не подписываются, а действуют по ответу `set()`, и ячеек без
|
|
16
|
+
* подписчиков у монтирования — по одной на свойство.
|
|
17
|
+
*/
|
|
18
|
+
import type { TCellListener, TSame } from './types';
|
|
19
|
+
export declare class TCell<T> {
|
|
20
|
+
private _value;
|
|
21
|
+
private readonly _same;
|
|
22
|
+
private _listeners?;
|
|
23
|
+
constructor(_value: T, _same?: TSame<T>);
|
|
24
|
+
get value(): T;
|
|
25
|
+
/** Положить значение. «То же самое» не кладётся и подписчиков не будит — ответ `false`. */
|
|
26
|
+
set(next: T): boolean;
|
|
27
|
+
/** Слушать только изменения. */
|
|
28
|
+
listen(listener: TCellListener<T>): () => void;
|
|
29
|
+
/** Слушать изменения и сразу получить текущее значение. */
|
|
30
|
+
subscribe(listener: TCellListener<T>): () => void;
|
|
31
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//#region protected/adapter/exchange/cell.class.ts
|
|
2
|
+
var TCell = class {
|
|
3
|
+
_value;
|
|
4
|
+
_same;
|
|
5
|
+
_listeners;
|
|
6
|
+
constructor(_value, _same = Object.is) {
|
|
7
|
+
this._value = _value;
|
|
8
|
+
this._same = _same;
|
|
9
|
+
}
|
|
10
|
+
get value() {
|
|
11
|
+
return this._value;
|
|
12
|
+
}
|
|
13
|
+
/** Положить значение. «То же самое» не кладётся и подписчиков не будит — ответ `false`. */
|
|
14
|
+
set(next) {
|
|
15
|
+
if (this._same(this._value, next)) return false;
|
|
16
|
+
this._value = next;
|
|
17
|
+
if (this._listeners) for (const listener of [...this._listeners]) listener(next);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
/** Слушать только изменения. */
|
|
21
|
+
listen(listener) {
|
|
22
|
+
this._listeners ??= /* @__PURE__ */ new Set();
|
|
23
|
+
this._listeners.add(listener);
|
|
24
|
+
return () => {
|
|
25
|
+
this._listeners?.delete(listener);
|
|
26
|
+
if (this._listeners?.size === 0) this._listeners = void 0;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** Слушать изменения и сразу получить текущее значение. */
|
|
30
|
+
subscribe(listener) {
|
|
31
|
+
const off = this.listen(listener);
|
|
32
|
+
listener(this._value);
|
|
33
|
+
return off;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
//#endregion
|
|
37
|
+
export { TCell };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TEventRelay delivers explicit public events and model updates after state refresh.
|
|
3
|
+
* Models are delivered even when their source trigger is internal.
|
|
4
|
+
*/
|
|
5
|
+
import type { TTap } from './tap.class';
|
|
6
|
+
import type { IRoute, TEventSink } from './types';
|
|
7
|
+
export declare class TEventRelay {
|
|
8
|
+
private readonly _owners;
|
|
9
|
+
private readonly _tap;
|
|
10
|
+
/** Приёмники — пока есть хоть один. Список не правится на месте: событие обходит тот, что застало. */
|
|
11
|
+
private _sinks?;
|
|
12
|
+
/**
|
|
13
|
+
* @param _owners владельцы участников монтирования — у них модели читают новое значение
|
|
14
|
+
* @param _tap слушатель участников, общий с состоянием обмена
|
|
15
|
+
*/
|
|
16
|
+
constructor(_owners: readonly object[], _tap: TTap);
|
|
17
|
+
listen(sink: TEventSink): () => void;
|
|
18
|
+
/** Deliver an explicit public event and model updates independently, after refreshing state. */
|
|
19
|
+
publish(route: IRoute, args: readonly unknown[]): void;
|
|
20
|
+
/**
|
|
21
|
+
* Событие случилось, а отдать его обмен должен позже (`TExchange`, чужая
|
|
22
|
+
* сборка): доставка — тем приёмникам, что слушали в момент события. Приёмник,
|
|
23
|
+
* снятый до доставки, событие получает — оно случилось при нём; пришедший
|
|
24
|
+
* после — нет: для него это начальное состояние. Список не правится на
|
|
25
|
+
* месте, поэтому запомнить его — запомнить ссылку.
|
|
26
|
+
*/
|
|
27
|
+
later(route: IRoute, args: readonly unknown[]): () => void;
|
|
28
|
+
private _deliver;
|
|
29
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
//#region protected/adapter/exchange/event-relay.class.ts
|
|
2
|
+
var TEventRelay = class {
|
|
3
|
+
_owners;
|
|
4
|
+
_tap;
|
|
5
|
+
/** Приёмники — пока есть хоть один. Список не правится на месте: событие обходит тот, что застало. */
|
|
6
|
+
_sinks;
|
|
7
|
+
/**
|
|
8
|
+
* @param _owners владельцы участников монтирования — у них модели читают новое значение
|
|
9
|
+
* @param _tap слушатель участников, общий с состоянием обмена
|
|
10
|
+
*/
|
|
11
|
+
constructor(_owners, _tap) {
|
|
12
|
+
this._owners = _owners;
|
|
13
|
+
this._tap = _tap;
|
|
14
|
+
}
|
|
15
|
+
listen(sink) {
|
|
16
|
+
if (this._sinks === void 0) this._tap.hold();
|
|
17
|
+
this._sinks = this._sinks ? [...this._sinks, sink] : [sink];
|
|
18
|
+
let listening = true;
|
|
19
|
+
return () => {
|
|
20
|
+
const sinks = this._sinks;
|
|
21
|
+
const index = sinks?.indexOf(sink) ?? -1;
|
|
22
|
+
if (!listening || sinks === void 0 || index === -1) return;
|
|
23
|
+
listening = false;
|
|
24
|
+
this._sinks = sinks.length === 1 ? void 0 : [...sinks.slice(0, index), ...sinks.slice(index + 1)];
|
|
25
|
+
if (this._sinks === void 0) this._tap.release();
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** Deliver an explicit public event and model updates independently, after refreshing state. */
|
|
29
|
+
publish(route, args) {
|
|
30
|
+
this._deliver(route, args, this._sinks);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Событие случилось, а отдать его обмен должен позже (`TExchange`, чужая
|
|
34
|
+
* сборка): доставка — тем приёмникам, что слушали в момент события. Приёмник,
|
|
35
|
+
* снятый до доставки, событие получает — оно случилось при нём; пришедший
|
|
36
|
+
* после — нет: для него это начальное состояние. Список не правится на
|
|
37
|
+
* месте, поэтому запомнить его — запомнить ссылку.
|
|
38
|
+
*/
|
|
39
|
+
later(route, args) {
|
|
40
|
+
const sinks = this._sinks;
|
|
41
|
+
return () => this._deliver(route, args, sinks);
|
|
42
|
+
}
|
|
43
|
+
_deliver(route, args, sinks) {
|
|
44
|
+
const { event, models } = route;
|
|
45
|
+
if (sinks === void 0) return;
|
|
46
|
+
for (const sink of sinks) {
|
|
47
|
+
if (event !== void 0) sink(event, args);
|
|
48
|
+
for (const model of models) sink(model.name, [model.line.read(this._owners)]);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
//#endregion
|
|
53
|
+
export { TEventRelay };
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TExchange — values exchanged for the time of a mount: the participants' owners and four ports over them.
|
|
3
|
+
*
|
|
4
|
+
* This is all the adapter sees: `state` (where to put a value is its call),
|
|
5
|
+
* `inputs` (which way of delivery to use is its call), `events` (how to
|
|
6
|
+
* hand an event over is its call) and `updates` (what to do at the bounds
|
|
7
|
+
* of an update is its call). When and in what order is decided here and below.
|
|
8
|
+
*
|
|
9
|
+
* One class serves both a component (the framework's profile, the
|
|
10
|
+
* framework's props) and a plugin installed from outside (the common
|
|
11
|
+
* profile, the `pluginProps` bag): there is no second implementation of the
|
|
12
|
+
* same rules for external plugins.
|
|
13
|
+
*
|
|
14
|
+
* What to do with a participant's event is decided by the type's routing
|
|
15
|
+
* table (`TRouting`), and the participants' buses are listened to by one
|
|
16
|
+
* listener per bus (`TTap`), shared by the state and the events. The
|
|
17
|
+
* properties' lines are rows of the table too. Per mount the exchange holds
|
|
18
|
+
* the participants' owners, the values of the state and of the inputs and
|
|
19
|
+
* these listeners; there are no objects per property, no routes,
|
|
20
|
+
* subscriptions or closures per event. The exchange does not keep the
|
|
21
|
+
* participants (`TMember`): they are needed to find the table and the owners.
|
|
22
|
+
*
|
|
23
|
+
* **An update** is the exchange's unit of work: one event of a participant
|
|
24
|
+
* (the state rereads the event's properties, then the event and its models
|
|
25
|
+
* go to the sinks) or one release of the queue (below). The exchange reports
|
|
26
|
+
* where each update begins and ends (`updates`, `TUpdatePort`), and nothing
|
|
27
|
+
* more: what a framework does at the bounds is decided in its adapter.
|
|
28
|
+
*
|
|
29
|
+
* While an assembly of another mount runs over one of the participants
|
|
30
|
+
* (`TAssembling`), the exchange gives the framework the outcome of the
|
|
31
|
+
* assembly rather than each of its steps: the state and the notifications
|
|
32
|
+
* pile up and go in one microtask after it — the whole state first, then the
|
|
33
|
+
* notifications in the order they came. A cancelable event (`TActionEvent`)
|
|
34
|
+
* is a question whose answer is needed now: it goes at once, and the sink's
|
|
35
|
+
* `preventDefault` cancels the assembly's write, as outside it. Until the
|
|
36
|
+
* queue is released, the notifications that come after the assembly join it
|
|
37
|
+
* too — otherwise they would overtake those piled up. A notification reaches
|
|
38
|
+
* the sinks that listened at the moment of the event, even if they stopped
|
|
39
|
+
* before the release: the previous mount is taken down by the same pass of
|
|
40
|
+
* the framework, and the event happened while it was there
|
|
41
|
+
* (`TEventRelay.later`).
|
|
42
|
+
*
|
|
43
|
+
* A property with no participant gets no line: the description of a plugin
|
|
44
|
+
* missing from a foreign bundle is skipped silently.
|
|
45
|
+
*/
|
|
46
|
+
import type { TSurface } from '../surface';
|
|
47
|
+
import { TEventRelay } from './event-relay.class';
|
|
48
|
+
import { TInputPort } from './input-port.class';
|
|
49
|
+
import type { TLine } from './line.class';
|
|
50
|
+
import type { TMember } from './member.class';
|
|
51
|
+
import { TStateStore } from './state-store.class';
|
|
52
|
+
import { TUpdatePort } from './update-port.class';
|
|
53
|
+
export declare class TExchange {
|
|
54
|
+
readonly surface: TSurface;
|
|
55
|
+
/** Линии состава — общие у всех монтирований типа, владельцев берут из `owners`. */
|
|
56
|
+
readonly lines: readonly TLine[];
|
|
57
|
+
/** Владельцы участников по порядку состава: инстанс, плагины, связка. */
|
|
58
|
+
readonly owners: readonly object[];
|
|
59
|
+
readonly state: TStateStore;
|
|
60
|
+
readonly inputs: TInputPort;
|
|
61
|
+
readonly events: TEventRelay;
|
|
62
|
+
readonly updates: TUpdatePort;
|
|
63
|
+
/** Доставки уведомлений, отложенных до конца чужой сборки, — пока очередь не выпущена. */
|
|
64
|
+
private _queue?;
|
|
65
|
+
constructor(members: readonly TMember[], surface: TSurface, buildProps?: object);
|
|
66
|
+
/** Пропсы, которые компонент не съел: уходят атрибутами в корневой узел. */
|
|
67
|
+
forward<TProps extends object>(props: TProps): Partial<TProps>;
|
|
68
|
+
/** Очередь до конца чужой сборки: первая запись планирует её выпуск. */
|
|
69
|
+
private _defer;
|
|
70
|
+
/**
|
|
71
|
+
* A participant's event outside another mount's assembly: the state first,
|
|
72
|
+
* then the event and its models. The order is the exchange's rule, not the
|
|
73
|
+
* order of subscriptions.
|
|
74
|
+
*/
|
|
75
|
+
private _receive;
|
|
76
|
+
/** The release after the assembly is one update: the whole state first, then the notifications in order. */
|
|
77
|
+
private _release;
|
|
78
|
+
}
|