@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,9 @@
|
|
|
1
|
+
import { TSvelteElevator } from './elevator.class';
|
|
2
|
+
/**
|
|
3
|
+
* Фабрика лифтов сборки — одна на сборку, при инициализации компонента: у
|
|
4
|
+
* второй фабрики `up()` не знал бы опущенного первой.
|
|
5
|
+
*/
|
|
6
|
+
export function useElevator() {
|
|
7
|
+
const inherited = new Map();
|
|
8
|
+
return (key) => new TSvelteElevator(key.name, inherited);
|
|
9
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { untrack } from 'svelte'
|
|
3
|
+
import { TLocaleSource } from '@soxa-ui/plugins'
|
|
4
|
+
import { provideLocale } from './context'
|
|
5
|
+
import type { TLocaleProviderProps } from './types'
|
|
6
|
+
|
|
7
|
+
const props: TLocaleProviderProps = $props()
|
|
8
|
+
|
|
9
|
+
// С локалью первой отрисовки — имена нужны и на сервере; дальше — эффект
|
|
10
|
+
const source = new TLocaleSource(untrack(() => props.locale))
|
|
11
|
+
|
|
12
|
+
provideLocale(source)
|
|
13
|
+
|
|
14
|
+
// Тем же проходом, что и разметка; компоненты не перемонтируются
|
|
15
|
+
$effect.pre(() => {
|
|
16
|
+
source.locale = props.locale
|
|
17
|
+
})
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<!-- Локаль поддерева: источник у провайдера свой, вложенный даёт поддереву свой. -->
|
|
21
|
+
{@render props.children?.()}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Локаль поддерева в контексте Svelte — ключ модуля, только эти две функции. */
|
|
2
|
+
import { TLocaleSource } from '@soxa-ui/plugins';
|
|
3
|
+
import type { ILocaleSource } from '@soxa-ui/plugins';
|
|
4
|
+
export declare function provideLocale(source: TLocaleSource): void;
|
|
5
|
+
/** Источник ближайшего `LocaleProvider`; нет его — `undefined`. */
|
|
6
|
+
export declare function nearestLocale(): ILocaleSource | undefined;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Локаль поддерева в контексте Svelte — ключ модуля, только эти две функции. */
|
|
2
|
+
import { getContext, setContext } from 'svelte';
|
|
3
|
+
import { TLocaleSource } from '@soxa-ui/plugins';
|
|
4
|
+
const LOCALE_KEY = Symbol('soxa:locale');
|
|
5
|
+
export function provideLocale(source) {
|
|
6
|
+
setContext(LOCALE_KEY, source);
|
|
7
|
+
}
|
|
8
|
+
/** Источник ближайшего `LocaleProvider`; нет его — `undefined`. */
|
|
9
|
+
export function nearestLocale() {
|
|
10
|
+
const source = getContext(LOCALE_KEY);
|
|
11
|
+
return source instanceof TLocaleSource ? source : undefined;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as LocaleProvider } from './LocaleProvider.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { untrack, type Snippet } from 'svelte'
|
|
3
|
+
import { createAttachmentKey, type Attachment } from 'svelte/attachments'
|
|
4
|
+
import { TRoleIcon } from '../common/icon'
|
|
5
|
+
import RoleIcon from '../common/RoleIcon.svelte'
|
|
6
|
+
import type { TRootAttributes } from '../common/root'
|
|
7
|
+
import { rootStyle, toNodeAttributes } from './root-style.svelte'
|
|
8
|
+
import { isTagComponent } from './tag'
|
|
9
|
+
|
|
10
|
+
type TDynamicProps = {
|
|
11
|
+
/**
|
|
12
|
+
* Whether the root is mounted — `state.rendered` of the component. A root
|
|
13
|
+
* that a block of the template already mounts by its own condition (inside
|
|
14
|
+
* Teleport, the window of Table) passes `true`.
|
|
15
|
+
*/
|
|
16
|
+
rendered: boolean | undefined
|
|
17
|
+
/** Name of an element, a Svelte component or a role icon mark (`roleIcon`). */
|
|
18
|
+
tag: string | object | undefined
|
|
19
|
+
/** Attributes of the root — `toRootProps` of the component. */
|
|
20
|
+
attributes: TRootAttributes
|
|
21
|
+
/** `binding.attachElement`; the wrapper of a root takes `consumerRef`, the root in it — `bindRef`. */
|
|
22
|
+
attach: Attachment<Element>
|
|
23
|
+
/**
|
|
24
|
+
* The markup of the component inside `<Dynamic>`: fixed for the instance,
|
|
25
|
+
* it is read once.
|
|
26
|
+
*/
|
|
27
|
+
children?: Snippet
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const { rendered, tag, attributes, attach, children }: TDynamicProps = $props()
|
|
31
|
+
|
|
32
|
+
// One per component: a new one on the same node would take other properties for its own
|
|
33
|
+
const style = { [createAttachmentKey()]: rootStyle(() => attributes.style) }
|
|
34
|
+
const node = $derived(toNodeAttributes(attributes, style))
|
|
35
|
+
|
|
36
|
+
// Svelte compiles the markup inside `<Dynamic>` to one function of the
|
|
37
|
+
// parent instance; read once, it is rendered by a call, not by a block
|
|
38
|
+
const content = untrack(() => children)
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<!--
|
|
42
|
+
The root by `tag`, like `<component :is>` of Vue: `<svelte:element>` takes only a string, so
|
|
43
|
+
there are three branches. A component from `tag` has to put the attributes and attachments on
|
|
44
|
+
its root (`TTagComponent`). `rendered` is a condition of the same branches: one block per root,
|
|
45
|
+
not a block of every template around it.
|
|
46
|
+
-->
|
|
47
|
+
{#if rendered && typeof tag === 'string'}
|
|
48
|
+
<svelte:element this={tag} {...node} {@attach attach}>{@render content?.()}</svelte:element>
|
|
49
|
+
{:else if rendered && tag instanceof TRoleIcon}
|
|
50
|
+
<RoleIcon icon={tag} attributes={node} {attach} />
|
|
51
|
+
{:else if rendered && isTagComponent(tag)}
|
|
52
|
+
{@const Tag = tag}
|
|
53
|
+
<Tag {...node} {@attach attach}>{@render content?.()}</Tag>
|
|
54
|
+
{/if}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type Snippet } from 'svelte';
|
|
2
|
+
import { type Attachment } from 'svelte/attachments';
|
|
3
|
+
import type { TRootAttributes } from '../common/root';
|
|
4
|
+
type TDynamicProps = {
|
|
5
|
+
/**
|
|
6
|
+
* Whether the root is mounted — `state.rendered` of the component. A root
|
|
7
|
+
* that a block of the template already mounts by its own condition (inside
|
|
8
|
+
* Teleport, the window of Table) passes `true`.
|
|
9
|
+
*/
|
|
10
|
+
rendered: boolean | undefined;
|
|
11
|
+
/** Name of an element, a Svelte component or a role icon mark (`roleIcon`). */
|
|
12
|
+
tag: string | object | undefined;
|
|
13
|
+
/** Attributes of the root — `toRootProps` of the component. */
|
|
14
|
+
attributes: TRootAttributes;
|
|
15
|
+
/** `binding.attachElement`; the wrapper of a root takes `consumerRef`, the root in it — `bindRef`. */
|
|
16
|
+
attach: Attachment<Element>;
|
|
17
|
+
/**
|
|
18
|
+
* The markup of the component inside `<Dynamic>`: fixed for the instance,
|
|
19
|
+
* it is read once.
|
|
20
|
+
*/
|
|
21
|
+
children?: Snippet;
|
|
22
|
+
};
|
|
23
|
+
declare const Dynamic: import("svelte").Component<TDynamicProps, {}, "">;
|
|
24
|
+
type Dynamic = ReturnType<typeof Dynamic>;
|
|
25
|
+
export default Dynamic;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { getAllContexts, mount, unmount, untrack } from 'svelte'
|
|
3
|
+
import Teleport from './Teleport.svelte'
|
|
4
|
+
import type { TTeleportProps } from './types'
|
|
5
|
+
|
|
6
|
+
const props: TTeleportProps = $props()
|
|
7
|
+
|
|
8
|
+
/** Фаза только растёт: нет → на месте → в обёртке. */
|
|
9
|
+
type TPhase = 'none' | 'placed' | 'wrapped'
|
|
10
|
+
|
|
11
|
+
// Корень в обёртке получает контексты места: локаль и лифт — как у триггера
|
|
12
|
+
const context = getAllContexts()
|
|
13
|
+
|
|
14
|
+
// Первая отрисовка одна на сервере и в браузере
|
|
15
|
+
let phase: TPhase = $state(untrack(() => props.disabled) ? 'placed' : 'none')
|
|
16
|
+
|
|
17
|
+
/** Одна на всё монтирование, заводится в браузере, когда впервые нужна. */
|
|
18
|
+
let wrapper: HTMLDivElement | null = null
|
|
19
|
+
|
|
20
|
+
function wrapperNode(): HTMLDivElement {
|
|
21
|
+
if (!wrapper) {
|
|
22
|
+
wrapper = document.createElement('div')
|
|
23
|
+
wrapper.style.display = 'contents'
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return wrapper
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function targetOf(selector: string | undefined): Element | null {
|
|
30
|
+
return selector ? document.querySelector(selector) : null
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Вынуть обёртку из `parent`, если она ещё там. */
|
|
34
|
+
function takeFrom(parent: Element): void {
|
|
35
|
+
if (wrapper && wrapper.parentNode === parent) wrapper.remove()
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// До отрисовки: содержимое на месте уходит раньше, чем смонтируется корень
|
|
39
|
+
$effect.pre(() => {
|
|
40
|
+
if (phase === 'wrapped') return
|
|
41
|
+
|
|
42
|
+
const { to, disabled } = props
|
|
43
|
+
|
|
44
|
+
if (phase === 'placed' ? !disabled : disabled || targetOf(to) !== null) {
|
|
45
|
+
phase = 'wrapped'
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
// С `disabled` обёртку держит узел места; цели нет — она вне документа
|
|
50
|
+
$effect(() => {
|
|
51
|
+
if (phase !== 'wrapped' || props.disabled) return
|
|
52
|
+
|
|
53
|
+
const target = targetOf(props.to)
|
|
54
|
+
|
|
55
|
+
if (!target) return
|
|
56
|
+
|
|
57
|
+
target.appendChild(wrapperNode())
|
|
58
|
+
|
|
59
|
+
return () => takeFrom(target)
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
// Корень — в обёртку, один раз (заново — на смену `children`): тот же
|
|
63
|
+
// Teleport, выключенный с первой отрисовки, рисует содержимое на месте
|
|
64
|
+
$effect(() => {
|
|
65
|
+
if (phase !== 'wrapped') return
|
|
66
|
+
|
|
67
|
+
const content = mount(Teleport, {
|
|
68
|
+
target: wrapperNode(),
|
|
69
|
+
props: { to: undefined, disabled: true, children: props.children },
|
|
70
|
+
context,
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
return () => {
|
|
74
|
+
void unmount(content)
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
/** Узел места: обёртку — в него, при снятии — вон. */
|
|
79
|
+
function place(node: Element): () => void {
|
|
80
|
+
node.appendChild(wrapperNode())
|
|
81
|
+
|
|
82
|
+
return () => takeFrom(node)
|
|
83
|
+
}
|
|
84
|
+
</script>
|
|
85
|
+
|
|
86
|
+
<!--
|
|
87
|
+
Портал, как `<teleport :to>` у Vue: содержимое — отдельный корень (`mount`)
|
|
88
|
+
в обёртке `display: contents`, а Teleport двигает саму обёртку — в цель, в
|
|
89
|
+
узел места или вон из документа, — и набранное в панели остаётся.
|
|
90
|
+
AGENTS.md (Svelte), «Teleport».
|
|
91
|
+
-->
|
|
92
|
+
{#if phase === 'placed'}
|
|
93
|
+
{@render props.children?.()}
|
|
94
|
+
{:else if phase === 'wrapped' && props.disabled}
|
|
95
|
+
<div style="display: contents" {@attach place}></div>
|
|
96
|
+
{/if}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { BROWSER } from 'esm-env'
|
|
3
|
+
import type { Attachment } from 'svelte/attachments'
|
|
4
|
+
import type { HTMLAttributes } from 'svelte/elements'
|
|
5
|
+
|
|
6
|
+
type TTextSpanProps = Omit<HTMLAttributes<HTMLSpanElement>, 'children'> & {
|
|
7
|
+
/** Текст узла целиком; `undefined` — пусто. */
|
|
8
|
+
text: string | undefined
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const { text, ...attributes }: TTextSpanProps = $props()
|
|
12
|
+
|
|
13
|
+
/** Пишет текст, только когда он разошёлся с узлом; перечитывает на смену. */
|
|
14
|
+
const write: Attachment<HTMLSpanElement> = (node) => {
|
|
15
|
+
const content = text ?? ''
|
|
16
|
+
|
|
17
|
+
if (node.textContent !== content) node.textContent = content
|
|
18
|
+
}
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<!--
|
|
22
|
+
`span`, чей текст пишет только он сам, `textContent`, — часть поля даты:
|
|
23
|
+
её правит браузер, и текстовый узел Svelte оказался бы вне документа.
|
|
24
|
+
На сервере текст — содержимое. AGENTS.md (Svelte), «Текст поля».
|
|
25
|
+
-->
|
|
26
|
+
{#if BROWSER}<span {...attributes} {@attach write}></span>{:else}<span {...attributes}
|
|
27
|
+
>{text}</span
|
|
28
|
+
>{/if}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
2
|
+
type TTextSpanProps = Omit<HTMLAttributes<HTMLSpanElement>, 'children'> & {
|
|
3
|
+
/** Текст узла целиком; `undefined` — пусто. */
|
|
4
|
+
text: string | undefined;
|
|
5
|
+
};
|
|
6
|
+
declare const TextSpan: import("svelte").Component<TTextSpanProps, {}, "">;
|
|
7
|
+
type TextSpan = ReturnType<typeof TextSpan>;
|
|
8
|
+
export default TextSpan;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Текст поля на узле — свойством и только когда он разошёлся с узлом, как
|
|
3
|
+
* `:value` у Vue: в спреде Svelte писал бы `value` на каждую смену, и запись
|
|
4
|
+
* снимала бы с поля пометку «изменено пользователем». На сервере текст —
|
|
5
|
+
* атрибутом `value`, у `<textarea>` — содержимым. AGENTS.md (Svelte),
|
|
6
|
+
* «Текст поля».
|
|
7
|
+
*/
|
|
8
|
+
import { type Attachment } from 'svelte/attachments';
|
|
9
|
+
/** Спредом на `<input>`: в браузере — attachment, на сервере — `value`. */
|
|
10
|
+
export type TFieldText = {
|
|
11
|
+
readonly [key: symbol]: Attachment<HTMLInputElement>;
|
|
12
|
+
} | {
|
|
13
|
+
readonly value: string | undefined;
|
|
14
|
+
};
|
|
15
|
+
export type TTextareaText = {
|
|
16
|
+
/** Спредом на поле, последним: в браузере — attachment, на сервере — ничего. */
|
|
17
|
+
readonly attributes: {
|
|
18
|
+
readonly [key: symbol]: Attachment<HTMLTextAreaElement>;
|
|
19
|
+
};
|
|
20
|
+
/** Атрибутом `value` в разметке: на сервере — текст, в браузере — `undefined`. */
|
|
21
|
+
readonly value: string | undefined;
|
|
22
|
+
};
|
|
23
|
+
/** Один раз на компонент: тот же ключ и та же функция узел не переставляют. */
|
|
24
|
+
export declare function fieldText(getText: () => string | undefined): TFieldText;
|
|
25
|
+
/**
|
|
26
|
+
* У `<textarea>` содержимым сервер Svelte делает только `value`, написанный в
|
|
27
|
+
* разметке, а не в спреде, поэтому текст — отдельной частью.
|
|
28
|
+
*/
|
|
29
|
+
export declare function textareaText(getText: () => string | undefined): TTextareaText;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Текст поля на узле — свойством и только когда он разошёлся с узлом, как
|
|
3
|
+
* `:value` у Vue: в спреде Svelte писал бы `value` на каждую смену, и запись
|
|
4
|
+
* снимала бы с поля пометку «изменено пользователем». На сервере текст —
|
|
5
|
+
* атрибутом `value`, у `<textarea>` — содержимым. AGENTS.md (Svelte),
|
|
6
|
+
* «Текст поля».
|
|
7
|
+
*/
|
|
8
|
+
import { BROWSER } from 'esm-env';
|
|
9
|
+
import { createAttachmentKey } from 'svelte/attachments';
|
|
10
|
+
function textAttachment(getText) {
|
|
11
|
+
return (node) => {
|
|
12
|
+
const text = getText() ?? '';
|
|
13
|
+
if (node.value !== text)
|
|
14
|
+
node.value = text;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/** Один раз на компонент: тот же ключ и та же функция узел не переставляют. */
|
|
18
|
+
export function fieldText(getText) {
|
|
19
|
+
if (!BROWSER) {
|
|
20
|
+
return {
|
|
21
|
+
get value() {
|
|
22
|
+
return getText();
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return { [createAttachmentKey()]: textAttachment(getText) };
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* У `<textarea>` содержимым сервер Svelte делает только `value`, написанный в
|
|
30
|
+
* разметке, а не в спреде, поэтому текст — отдельной частью.
|
|
31
|
+
*/
|
|
32
|
+
export function textareaText(getText) {
|
|
33
|
+
if (!BROWSER) {
|
|
34
|
+
return {
|
|
35
|
+
attributes: {},
|
|
36
|
+
get value() {
|
|
37
|
+
return getText();
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
attributes: { [createAttachmentKey()]: textAttachment(getText) },
|
|
43
|
+
value: undefined,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { useAdapter, useCollectionAdapter, joinBindings, type TBinding, type TCollectionBinding, type TRootReceiver, } from './useAdapter.svelte';
|
|
2
|
+
export { default as Dynamic } from './Dynamic.svelte';
|
|
3
|
+
export { default as Teleport } from './Teleport.svelte';
|
|
4
|
+
export { default as TextSpan } from './TextSpan.svelte';
|
|
5
|
+
export { isTagComponent, type TTagComponent } from './tag';
|
|
6
|
+
export { runsOf, type TRun } from './runs';
|
|
7
|
+
export { fieldText, textareaText, type TFieldText, type TTextareaText } from './field-text';
|
|
8
|
+
export type { TTeleportProps } from './types';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { useAdapter, useCollectionAdapter, joinBindings, } from './useAdapter.svelte';
|
|
2
|
+
export { default as Dynamic } from './Dynamic.svelte';
|
|
3
|
+
export { default as Teleport } from './Teleport.svelte';
|
|
4
|
+
export { default as TextSpan } from './TextSpan.svelte';
|
|
5
|
+
export { isTagComponent } from './tag';
|
|
6
|
+
export { runsOf } from './runs';
|
|
7
|
+
export { fieldText, textareaText } from './field-text';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Стиль корня на узле — по свойствам, как у Vue и React: атрибут `style`
|
|
3
|
+
* Svelte пишет целиком и стирал бы то, что плагины ставят на узел сами.
|
|
4
|
+
* В браузере его ставит attachment, на сервере — строка атрибута (`BROWSER`
|
|
5
|
+
* из `esm-env`). AGENTS.md (Svelte), «Стиль корня».
|
|
6
|
+
*/
|
|
7
|
+
import type { Attachment } from 'svelte/attachments';
|
|
8
|
+
import { type TRootAttributes, type TRootNodeAttributes, type TRootStyleLayers } from '../common/root';
|
|
9
|
+
/** Attachment стиля корня под своим ключом (`createAttachmentKey`). */
|
|
10
|
+
export type TRootStyleAttachment = {
|
|
11
|
+
readonly [key: symbol]: Attachment<Element>;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Атрибуты узла корня. В браузере `style` нет: его ставит attachment, первым
|
|
15
|
+
* среди attachment-ов спреда — раньше потребительских.
|
|
16
|
+
*/
|
|
17
|
+
export declare function toNodeAttributes(attributes: TRootAttributes, style: TRootStyleAttachment): TRootNodeAttributes;
|
|
18
|
+
/**
|
|
19
|
+
* Sets the properties of the layers as a difference with what it set itself;
|
|
20
|
+
* foreign ones it leaves alone. Created once per component: a new one on the
|
|
21
|
+
* same node would take foreign properties for its own. What stands on the node
|
|
22
|
+
* from the start is the server's style on hydration.
|
|
23
|
+
*
|
|
24
|
+
* One effect: the consumer's style is parsed again only when its string
|
|
25
|
+
* changed — two `$derived` for that were a reaction graph on every root.
|
|
26
|
+
*/
|
|
27
|
+
export declare function rootStyle(getStyle: () => TRootStyleLayers): Attachment<Element>;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Стиль корня на узле — по свойствам, как у Vue и React: атрибут `style`
|
|
3
|
+
* Svelte пишет целиком и стирал бы то, что плагины ставят на узел сами.
|
|
4
|
+
* В браузере его ставит attachment, на сервере — строка атрибута (`BROWSER`
|
|
5
|
+
* из `esm-env`). AGENTS.md (Svelte), «Стиль корня».
|
|
6
|
+
*/
|
|
7
|
+
import { BROWSER } from 'esm-env';
|
|
8
|
+
import { toStyleAttribute, } from '../common/root';
|
|
9
|
+
const EMPTY = new Map();
|
|
10
|
+
/**
|
|
11
|
+
* Атрибуты узла корня. В браузере `style` нет: его ставит attachment, первым
|
|
12
|
+
* среди attachment-ов спреда — раньше потребительских.
|
|
13
|
+
*/
|
|
14
|
+
export function toNodeAttributes(attributes, style) {
|
|
15
|
+
const { style: layers, ...node } = attributes;
|
|
16
|
+
return BROWSER ? { ...style, ...node } : { ...node, style: toStyleAttribute(layers) };
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Sets the properties of the layers as a difference with what it set itself;
|
|
20
|
+
* foreign ones it leaves alone. Created once per component: a new one on the
|
|
21
|
+
* same node would take foreign properties for its own. What stands on the node
|
|
22
|
+
* from the start is the server's style on hydration.
|
|
23
|
+
*
|
|
24
|
+
* One effect: the consumer's style is parsed again only when its string
|
|
25
|
+
* changed — two `$derived` for that were a reaction graph on every root.
|
|
26
|
+
*/
|
|
27
|
+
export function rootStyle(getStyle) {
|
|
28
|
+
return (node) => {
|
|
29
|
+
if (!hasInlineStyle(node))
|
|
30
|
+
return;
|
|
31
|
+
const { style } = node;
|
|
32
|
+
let applied = readDeclarations(style);
|
|
33
|
+
let forward;
|
|
34
|
+
let parsed = EMPTY;
|
|
35
|
+
$effect(() => {
|
|
36
|
+
const layers = getStyle();
|
|
37
|
+
if (layers.forward !== forward) {
|
|
38
|
+
forward = layers.forward;
|
|
39
|
+
parsed = parseStyle(forward, node.ownerDocument);
|
|
40
|
+
}
|
|
41
|
+
const next = toDeclarations(layers, parsed);
|
|
42
|
+
applyDeclarations(style, applied, next);
|
|
43
|
+
applied = next;
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/** Узел со своим инлайновым стилем — HTML, SVG и MathML. */
|
|
48
|
+
function hasInlineStyle(node) {
|
|
49
|
+
return 'style' in node;
|
|
50
|
+
}
|
|
51
|
+
/** The properties of an inline style; none — the shared empty map. */
|
|
52
|
+
function readDeclarations(style) {
|
|
53
|
+
if (style.length === 0)
|
|
54
|
+
return EMPTY;
|
|
55
|
+
const declarations = new Map();
|
|
56
|
+
for (let index = 0; index < style.length; index++) {
|
|
57
|
+
const name = style.item(index);
|
|
58
|
+
declarations.set(name, {
|
|
59
|
+
value: style.getPropertyValue(name),
|
|
60
|
+
priority: style.getPropertyPriority(name),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return declarations;
|
|
64
|
+
}
|
|
65
|
+
/** Стиль потребителя свойствами — разбирает браузер, отсоединённым узлом. */
|
|
66
|
+
function parseStyle(text, document) {
|
|
67
|
+
if (!text)
|
|
68
|
+
return EMPTY;
|
|
69
|
+
const probe = document.createElement('div');
|
|
70
|
+
probe.style.cssText = text;
|
|
71
|
+
return readDeclarations(probe.style);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The properties of the layers from the bottom up: of the same name the upper
|
|
75
|
+
* one acts. No properties — the shared empty map: the root keeps the last
|
|
76
|
+
* declarations, and most roots have none.
|
|
77
|
+
*/
|
|
78
|
+
function toDeclarations(layers, forward) {
|
|
79
|
+
const declarations = new Map();
|
|
80
|
+
for (const [name, value] of Object.entries(layers.below)) {
|
|
81
|
+
declarations.set(name, { value, priority: '' });
|
|
82
|
+
}
|
|
83
|
+
for (const [name, declaration] of forward)
|
|
84
|
+
declarations.set(name, declaration);
|
|
85
|
+
for (const [name, value] of Object.entries(layers.above)) {
|
|
86
|
+
declarations.set(name, { value, priority: '' });
|
|
87
|
+
}
|
|
88
|
+
return declarations.size > 0 ? declarations : EMPTY;
|
|
89
|
+
}
|
|
90
|
+
/** Пропавшие свойства — снять, новые и сменившиеся — поставить; остальное не трогать. */
|
|
91
|
+
function applyDeclarations(style, previous, next) {
|
|
92
|
+
for (const name of previous.keys()) {
|
|
93
|
+
if (!next.has(name))
|
|
94
|
+
style.removeProperty(name);
|
|
95
|
+
}
|
|
96
|
+
for (const [name, declaration] of next) {
|
|
97
|
+
if (!isSame(previous.get(name), declaration)) {
|
|
98
|
+
style.setProperty(name, declaration.value, declaration.priority);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/** То же значение с тем же приоритетом. */
|
|
103
|
+
function isSame(previous, next) {
|
|
104
|
+
return previous?.value === next.value && previous.priority === next.priority;
|
|
105
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Серия подряд идущих элементов списка с одним значением признака. */
|
|
2
|
+
export type TRun<T, TValue> = {
|
|
3
|
+
readonly value: TValue;
|
|
4
|
+
readonly items: readonly T[];
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Список сериями подряд идущих элементов с одним значением признака `key`:
|
|
8
|
+
* `{#each runsOf(cells, 'rowHeader') as run}`, в серии — ветка по `run.value` и
|
|
9
|
+
* петля по `run.items`. Ветка Svelte — блок с менеджером веток, эффектами и
|
|
10
|
+
* якорем, и ветка по признаку в каждом элементе стоила бы их на элемент, а
|
|
11
|
+
* сериями — на серию. Тот же приём, что пайп `soRuns` адаптера Angular.
|
|
12
|
+
*/
|
|
13
|
+
export declare function runsOf<T, K extends keyof T>(items: readonly T[], key: K): TRun<T, T[K]>[];
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Список сериями подряд идущих элементов с одним значением признака `key`:
|
|
3
|
+
* `{#each runsOf(cells, 'rowHeader') as run}`, в серии — ветка по `run.value` и
|
|
4
|
+
* петля по `run.items`. Ветка Svelte — блок с менеджером веток, эффектами и
|
|
5
|
+
* якорем, и ветка по признаку в каждом элементе стоила бы их на элемент, а
|
|
6
|
+
* сериями — на серию. Тот же приём, что пайп `soRuns` адаптера Angular.
|
|
7
|
+
*/
|
|
8
|
+
export function runsOf(items, key) {
|
|
9
|
+
const runs = [];
|
|
10
|
+
let run;
|
|
11
|
+
for (const item of items) {
|
|
12
|
+
const value = item[key];
|
|
13
|
+
if (!run || !Object.is(run.value, value)) {
|
|
14
|
+
run = { value, items: [] };
|
|
15
|
+
runs.push(run);
|
|
16
|
+
}
|
|
17
|
+
run.items.push(item);
|
|
18
|
+
}
|
|
19
|
+
return runs;
|
|
20
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Состояние двух контекстов — одним видом: прокси, которое читает свойство у
|
|
3
|
+
* состояния на каждое чтение, а не спред, который прочёл бы их один раз при
|
|
4
|
+
* сборке. AGENTS.md (Svelte), «Коллекция: два контекста — одна связка».
|
|
5
|
+
*/
|
|
6
|
+
/** Одноимённое свойство берётся из верхнего состояния. */
|
|
7
|
+
export type TJoinedState<TBelow extends object, TAbove extends object> = Omit<TBelow, keyof TAbove> & TAbove;
|
|
8
|
+
export declare function joinState<TBelow extends object, TAbove extends object>(below: TBelow, above: TAbove): TJoinedState<TBelow, TAbove>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Состояние двух контекстов — одним видом: прокси, которое читает свойство у
|
|
3
|
+
* состояния на каждое чтение, а не спред, который прочёл бы их один раз при
|
|
4
|
+
* сборке. AGENTS.md (Svelte), «Коллекция: два контекста — одна связка».
|
|
5
|
+
*/
|
|
6
|
+
/** Состояние, у которого свойство берётся: верхнее, если оно у него есть. */
|
|
7
|
+
function sourceOf({ below, above }, key) {
|
|
8
|
+
return Reflect.has(above, key) ? above : below;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Обработчик один на все виды: геттер на каждое имя обоих состояний —
|
|
12
|
+
* замыкание, его область и пара аксессоров — у строки таблицы стоил килобайты
|
|
13
|
+
* (benchmarks/table/svelte.md).
|
|
14
|
+
*/
|
|
15
|
+
const JOINED = {
|
|
16
|
+
get: (states, key) => Reflect.get(sourceOf(states, key), key),
|
|
17
|
+
has: ({ below, above }, key) => Reflect.has(above, key) || Reflect.has(below, key),
|
|
18
|
+
ownKeys: ({ below, above }) => [
|
|
19
|
+
...new Set([...Reflect.ownKeys(below), ...Reflect.ownKeys(above)]),
|
|
20
|
+
],
|
|
21
|
+
getOwnPropertyDescriptor: (states, key) => Reflect.getOwnPropertyDescriptor(sourceOf(states, key), key),
|
|
22
|
+
};
|
|
23
|
+
export function joinState(below, above) {
|
|
24
|
+
const joined = new Proxy({ below, above }, JOINED);
|
|
25
|
+
// Граница рантайма и типа, как `toInstanceState`: прокси отдаёт каждое
|
|
26
|
+
// свойство обоих состояний, но связь по именам TypeScript не видит
|
|
27
|
+
return joined;
|
|
28
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Component, Snippet } from 'svelte';
|
|
2
|
+
import type { TRootNodeAttributes } from '../common/root';
|
|
3
|
+
/**
|
|
4
|
+
* Компонент в `tag`: атрибуты корня — пропсами, вместе с attachment-ами
|
|
5
|
+
* адаптера под ключами-символами; он кладёт их спредом на свой корень.
|
|
6
|
+
*/
|
|
7
|
+
export type TTagComponent = Component<TRootNodeAttributes & {
|
|
8
|
+
children?: Snippet;
|
|
9
|
+
}>;
|
|
10
|
+
/** Компонент Svelte 5 — функция; других функций в `tag` ядро не ждёт. */
|
|
11
|
+
export declare function isTagComponent(tag: unknown): tag is TTagComponent;
|