@soxa-ui/svelte 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 +219 -2
- package/dist/adapter/common/RoleIcon.svelte +25 -0
- package/dist/adapter/common/RoleIcon.svelte.d.ts +13 -0
- package/dist/adapter/common/click-action.d.ts +7 -0
- package/dist/adapter/common/click-action.js +11 -0
- package/dist/adapter/common/createSvelteAdapterContext.d.ts +12 -0
- package/dist/adapter/common/createSvelteAdapterContext.js +11 -0
- package/dist/adapter/common/handlers.d.ts +6 -0
- package/dist/adapter/common/handlers.js +11 -0
- package/dist/adapter/common/icon.d.ts +11 -0
- package/dist/adapter/common/icon.js +22 -0
- package/dist/adapter/common/index.d.ts +8 -0
- package/dist/adapter/common/index.js +8 -0
- package/dist/adapter/common/naming.d.ts +3 -0
- package/dist/adapter/common/naming.js +6 -0
- package/dist/adapter/common/profile.d.ts +2 -0
- package/dist/adapter/common/profile.js +2 -0
- package/dist/adapter/common/root.d.ts +77 -0
- package/dist/adapter/common/root.js +88 -0
- package/dist/adapter/elevator/elevator.class.d.ts +13 -0
- package/dist/adapter/elevator/elevator.class.js +27 -0
- package/dist/adapter/elevator/index.d.ts +2 -0
- package/dist/adapter/elevator/index.js +2 -0
- package/dist/adapter/elevator/useElevator.d.ts +6 -0
- package/dist/adapter/elevator/useElevator.js +9 -0
- package/dist/adapter/index.d.ts +5 -0
- package/dist/adapter/index.js +5 -0
- package/dist/adapter/locale/LocaleProvider.svelte +21 -0
- package/dist/adapter/locale/LocaleProvider.svelte.d.ts +4 -0
- package/dist/adapter/locale/context.d.ts +6 -0
- package/dist/adapter/locale/context.js +12 -0
- package/dist/adapter/locale/index.d.ts +2 -0
- package/dist/adapter/locale/index.js +1 -0
- package/dist/adapter/locale/types.d.ts +7 -0
- package/dist/adapter/locale/types.js +1 -0
- package/dist/adapter/runtime/Dynamic.svelte +54 -0
- package/dist/adapter/runtime/Dynamic.svelte.d.ts +25 -0
- package/dist/adapter/runtime/Teleport.svelte +96 -0
- package/dist/adapter/runtime/Teleport.svelte.d.ts +5 -0
- package/dist/adapter/runtime/TextSpan.svelte +28 -0
- package/dist/adapter/runtime/TextSpan.svelte.d.ts +8 -0
- package/dist/adapter/runtime/field-text.d.ts +29 -0
- package/dist/adapter/runtime/field-text.js +45 -0
- package/dist/adapter/runtime/index.d.ts +8 -0
- package/dist/adapter/runtime/index.js +7 -0
- package/dist/adapter/runtime/root-style.svelte.d.ts +27 -0
- package/dist/adapter/runtime/root-style.svelte.js +105 -0
- package/dist/adapter/runtime/runs.d.ts +13 -0
- package/dist/adapter/runtime/runs.js +20 -0
- package/dist/adapter/runtime/state.d.ts +8 -0
- package/dist/adapter/runtime/state.js +28 -0
- package/dist/adapter/runtime/tag.d.ts +11 -0
- package/dist/adapter/runtime/tag.js +4 -0
- package/dist/adapter/runtime/types.d.ts +8 -0
- package/dist/adapter/runtime/types.js +1 -0
- package/dist/adapter/runtime/useAdapter.svelte.d.ts +62 -0
- package/dist/adapter/runtime/useAdapter.svelte.js +228 -0
- package/dist/adapter/toasts/index.d.ts +3 -0
- package/dist/adapter/toasts/index.js +2 -0
- package/dist/adapter/toasts/render.d.ts +3 -0
- package/dist/adapter/toasts/render.js +4 -0
- package/dist/adapter/toasts/types.d.ts +6 -0
- package/dist/adapter/toasts/types.js +1 -0
- package/dist/adapter/toasts/useToasts.d.ts +7 -0
- package/dist/adapter/toasts/useToasts.js +13 -0
- package/dist/components/accordion/Accordion.svelte +43 -0
- package/dist/components/accordion/Accordion.svelte.d.ts +4 -0
- package/dist/components/accordion/base.component.d.ts +5 -0
- package/dist/components/accordion/base.component.js +1 -0
- package/dist/components/accordion/index.d.ts +6 -0
- package/dist/components/accordion/index.js +7 -0
- package/dist/components/accordion/item/Item.svelte +84 -0
- package/dist/components/accordion/item/Item.svelte.d.ts +4 -0
- package/dist/components/accordion/item/base.component.d.ts +7 -0
- package/dist/components/accordion/item/base.component.js +1 -0
- package/dist/components/accordion/item/index.d.ts +3 -0
- package/dist/components/accordion/item/index.js +3 -0
- package/dist/components/accordion/item/setup.component.d.ts +57 -0
- package/dist/components/accordion/item/setup.component.js +15 -0
- package/dist/components/accordion/setup.component.d.ts +47 -0
- package/dist/components/accordion/setup.component.js +21 -0
- package/dist/components/button/Button.svelte +33 -0
- package/dist/components/button/Button.svelte.d.ts +4 -0
- package/dist/components/button/base.component.d.ts +7 -0
- package/dist/components/button/base.component.js +1 -0
- package/dist/components/button/index.d.ts +3 -0
- package/dist/components/button/index.js +3 -0
- package/dist/components/button/setup.component.d.ts +43 -0
- package/dist/components/button/setup.component.js +10 -0
- package/dist/components/calendar/Calendar.svelte +193 -0
- package/dist/components/calendar/Calendar.svelte.d.ts +4 -0
- package/dist/components/calendar/base.component.d.ts +5 -0
- package/dist/components/calendar/base.component.js +1 -0
- package/dist/components/calendar/index.d.ts +6 -0
- package/dist/components/calendar/index.js +7 -0
- package/dist/components/calendar/item/Item.svelte +31 -0
- package/dist/components/calendar/item/Item.svelte.d.ts +4 -0
- package/dist/components/calendar/item/base.component.d.ts +6 -0
- package/dist/components/calendar/item/base.component.js +1 -0
- package/dist/components/calendar/item/index.d.ts +3 -0
- package/dist/components/calendar/item/index.js +3 -0
- package/dist/components/calendar/item/setup.component.d.ts +21 -0
- package/dist/components/calendar/item/setup.component.js +15 -0
- package/dist/components/calendar/setup.component.d.ts +47 -0
- package/dist/components/calendar/setup.component.js +19 -0
- package/dist/components/check-box/CheckBox.svelte +66 -0
- package/dist/components/check-box/CheckBox.svelte.d.ts +4 -0
- package/dist/components/check-box/base.component.d.ts +7 -0
- package/dist/components/check-box/base.component.js +1 -0
- package/dist/components/check-box/index.d.ts +3 -0
- package/dist/components/check-box/index.js +3 -0
- package/dist/components/check-box/setup.component.d.ts +51 -0
- package/dist/components/check-box/setup.component.js +11 -0
- package/dist/components/component/base.component.d.ts +5 -0
- package/dist/components/component/base.component.js +1 -0
- package/dist/components/component/index.d.ts +1 -0
- package/dist/components/component/index.js +1 -0
- package/dist/components/component-view/ComponentView.svelte +25 -0
- package/dist/components/component-view/ComponentView.svelte.d.ts +4 -0
- package/dist/components/component-view/base.component.d.ts +5 -0
- package/dist/components/component-view/base.component.js +1 -0
- package/dist/components/component-view/index.d.ts +3 -0
- package/dist/components/component-view/index.js +3 -0
- package/dist/components/component-view/setup.component.d.ts +17 -0
- package/dist/components/component-view/setup.component.js +10 -0
- package/dist/components/control/base.component.d.ts +5 -0
- package/dist/components/control/base.component.js +1 -0
- package/dist/components/control/index.d.ts +2 -0
- package/dist/components/control/index.js +2 -0
- package/dist/components/control/setup.component.d.ts +42 -0
- package/dist/components/control/setup.component.js +10 -0
- package/dist/components/date-input/DateInput.svelte +75 -0
- package/dist/components/date-input/DateInput.svelte.d.ts +4 -0
- package/dist/components/date-input/base.component.d.ts +6 -0
- package/dist/components/date-input/base.component.js +1 -0
- package/dist/components/date-input/index.d.ts +3 -0
- package/dist/components/date-input/index.js +3 -0
- package/dist/components/date-input/setup.component.d.ts +51 -0
- package/dist/components/date-input/setup.component.js +11 -0
- package/dist/components/date-picker/DatePicker.svelte +159 -0
- package/dist/components/date-picker/DatePicker.svelte.d.ts +4 -0
- package/dist/components/date-picker/base.component.d.ts +6 -0
- package/dist/components/date-picker/base.component.js +1 -0
- package/dist/components/date-picker/index.d.ts +3 -0
- package/dist/components/date-picker/index.js +3 -0
- package/dist/components/date-picker/setup.component.d.ts +83 -0
- package/dist/components/date-picker/setup.component.js +11 -0
- package/dist/components/dialog/Dialog.svelte +90 -0
- package/dist/components/dialog/Dialog.svelte.d.ts +4 -0
- package/dist/components/dialog/base.component.d.ts +6 -0
- package/dist/components/dialog/base.component.js +1 -0
- package/dist/components/dialog/index.d.ts +3 -0
- package/dist/components/dialog/index.js +3 -0
- package/dist/components/dialog/setup.component.d.ts +57 -0
- package/dist/components/dialog/setup.component.js +10 -0
- package/dist/components/drag-and-drop/DragAndDrop.svelte +12 -0
- package/dist/components/drag-and-drop/DragAndDrop.svelte.d.ts +4 -0
- package/dist/components/drag-and-drop/base.component.d.ts +6 -0
- package/dist/components/drag-and-drop/base.component.js +1 -0
- package/dist/components/drag-and-drop/index.d.ts +3 -0
- package/dist/components/drag-and-drop/index.js +3 -0
- package/dist/components/drag-and-drop/setup.component.d.ts +10 -0
- package/dist/components/drag-and-drop/setup.component.js +11 -0
- package/dist/components/drawer/Drawer.svelte +69 -0
- package/dist/components/drawer/Drawer.svelte.d.ts +4 -0
- package/dist/components/drawer/base.component.d.ts +6 -0
- package/dist/components/drawer/base.component.js +1 -0
- package/dist/components/drawer/index.d.ts +3 -0
- package/dist/components/drawer/index.js +3 -0
- package/dist/components/drawer/setup.component.d.ts +57 -0
- package/dist/components/drawer/setup.component.js +10 -0
- package/dist/components/field/Field.svelte +58 -0
- package/dist/components/field/Field.svelte.d.ts +4 -0
- package/dist/components/field/base.component.d.ts +5 -0
- package/dist/components/field/base.component.js +1 -0
- package/dist/components/field/index.d.ts +3 -0
- package/dist/components/field/index.js +3 -0
- package/dist/components/field/setup.component.d.ts +17 -0
- package/dist/components/field/setup.component.js +11 -0
- package/dist/components/frame/Frame.svelte +28 -0
- package/dist/components/frame/Frame.svelte.d.ts +4 -0
- package/dist/components/frame/base.component.d.ts +5 -0
- package/dist/components/frame/base.component.js +1 -0
- package/dist/components/frame/index.d.ts +3 -0
- package/dist/components/frame/index.js +3 -0
- package/dist/components/frame/setup.component.d.ts +65 -0
- package/dist/components/frame/setup.component.js +10 -0
- package/dist/components/icon/Icon.svelte +22 -0
- package/dist/components/icon/Icon.svelte.d.ts +4 -0
- package/dist/components/icon/base.component.d.ts +5 -0
- package/dist/components/icon/base.component.js +1 -0
- package/dist/components/icon/index.d.ts +3 -0
- package/dist/components/icon/index.js +3 -0
- package/dist/components/icon/setup.component.d.ts +37 -0
- package/dist/components/icon/setup.component.js +10 -0
- package/dist/components/index.d.ts +43 -0
- package/dist/components/index.js +43 -0
- package/dist/components/input/Input.svelte +75 -0
- package/dist/components/input/Input.svelte.d.ts +4 -0
- package/dist/components/input/base.component.d.ts +7 -0
- package/dist/components/input/base.component.js +1 -0
- package/dist/components/input/index.d.ts +3 -0
- package/dist/components/input/index.js +3 -0
- package/dist/components/input/setup.component.d.ts +51 -0
- package/dist/components/input/setup.component.js +11 -0
- package/dist/components/input-control/base.component.d.ts +6 -0
- package/dist/components/input-control/base.component.js +1 -0
- package/dist/components/input-control/index.d.ts +2 -0
- package/dist/components/input-control/index.js +2 -0
- package/dist/components/input-control/setup.component.d.ts +50 -0
- package/dist/components/input-control/setup.component.js +10 -0
- package/dist/components/interactive/base.component.d.ts +5 -0
- package/dist/components/interactive/base.component.js +1 -0
- package/dist/components/interactive/index.d.ts +2 -0
- package/dist/components/interactive/index.js +2 -0
- package/dist/components/interactive/setup.component.d.ts +16 -0
- package/dist/components/interactive/setup.component.js +10 -0
- package/dist/components/item-row/ItemRow.svelte +43 -0
- package/dist/components/item-row/ItemRow.svelte.d.ts +4 -0
- package/dist/components/item-row/index.d.ts +2 -0
- package/dist/components/item-row/index.js +2 -0
- package/dist/components/item-row/setup.component.d.ts +43 -0
- package/dist/components/item-row/setup.component.js +10 -0
- package/dist/components/label/Label.svelte +38 -0
- package/dist/components/label/Label.svelte.d.ts +4 -0
- package/dist/components/label/base.component.d.ts +5 -0
- package/dist/components/label/base.component.js +1 -0
- package/dist/components/label/index.d.ts +3 -0
- package/dist/components/label/index.js +3 -0
- package/dist/components/label/setup.component.d.ts +17 -0
- package/dist/components/label/setup.component.js +10 -0
- package/dist/components/list-box/ListBox.svelte +87 -0
- package/dist/components/list-box/ListBox.svelte.d.ts +4 -0
- package/dist/components/list-box/base.component.d.ts +7 -0
- package/dist/components/list-box/base.component.js +1 -0
- package/dist/components/list-box/group/Group.svelte +27 -0
- package/dist/components/list-box/group/Group.svelte.d.ts +4 -0
- package/dist/components/list-box/group/base.component.d.ts +5 -0
- package/dist/components/list-box/group/base.component.js +1 -0
- package/dist/components/list-box/group/index.d.ts +3 -0
- package/dist/components/list-box/group/index.js +3 -0
- package/dist/components/list-box/group/setup.component.d.ts +17 -0
- package/dist/components/list-box/group/setup.component.js +11 -0
- package/dist/components/list-box/index.d.ts +8 -0
- package/dist/components/list-box/index.js +9 -0
- package/dist/components/list-box/item/Item.svelte +72 -0
- package/dist/components/list-box/item/Item.svelte.d.ts +4 -0
- package/dist/components/list-box/item/base.component.d.ts +7 -0
- package/dist/components/list-box/item/base.component.js +1 -0
- package/dist/components/list-box/item/index.d.ts +3 -0
- package/dist/components/list-box/item/index.js +3 -0
- package/dist/components/list-box/item/setup.component.d.ts +61 -0
- package/dist/components/list-box/item/setup.component.js +15 -0
- package/dist/components/list-box/setup.component.d.ts +47 -0
- package/dist/components/list-box/setup.component.js +22 -0
- package/dist/components/menu/Menu.svelte +54 -0
- package/dist/components/menu/Menu.svelte.d.ts +4 -0
- package/dist/components/menu/base.component.d.ts +6 -0
- package/dist/components/menu/base.component.js +1 -0
- package/dist/components/menu/checkbox-item/CheckboxItem.svelte +67 -0
- package/dist/components/menu/checkbox-item/CheckboxItem.svelte.d.ts +4 -0
- package/dist/components/menu/checkbox-item/base.component.d.ts +7 -0
- package/dist/components/menu/checkbox-item/base.component.js +1 -0
- package/dist/components/menu/checkbox-item/index.d.ts +3 -0
- package/dist/components/menu/checkbox-item/index.js +3 -0
- package/dist/components/menu/checkbox-item/setup.component.d.ts +53 -0
- package/dist/components/menu/checkbox-item/setup.component.js +15 -0
- package/dist/components/menu/group/Group.svelte +27 -0
- package/dist/components/menu/group/Group.svelte.d.ts +4 -0
- package/dist/components/menu/group/base.component.d.ts +5 -0
- package/dist/components/menu/group/base.component.js +1 -0
- package/dist/components/menu/group/index.d.ts +3 -0
- package/dist/components/menu/group/index.js +3 -0
- package/dist/components/menu/group/setup.component.d.ts +17 -0
- package/dist/components/menu/group/setup.component.js +11 -0
- package/dist/components/menu/index.d.ts +20 -0
- package/dist/components/menu/index.js +30 -0
- package/dist/components/menu/item/Item.svelte +48 -0
- package/dist/components/menu/item/Item.svelte.d.ts +4 -0
- package/dist/components/menu/item/base.component.d.ts +8 -0
- package/dist/components/menu/item/base.component.js +1 -0
- package/dist/components/menu/item/index.d.ts +3 -0
- package/dist/components/menu/item/index.js +3 -0
- package/dist/components/menu/item/setup.component.d.ts +53 -0
- package/dist/components/menu/item/setup.component.js +15 -0
- package/dist/components/menu/popover-item/PopoverItem.svelte +79 -0
- package/dist/components/menu/popover-item/PopoverItem.svelte.d.ts +4 -0
- package/dist/components/menu/popover-item/base.component.d.ts +7 -0
- package/dist/components/menu/popover-item/base.component.js +1 -0
- package/dist/components/menu/popover-item/index.d.ts +3 -0
- package/dist/components/menu/popover-item/index.js +3 -0
- package/dist/components/menu/popover-item/setup.component.d.ts +75 -0
- package/dist/components/menu/popover-item/setup.component.js +15 -0
- package/dist/components/menu/radio-group/RadioGroup.svelte +27 -0
- package/dist/components/menu/radio-group/RadioGroup.svelte.d.ts +4 -0
- package/dist/components/menu/radio-group/base.component.d.ts +5 -0
- package/dist/components/menu/radio-group/base.component.js +1 -0
- package/dist/components/menu/radio-group/index.d.ts +3 -0
- package/dist/components/menu/radio-group/index.js +3 -0
- package/dist/components/menu/radio-group/setup.component.d.ts +17 -0
- package/dist/components/menu/radio-group/setup.component.js +13 -0
- package/dist/components/menu/radio-item/RadioItem.svelte +64 -0
- package/dist/components/menu/radio-item/RadioItem.svelte.d.ts +4 -0
- package/dist/components/menu/radio-item/base.component.d.ts +8 -0
- package/dist/components/menu/radio-item/base.component.js +1 -0
- package/dist/components/menu/radio-item/index.d.ts +3 -0
- package/dist/components/menu/radio-item/index.js +3 -0
- package/dist/components/menu/radio-item/setup.component.d.ts +53 -0
- package/dist/components/menu/radio-item/setup.component.js +15 -0
- package/dist/components/menu/separator/Separator.svelte +22 -0
- package/dist/components/menu/separator/Separator.svelte.d.ts +4 -0
- package/dist/components/menu/separator/base.component.d.ts +5 -0
- package/dist/components/menu/separator/base.component.js +1 -0
- package/dist/components/menu/separator/index.d.ts +3 -0
- package/dist/components/menu/separator/index.js +3 -0
- package/dist/components/menu/separator/setup.component.d.ts +17 -0
- package/dist/components/menu/separator/setup.component.js +10 -0
- package/dist/components/menu/setup.component.d.ts +35 -0
- package/dist/components/menu/setup.component.js +19 -0
- package/dist/components/menu/submenu/Submenu.svelte +180 -0
- package/dist/components/menu/submenu/Submenu.svelte.d.ts +15 -0
- package/dist/components/menu/submenu/base.component.d.ts +7 -0
- package/dist/components/menu/submenu/base.component.js +1 -0
- package/dist/components/menu/submenu/index.d.ts +3 -0
- package/dist/components/menu/submenu/index.js +3 -0
- package/dist/components/menu/submenu/setup.component.d.ts +79 -0
- package/dist/components/menu/submenu/setup.component.js +21 -0
- package/dist/components/number-input/NumberInput.svelte +119 -0
- package/dist/components/number-input/NumberInput.svelte.d.ts +4 -0
- package/dist/components/number-input/base.component.d.ts +7 -0
- package/dist/components/number-input/base.component.js +1 -0
- package/dist/components/number-input/index.d.ts +3 -0
- package/dist/components/number-input/index.js +3 -0
- package/dist/components/number-input/setup.component.d.ts +51 -0
- package/dist/components/number-input/setup.component.js +11 -0
- package/dist/components/pagination/Pagination.svelte +80 -0
- package/dist/components/pagination/Pagination.svelte.d.ts +4 -0
- package/dist/components/pagination/base.component.d.ts +6 -0
- package/dist/components/pagination/base.component.js +1 -0
- package/dist/components/pagination/index.d.ts +3 -0
- package/dist/components/pagination/index.js +3 -0
- package/dist/components/pagination/item/Item.svelte +44 -0
- package/dist/components/pagination/item/Item.svelte.d.ts +4 -0
- package/dist/components/pagination/item/base.component.d.ts +6 -0
- package/dist/components/pagination/item/base.component.js +1 -0
- package/dist/components/pagination/item/index.d.ts +3 -0
- package/dist/components/pagination/item/index.js +3 -0
- package/dist/components/pagination/item/setup.component.d.ts +23 -0
- package/dist/components/pagination/item/setup.component.js +15 -0
- package/dist/components/pagination/setup.component.d.ts +47 -0
- package/dist/components/pagination/setup.component.js +19 -0
- package/dist/components/popover/Popover.svelte +72 -0
- package/dist/components/popover/Popover.svelte.d.ts +4 -0
- package/dist/components/popover/base.component.d.ts +6 -0
- package/dist/components/popover/base.component.js +1 -0
- package/dist/components/popover/index.d.ts +3 -0
- package/dist/components/popover/index.js +3 -0
- package/dist/components/popover/setup.component.d.ts +47 -0
- package/dist/components/popover/setup.component.js +10 -0
- package/dist/components/progress-linear/ProgressLinear.svelte +29 -0
- package/dist/components/progress-linear/ProgressLinear.svelte.d.ts +4 -0
- package/dist/components/progress-linear/base.component.d.ts +5 -0
- package/dist/components/progress-linear/base.component.js +1 -0
- package/dist/components/progress-linear/index.d.ts +3 -0
- package/dist/components/progress-linear/index.js +3 -0
- package/dist/components/progress-linear/setup.component.d.ts +33 -0
- package/dist/components/progress-linear/setup.component.js +10 -0
- package/dist/components/progress-spinner/ProgressSpinner.svelte +35 -0
- package/dist/components/progress-spinner/ProgressSpinner.svelte.d.ts +4 -0
- package/dist/components/progress-spinner/base.component.d.ts +5 -0
- package/dist/components/progress-spinner/base.component.js +1 -0
- package/dist/components/progress-spinner/index.d.ts +3 -0
- package/dist/components/progress-spinner/index.js +3 -0
- package/dist/components/progress-spinner/setup.component.d.ts +33 -0
- package/dist/components/progress-spinner/setup.component.js +10 -0
- package/dist/components/radio-group/RadioGroup.svelte +34 -0
- package/dist/components/radio-group/RadioGroup.svelte.d.ts +4 -0
- package/dist/components/radio-group/base.component.d.ts +5 -0
- package/dist/components/radio-group/base.component.js +1 -0
- package/dist/components/radio-group/index.d.ts +6 -0
- package/dist/components/radio-group/index.js +7 -0
- package/dist/components/radio-group/item/Item.svelte +51 -0
- package/dist/components/radio-group/item/Item.svelte.d.ts +4 -0
- package/dist/components/radio-group/item/base.component.d.ts +8 -0
- package/dist/components/radio-group/item/base.component.js +1 -0
- package/dist/components/radio-group/item/index.d.ts +3 -0
- package/dist/components/radio-group/item/index.js +3 -0
- package/dist/components/radio-group/item/setup.component.d.ts +49 -0
- package/dist/components/radio-group/item/setup.component.js +15 -0
- package/dist/components/radio-group/setup.component.d.ts +47 -0
- package/dist/components/radio-group/setup.component.js +19 -0
- package/dist/components/rating/Rating.svelte +57 -0
- package/dist/components/rating/Rating.svelte.d.ts +4 -0
- package/dist/components/rating/base.component.d.ts +6 -0
- package/dist/components/rating/base.component.js +1 -0
- package/dist/components/rating/index.d.ts +3 -0
- package/dist/components/rating/index.js +3 -0
- package/dist/components/rating/setup.component.d.ts +51 -0
- package/dist/components/rating/setup.component.js +11 -0
- package/dist/components/scroller/Scroller.svelte +67 -0
- package/dist/components/scroller/Scroller.svelte.d.ts +4 -0
- package/dist/components/scroller/base.component.d.ts +6 -0
- package/dist/components/scroller/base.component.js +1 -0
- package/dist/components/scroller/index.d.ts +3 -0
- package/dist/components/scroller/index.js +3 -0
- package/dist/components/scroller/setup.component.d.ts +43 -0
- package/dist/components/scroller/setup.component.js +10 -0
- package/dist/components/select/Select.svelte +143 -0
- package/dist/components/select/Select.svelte.d.ts +4 -0
- package/dist/components/select/base.component.d.ts +7 -0
- package/dist/components/select/base.component.js +1 -0
- package/dist/components/select/group/Group.svelte +27 -0
- package/dist/components/select/group/Group.svelte.d.ts +4 -0
- package/dist/components/select/group/base.component.d.ts +5 -0
- package/dist/components/select/group/base.component.js +1 -0
- package/dist/components/select/group/index.d.ts +3 -0
- package/dist/components/select/group/index.js +3 -0
- package/dist/components/select/group/setup.component.d.ts +17 -0
- package/dist/components/select/group/setup.component.js +11 -0
- package/dist/components/select/index.d.ts +8 -0
- package/dist/components/select/index.js +9 -0
- package/dist/components/select/item/Item.svelte +74 -0
- package/dist/components/select/item/Item.svelte.d.ts +4 -0
- package/dist/components/select/item/base.component.d.ts +7 -0
- package/dist/components/select/item/base.component.js +1 -0
- package/dist/components/select/item/index.d.ts +3 -0
- package/dist/components/select/item/index.js +3 -0
- package/dist/components/select/item/setup.component.d.ts +61 -0
- package/dist/components/select/item/setup.component.js +15 -0
- package/dist/components/select/setup.component.d.ts +85 -0
- package/dist/components/select/setup.component.js +21 -0
- package/dist/components/skeleton/Skeleton.svelte +32 -0
- package/dist/components/skeleton/Skeleton.svelte.d.ts +4 -0
- package/dist/components/skeleton/base.component.d.ts +5 -0
- package/dist/components/skeleton/base.component.js +1 -0
- package/dist/components/skeleton/index.d.ts +3 -0
- package/dist/components/skeleton/index.js +3 -0
- package/dist/components/skeleton/setup.component.d.ts +21 -0
- package/dist/components/skeleton/setup.component.js +10 -0
- package/dist/components/slider/Slider.svelte +68 -0
- package/dist/components/slider/Slider.svelte.d.ts +4 -0
- package/dist/components/slider/base.component.d.ts +6 -0
- package/dist/components/slider/base.component.js +1 -0
- package/dist/components/slider/index.d.ts +3 -0
- package/dist/components/slider/index.js +3 -0
- package/dist/components/slider/setup.component.d.ts +43 -0
- package/dist/components/slider/setup.component.js +11 -0
- package/dist/components/stylable/base.component.d.ts +5 -0
- package/dist/components/stylable/base.component.js +1 -0
- package/dist/components/stylable/index.d.ts +2 -0
- package/dist/components/stylable/index.js +2 -0
- package/dist/components/stylable/setup.component.d.ts +16 -0
- package/dist/components/stylable/setup.component.js +10 -0
- package/dist/components/switch/Switch.svelte +43 -0
- package/dist/components/switch/Switch.svelte.d.ts +4 -0
- package/dist/components/switch/base.component.d.ts +7 -0
- package/dist/components/switch/base.component.js +1 -0
- package/dist/components/switch/index.d.ts +3 -0
- package/dist/components/switch/index.js +3 -0
- package/dist/components/switch/setup.component.d.ts +51 -0
- package/dist/components/switch/setup.component.js +11 -0
- package/dist/components/table/Table.svelte +79 -0
- package/dist/components/table/Table.svelte.d.ts +4 -0
- package/dist/components/table/base.component.d.ts +6 -0
- package/dist/components/table/base.component.js +1 -0
- package/dist/components/table/column/Column.svelte +70 -0
- package/dist/components/table/column/Column.svelte.d.ts +4 -0
- package/dist/components/table/column/base.component.d.ts +6 -0
- package/dist/components/table/column/base.component.js +1 -0
- package/dist/components/table/column/index.d.ts +3 -0
- package/dist/components/table/column/index.js +3 -0
- package/dist/components/table/column/setup.component.d.ts +17 -0
- package/dist/components/table/column/setup.component.js +10 -0
- package/dist/components/table/index.d.ts +8 -0
- package/dist/components/table/index.js +9 -0
- package/dist/components/table/row/Row.svelte +74 -0
- package/dist/components/table/row/Row.svelte.d.ts +4 -0
- package/dist/components/table/row/base.component.d.ts +6 -0
- package/dist/components/table/row/base.component.js +1 -0
- package/dist/components/table/row/index.d.ts +3 -0
- package/dist/components/table/row/index.js +3 -0
- package/dist/components/table/row/setup.component.d.ts +23 -0
- package/dist/components/table/row/setup.component.js +15 -0
- package/dist/components/table/setup.component.d.ts +53 -0
- package/dist/components/table/setup.component.js +23 -0
- package/dist/components/tabs/Tabs.svelte +64 -0
- package/dist/components/tabs/Tabs.svelte.d.ts +4 -0
- package/dist/components/tabs/base.component.d.ts +7 -0
- package/dist/components/tabs/base.component.js +1 -0
- package/dist/components/tabs/content/Content.svelte +21 -0
- package/dist/components/tabs/content/Content.svelte.d.ts +4 -0
- package/dist/components/tabs/content/base.component.d.ts +5 -0
- package/dist/components/tabs/content/base.component.js +1 -0
- package/dist/components/tabs/content/index.d.ts +3 -0
- package/dist/components/tabs/content/index.js +3 -0
- package/dist/components/tabs/content/setup.component.d.ts +29 -0
- package/dist/components/tabs/content/setup.component.js +15 -0
- package/dist/components/tabs/index.d.ts +8 -0
- package/dist/components/tabs/index.js +9 -0
- package/dist/components/tabs/item/Item.svelte +74 -0
- package/dist/components/tabs/item/Item.svelte.d.ts +4 -0
- package/dist/components/tabs/item/base.component.d.ts +7 -0
- package/dist/components/tabs/item/base.component.js +1 -0
- package/dist/components/tabs/item/index.d.ts +3 -0
- package/dist/components/tabs/item/index.js +3 -0
- package/dist/components/tabs/item/setup.component.d.ts +57 -0
- package/dist/components/tabs/item/setup.component.js +15 -0
- package/dist/components/tabs/setup.component.d.ts +47 -0
- package/dist/components/tabs/setup.component.js +21 -0
- package/dist/components/tags/Tags.svelte +49 -0
- package/dist/components/tags/Tags.svelte.d.ts +4 -0
- package/dist/components/tags/base.component.d.ts +6 -0
- package/dist/components/tags/base.component.js +1 -0
- package/dist/components/tags/index.d.ts +6 -0
- package/dist/components/tags/index.js +7 -0
- package/dist/components/tags/item/Item.svelte +82 -0
- package/dist/components/tags/item/Item.svelte.d.ts +4 -0
- package/dist/components/tags/item/base.component.d.ts +7 -0
- package/dist/components/tags/item/base.component.js +1 -0
- package/dist/components/tags/item/index.d.ts +3 -0
- package/dist/components/tags/item/index.js +3 -0
- package/dist/components/tags/item/setup.component.d.ts +49 -0
- package/dist/components/tags/item/setup.component.js +15 -0
- package/dist/components/tags/setup.component.d.ts +47 -0
- package/dist/components/tags/setup.component.js +19 -0
- package/dist/components/textable/base.component.d.ts +5 -0
- package/dist/components/textable/base.component.js +1 -0
- package/dist/components/textable/index.d.ts +2 -0
- package/dist/components/textable/index.js +2 -0
- package/dist/components/textable/setup.component.d.ts +42 -0
- package/dist/components/textable/setup.component.js +10 -0
- package/dist/components/textarea/Textarea.svelte +42 -0
- package/dist/components/textarea/Textarea.svelte.d.ts +4 -0
- package/dist/components/textarea/base.component.d.ts +7 -0
- package/dist/components/textarea/base.component.js +1 -0
- package/dist/components/textarea/index.d.ts +3 -0
- package/dist/components/textarea/index.js +3 -0
- package/dist/components/textarea/setup.component.d.ts +55 -0
- package/dist/components/textarea/setup.component.js +11 -0
- package/dist/components/toasts/Toasts.svelte +58 -0
- package/dist/components/toasts/Toasts.svelte.d.ts +4 -0
- package/dist/components/toasts/base.component.d.ts +6 -0
- package/dist/components/toasts/base.component.js +1 -0
- package/dist/components/toasts/index.d.ts +3 -0
- package/dist/components/toasts/index.js +3 -0
- package/dist/components/toasts/item/Item.svelte +94 -0
- package/dist/components/toasts/item/Item.svelte.d.ts +4 -0
- package/dist/components/toasts/item/base.component.d.ts +6 -0
- package/dist/components/toasts/item/base.component.js +1 -0
- package/dist/components/toasts/item/index.d.ts +3 -0
- package/dist/components/toasts/item/index.js +3 -0
- package/dist/components/toasts/item/setup.component.d.ts +21 -0
- package/dist/components/toasts/item/setup.component.js +15 -0
- package/dist/components/toasts/setup.component.d.ts +25 -0
- package/dist/components/toasts/setup.component.js +21 -0
- package/dist/components/tooltip/Tooltip.svelte +37 -0
- package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -0
- package/dist/components/tooltip/base.component.d.ts +6 -0
- package/dist/components/tooltip/base.component.js +1 -0
- package/dist/components/tooltip/index.d.ts +3 -0
- package/dist/components/tooltip/index.js +3 -0
- package/dist/components/tooltip/setup.component.d.ts +31 -0
- package/dist/components/tooltip/setup.component.js +10 -0
- package/dist/components/value-control/base.component.d.ts +6 -0
- package/dist/components/value-control/base.component.js +1 -0
- package/dist/components/value-control/index.d.ts +2 -0
- package/dist/components/value-control/index.js +2 -0
- package/dist/components/value-control/setup.component.d.ts +42 -0
- package/dist/components/value-control/setup.component.js +10 -0
- package/dist/components/virtual/Virtual.svelte +12 -0
- package/dist/components/virtual/Virtual.svelte.d.ts +4 -0
- package/dist/components/virtual/base.component.d.ts +6 -0
- package/dist/components/virtual/base.component.js +1 -0
- package/dist/components/virtual/index.d.ts +3 -0
- package/dist/components/virtual/index.js +3 -0
- package/dist/components/virtual/setup.component.d.ts +10 -0
- package/dist/components/virtual/setup.component.js +11 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +5 -0
- package/dist/types.d.ts +41 -0
- package/dist/types.js +1 -0
- package/package.json +61 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useAdapter — binds an adapter context to Svelte, the counterpart of Vue's
|
|
3
|
+
* `useAdapter`.
|
|
4
|
+
*
|
|
5
|
+
* 1. Core → Svelte: a subscription to the binding state; a property read in a
|
|
6
|
+
* tracking context keeps its value in a raw rune
|
|
7
|
+
* 2. Svelte → Core: input props in an effect
|
|
8
|
+
* 3. The component is accepted: `adapter.attach()` at initialisation
|
|
9
|
+
* 4. Events go to the `onXxx` callback props, after the acceptance and until
|
|
10
|
+
* `detach`
|
|
11
|
+
* 5. The root, by an attachment: to `TElementPlugin`, to the component's
|
|
12
|
+
* `ref` and to the `rootElement` rune
|
|
13
|
+
* 6. Cleanup on destroy
|
|
14
|
+
*
|
|
15
|
+
* The collection facade is bound by `useCollectionAdapter`, before the
|
|
16
|
+
* component, and `joinBindings` joins it with the component's binding.
|
|
17
|
+
* AGENTS.md (Svelte), «Связка».
|
|
18
|
+
*/
|
|
19
|
+
import type { IAdapterContext, IComponentContract, TAdapterState } from '@soxa-ui/setup';
|
|
20
|
+
import { type TJoinedState } from './state';
|
|
21
|
+
/** The props the component did not take; it takes `ref` from `$props()` itself. */
|
|
22
|
+
type TForwardProps<TProps extends object> = Omit<Partial<TProps>, 'children' | 'ctrl' | 'ref'>;
|
|
23
|
+
/** The root's receiver: the component's bindable `ref` prop, `(node) => (ref = node)`. */
|
|
24
|
+
export type TRootReceiver = (node: Element | null) => void;
|
|
25
|
+
export type TBinding<C extends IComponentContract = IComponentContract, TProps extends object = object, TState extends object = TAdapterState<C>> = {
|
|
26
|
+
readonly ctrl: C['instance'];
|
|
27
|
+
readonly state: TState;
|
|
28
|
+
/** The consumer's root attributes, with its attachments (symbol keys). */
|
|
29
|
+
readonly forwardProps: TForwardProps<TProps>;
|
|
30
|
+
/** The root bound to `TElementPlugin`; `null` before the render. */
|
|
31
|
+
readonly rootElement: Element | null;
|
|
32
|
+
/** The root's attachment: binds to `TElementPlugin`, then the component's `ref`. */
|
|
33
|
+
attachElement: (node: Element) => () => void;
|
|
34
|
+
/** Only the binding: for a root inside a wrapper (`toWrappedRootProps`). */
|
|
35
|
+
bindRef: (node: Element) => () => void;
|
|
36
|
+
/** Only the `ref`: for the root's wrapper. */
|
|
37
|
+
consumerRef: (node: Element) => () => void;
|
|
38
|
+
};
|
|
39
|
+
/** The binding of a collection facade: it has no `ctrl` and no root of its own. */
|
|
40
|
+
export type TCollectionBinding<TState extends object, TProps extends object = object> = {
|
|
41
|
+
readonly state: TState;
|
|
42
|
+
/** The attributes the facade leaves; `joinBindings` passes it the component's rest. */
|
|
43
|
+
forward: (props: TForwardProps<TProps>) => TForwardProps<TProps>;
|
|
44
|
+
};
|
|
45
|
+
/** `receive` is the root's receiver; an assembly without its own root (`setupControl`) has none. */
|
|
46
|
+
export declare function useAdapter<C extends IComponentContract, TProps extends object>(adapter: IAdapterContext<C>, getProps: () => TProps, receive?: TRootReceiver): TBinding<C, TProps>;
|
|
47
|
+
/**
|
|
48
|
+
* The adapter of a collection facade: its state and what it leaves of the
|
|
49
|
+
* attributes. No `ctrl` and no root: they are the component's, whose binding
|
|
50
|
+
* `joinBindings` joins the facade with. Bound before the component: the
|
|
51
|
+
* facade, accepted, writes into it, and that is its starting state.
|
|
52
|
+
*/
|
|
53
|
+
export declare function useCollectionAdapter<F extends IComponentContract, TProps extends object>(facade: IAdapterContext<F>, getProps: () => TProps): TCollectionBinding<TAdapterState<F>, TProps>;
|
|
54
|
+
/**
|
|
55
|
+
* One binding of a component and its facades, for the markup: the state of
|
|
56
|
+
* all of them as one view, the attributes of the last facade (each takes its
|
|
57
|
+
* own from the rest of the previous one, the first from the component's),
|
|
58
|
+
* `ctrl` and the root of the component.
|
|
59
|
+
*/
|
|
60
|
+
export declare function joinBindings<C extends IComponentContract, TProps extends object, TState extends object, TFacade extends object>(owner: TBinding<C, TProps, TState>, facade: TCollectionBinding<TFacade, TProps>): TBinding<C, TProps, TJoinedState<TFacade, TState>>;
|
|
61
|
+
export declare function joinBindings<C extends IComponentContract, TProps extends object, TState extends object, TFacade extends object, TOwnerFacade extends object>(owner: TBinding<C, TProps, TState>, facade: TCollectionBinding<TFacade, TProps>, ownerFacade: TCollectionBinding<TOwnerFacade, TProps>): TBinding<C, TProps, TJoinedState<TOwnerFacade, TJoinedState<TFacade, TState>>>;
|
|
62
|
+
export {};
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useAdapter — binds an adapter context to Svelte, the counterpart of Vue's
|
|
3
|
+
* `useAdapter`.
|
|
4
|
+
*
|
|
5
|
+
* 1. Core → Svelte: a subscription to the binding state; a property read in a
|
|
6
|
+
* tracking context keeps its value in a raw rune
|
|
7
|
+
* 2. Svelte → Core: input props in an effect
|
|
8
|
+
* 3. The component is accepted: `adapter.attach()` at initialisation
|
|
9
|
+
* 4. Events go to the `onXxx` callback props, after the acceptance and until
|
|
10
|
+
* `detach`
|
|
11
|
+
* 5. The root, by an attachment: to `TElementPlugin`, to the component's
|
|
12
|
+
* `ref` and to the `rootElement` rune
|
|
13
|
+
* 6. Cleanup on destroy
|
|
14
|
+
*
|
|
15
|
+
* The collection facade is bound by `useCollectionAdapter`, before the
|
|
16
|
+
* component, and `joinBindings` joins it with the component's binding.
|
|
17
|
+
* AGENTS.md (Svelte), «Связка».
|
|
18
|
+
*/
|
|
19
|
+
import { onDestroy, untrack } from 'svelte';
|
|
20
|
+
import { toInstanceState } from '@soxa-ui/setup';
|
|
21
|
+
import { SvelteProfile } from '../common';
|
|
22
|
+
import { joinState } from './state';
|
|
23
|
+
/** An assembly without its own root (`setupControl`): there is no one to give the node to. */
|
|
24
|
+
const NO_RECEIVER = () => { };
|
|
25
|
+
/**
|
|
26
|
+
* The own rune of a binding property a tracking context has read: a raw rune
|
|
27
|
+
* (`$state.raw`). The core hands out values, not handles on live state, and
|
|
28
|
+
* reports a change with a new value (AGENTS.md, «Контракт границы core →
|
|
29
|
+
* ui»). The deep `$state` rune wrapped everything composite in a proxy (the
|
|
30
|
+
* array of a table row's cells, each cell, its `aria` and `dataset`) with a
|
|
31
|
+
* source per key read, and there is nothing to watch: nobody changes them in
|
|
32
|
+
* place. In the table that was a third of a row's memory
|
|
33
|
+
* (benchmarks/table/svelte.md, 869fmcau7).
|
|
34
|
+
*
|
|
35
|
+
* `born` is the binding's version when the rune was made (see `TValues`).
|
|
36
|
+
*/
|
|
37
|
+
class TRawValue {
|
|
38
|
+
born;
|
|
39
|
+
value = $state.raw();
|
|
40
|
+
constructor(value, born) {
|
|
41
|
+
this.born = born;
|
|
42
|
+
this.value = value;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** `TValues` with the version in a raw rune. */
|
|
46
|
+
class TValueStore {
|
|
47
|
+
values = new Map();
|
|
48
|
+
version = $state.raw(0);
|
|
49
|
+
}
|
|
50
|
+
/** Whether the property has arrived; as an object property, a symbol never has. */
|
|
51
|
+
function has({ values }, name) {
|
|
52
|
+
return typeof name === 'string' && values.has(name);
|
|
53
|
+
}
|
|
54
|
+
/** Value of the property; read in a tracking context, a property without a rune gets one. */
|
|
55
|
+
function valueOf(target, name) {
|
|
56
|
+
if (!has(target, name))
|
|
57
|
+
return undefined;
|
|
58
|
+
const entry = target.values.get(name);
|
|
59
|
+
if (entry instanceof TRawValue)
|
|
60
|
+
return entry.value;
|
|
61
|
+
if ($effect.tracking())
|
|
62
|
+
target.values.set(name, new TRawValue(entry, target.version));
|
|
63
|
+
return entry;
|
|
64
|
+
}
|
|
65
|
+
/** New value from the subscription; the caller writes it untracked (see `useExchange`). */
|
|
66
|
+
function write(target, name, value) {
|
|
67
|
+
const entry = target.values.get(name);
|
|
68
|
+
if (!(entry instanceof TRawValue)) {
|
|
69
|
+
target.values.set(name, value);
|
|
70
|
+
}
|
|
71
|
+
else if (entry.value !== value) {
|
|
72
|
+
if (entry.born === target.version)
|
|
73
|
+
target.version++;
|
|
74
|
+
entry.value = value;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Binding state: a proxy over its properties, one handler for all bindings.
|
|
79
|
+
* A getter per property (a closure, its scopes and a pair of accessors) cost
|
|
80
|
+
* a table row kilobytes (benchmarks/table/svelte.md).
|
|
81
|
+
*/
|
|
82
|
+
const STATE = {
|
|
83
|
+
get: valueOf,
|
|
84
|
+
has,
|
|
85
|
+
ownKeys: ({ values }) => [...values.keys()],
|
|
86
|
+
getOwnPropertyDescriptor: (target, name) => has(target, name)
|
|
87
|
+
? {
|
|
88
|
+
value: valueOf(target, name),
|
|
89
|
+
enumerable: true,
|
|
90
|
+
configurable: true,
|
|
91
|
+
writable: false,
|
|
92
|
+
}
|
|
93
|
+
: undefined,
|
|
94
|
+
};
|
|
95
|
+
/** What `useAdapter` and `useCollectionAdapter` share. */
|
|
96
|
+
function useExchange(adapter, getProps) {
|
|
97
|
+
const exchange = adapter.connect(SvelteProfile);
|
|
98
|
+
const values = new TValueStore();
|
|
99
|
+
// 1. Subscribe right away, not in an effect: there are no effects on the
|
|
100
|
+
// server. The write is untracked: the core changes in the middle of
|
|
101
|
+
// rendering too
|
|
102
|
+
onDestroy(exchange.state.subscribe((name, value) => {
|
|
103
|
+
untrack(() => write(values, name, value));
|
|
104
|
+
}));
|
|
105
|
+
// 2. The effect reads all props, the binding writes only the changed ones
|
|
106
|
+
$effect(() => {
|
|
107
|
+
exchange.inputs.full(getProps());
|
|
108
|
+
});
|
|
109
|
+
// 3. The component's initialisation, on the server too, is its mount: a
|
|
110
|
+
// collection item joins the collection by the server markup, in DOM order
|
|
111
|
+
adapter.attach();
|
|
112
|
+
// 4. Events after the acceptance: what it writes is the starting state, as
|
|
113
|
+
// in the other adapters (benchmarks/parity/README.md). A component with
|
|
114
|
+
// collection facades binds them first: the facade, accepted, writes into
|
|
115
|
+
// the component (the months of Calendar's grids, Table's `dataset`). One
|
|
116
|
+
// subscription for the whole life, at initialisation, like the state: in an
|
|
117
|
+
// effect it began after the children, and the markup items that joined the
|
|
118
|
+
// collection while mounting never reached the consumer. The callback is
|
|
119
|
+
// read lazily and called untracked: an event comes in the middle of
|
|
120
|
+
// rendering too (an item joins inside the owner's block), and a consumer
|
|
121
|
+
// writing its state there would be an unsafe mutation for Svelte.
|
|
122
|
+
// `onDestroy` unsubscribes on the server, where effects do not run
|
|
123
|
+
const stop = exchange.events.listen((exportName, args) => {
|
|
124
|
+
untrack(() => {
|
|
125
|
+
const callback = Reflect.get(getProps(), exportName);
|
|
126
|
+
if (typeof callback === 'function')
|
|
127
|
+
callback(...args);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
onDestroy(stop);
|
|
131
|
+
// The consumer stops on `detach`: it hears nothing once the teardown began,
|
|
132
|
+
// as in the other adapters (benchmarks/parity/README.md). `detach` comes
|
|
133
|
+
// from a pre-effect's teardown: Svelte destroys a block's effects in the
|
|
134
|
+
// order they were made, and a pre-effect is made at once, before the
|
|
135
|
+
// template's blocks, while `$effect` and `onDestroy` wait for the mount and
|
|
136
|
+
// come after them. Stopped in those, the consumer heard the children go (the
|
|
137
|
+
// markup items leaving the collection with an ever shorter list, the root's
|
|
138
|
+
// unbinding). A collection item is also detached by its collection, before
|
|
139
|
+
// the siblings go one by one (`TCollectionMembers`). The nodes are removed
|
|
140
|
+
// before any effect, so the blur of a removed node still reaches the
|
|
141
|
+
// consumer
|
|
142
|
+
adapter.events.on('detach', stop);
|
|
143
|
+
$effect.pre(() => () => adapter.detach());
|
|
144
|
+
// 6. One effect that tracks nothing: its teardown destroys the adapter
|
|
145
|
+
$effect(() => () => adapter.destroy());
|
|
146
|
+
return { exchange, state: new Proxy(values, STATE) };
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* What the binding did not take, plus the consumer's attachments: Svelte
|
|
150
|
+
* passes them as props with symbol keys, and the binding does not see them.
|
|
151
|
+
*/
|
|
152
|
+
function forwardOf(exchange, props) {
|
|
153
|
+
const forward = exchange.forward(props);
|
|
154
|
+
for (const key of Object.getOwnPropertySymbols(props)) {
|
|
155
|
+
Reflect.set(forward, key, Reflect.get(props, key));
|
|
156
|
+
}
|
|
157
|
+
return forward;
|
|
158
|
+
}
|
|
159
|
+
/** `receive` is the root's receiver; an assembly without its own root (`setupControl`) has none. */
|
|
160
|
+
export function useAdapter(adapter, getProps, receive = NO_RECEIVER) {
|
|
161
|
+
const { exchange, state } = useExchange(adapter, getProps);
|
|
162
|
+
const forwardProps = $derived(forwardOf(exchange, getProps()));
|
|
163
|
+
let rootElement = $state.raw(null);
|
|
164
|
+
// 5. A tag change recreates the node: the cleanup unbinds the previous one
|
|
165
|
+
const bindRef = (node) => {
|
|
166
|
+
adapter.bindElement(node);
|
|
167
|
+
rootElement = node;
|
|
168
|
+
return () => {
|
|
169
|
+
adapter.bindElement(null);
|
|
170
|
+
rootElement = null;
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
// Untracked: the `bind:ref={get, set}` setter is consumer code, and what it
|
|
174
|
+
// reads would rerun the attachment
|
|
175
|
+
const consumerRef = (node) => {
|
|
176
|
+
untrack(() => receive(node));
|
|
177
|
+
return () => untrack(() => receive(null));
|
|
178
|
+
};
|
|
179
|
+
return {
|
|
180
|
+
ctrl: adapter.instance,
|
|
181
|
+
state: toInstanceState(state),
|
|
182
|
+
bindRef,
|
|
183
|
+
consumerRef,
|
|
184
|
+
get forwardProps() {
|
|
185
|
+
return forwardProps;
|
|
186
|
+
},
|
|
187
|
+
get rootElement() {
|
|
188
|
+
return rootElement;
|
|
189
|
+
},
|
|
190
|
+
attachElement(node) {
|
|
191
|
+
const unbind = bindRef(node);
|
|
192
|
+
const release = consumerRef(node);
|
|
193
|
+
return () => {
|
|
194
|
+
unbind();
|
|
195
|
+
release();
|
|
196
|
+
};
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* The adapter of a collection facade: its state and what it leaves of the
|
|
202
|
+
* attributes. No `ctrl` and no root: they are the component's, whose binding
|
|
203
|
+
* `joinBindings` joins the facade with. Bound before the component: the
|
|
204
|
+
* facade, accepted, writes into it, and that is its starting state.
|
|
205
|
+
*/
|
|
206
|
+
export function useCollectionAdapter(facade, getProps) {
|
|
207
|
+
const { exchange, state } = useExchange(facade, getProps);
|
|
208
|
+
return {
|
|
209
|
+
state: toInstanceState(state),
|
|
210
|
+
forward: (props) => forwardOf(exchange, props),
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
export function joinBindings(owner, ...facades) {
|
|
214
|
+
const forwardProps = $derived(facades.reduce((rest, facade) => facade.forward(rest), owner.forwardProps));
|
|
215
|
+
return {
|
|
216
|
+
ctrl: owner.ctrl,
|
|
217
|
+
state: facades.reduce((state, facade) => joinState(facade.state, state), owner.state),
|
|
218
|
+
attachElement: owner.attachElement,
|
|
219
|
+
bindRef: owner.bindRef,
|
|
220
|
+
consumerRef: owner.consumerRef,
|
|
221
|
+
get forwardProps() {
|
|
222
|
+
return forwardProps;
|
|
223
|
+
},
|
|
224
|
+
get rootElement() {
|
|
225
|
+
return owner.rootElement;
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IToastsApi } from '@soxa-ui/core';
|
|
2
|
+
import type { TToastRender } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* API тостов ближайшего `<Toasts>` — лифтом, поэтому только при
|
|
5
|
+
* инициализации компонента. Нет менеджера — ошибка, а не молчаливый `show`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useToasts(): IToastsApi<TToastRender>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TOASTS_ELEVATOR } from '@soxa-ui/setup';
|
|
2
|
+
import { useElevator } from '../elevator';
|
|
3
|
+
/**
|
|
4
|
+
* API тостов ближайшего `<Toasts>` — лифтом, поэтому только при
|
|
5
|
+
* инициализации компонента. Нет менеджера — ошибка, а не молчаливый `show`.
|
|
6
|
+
*/
|
|
7
|
+
export function useToasts() {
|
|
8
|
+
const api = useElevator()(TOASTS_ELEVATOR).up();
|
|
9
|
+
if (!api) {
|
|
10
|
+
throw new Error('useToasts(): выше по дереву нет <Toasts>. Оберните приложение менеджером: <Toasts><App /></Toasts>');
|
|
11
|
+
}
|
|
12
|
+
return api;
|
|
13
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Dynamic, toRootProps } from '../../adapter'
|
|
3
|
+
import { AccordionItem } from './item'
|
|
4
|
+
import { setupAccordion } from './setup.component'
|
|
5
|
+
import type { AccordionProps } from './base.component'
|
|
6
|
+
|
|
7
|
+
let { ref = $bindable(), ...props }: AccordionProps = $props()
|
|
8
|
+
const mountId = $props.id()
|
|
9
|
+
|
|
10
|
+
const binding = setupAccordion(() => props, mountId, (node) => (ref = node))
|
|
11
|
+
const state = binding.state
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<Dynamic
|
|
15
|
+
rendered={state.rendered}
|
|
16
|
+
tag="div"
|
|
17
|
+
attributes={toRootProps(state, [state.attrs], binding.forwardProps)}
|
|
18
|
+
attach={binding.attachElement}
|
|
19
|
+
>
|
|
20
|
+
{#if props.children}
|
|
21
|
+
{@render props.children()}
|
|
22
|
+
{:else}
|
|
23
|
+
{#each state.shown ?? [] as section (section.uid)}
|
|
24
|
+
{#snippet arrowIcon()}
|
|
25
|
+
{@render props['item-arrow-icon']?.({ item: section })}
|
|
26
|
+
{/snippet}
|
|
27
|
+
{#snippet leading()}{@render props['item-leading']?.({ item: section })}{/snippet}
|
|
28
|
+
{#snippet header(scope: { text: string; selected: boolean })}
|
|
29
|
+
{@render props.item?.({ ...scope, item: section })}
|
|
30
|
+
{/snippet}
|
|
31
|
+
{#snippet trailing()}{@render props['item-trailing']?.({ item: section })}{/snippet}
|
|
32
|
+
{#snippet content()}{@render props['item-content']?.({ item: section })}{/snippet}
|
|
33
|
+
<AccordionItem
|
|
34
|
+
ctrl={section}
|
|
35
|
+
arrow-icon={props['item-arrow-icon'] ? arrowIcon : undefined}
|
|
36
|
+
leading={props['item-leading'] ? leading : undefined}
|
|
37
|
+
header={props.item ? header : undefined}
|
|
38
|
+
trailing={props['item-trailing'] ? trailing : undefined}
|
|
39
|
+
children={props['item-content'] ? content : undefined}
|
|
40
|
+
/>
|
|
41
|
+
{/each}
|
|
42
|
+
{/if}
|
|
43
|
+
</Dynamic>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IAccordion } from '@soxa-ui/core';
|
|
2
|
+
import type { AccordionCollectionDescriptor, AccordionDescriptor } from '@soxa-ui/setup';
|
|
3
|
+
import type { EventProps, UseDomProps } from '../../types';
|
|
4
|
+
export type AccordionEventProps = EventProps<typeof AccordionDescriptor> & EventProps<typeof AccordionCollectionDescriptor>;
|
|
5
|
+
export type AccordionProps = UseDomProps<typeof AccordionDescriptor, IAccordion, AccordionEventProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './base.component';
|
|
2
|
+
export { setupAccordion } from './setup.component';
|
|
3
|
+
export * from './item';
|
|
4
|
+
export declare const Accordion: import("svelte").Component<import("./base.component").AccordionProps, {}, "ref"> & {
|
|
5
|
+
Item: import("svelte").Component<import("./item").AccordionItemProps, {}, "ref">;
|
|
6
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { withParts } from '@soxa-ui/setup';
|
|
2
|
+
import AccordionComponent from './Accordion.svelte';
|
|
3
|
+
import { AccordionItem } from './item';
|
|
4
|
+
export * from './base.component';
|
|
5
|
+
export { setupAccordion } from './setup.component';
|
|
6
|
+
export * from './item';
|
|
7
|
+
export const Accordion = withParts(AccordionComponent, { Item: AccordionItem });
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte'
|
|
3
|
+
import { clickAction, Dynamic, roleIcon, toControlAttrs, toRootForward, toRootProps } from '../../../adapter'
|
|
4
|
+
import { Button } from '../../button'
|
|
5
|
+
import { Icon } from '../../icon'
|
|
6
|
+
import { setupAccordionItem } from './setup.component'
|
|
7
|
+
import type { AccordionItemAttributes, AccordionItemProps } from './base.component'
|
|
8
|
+
|
|
9
|
+
let { ref = $bindable(), ...props }: AccordionItemProps = $props()
|
|
10
|
+
const mountId = $props.id()
|
|
11
|
+
|
|
12
|
+
const binding = setupAccordionItem(() => props, mountId, (node) => (ref = node))
|
|
13
|
+
const state = binding.state
|
|
14
|
+
const context = binding.context
|
|
15
|
+
const toggle = clickAction(() => context?.adapters.selection.toggle())
|
|
16
|
+
|
|
17
|
+
const ARROW = roleIcon('arrowRight')
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<!--
|
|
21
|
+
Класс стрелки — на обёртке, а не на иконке: тема поворачивает стрелку раскрытой секции по
|
|
22
|
+
`.so-accordion-item__arrow`, и подменённая слотом иконка поворачивается так же. Обёртка
|
|
23
|
+
стоит, пока на её стороне стрелка по умолчанию или задан слот.
|
|
24
|
+
-->
|
|
25
|
+
{#snippet arrow(side: 'start' | 'end', slot: Snippet<[{ item: typeof binding.ctrl }]> | undefined)}
|
|
26
|
+
{#if state.arrowPlacement === side}
|
|
27
|
+
<span class="so-accordion-item__arrow">
|
|
28
|
+
{#if slot}
|
|
29
|
+
{@render slot({ item: binding.ctrl })}
|
|
30
|
+
{:else}
|
|
31
|
+
<Icon embedded="accordion.arrow" tag={ARROW} size={state.size} />
|
|
32
|
+
{/if}
|
|
33
|
+
</span>
|
|
34
|
+
{/if}
|
|
35
|
+
{/snippet}
|
|
36
|
+
|
|
37
|
+
<Dynamic
|
|
38
|
+
rendered={state.rendered}
|
|
39
|
+
tag={state.tag}
|
|
40
|
+
attributes={toRootProps(
|
|
41
|
+
state,
|
|
42
|
+
[state.dataset, state.attrs],
|
|
43
|
+
toRootForward(binding.forwardProps),
|
|
44
|
+
)}
|
|
45
|
+
attach={binding.attachElement}
|
|
46
|
+
>
|
|
47
|
+
<Button
|
|
48
|
+
embedded="accordion.header"
|
|
49
|
+
type="button"
|
|
50
|
+
class="so-accordion-item__header"
|
|
51
|
+
view={state.view}
|
|
52
|
+
disabled={state.disabled}
|
|
53
|
+
size={state.size}
|
|
54
|
+
variant={state.variant}
|
|
55
|
+
{...state.aria}
|
|
56
|
+
{...toControlAttrs<AccordionItemAttributes>(binding.forwardProps)}
|
|
57
|
+
{@attach toggle}
|
|
58
|
+
>
|
|
59
|
+
{#snippet leading()}
|
|
60
|
+
{@render arrow('start', props['arrow-icon'])}{@render props.leading?.({
|
|
61
|
+
item: binding.ctrl,
|
|
62
|
+
})}
|
|
63
|
+
{/snippet}
|
|
64
|
+
{#if props.header}
|
|
65
|
+
{@render props.header({
|
|
66
|
+
item: binding.ctrl,
|
|
67
|
+
text: state.text ?? '',
|
|
68
|
+
selected: state.selected ?? false,
|
|
69
|
+
})}
|
|
70
|
+
{:else}
|
|
71
|
+
{state.text}
|
|
72
|
+
{/if}
|
|
73
|
+
{#snippet trailing()}
|
|
74
|
+
{@render props.trailing?.({ item: binding.ctrl })}{@render arrow(
|
|
75
|
+
'end',
|
|
76
|
+
props['arrow-icon'],
|
|
77
|
+
)}
|
|
78
|
+
{/snippet}
|
|
79
|
+
</Button><div class="so-accordion-item__body">
|
|
80
|
+
<div class="so-accordion-item__content" {...state.contentAria}>
|
|
81
|
+
{@render props.children?.({ item: binding.ctrl })}
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</Dynamic>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IAccordionItem } from '@soxa-ui/core';
|
|
2
|
+
import type { AccordionCollectionItemDescriptor, AccordionItemDescriptor } from '@soxa-ui/setup';
|
|
3
|
+
import type { EventProps, TDomAttributes, UseDomProps } from '../../../types';
|
|
4
|
+
export type AccordionItemEventProps = EventProps<typeof AccordionItemDescriptor> & EventProps<typeof AccordionCollectionItemDescriptor>;
|
|
5
|
+
/** Атрибуты секции: класс и стиль — корню, остальное — заголовку. */
|
|
6
|
+
export type AccordionItemAttributes = TDomAttributes<typeof AccordionItemDescriptor, AccordionItemEventProps>;
|
|
7
|
+
export type AccordionItemProps = UseDomProps<typeof AccordionItemDescriptor, IAccordionItem, AccordionItemEventProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type TRootReceiver } from '../../../adapter';
|
|
2
|
+
import type { AccordionItemProps } from './base.component';
|
|
3
|
+
export declare function setupAccordionItem(getProps: () => AccordionItemProps, mountId: string, receive: TRootReceiver): import("../../../adapter").TBinding<import("@soxa-ui/setup").TContextContract<import("@soxa-ui/core").IAccordionItem<import("@soxa-ui/core").IAccordionItemProps, import("@soxa-ui/core").TAccordionItemEvents>, {
|
|
4
|
+
props: object & {} & {} & {} & {
|
|
5
|
+
aria_label?: string | undefined;
|
|
6
|
+
aria_labelledBy?: string | undefined;
|
|
7
|
+
aria_describedBy?: string | undefined;
|
|
8
|
+
} & {} & {
|
|
9
|
+
id?: string | undefined;
|
|
10
|
+
} & {};
|
|
11
|
+
events: object & {
|
|
12
|
+
"element:ready": (element: Element) => void;
|
|
13
|
+
"element:removed": () => void;
|
|
14
|
+
} & {} & {
|
|
15
|
+
"action:click": (event: MouseEvent) => void;
|
|
16
|
+
"action:press": (event: MouseEvent) => void;
|
|
17
|
+
"action:focus": (event: FocusEvent) => void;
|
|
18
|
+
"action:blur": (event: FocusEvent) => void;
|
|
19
|
+
} & {
|
|
20
|
+
"aria:change:label": (payload: import("@soxa-ui/core").TValuePayload<string | undefined>) => void;
|
|
21
|
+
"aria:change:labelledBy": (payload: import("@soxa-ui/core").TValuePayload<string | undefined>) => void;
|
|
22
|
+
"aria:change:describedBy": (payload: import("@soxa-ui/core").TValuePayload<string | undefined>) => void;
|
|
23
|
+
} & {
|
|
24
|
+
"change:id": (payload: import("@soxa-ui/core").TValuePayload<string | undefined>) => void;
|
|
25
|
+
} & {};
|
|
26
|
+
outputs: object & {} & {} & {} & {} & {} & {} & {};
|
|
27
|
+
}>, AccordionItemProps, import("../../../adapter/runtime/state").TJoinedState<import("@soxa-ui/setup").TAdapterState<import("@soxa-ui/setup").TContextContract<import("@soxa-ui/core").TAccordionItemCollectionFacade, {
|
|
28
|
+
props: object;
|
|
29
|
+
events: object;
|
|
30
|
+
outputs: object;
|
|
31
|
+
}>>, import("@soxa-ui/setup").TAdapterState<import("@soxa-ui/setup").TContextContract<import("@soxa-ui/core").IAccordionItem<import("@soxa-ui/core").IAccordionItemProps, import("@soxa-ui/core").TAccordionItemEvents>, {
|
|
32
|
+
props: object & {} & {} & {} & {
|
|
33
|
+
aria_label?: string | undefined;
|
|
34
|
+
aria_labelledBy?: string | undefined;
|
|
35
|
+
aria_describedBy?: string | undefined;
|
|
36
|
+
} & {} & {
|
|
37
|
+
id?: string | undefined;
|
|
38
|
+
} & {};
|
|
39
|
+
events: object & {
|
|
40
|
+
"element:ready": (element: Element) => void;
|
|
41
|
+
"element:removed": () => void;
|
|
42
|
+
} & {} & {
|
|
43
|
+
"action:click": (event: MouseEvent) => void;
|
|
44
|
+
"action:press": (event: MouseEvent) => void;
|
|
45
|
+
"action:focus": (event: FocusEvent) => void;
|
|
46
|
+
"action:blur": (event: FocusEvent) => void;
|
|
47
|
+
} & {
|
|
48
|
+
"aria:change:label": (payload: import("@soxa-ui/core").TValuePayload<string | undefined>) => void;
|
|
49
|
+
"aria:change:labelledBy": (payload: import("@soxa-ui/core").TValuePayload<string | undefined>) => void;
|
|
50
|
+
"aria:change:describedBy": (payload: import("@soxa-ui/core").TValuePayload<string | undefined>) => void;
|
|
51
|
+
} & {
|
|
52
|
+
"change:id": (payload: import("@soxa-ui/core").TValuePayload<string | undefined>) => void;
|
|
53
|
+
} & {};
|
|
54
|
+
outputs: object & {} & {} & {} & {} & {} & {} & {};
|
|
55
|
+
}>>>> & {
|
|
56
|
+
context: import("@soxa-ui/core").TItemContext<import("@soxa-ui/core").IAccordionItem<import("@soxa-ui/core").IAccordionItemProps, import("@soxa-ui/core").TAccordionItemEvents>, import("@soxa-ui/core").TAccordionCollectionExtensions> | undefined;
|
|
57
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AccordionCollectionItemDescriptor, AccordionItemDescriptor, TCollectionItemExtension, } from '@soxa-ui/setup';
|
|
2
|
+
import { createSvelteAdapterContext, joinBindings, useAdapter, useCollectionAdapter, useElevator, } from '../../../adapter';
|
|
3
|
+
export function setupAccordionItem(getProps, mountId, receive) {
|
|
4
|
+
const elevator = useElevator();
|
|
5
|
+
const props = getProps();
|
|
6
|
+
const adapter = createSvelteAdapterContext(AccordionItemDescriptor(), {
|
|
7
|
+
ctrl: props.ctrl,
|
|
8
|
+
props,
|
|
9
|
+
mountId,
|
|
10
|
+
});
|
|
11
|
+
const item = createSvelteAdapterContext(AccordionCollectionItemDescriptor(), { props, mountId }, { bundle: adapter.bundle }).use(TCollectionItemExtension, { adapter, elevator });
|
|
12
|
+
const itemBinding = useCollectionAdapter(item, getProps);
|
|
13
|
+
const owner = useAdapter(adapter, getProps, receive);
|
|
14
|
+
return Object.assign(joinBindings(owner, itemBinding), { context: item.instance.context });
|
|
15
|
+
}
|