@sectile/vue 0.18.0 → 0.18.2
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/dist/accordion.d.ts +1 -1
- package/dist/accordion.js +1 -1
- package/dist/carousel.d.ts +1 -1
- package/dist/carousel.js +1 -1
- package/dist/cascade-list.js +1 -1
- package/dist/cascade-list.js.map +1 -1
- package/dist/cascade-select.js +1 -1
- package/dist/cascade-select.js.map +1 -1
- package/dist/checkbox-group.js +1 -1
- package/dist/checkbox-group.js.map +1 -1
- package/dist/checkbox.d.ts +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.js.map +1 -1
- package/dist/color-picker.js +1 -1
- package/dist/color-picker.js.map +1 -1
- package/dist/combobox.d.ts +1 -1
- package/dist/combobox.js +1 -1
- package/dist/combobox.js.map +1 -1
- package/dist/disclosure.d.ts +1 -1
- package/dist/disclosure.js +1 -1
- package/dist/editable.js +1 -1
- package/dist/editable.js.map +1 -1
- package/dist/{internal/form-context.d.ts → form/context.d.ts} +3 -2
- package/dist/{internal/form-context.js → form/context.js} +2 -2
- package/dist/form/context.js.map +1 -0
- package/dist/form/contracts.d.ts +219 -0
- package/dist/form/contracts.js +2 -0
- package/dist/form/contracts.js.map +1 -0
- package/dist/{internal/form-control-inventory.js → form/control-inventory.js} +1 -1
- package/dist/form/control-inventory.js.map +1 -0
- package/dist/{internal/form-control.js → form/control.js} +1 -1
- package/dist/form/control.js.map +1 -0
- package/dist/form/field.d.ts +81 -0
- package/dist/form/field.js +2 -0
- package/dist/form/field.js.map +1 -0
- package/dist/form/native.d.ts +15 -0
- package/dist/form/native.js +2 -0
- package/dist/form/native.js.map +1 -0
- package/dist/form/part.d.ts +16 -0
- package/dist/form/part.js +2 -0
- package/dist/form/part.js.map +1 -0
- package/dist/form/parts.d.ts +93 -0
- package/dist/form/parts.js +2 -0
- package/dist/form/parts.js.map +1 -0
- package/dist/{internal/form-presence-parts.d.ts → form/presence-parts.d.ts} +1 -1
- package/dist/form/presence-parts.js +2 -0
- package/dist/form/presence-parts.js.map +1 -0
- package/dist/form/root.d.ts +2 -0
- package/dist/form/root.js +2 -0
- package/dist/form/root.js.map +1 -0
- package/dist/form/selectors.d.ts +7 -0
- package/dist/form/selectors.js +2 -0
- package/dist/form/selectors.js.map +1 -0
- package/dist/form.d.ts +8 -398
- package/dist/form.js +1 -1
- package/dist/form.js.map +1 -1
- package/dist/grid.js +1 -1
- package/dist/grid.js.map +1 -1
- package/dist/index.d.ts +10 -10
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/input/decimal-input.js.map +1 -0
- package/dist/input/native-field.js +2 -0
- package/dist/input/native-field.js.map +1 -0
- package/dist/input/native-input.js.map +1 -0
- package/dist/input/native-text-state.d.ts +2 -0
- package/dist/input/native-text-state.js +2 -0
- package/dist/input/native-text-state.js.map +1 -0
- package/dist/internal/cascade-choice.d.ts +1 -1
- package/dist/internal/cascade-choice.js +1 -1
- package/dist/internal/cascade-choice.js.map +1 -1
- package/dist/internal/collection.d.ts +2 -0
- package/dist/internal/collection.js +1 -1
- package/dist/internal/collection.js.map +1 -1
- package/dist/listbox.d.ts +1 -1
- package/dist/listbox.js +1 -1
- package/dist/listbox.js.map +1 -1
- package/dist/menu.js +1 -1
- package/dist/menu.js.map +1 -1
- package/dist/meter-group.js +1 -1
- package/dist/meter-group.js.map +1 -1
- package/dist/meter.js +1 -1
- package/dist/meter.js.map +1 -1
- package/dist/multi-thumb-slider.js +1 -1
- package/dist/multi-thumb-slider.js.map +1 -1
- package/dist/navigation-menu.d.ts +1 -1
- package/dist/navigation-menu.js +1 -1
- package/dist/number-field.d.ts +1 -1
- package/dist/number-field.js +1 -1
- package/dist/number-field.js.map +1 -1
- package/dist/{alert-dialog.d.ts → overlay/alert-dialog.d.ts} +1 -1
- package/dist/overlay/alert-dialog.js +2 -0
- package/dist/overlay/alert-dialog.js.map +1 -0
- package/dist/{dialog.d.ts → overlay/dialog.d.ts} +1 -1
- package/dist/overlay/dialog.js +2 -0
- package/dist/overlay/dialog.js.map +1 -0
- package/dist/{drawer.d.ts → overlay/drawer.d.ts} +1 -1
- package/dist/overlay/drawer.js +2 -0
- package/dist/overlay/drawer.js.map +1 -0
- package/dist/{popover.d.ts → overlay/popover.d.ts} +1 -1
- package/dist/overlay/popover.js +2 -0
- package/dist/overlay/popover.js.map +1 -0
- package/dist/overlay/popup.js +2 -0
- package/dist/overlay/popup.js.map +1 -0
- package/dist/{tooltip.d.ts → overlay/tooltip.d.ts} +1 -1
- package/dist/overlay/tooltip.js +2 -0
- package/dist/overlay/tooltip.js.map +1 -0
- package/dist/pin-input.js +1 -1
- package/dist/pin-input.js.map +1 -1
- package/dist/{internal → presence}/conditional-presence.js.map +1 -1
- package/dist/{internal → presence}/presence.js.map +1 -1
- package/dist/progress.js +1 -1
- package/dist/progress.js.map +1 -1
- package/dist/quantity-field.js +1 -1
- package/dist/quantity-field.js.map +1 -1
- package/dist/radio-group.d.ts +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.js.map +1 -1
- package/dist/select.d.ts +1 -1
- package/dist/select.js +1 -1
- package/dist/select.js.map +1 -1
- package/dist/slider.js +1 -1
- package/dist/slider.js.map +1 -1
- package/dist/spin-button.js +1 -1
- package/dist/spin-button.js.map +1 -1
- package/dist/switch.js +1 -1
- package/dist/switch.js.map +1 -1
- package/dist/tabs.d.ts +1 -1
- package/dist/tabs.js +1 -1
- package/dist/{internal/tabular-components.d.ts → tabular/components.d.ts} +1 -1
- package/dist/{internal/tabular-components.js → tabular/components.js} +1 -1
- package/dist/tabular/components.js.map +1 -0
- package/dist/tabular/context.d.ts +16 -0
- package/dist/tabular/context.js +2 -0
- package/dist/tabular/context.js.map +1 -0
- package/dist/{internal/tabular-profile.d.ts → tabular/controller.d.ts} +2 -32
- package/dist/tabular/controller.js +2 -0
- package/dist/tabular/controller.js.map +1 -0
- package/dist/{data-grid.d.ts → tabular/data-grid.d.ts} +7 -5
- package/dist/tabular/data-grid.js +2 -0
- package/dist/tabular/data-grid.js.map +1 -0
- package/dist/{data-table.d.ts → tabular/data-table.d.ts} +9 -36
- package/dist/tabular/data-table.js +2 -0
- package/dist/tabular/data-table.js.map +1 -0
- package/dist/{data-tree-grid.d.ts → tabular/data-tree-grid.d.ts} +7 -5
- package/dist/tabular/data-tree-grid.js +2 -0
- package/dist/tabular/data-tree-grid.js.map +1 -0
- package/dist/{internal/tabular-parts.d.ts → tabular/parts.d.ts} +2 -1
- package/dist/tabular/parts.js +2 -0
- package/dist/tabular/parts.js.map +1 -0
- package/dist/tabular/schema.d.ts +35 -0
- package/dist/tabular/schema.js +2 -0
- package/dist/tabular/schema.js.map +1 -0
- package/dist/tabular/source.d.ts +20 -0
- package/dist/tabular/source.js +2 -0
- package/dist/tabular/source.js.map +1 -0
- package/dist/tags-input.js +1 -1
- package/dist/tags-input.js.map +1 -1
- package/dist/{calendar.d.ts → temporal/calendar.d.ts} +21 -21
- package/dist/temporal/calendar.js +2 -0
- package/dist/temporal/calendar.js.map +1 -0
- package/dist/temporal/capabilities/calendar.d.ts +1 -0
- package/dist/temporal/capabilities/calendar.js +2 -0
- package/dist/temporal/capabilities/calendar.js.map +1 -0
- package/dist/temporal/capabilities/date-picker.d.ts +1 -0
- package/dist/temporal/capabilities/date-picker.js +2 -0
- package/dist/temporal/capabilities/date-picker.js.map +1 -0
- package/dist/temporal/capabilities/date-range-picker.d.ts +1 -0
- package/dist/temporal/capabilities/date-range-picker.js +2 -0
- package/dist/temporal/capabilities/date-range-picker.js.map +1 -0
- package/dist/temporal/capabilities/date-time-picker.d.ts +1 -0
- package/dist/temporal/capabilities/date-time-picker.js +2 -0
- package/dist/temporal/capabilities/date-time-picker.js.map +1 -0
- package/dist/temporal/capabilities/date-time-range-picker.d.ts +1 -0
- package/dist/temporal/capabilities/date-time-range-picker.js +2 -0
- package/dist/temporal/capabilities/date-time-range-picker.js.map +1 -0
- package/dist/temporal/capabilities/month-picker.d.ts +1 -0
- package/dist/temporal/capabilities/month-picker.js +2 -0
- package/dist/temporal/capabilities/month-picker.js.map +1 -0
- package/dist/temporal/capabilities/month-range-picker.d.ts +1 -0
- package/dist/temporal/capabilities/month-range-picker.js +2 -0
- package/dist/temporal/capabilities/month-range-picker.js.map +1 -0
- package/dist/temporal/capabilities/range-calendar.d.ts +1 -0
- package/dist/temporal/capabilities/range-calendar.js +2 -0
- package/dist/temporal/capabilities/range-calendar.js.map +1 -0
- package/dist/temporal/capabilities/year-picker.d.ts +1 -0
- package/dist/temporal/capabilities/year-picker.js +2 -0
- package/dist/temporal/capabilities/year-picker.js.map +1 -0
- package/dist/temporal/capabilities/year-range-picker.d.ts +1 -0
- package/dist/temporal/capabilities/year-range-picker.js +2 -0
- package/dist/temporal/capabilities/year-range-picker.js.map +1 -0
- package/dist/{internal/picker-capability.js → temporal/capability.js} +1 -1
- package/dist/temporal/capability.js.map +1 -0
- package/dist/{date-field.d.ts → temporal/date-field.d.ts} +1 -1
- package/dist/temporal/date-field.js +2 -0
- package/dist/temporal/date-field.js.map +1 -0
- package/dist/{date-picker.d.ts → temporal/date-picker.d.ts} +24 -24
- package/dist/temporal/date-picker.js +2 -0
- package/dist/temporal/date-picker.js.map +1 -0
- package/dist/{date-range-field.d.ts → temporal/date-range-field.d.ts} +1 -1
- package/dist/temporal/date-range-field.js +2 -0
- package/dist/temporal/date-range-field.js.map +1 -0
- package/dist/{date-range-picker.d.ts → temporal/date-range-picker.d.ts} +27 -27
- package/dist/temporal/date-range-picker.js +2 -0
- package/dist/temporal/date-range-picker.js.map +1 -0
- package/dist/{date-time-field.d.ts → temporal/date-time-field.d.ts} +1 -1
- package/dist/temporal/date-time-field.js +2 -0
- package/dist/temporal/date-time-field.js.map +1 -0
- package/dist/{date-time-picker.d.ts → temporal/date-time-picker.d.ts} +30 -30
- package/dist/temporal/date-time-picker.js +2 -0
- package/dist/temporal/date-time-picker.js.map +1 -0
- package/dist/{date-time-range-picker.d.ts → temporal/date-time-range-picker.d.ts} +39 -39
- package/dist/temporal/date-time-range-picker.js +2 -0
- package/dist/temporal/date-time-range-picker.js.map +1 -0
- package/dist/{month-picker.d.ts → temporal/month-picker.d.ts} +14 -14
- package/dist/temporal/month-picker.js +2 -0
- package/dist/temporal/month-picker.js.map +1 -0
- package/dist/{month-range-picker.d.ts → temporal/month-range-picker.d.ts} +17 -17
- package/dist/temporal/month-range-picker.js +2 -0
- package/dist/temporal/month-range-picker.js.map +1 -0
- package/dist/{internal/date-picker.d.ts → temporal/picker.d.ts} +1 -1
- package/dist/temporal/picker.js +2 -0
- package/dist/temporal/picker.js.map +1 -0
- package/dist/{range-calendar.d.ts → temporal/range-calendar.d.ts} +11 -11
- package/dist/temporal/range-calendar.js +2 -0
- package/dist/temporal/range-calendar.js.map +1 -0
- package/dist/temporal/temporal-provider.js.map +1 -0
- package/dist/{time-field.d.ts → temporal/time-field.d.ts} +1 -1
- package/dist/temporal/time-field.js +2 -0
- package/dist/temporal/time-field.js.map +1 -0
- package/dist/{time-range-field.d.ts → temporal/time-range-field.d.ts} +1 -1
- package/dist/temporal/time-range-field.js +2 -0
- package/dist/temporal/time-range-field.js.map +1 -0
- package/dist/{year-picker.d.ts → temporal/year-picker.d.ts} +16 -16
- package/dist/temporal/year-picker.js +2 -0
- package/dist/temporal/year-picker.js.map +1 -0
- package/dist/{year-range-picker.d.ts → temporal/year-range-picker.d.ts} +19 -19
- package/dist/temporal/year-range-picker.js +2 -0
- package/dist/temporal/year-range-picker.js.map +1 -0
- package/dist/text.js +1 -1
- package/dist/text.js.map +1 -1
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/toggle-group.js.map +1 -1
- package/dist/tree-grid.d.ts +1 -1
- package/dist/tree-grid.js +1 -1
- package/dist/tree-grid.js.map +1 -1
- package/dist/tree-view.d.ts +1 -1
- package/dist/tree-view.js +1 -1
- package/dist/virtual/virtual-collection.js.map +1 -0
- package/dist/virtual/virtual-core.js +2 -0
- package/dist/virtual/virtual-core.js.map +1 -0
- package/dist/{virtual-grid.d.ts → virtual/virtual-grid.d.ts} +1 -1
- package/dist/virtual/virtual-grid.js +2 -0
- package/dist/virtual/virtual-grid.js.map +1 -0
- package/dist/virtual/virtual-list.js.map +1 -0
- package/dist/{virtual-masonry.d.ts → virtual/virtual-masonry.d.ts} +1 -1
- package/dist/virtual/virtual-masonry.js +2 -0
- package/dist/virtual/virtual-masonry.js.map +1 -0
- package/dist/{virtual-spatial.d.ts → virtual/virtual-spatial.d.ts} +1 -1
- package/dist/virtual/virtual-spatial.js +2 -0
- package/dist/virtual/virtual-spatial.js.map +1 -0
- package/dist/virtual-core.d.ts +1 -1
- package/dist/virtual-core.js +1 -1
- package/dist/virtual-list.d.ts +2 -2
- package/dist/virtual-list.js +1 -1
- package/package.json +94 -94
- package/dist/alert-dialog.js +0 -2
- package/dist/alert-dialog.js.map +0 -1
- package/dist/calendar.js +0 -2
- package/dist/calendar.js.map +0 -1
- package/dist/data-grid.js +0 -2
- package/dist/data-grid.js.map +0 -1
- package/dist/data-table.js +0 -2
- package/dist/data-table.js.map +0 -1
- package/dist/data-tree-grid.js +0 -2
- package/dist/data-tree-grid.js.map +0 -1
- package/dist/date-field.js +0 -2
- package/dist/date-field.js.map +0 -1
- package/dist/date-picker.js +0 -2
- package/dist/date-picker.js.map +0 -1
- package/dist/date-range-field.js +0 -2
- package/dist/date-range-field.js.map +0 -1
- package/dist/date-range-picker.js +0 -2
- package/dist/date-range-picker.js.map +0 -1
- package/dist/date-time-field.js +0 -2
- package/dist/date-time-field.js.map +0 -1
- package/dist/date-time-picker.js +0 -2
- package/dist/date-time-picker.js.map +0 -1
- package/dist/date-time-range-picker.js +0 -2
- package/dist/date-time-range-picker.js.map +0 -1
- package/dist/dialog.js +0 -2
- package/dist/dialog.js.map +0 -1
- package/dist/drawer.js +0 -2
- package/dist/drawer.js.map +0 -1
- package/dist/internal/calendar-capability.d.ts +0 -1
- package/dist/internal/calendar-capability.js +0 -2
- package/dist/internal/calendar-capability.js.map +0 -1
- package/dist/internal/date-picker-capability.d.ts +0 -1
- package/dist/internal/date-picker-capability.js +0 -2
- package/dist/internal/date-picker-capability.js.map +0 -1
- package/dist/internal/date-picker.js +0 -2
- package/dist/internal/date-picker.js.map +0 -1
- package/dist/internal/date-range-picker-capability.d.ts +0 -1
- package/dist/internal/date-range-picker-capability.js +0 -2
- package/dist/internal/date-range-picker-capability.js.map +0 -1
- package/dist/internal/date-time-picker-capability.d.ts +0 -1
- package/dist/internal/date-time-picker-capability.js +0 -2
- package/dist/internal/date-time-picker-capability.js.map +0 -1
- package/dist/internal/date-time-range-picker-capability.d.ts +0 -1
- package/dist/internal/date-time-range-picker-capability.js +0 -2
- package/dist/internal/date-time-range-picker-capability.js.map +0 -1
- package/dist/internal/decimal-input.js.map +0 -1
- package/dist/internal/form-context.js.map +0 -1
- package/dist/internal/form-control-inventory.js.map +0 -1
- package/dist/internal/form-control.js.map +0 -1
- package/dist/internal/form-presence-parts.js +0 -2
- package/dist/internal/form-presence-parts.js.map +0 -1
- package/dist/internal/month-picker-capability.d.ts +0 -1
- package/dist/internal/month-picker-capability.js +0 -2
- package/dist/internal/month-picker-capability.js.map +0 -1
- package/dist/internal/month-range-picker-capability.d.ts +0 -1
- package/dist/internal/month-range-picker-capability.js +0 -2
- package/dist/internal/month-range-picker-capability.js.map +0 -1
- package/dist/internal/native-field.js +0 -2
- package/dist/internal/native-field.js.map +0 -1
- package/dist/internal/native-input.js.map +0 -1
- package/dist/internal/picker-capability.js.map +0 -1
- package/dist/internal/popup.js +0 -2
- package/dist/internal/popup.js.map +0 -1
- package/dist/internal/range-calendar-capability.d.ts +0 -1
- package/dist/internal/range-calendar-capability.js +0 -2
- package/dist/internal/range-calendar-capability.js.map +0 -1
- package/dist/internal/tabular-components.js.map +0 -1
- package/dist/internal/tabular-parts.js +0 -2
- package/dist/internal/tabular-parts.js.map +0 -1
- package/dist/internal/tabular-profile.js +0 -2
- package/dist/internal/tabular-profile.js.map +0 -1
- package/dist/internal/virtual-collection.js.map +0 -1
- package/dist/internal/virtual-core.js +0 -2
- package/dist/internal/virtual-core.js.map +0 -1
- package/dist/internal/virtual-list.js.map +0 -1
- package/dist/internal/year-picker-capability.d.ts +0 -1
- package/dist/internal/year-picker-capability.js +0 -2
- package/dist/internal/year-picker-capability.js.map +0 -1
- package/dist/internal/year-range-picker-capability.d.ts +0 -1
- package/dist/internal/year-range-picker-capability.js +0 -2
- package/dist/internal/year-range-picker-capability.js.map +0 -1
- package/dist/month-picker.js +0 -2
- package/dist/month-picker.js.map +0 -1
- package/dist/month-range-picker.js +0 -2
- package/dist/month-range-picker.js.map +0 -1
- package/dist/popover.js +0 -2
- package/dist/popover.js.map +0 -1
- package/dist/range-calendar.js +0 -2
- package/dist/range-calendar.js.map +0 -1
- package/dist/temporal-provider.js.map +0 -1
- package/dist/time-field.js +0 -2
- package/dist/time-field.js.map +0 -1
- package/dist/time-range-field.js +0 -2
- package/dist/time-range-field.js.map +0 -1
- package/dist/tooltip.js +0 -2
- package/dist/tooltip.js.map +0 -1
- package/dist/virtual-grid.js +0 -2
- package/dist/virtual-grid.js.map +0 -1
- package/dist/virtual-masonry.js +0 -2
- package/dist/virtual-masonry.js.map +0 -1
- package/dist/virtual-spatial.js +0 -2
- package/dist/virtual-spatial.js.map +0 -1
- package/dist/year-picker.js +0 -2
- package/dist/year-picker.js.map +0 -1
- package/dist/year-range-picker.js +0 -2
- package/dist/year-range-picker.js.map +0 -1
- /package/dist/{internal/form-control-inventory.d.ts → form/control-inventory.d.ts} +0 -0
- /package/dist/{internal/form-control.d.ts → form/control.d.ts} +0 -0
- /package/dist/{internal → input}/decimal-input.d.ts +0 -0
- /package/dist/{internal → input}/decimal-input.js +0 -0
- /package/dist/{internal → input}/native-field.d.ts +0 -0
- /package/dist/{internal → input}/native-input.d.ts +0 -0
- /package/dist/{internal → input}/native-input.js +0 -0
- /package/dist/{internal → overlay}/popup.d.ts +0 -0
- /package/dist/{internal → presence}/conditional-presence.d.ts +0 -0
- /package/dist/{internal → presence}/conditional-presence.js +0 -0
- /package/dist/{internal → presence}/presence.d.ts +0 -0
- /package/dist/{internal → presence}/presence.js +0 -0
- /package/dist/{internal/picker-capability.d.ts → temporal/capability.d.ts} +0 -0
- /package/dist/{temporal-provider.d.ts → temporal/temporal-provider.d.ts} +0 -0
- /package/dist/{temporal-provider.js → temporal/temporal-provider.js} +0 -0
- /package/dist/{internal → virtual}/virtual-collection.d.ts +0 -0
- /package/dist/{internal → virtual}/virtual-collection.js +0 -0
- /package/dist/{internal → virtual}/virtual-core.d.ts +0 -0
- /package/dist/{internal → virtual}/virtual-list.d.ts +0 -0
- /package/dist/{internal → virtual}/virtual-list.js +0 -0
package/dist/toggle-group.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,nextTick,provide,shallowRef,watch}from"vue";import{getToggleGroupItemAttributes,getToggleGroupRootAttributes}from"@sectile/dom/toggle-group";import{createListboxControllerFromItems}from"@sectile/dom/listbox";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,nextTick,provide,shallowRef,watch}from"vue";import{getToggleGroupItemAttributes,getToggleGroupRootAttributes}from"@sectile/dom/toggle-group";import{createListboxControllerFromItems}from"@sectile/dom/listbox";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./input/native-input.js";import{provideFormControlOwner}from"./form/control.js";import{hiddenValueSubmissionCapabilities,useCompositeFormControl}from"./form/control.js";import{useHostDirection}from"./host-provider.js";import{reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const rootKey=Symbol("SectileToggleGroupRoot");const ToggleGroupRoot=defineComponent({name:"SectileToggleGroupRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:Array,default:void 0},defaultValue:{type:Array,default:()=>[]},multiple:{type:Boolean,default:false},deselectable:{type:Boolean,default:true},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},orientation:{type:String,default:"horizontal"},label:{type:String,default:void 0},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,highlight:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const direction=useHostDirection();const rootElement=shallowRef(null);const submissionElements=[];const participation=useCompositeFormControl({root:rootElement,submissions:()=>value.value.map((_,index)=>({element:()=>submissionElements[index]??null,capabilities:hiddenValueSubmissionCapabilities}))});provideFormControlOwner();const controlled=useControlledStateInvariant("ToggleGroupRoot","modelValue",()=>props.modelValue);const makeController=(value2,highlightedValue=value2[0]??null)=>{const result=createListboxControllerFromItems({items:props.items,selectionMode:props.multiple?"multiple":"single",disabledItems:props.disabledItems,disabled:props.disabled,readOnly:props.readonly,orientation:props.orientation,direction:direction.value,activationMode:"toggle",clearOnEscape:false,policies:{deselectable:props.deselectable,boundary:"wrap"},...controlled?{value:value2}:{defaultValue:value2},defaultHighlightedValue:highlightedValue??props.items.find(id=>!props.disabledItems.includes(id))??null,onValueChange:({value:next})=>emit("update:modelValue",next),onHighlightedValueChange:({value:next})=>emit("highlight",next)});if(!result.ok)throw new TypeError(result.error.message);return result.value};const controller=shallowRef(makeController(props.modelValue??props.defaultValue));const snapshot=shallowRef(controller.value.getSnapshot());const rebuild=()=>{const requested=controlled?props.modelValue:snapshot.value.state.selection.selected;const reconciled=reconcileCollectionState(props.items,requested,snapshot.value.state.cursor.current,props.disabledItems,props.multiple?"multiple":"single");controller.value=makeController(reconciled.selected,reconciled.current);snapshot.value=controller.value.getSnapshot();if(controlled&&!sameIDs(requested,reconciled.selected))emit("update:modelValue",reconciled.selected)};watch(()=>props.modelValue,next=>{if(!controlled||next===void 0)return;const result=controller.value.syncControlledValues({value:next});if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value});watch([()=>props.items,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.orientation,()=>props.multiple,()=>props.deselectable,direction],rebuild);const value=computed(()=>snapshot.value.state.selection.selected);const highlighted=computed(()=>snapshot.value.state.cursor.current);const disabled=computed(()=>props.disabled);const readonly=computed(()=>props.readonly);const disabledItems=computed(()=>new Set(props.disabledItems));const apply=(result,root)=>{if(!result.ok)return false;snapshot.value=result.snapshot;if(root!==void 0)void nextTick(()=>focusItem(root,result.snapshot.state.cursor.current));return true};provide(rootKey,{value,highlighted,disabled,readonly,disabledItems,press:(id,target)=>apply(controller.value.handleEvent({type:"toggle",id}),target.closest('[data-scope="toggle-group"][data-part="root"]'))});const slotProps=computed(()=>({value:value.value,highlightedValue:highlighted.value,disabled:props.disabled,readonly:props.readonly}));return()=>{const root=h(Primitive,mergeProps(attrs,getToggleGroupRootAttributes({orientation:props.orientation,direction:direction.value,...props.label===void 0?{}:{label:props.label},disabled:props.disabled,readOnly:props.readonly}),{as:props.as,asChild:props.asChild,elementRef:element=>{rootElement.value=element},onKeydown:event=>{if(apply(controller.value.handleKeyboardInput(event),event.currentTarget))event.preventDefault()}},participation.controlProps.value),{default:()=>slots["default"]?.(slotProps.value)});if(!participation.participating&&props.name===void 0&&props.form===void 0)return root;return[root,...value.value.map((selected,index)=>h("input",{ref:element=>{submissionElements[index]=element instanceof HTMLInputElement?element:null},type:"hidden",name:props.name,form:props.form,value:selected,disabled:props.disabled,style:visuallyHiddenInputStyle}))]}}});const ToggleGroupItem=defineComponent({name:"SectileToggleGroupItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot();const state=computed(()=>({value:props.value,pressed:root.value.value.includes(props.value),highlighted:root.highlighted.value===props.value,disabled:root.disabled.value||props.disabled||root.disabledItems.value.has(props.value),readonly:root.readonly.value}));return()=>h(Primitive,mergeProps(attrs,getToggleGroupItemAttributes({id:props.value,pressed:state.value.pressed,highlighted:state.value.highlighted,disabled:state.value.disabled}),{as:props.as,asChild:props.asChild,onClick:event=>{if(!event.defaultPrevented&&!state.value.disabled&&!state.value.readonly)root.press(props.value,event.currentTarget)}}),{default:()=>slots["default"]?.(state.value)})}});function useRoot(){const root=inject(rootKey);if(root===void 0)throw new TypeError("ToggleGroupItem must be used inside ToggleGroupRoot.");return root}function focusItem(root,id){if(id===null)return;for(const item of root.querySelectorAll("[data-toggle-group-id]"))if(item.dataset["toggleGroupId"]===id)item.focus()}export{ToggleGroupItem,ToggleGroupRoot};
|
|
2
2
|
//# sourceMappingURL=toggle-group.js.map
|
package/dist/toggle-group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/toggle-group.ts"],"mappings":"AAAA,OACE,SAAU,gBAAiB,EAAG,OAAQ,WAAY,SAAU,QAAS,WAAY,UAE5E,MACP,OAAS,6BAA8B,iCAAoC,4BAC3E,OAAS,qCAAgE,uBACzE,OAAS,cAAmC,iBAC5C,OAAS,6BAAgC,
|
|
1
|
+
{"version":3,"sources":["../src/toggle-group.ts"],"mappings":"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","names":["value"],"file":"toggle-group.js"}
|
package/dist/tree-grid.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
2
|
import { type TreeGridEditMode, type TreeGridPolicies, type TreeGridRowInput } from '@sectile/dom/tree-grid';
|
|
3
3
|
import { type PrimitiveAs } from './primitive.js';
|
|
4
|
-
import { type ConditionalPresenceProps } from './
|
|
4
|
+
import { type ConditionalPresenceProps } from './presence/conditional-presence.js';
|
|
5
5
|
export interface TreeGridRootProps {
|
|
6
6
|
readonly rows: readonly TreeGridRowInput<string, string>[];
|
|
7
7
|
readonly getCellValue: (id: string) => string;
|
package/dist/tree-grid.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createTreeGrid}from"@sectile/dom/tree-grid";import{Primitive}from"./primitive.js";import{collectionBranchIDs,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./internal/conditional-presence.js";const key=Symbol("SectileTreeGridRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const TreeGridRoot=defineComponent({name:"SectileTreeGridRoot",inheritAttrs:false,props:{rows:{type:Array,required:true},getCellValue:{type:Function,required:true},setCellValue:{type:Function,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},expandedValue:{type:Array,default:void 0},defaultExpandedValue:{type:Array,default:()=>[]},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},editMode:{type:String,default:void 0},defaultEditMode:{type:String,default:"navigation"},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:expandedValue":_value=>true,"update:highlightedValue":_value=>true,"update:editMode":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localExpanded=shallowRef(props.expandedValue!==void 0?props.expandedValue:props.defaultExpandedValue);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const localEditMode=shallowRef(props.editMode??props.defaultEditMode);const controlled={value:useControlledStateInvariant("TreeGridRoot","modelValue",()=>props.modelValue),expanded:useControlledStateInvariant("TreeGridRoot","expandedValue",()=>props.expandedValue),highlighted:useControlledStateInvariant("TreeGridRoot","highlightedValue",()=>props.highlightedValue),editMode:useControlledStateInvariant("TreeGridRoot","editMode",()=>props.editMode)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,expandedValue:props.expandedValue!==void 0?props.expandedValue:localExpanded.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,editMode:props.editMode??localEditMode.value,disabled:props.disabled,readonly:props.readonly}));const expandedRows=computed(()=>new Set(state.value.expandedValue));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;connection.value.setGridAttributes(props.rows.length,maxTreeGridColumnCount(props.rows));element.value.querySelectorAll("[data-sectile-tree-grid-row]").forEach(node=>connection.value?.setRowAttributes(node,{rowIndex:numberData(node.dataset["rowIndex"],1),level:numberData(node.dataset["level"],1),...node.dataset["expandable"]===void 0?{}:{expanded:node.dataset["expanded"]!==void 0}}));element.value.querySelectorAll("[data-sectile-tree-grid-cell]").forEach(node=>{const id=node.dataset["sectileTreeGridCell"];if(id!==void 0)connection.value?.setCellAttributes(node,{id,columnIndex:numberData(node.dataset["columnIndex"],1)})});element.value.querySelectorAll("[data-sectile-tree-grid-disclosure]").forEach(node=>{const id=node.dataset["sectileTreeGridDisclosure"];if(id!==void 0)connection.value?.setDisclosureAttributes(node,id)});element.value.querySelectorAll("[data-sectile-tree-grid-editor]").forEach(node=>{const id=node.dataset["sectileTreeGridEditor"];if(id!==void 0)connection.value?.bindEditor(node,{id,...node.getAttribute("aria-label")===null?{}:{label:node.getAttribute("aria-label")}})})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected[0]??null;localExpanded.value=snapshot.expansion.ids;localHighlight.value=snapshot.cursor.current;localEditMode.value=snapshot.editMode;refreshParts()};const connect=()=>{const nextOwner=snapshotTreeGridConnectionOwner(props);if(connection.value!==void 0&&connectionOwner!==void 0&&sameTreeGridConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===void 0)return;const cells=nextOwner.rows.flatMap(row=>row.cells.filter(id=>id!==null));const branches=collectionBranchIDs(nextOwner.rows);const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedExpanded=controlled.expanded?props.expandedValue:localExpanded.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(cells,requestedValue===null?[]:[requestedValue],requestedHighlight,[],"single",{preserveNullCurrent:true});const expanded=reconcileCollectionState(branches,requestedExpanded,null,[],"multiple",{preserveNullCurrent:true}).selected;const value=reconciled.selected[0]??null;const requestedEditMode=controlled.editMode?props.editMode:localEditMode.value;const editMode=reconciled.current===null&&requestedEditMode==="editing"?"navigation":requestedEditMode;localValue.value=value;localExpanded.value=expanded;localHighlight.value=reconciled.current;localEditMode.value=editMode;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);if(controlled.expanded&&!sameIDs(requestedExpanded,expanded))emit("update:expandedValue",expanded);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit("update:highlightedValue",reconciled.current);if(controlled.editMode&&props.editMode!==editMode)emit("update:editMode",editMode);connection.value=createTreeGrid({root:element.value,rows:nextOwner.rows,getCellValue:nextOwner.getCellValue,setCellValue:nextOwner.setCellValue,...controlled.value?{value}:{defaultValue:value},...controlled.expanded?{expandedValue:expanded}:{defaultExpandedValue:expanded},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},...controlled.editMode?{editMode}:{defaultEditMode:editMode},disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...props.policies===void 0?{}:{policies:props.policies},onValueChange:({value:value2})=>{localValue.value=value2;emit("update:modelValue",value2)},onExpandedValueChange:({value:value2})=>{localExpanded.value=value2;emit("update:expandedValue",value2)},onHighlightedValueChange:({value:value2})=>{localHighlight.value=value2;emit("update:highlightedValue",value2)},onEditModeChange:({value:value2})=>{localEditMode.value=value2;emit("update:editMode",value2)},onUpdate:refresh});connectionOwner=nextOwner;refreshParts();refresh()};provide(key,{state,expandedRows,registerRow:(node,rowIndex,level,expanded)=>connection.value?.setRowAttributes(node,{rowIndex,level,...expanded===void 0?{}:{expanded}}),registerCell:(node,id,columnIndex)=>connection.value?.setCellAttributes(node,{id,columnIndex}),registerDisclosure:(node,id)=>connection.value?.setDisclosureAttributes(node,id),registerEditor:(node,id,label)=>connection.value?.bindEditor(node,{id,...label===void 0?{}:{label}}),handleEditorKeydown:event=>{if(connection.value?.handleKeyboardEvent(event)!==true)return;event.preventDefault();event.stopPropagation()}});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.rows,()=>props.getCellValue,()=>props.setCellValue,()=>props.disabled,()=>props.readonly,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.expandedValue,()=>props.highlightedValue,()=>props.editMode],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValue:props.expandedValue}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{},...controlled.editMode?{editMode:props.editMode}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:void 0},"data-scope":"tree-grid","data-part":"root","data-edit-mode":state.value.editMode}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridRow=defineComponent({name:"SectileTreeGridRow",inheritAttrs:false,props:{value:{type:String,required:true},rowIndex:{type:Number,required:true},level:{type:Number,default:1},expandable:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridRow");const state=computed(()=>({...root.state.value,value:props.value,expanded:root.expandedRows.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerRow(node,props.rowIndex,props.level,props.expandable?state.value.expanded:void 0)},"data-sectile-tree-grid-row":props.value,"data-row-index":props.rowIndex,"data-level":props.level,"data-expandable":props.expandable?"":void 0,"data-expanded":props.expandable&&state.value.expanded?"":void 0,"data-scope":"tree-grid","data-part":"row"}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridCell=defineComponent({name:"SectileTreeGridCell",inheritAttrs:false,props:{value:{type:String,required:true},columnIndex:{type:Number,required:true},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridCell");const state=computed(()=>({...root.state.value,value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,editing:root.state.value.highlightedValue===props.value&&root.state.value.editMode==="editing"}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerCell(node,props.value,props.columnIndex)},"data-sectile-tree-grid-cell":props.value,"data-column-index":props.columnIndex,"data-scope":"tree-grid","data-part":"cell","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-editing":state.value.editing?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridDisclosure=defineComponent({name:"SectileTreeGridDisclosure",inheritAttrs:false,props:{for:{type:String,required:true},as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridDisclosure");const state=computed(()=>({...root.state.value,value:props.for,expanded:root.expandedRows.value.has(props.for)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,disabled:props.as==="button"?root.state.value.disabled:void 0,elementRef:node=>{if(node instanceof HTMLElement)root.registerDisclosure(node,props.for)},"data-sectile-tree-grid-disclosure":props.for,"data-scope":"tree-grid","data-part":"disclosure","data-state":state.value.expanded?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridEditor=defineComponent({name:"SectileTreeGridEditor",inheritAttrs:false,props:{for:{type:String,required:true},label:{type:String,default:void 0},...conditionalPresenceProps},setup(props,{attrs}){const root=useRoot("TreeGridEditor");const editing=computed(()=>root.state.value.highlightedValue===props.for&&root.state.value.editMode==="editing");const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(editing,forcePresent);return()=>{const inactivePresent=!editing.value&&presence.present.value;return h("input",mergeProps(attrs,{ref:node=>{const element=presence.register(node);if(element?.tagName==="INPUT")root.registerEditor(element,props.for,props.label)},hidden:presence.hidden.value,tabindex:inactivePresent?-1:void 0,onKeydown:root.handleEditorKeydown,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},disabled:root.state.value.disabled,readonly:root.state.value.readonly,"aria-label":props.label,"data-sectile-tree-grid-editor":props.for,"data-scope":"tree-grid","data-part":"editor","data-state":editing.value?"editing":"idle"}))}}});function numberData(value,fallback){const parsed=Number(value);return Number.isFinite(parsed)?parsed:fallback}function maxTreeGridColumnCount(rows){let maximum=0;for(const row of rows)maximum=Math.max(maximum,row.cells.length);return maximum}function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside TreeGridRoot.`);return root}function snapshotTreeGridConnectionOwner(props){return Object.freeze({rows:Object.freeze(props.rows.map(row=>Object.freeze({id:row.id,parentID:row.parentID,cells:Object.freeze([...row.cells])}))),getCellValue:props.getCellValue,setCellValue:props.setCellValue,disabled:props.disabled,readonly:props.readonly,eligible:props.policies?.eligible,boundary:props.policies?.boundary,maxScan:props.policies?.maxScan})}function sameTreeGridConnectionOwner(left,right){if(left.rows.length!==right.rows.length||left.getCellValue!==right.getCellValue||left.setCellValue!==right.setCellValue||left.disabled!==right.disabled||left.readonly!==right.readonly||left.eligible!==right.eligible||left.boundary!==right.boundary||left.maxScan!==right.maxScan)return false;for(let rowIndex=0;rowIndex<left.rows.length;rowIndex+=1){const leftRow=left.rows[rowIndex];const rightRow=right.rows[rowIndex];if(leftRow.id!==rightRow.id||leftRow.parentID!==rightRow.parentID||leftRow.cells.length!==rightRow.cells.length)return false;for(let column=0;column<leftRow.cells.length;column+=1){if(leftRow.cells[column]!==rightRow.cells[column])return false}}return true}export{TreeGridCell,TreeGridDisclosure,TreeGridEditor,TreeGridRoot,TreeGridRow};
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createTreeGrid}from"@sectile/dom/tree-grid";import{Primitive}from"./primitive.js";import{collectionBranchIDs,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./presence/conditional-presence.js";const key=Symbol("SectileTreeGridRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const TreeGridRoot=defineComponent({name:"SectileTreeGridRoot",inheritAttrs:false,props:{rows:{type:Array,required:true},getCellValue:{type:Function,required:true},setCellValue:{type:Function,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},expandedValue:{type:Array,default:void 0},defaultExpandedValue:{type:Array,default:()=>[]},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},editMode:{type:String,default:void 0},defaultEditMode:{type:String,default:"navigation"},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:expandedValue":_value=>true,"update:highlightedValue":_value=>true,"update:editMode":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localExpanded=shallowRef(props.expandedValue!==void 0?props.expandedValue:props.defaultExpandedValue);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const localEditMode=shallowRef(props.editMode??props.defaultEditMode);const controlled={value:useControlledStateInvariant("TreeGridRoot","modelValue",()=>props.modelValue),expanded:useControlledStateInvariant("TreeGridRoot","expandedValue",()=>props.expandedValue),highlighted:useControlledStateInvariant("TreeGridRoot","highlightedValue",()=>props.highlightedValue),editMode:useControlledStateInvariant("TreeGridRoot","editMode",()=>props.editMode)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,expandedValue:props.expandedValue!==void 0?props.expandedValue:localExpanded.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,editMode:props.editMode??localEditMode.value,disabled:props.disabled,readonly:props.readonly}));const expandedRows=computed(()=>new Set(state.value.expandedValue));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;connection.value.setGridAttributes(props.rows.length,maxTreeGridColumnCount(props.rows));element.value.querySelectorAll("[data-sectile-tree-grid-row]").forEach(node=>connection.value?.setRowAttributes(node,{rowIndex:numberData(node.dataset["rowIndex"],1),level:numberData(node.dataset["level"],1),...node.dataset["expandable"]===void 0?{}:{expanded:node.dataset["expanded"]!==void 0}}));element.value.querySelectorAll("[data-sectile-tree-grid-cell]").forEach(node=>{const id=node.dataset["sectileTreeGridCell"];if(id!==void 0)connection.value?.setCellAttributes(node,{id,columnIndex:numberData(node.dataset["columnIndex"],1)})});element.value.querySelectorAll("[data-sectile-tree-grid-disclosure]").forEach(node=>{const id=node.dataset["sectileTreeGridDisclosure"];if(id!==void 0)connection.value?.setDisclosureAttributes(node,id)});element.value.querySelectorAll("[data-sectile-tree-grid-editor]").forEach(node=>{const id=node.dataset["sectileTreeGridEditor"];if(id!==void 0)connection.value?.bindEditor(node,{id,...node.getAttribute("aria-label")===null?{}:{label:node.getAttribute("aria-label")}})})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected[0]??null;localExpanded.value=snapshot.expansion.ids;localHighlight.value=snapshot.cursor.current;localEditMode.value=snapshot.editMode;refreshParts()};const connect=()=>{const nextOwner=snapshotTreeGridConnectionOwner(props);if(connection.value!==void 0&&connectionOwner!==void 0&&sameTreeGridConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===void 0)return;const cells=nextOwner.rows.flatMap(row=>row.cells.filter(id=>id!==null));const branches=collectionBranchIDs(nextOwner.rows);const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedExpanded=controlled.expanded?props.expandedValue:localExpanded.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(cells,requestedValue===null?[]:[requestedValue],requestedHighlight,[],"single",{preserveNullCurrent:true});const expanded=reconcileCollectionState(branches,requestedExpanded,null,[],"multiple",{preserveNullCurrent:true}).selected;const value=reconciled.selected[0]??null;const requestedEditMode=controlled.editMode?props.editMode:localEditMode.value;const editMode=reconciled.current===null&&requestedEditMode==="editing"?"navigation":requestedEditMode;localValue.value=value;localExpanded.value=expanded;localHighlight.value=reconciled.current;localEditMode.value=editMode;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);if(controlled.expanded&&!sameIDs(requestedExpanded,expanded))emit("update:expandedValue",expanded);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit("update:highlightedValue",reconciled.current);if(controlled.editMode&&props.editMode!==editMode)emit("update:editMode",editMode);connection.value=createTreeGrid({root:element.value,rows:nextOwner.rows,getCellValue:id=>props.getCellValue(id),setCellValue:(id,value2)=>props.setCellValue(id,value2),...controlled.value?{value}:{defaultValue:value},...controlled.expanded?{expandedValue:expanded}:{defaultExpandedValue:expanded},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},...controlled.editMode?{editMode}:{defaultEditMode:editMode},disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...props.policies===void 0?{}:{policies:props.policies},onValueChange:({value:value2})=>{localValue.value=value2;emit("update:modelValue",value2)},onExpandedValueChange:({value:value2})=>{localExpanded.value=value2;emit("update:expandedValue",value2)},onHighlightedValueChange:({value:value2})=>{localHighlight.value=value2;emit("update:highlightedValue",value2)},onEditModeChange:({value:value2})=>{localEditMode.value=value2;emit("update:editMode",value2)},onUpdate:refresh});connectionOwner=nextOwner;refreshParts();refresh()};let mounted=false;let editorFocused=false;let editorComposing=false;let reconnectPending=false;let reconnectTimer=null;const editorActive=()=>editorFocused||editorComposing;const requestConnect=()=>{if(editorActive()){reconnectPending=true;return}connect()};const schedulePendingConnect=()=>{if(editorActive()||!reconnectPending||reconnectTimer!==null)return;reconnectTimer=setTimeout(()=>{reconnectTimer=null;if(!mounted||editorActive())return;reconnectPending=false;connect()},0)};const setEditorFocused=focused=>{editorFocused=focused;schedulePendingConnect()};const setEditorComposing=composing=>{editorComposing=composing;schedulePendingConnect()};provide(key,{state,expandedRows,registerRow:(node,rowIndex,level,expanded)=>connection.value?.setRowAttributes(node,{rowIndex,level,...expanded===void 0?{}:{expanded}}),registerCell:(node,id,columnIndex)=>connection.value?.setCellAttributes(node,{id,columnIndex}),registerDisclosure:(node,id)=>connection.value?.setDisclosureAttributes(node,id),registerEditor:(node,id,label)=>connection.value?.bindEditor(node,{id,...label===void 0?{}:{label}}),setEditorFocused,setEditorComposing,handleEditorKeydown:event=>{if(connection.value?.handleKeyboardEvent(event)!==true)return;event.preventDefault();event.stopPropagation()}});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;reconnectPending=false;editorFocused=false;editorComposing=false;connection.value?.disconnect()});watch([()=>props.rows,()=>props.getCellValue,()=>props.setCellValue,()=>props.disabled,()=>props.readonly,()=>props.policies],requestConnect);watch([()=>props.modelValue,()=>props.expandedValue,()=>props.highlightedValue,()=>props.editMode],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValue:props.expandedValue}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{},...controlled.editMode?{editMode:props.editMode}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:void 0},"data-scope":"tree-grid","data-part":"root","data-edit-mode":state.value.editMode}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridRow=defineComponent({name:"SectileTreeGridRow",inheritAttrs:false,props:{value:{type:String,required:true},rowIndex:{type:Number,required:true},level:{type:Number,default:1},expandable:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridRow");const state=computed(()=>({...root.state.value,value:props.value,expanded:root.expandedRows.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerRow(node,props.rowIndex,props.level,props.expandable?state.value.expanded:void 0)},"data-sectile-tree-grid-row":props.value,"data-row-index":props.rowIndex,"data-level":props.level,"data-expandable":props.expandable?"":void 0,"data-expanded":props.expandable&&state.value.expanded?"":void 0,"data-scope":"tree-grid","data-part":"row"}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridCell=defineComponent({name:"SectileTreeGridCell",inheritAttrs:false,props:{value:{type:String,required:true},columnIndex:{type:Number,required:true},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridCell");const state=computed(()=>({...root.state.value,value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,editing:root.state.value.highlightedValue===props.value&&root.state.value.editMode==="editing"}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerCell(node,props.value,props.columnIndex)},"data-sectile-tree-grid-cell":props.value,"data-column-index":props.columnIndex,"data-scope":"tree-grid","data-part":"cell","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-editing":state.value.editing?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridDisclosure=defineComponent({name:"SectileTreeGridDisclosure",inheritAttrs:false,props:{for:{type:String,required:true},as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridDisclosure");const state=computed(()=>({...root.state.value,value:props.for,expanded:root.expandedRows.value.has(props.for)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,disabled:props.as==="button"?root.state.value.disabled:void 0,elementRef:node=>{if(node instanceof HTMLElement)root.registerDisclosure(node,props.for)},"data-sectile-tree-grid-disclosure":props.for,"data-scope":"tree-grid","data-part":"disclosure","data-state":state.value.expanded?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridEditor=defineComponent({name:"SectileTreeGridEditor",inheritAttrs:false,props:{for:{type:String,required:true},label:{type:String,default:void 0},...conditionalPresenceProps},setup(props,{attrs}){const root=useRoot("TreeGridEditor");const editing=computed(()=>root.state.value.highlightedValue===props.for&&root.state.value.editMode==="editing");const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(editing,forcePresent);return()=>{const inactivePresent=!editing.value&&presence.present.value;return h("input",mergeProps(attrs,{ref:node=>{const element=presence.register(node);if(element?.tagName==="INPUT")root.registerEditor(element,props.for,props.label)},hidden:presence.hidden.value,tabindex:inactivePresent?-1:void 0,onKeydown:root.handleEditorKeydown,onFocus:()=>root.setEditorFocused(true),onBlur:()=>root.setEditorFocused(false),onCompositionstart:()=>root.setEditorComposing(true),onCompositionend:()=>root.setEditorComposing(false),...inactivePresent?{inert:true,"aria-hidden":"true"}:{},disabled:root.state.value.disabled,readonly:root.state.value.readonly,"aria-label":props.label,"data-sectile-tree-grid-editor":props.for,"data-scope":"tree-grid","data-part":"editor","data-state":editing.value?"editing":"idle"}))}}});function numberData(value,fallback){const parsed=Number(value);return Number.isFinite(parsed)?parsed:fallback}function maxTreeGridColumnCount(rows){let maximum=0;for(const row of rows)maximum=Math.max(maximum,row.cells.length);return maximum}function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside TreeGridRoot.`);return root}function snapshotTreeGridConnectionOwner(props){return Object.freeze({rows:Object.freeze(props.rows.map(row=>Object.freeze({id:row.id,parentID:row.parentID,cells:Object.freeze([...row.cells])}))),disabled:props.disabled,readonly:props.readonly,eligible:props.policies?.eligible,boundary:props.policies?.boundary,maxScan:props.policies?.maxScan})}function sameTreeGridConnectionOwner(left,right){if(left.rows.length!==right.rows.length||left.disabled!==right.disabled||left.readonly!==right.readonly||left.eligible!==right.eligible||left.boundary!==right.boundary||left.maxScan!==right.maxScan)return false;for(let rowIndex=0;rowIndex<left.rows.length;rowIndex+=1){const leftRow=left.rows[rowIndex];const rightRow=right.rows[rowIndex];if(leftRow.id!==rightRow.id||leftRow.parentID!==rightRow.parentID||leftRow.cells.length!==rightRow.cells.length)return false;for(let column=0;column<leftRow.cells.length;column+=1){if(leftRow.cells[column]!==rightRow.cells[column])return false}}return true}export{TreeGridCell,TreeGridDisclosure,TreeGridEditor,TreeGridRoot,TreeGridRow};
|
|
2
2
|
//# sourceMappingURL=tree-grid.js.map
|
package/dist/tree-grid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tree-grid.ts"],"mappings":"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","names":["value"],"file":"tree-grid.js"}
|
|
1
|
+
{"version":3,"sources":["../src/tree-grid.ts"],"mappings":"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","names":["value"],"file":"tree-grid.js"}
|
package/dist/tree-view.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
2
|
import { type TreeNodeInput, type TreeViewSelectionMode } from '@sectile/dom/tree-view';
|
|
3
3
|
import { type PrimitiveAs } from './primitive.js';
|
|
4
|
-
import { type ConditionalPresenceProps } from './
|
|
4
|
+
import { type ConditionalPresenceProps } from './presence/conditional-presence.js';
|
|
5
5
|
export interface TreeViewRootProps {
|
|
6
6
|
readonly nodes: readonly TreeNodeInput<string>[];
|
|
7
7
|
readonly selectionMode?: TreeViewSelectionMode;
|
package/dist/tree-view.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createTreeView}from"@sectile/dom/tree-view";import{Primitive}from"./primitive.js";import{collectionBranchIDs,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./internal/conditional-presence.js";const key=Symbol("SectileTreeViewRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const TreeViewRoot=defineComponent({name:"SectileTreeViewRoot",inheritAttrs:false,props:{nodes:{type:Array,required:true},selectionMode:{type:String,default:"single"},modelValue:{type:Array,default:void 0},defaultValue:{type:Array,default:()=>[]},expandedValues:{type:Array,default:void 0},defaultExpandedValues:{type:Array,default:()=>[]},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:expandedValues":_value=>true,"update:highlightedValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localExpanded=shallowRef(props.expandedValues!==void 0?props.expandedValues:props.defaultExpandedValues);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const controlled={value:useControlledStateInvariant("TreeViewRoot","modelValue",()=>props.modelValue),expanded:useControlledStateInvariant("TreeViewRoot","expandedValues",()=>props.expandedValues),highlighted:useControlledStateInvariant("TreeViewRoot","highlightedValue",()=>props.highlightedValue)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,expandedValues:props.expandedValues!==void 0?props.expandedValues:localExpanded.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,disabled:props.disabled,readonly:props.readonly}));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;element.value.querySelectorAll("[data-sectile-tree-view-item]").forEach(node=>{const id=node.dataset["sectileTreeViewItem"];if(id!==void 0)connection.value?.setItemAttributes(node,{id,disabled:node.dataset["disabled"]!==void 0})});element.value.querySelectorAll("[data-sectile-tree-view-disclosure]").forEach(node=>{const id=node.dataset["sectileTreeViewDisclosure"];if(id!==void 0)connection.value?.setDisclosureAttributes(node,id)})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected;localExpanded.value=snapshot.expansion.ids;localHighlight.value=snapshot.cursor.current;refreshParts()};const connect=()=>{const nextOwner=snapshotTreeViewConnectionOwner(props);if(connection.value!==void 0&&connectionOwner!==void 0&&sameTreeViewConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===void 0)return;const items=nextOwner.nodes.map(node=>node.id);const branches=collectionBranchIDs(nextOwner.nodes);const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedExpanded=controlled.expanded?props.expandedValues:localExpanded.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(items,requestedValue,requestedHighlight,nextOwner.disabledItems,nextOwner.selectionMode,{preserveNullCurrent:true});const expanded=reconcileCollectionState(branches,requestedExpanded,null,[],"multiple",{preserveNullCurrent:true}).selected;localValue.value=reconciled.selected;localExpanded.value=expanded;localHighlight.value=reconciled.current;if(controlled.value&&!sameIDs(requestedValue,reconciled.selected))emit("update:modelValue",reconciled.selected);if(controlled.expanded&&!sameIDs(requestedExpanded,expanded))emit("update:expandedValues",expanded);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit("update:highlightedValue",reconciled.current);connection.value=createTreeView({root:element.value,nodes:nextOwner.nodes,selectionMode:nextOwner.selectionMode,...controlled.value?{value:reconciled.selected}:{defaultValue:reconciled.selected},...controlled.expanded?{expandedValues:expanded}:{defaultExpandedValues:expanded},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},disabledItems:nextOwner.disabledItems,disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...props.policies===void 0?{}:{policies:props.policies},onValueChange:({value})=>{localValue.value=value;emit("update:modelValue",value)},onExpandedValuesChange:({value})=>{localExpanded.value=value;emit("update:expandedValues",value)},onHighlightedValueChange:({value})=>{localHighlight.value=value;emit("update:highlightedValue",value)},onUpdate:refresh});connectionOwner=nextOwner;connection.value.setTreeAttributes(nextOwner.label);refreshParts();refresh()};const disabledItems=computed(()=>new Set(props.disabledItems));const selectedItems=computed(()=>new Set(state.value.value));const expandedItems=computed(()=>new Set(state.value.expandedValues));provide(key,{state,selectedItems,expandedItems,disabledItems,registerItem:(node,id,disabled)=>connection.value?.setItemAttributes(node,{id,disabled}),registerDisclosure:(node,id)=>connection.value?.setDisclosureAttributes(node,id)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.nodes,()=>props.selectionMode,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.expandedValues,()=>props.highlightedValue],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValues:props.expandedValues}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:void 0},"data-scope":"tree-view","data-part":"root"}),{default:()=>slots["default"]?.(state.value)})}});const TreeViewGroup=defineComponent({name:"SectileTreeViewGroup",inheritAttrs:false,props:{for:{type:String,required:true},...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewGroup");const expanded=computed(()=>root.expandedItems.value.has(props.for));const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(expanded,forcePresent);return()=>{const inactivePresent=!expanded.value&&presence.present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:presence.register,role:"group",hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},"data-scope":"tree-view","data-part":"group","data-state":expanded.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const TreeViewItem=defineComponent({name:"SectileTreeViewItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewItem");const state=computed(()=>({expandedValues:root.state.value.expandedValues,highlightedValue:root.state.value.highlightedValue,readonly:root.state.value.readonly,value:props.value,selectedValues:root.state.value.value,selected:root.selectedItems.value.has(props.value),expanded:root.expandedItems.value.has(props.value),highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,props.disabled)},"data-sectile-tree-view-item":props.value,"data-scope":"tree-view","data-part":"item","data-selected":state.value.selected?"":void 0,"data-expanded":state.value.expanded?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-disabled":state.value.disabled?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const TreeViewDisclosure=defineComponent({name:"SectileTreeViewDisclosure",inheritAttrs:false,props:{for:{type:String,required:true},as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewDisclosure");const state=computed(()=>({expandedValues:root.state.value.expandedValues,highlightedValue:root.state.value.highlightedValue,readonly:root.state.value.readonly,value:props.for,selectedValues:root.state.value.value,selected:root.selectedItems.value.has(props.for),expanded:root.expandedItems.value.has(props.for),highlighted:root.state.value.highlightedValue===props.for,disabled:root.state.value.disabled||root.disabledItems.value.has(props.for)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,disabled:props.as==="button"?state.value.disabled:void 0,elementRef:node=>{if(node instanceof HTMLElement)root.registerDisclosure(node,props.for)},"data-sectile-tree-view-disclosure":props.for,"data-scope":"tree-view","data-part":"disclosure","data-state":state.value.expanded?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside TreeViewRoot.`);return root}function snapshotTreeViewConnectionOwner(props){return Object.freeze({nodes:Object.freeze(props.nodes.map(node=>Object.freeze({id:node.id,parentID:node.parentID}))),selectionMode:props.selectionMode,disabledItems:Object.freeze([...props.disabledItems]),disabled:props.disabled,readonly:props.readonly,label:props.label,eligible:props.policies?.eligible})}function sameTreeViewConnectionOwner(left,right){if(left.nodes.length!==right.nodes.length||!sameIDs(left.disabledItems,right.disabledItems)||left.selectionMode!==right.selectionMode||left.disabled!==right.disabled||left.readonly!==right.readonly||left.label!==right.label||left.eligible!==right.eligible)return false;for(let index=0;index<left.nodes.length;index+=1){const leftNode=left.nodes[index];const rightNode=right.nodes[index];if(leftNode.id!==rightNode.id||leftNode.parentID!==rightNode.parentID){return false}}return true}export{TreeViewDisclosure,TreeViewGroup,TreeViewItem,TreeViewRoot};
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createTreeView}from"@sectile/dom/tree-view";import{Primitive}from"./primitive.js";import{collectionBranchIDs,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./presence/conditional-presence.js";const key=Symbol("SectileTreeViewRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const TreeViewRoot=defineComponent({name:"SectileTreeViewRoot",inheritAttrs:false,props:{nodes:{type:Array,required:true},selectionMode:{type:String,default:"single"},modelValue:{type:Array,default:void 0},defaultValue:{type:Array,default:()=>[]},expandedValues:{type:Array,default:void 0},defaultExpandedValues:{type:Array,default:()=>[]},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:expandedValues":_value=>true,"update:highlightedValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localExpanded=shallowRef(props.expandedValues!==void 0?props.expandedValues:props.defaultExpandedValues);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const controlled={value:useControlledStateInvariant("TreeViewRoot","modelValue",()=>props.modelValue),expanded:useControlledStateInvariant("TreeViewRoot","expandedValues",()=>props.expandedValues),highlighted:useControlledStateInvariant("TreeViewRoot","highlightedValue",()=>props.highlightedValue)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,expandedValues:props.expandedValues!==void 0?props.expandedValues:localExpanded.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,disabled:props.disabled,readonly:props.readonly}));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;element.value.querySelectorAll("[data-sectile-tree-view-item]").forEach(node=>{const id=node.dataset["sectileTreeViewItem"];if(id!==void 0)connection.value?.setItemAttributes(node,{id,disabled:node.dataset["disabled"]!==void 0})});element.value.querySelectorAll("[data-sectile-tree-view-disclosure]").forEach(node=>{const id=node.dataset["sectileTreeViewDisclosure"];if(id!==void 0)connection.value?.setDisclosureAttributes(node,id)})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected;localExpanded.value=snapshot.expansion.ids;localHighlight.value=snapshot.cursor.current;refreshParts()};const connect=()=>{const nextOwner=snapshotTreeViewConnectionOwner(props);if(connection.value!==void 0&&connectionOwner!==void 0&&sameTreeViewConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===void 0)return;const items=nextOwner.nodes.map(node=>node.id);const branches=collectionBranchIDs(nextOwner.nodes);const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedExpanded=controlled.expanded?props.expandedValues:localExpanded.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(items,requestedValue,requestedHighlight,nextOwner.disabledItems,nextOwner.selectionMode,{preserveNullCurrent:true});const expanded=reconcileCollectionState(branches,requestedExpanded,null,[],"multiple",{preserveNullCurrent:true}).selected;localValue.value=reconciled.selected;localExpanded.value=expanded;localHighlight.value=reconciled.current;if(controlled.value&&!sameIDs(requestedValue,reconciled.selected))emit("update:modelValue",reconciled.selected);if(controlled.expanded&&!sameIDs(requestedExpanded,expanded))emit("update:expandedValues",expanded);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit("update:highlightedValue",reconciled.current);connection.value=createTreeView({root:element.value,nodes:nextOwner.nodes,selectionMode:nextOwner.selectionMode,...controlled.value?{value:reconciled.selected}:{defaultValue:reconciled.selected},...controlled.expanded?{expandedValues:expanded}:{defaultExpandedValues:expanded},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},disabledItems:nextOwner.disabledItems,disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...props.policies===void 0?{}:{policies:props.policies},onValueChange:({value})=>{localValue.value=value;emit("update:modelValue",value)},onExpandedValuesChange:({value})=>{localExpanded.value=value;emit("update:expandedValues",value)},onHighlightedValueChange:({value})=>{localHighlight.value=value;emit("update:highlightedValue",value)},onUpdate:refresh});connectionOwner=nextOwner;connection.value.setTreeAttributes(nextOwner.label);refreshParts();refresh()};const disabledItems=computed(()=>new Set(props.disabledItems));const selectedItems=computed(()=>new Set(state.value.value));const expandedItems=computed(()=>new Set(state.value.expandedValues));provide(key,{state,selectedItems,expandedItems,disabledItems,registerItem:(node,id,disabled)=>connection.value?.setItemAttributes(node,{id,disabled}),registerDisclosure:(node,id)=>connection.value?.setDisclosureAttributes(node,id)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.nodes,()=>props.selectionMode,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.expandedValues,()=>props.highlightedValue],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValues:props.expandedValues}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:void 0},"data-scope":"tree-view","data-part":"root"}),{default:()=>slots["default"]?.(state.value)})}});const TreeViewGroup=defineComponent({name:"SectileTreeViewGroup",inheritAttrs:false,props:{for:{type:String,required:true},...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewGroup");const expanded=computed(()=>root.expandedItems.value.has(props.for));const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(expanded,forcePresent);return()=>{const inactivePresent=!expanded.value&&presence.present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:presence.register,role:"group",hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},"data-scope":"tree-view","data-part":"group","data-state":expanded.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const TreeViewItem=defineComponent({name:"SectileTreeViewItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewItem");const state=computed(()=>({expandedValues:root.state.value.expandedValues,highlightedValue:root.state.value.highlightedValue,readonly:root.state.value.readonly,value:props.value,selectedValues:root.state.value.value,selected:root.selectedItems.value.has(props.value),expanded:root.expandedItems.value.has(props.value),highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,props.disabled)},"data-sectile-tree-view-item":props.value,"data-scope":"tree-view","data-part":"item","data-selected":state.value.selected?"":void 0,"data-expanded":state.value.expanded?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-disabled":state.value.disabled?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const TreeViewDisclosure=defineComponent({name:"SectileTreeViewDisclosure",inheritAttrs:false,props:{for:{type:String,required:true},as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewDisclosure");const state=computed(()=>({expandedValues:root.state.value.expandedValues,highlightedValue:root.state.value.highlightedValue,readonly:root.state.value.readonly,value:props.for,selectedValues:root.state.value.value,selected:root.selectedItems.value.has(props.for),expanded:root.expandedItems.value.has(props.for),highlighted:root.state.value.highlightedValue===props.for,disabled:root.state.value.disabled||root.disabledItems.value.has(props.for)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,disabled:props.as==="button"?state.value.disabled:void 0,elementRef:node=>{if(node instanceof HTMLElement)root.registerDisclosure(node,props.for)},"data-sectile-tree-view-disclosure":props.for,"data-scope":"tree-view","data-part":"disclosure","data-state":state.value.expanded?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside TreeViewRoot.`);return root}function snapshotTreeViewConnectionOwner(props){return Object.freeze({nodes:Object.freeze(props.nodes.map(node=>Object.freeze({id:node.id,parentID:node.parentID}))),selectionMode:props.selectionMode,disabledItems:Object.freeze([...props.disabledItems]),disabled:props.disabled,readonly:props.readonly,label:props.label,eligible:props.policies?.eligible})}function sameTreeViewConnectionOwner(left,right){if(left.nodes.length!==right.nodes.length||!sameIDs(left.disabledItems,right.disabledItems)||left.selectionMode!==right.selectionMode||left.disabled!==right.disabled||left.readonly!==right.readonly||left.label!==right.label||left.eligible!==right.eligible)return false;for(let index=0;index<left.nodes.length;index+=1){const leftNode=left.nodes[index];const rightNode=right.nodes[index];if(leftNode.id!==rightNode.id||leftNode.parentID!==rightNode.parentID){return false}}return true}export{TreeViewDisclosure,TreeViewGroup,TreeViewItem,TreeViewRoot};
|
|
2
2
|
//# sourceMappingURL=tree-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-collection.js","names":["defineComponent","h","onBeforeUnmount","shallowReactive","shallowRef","constrainVirtualCollectionDomain","createVirtualCollection","replaceVirtualCollection","virtualItemStyle","useVirtualizerSurfaceRegistration","virtualizerNotConnected","prepareVirtualCollection","items","getID","maxItems","maxIDCodeUnits","updatePreparedVirtualCollection","previous","constrainPreparedVirtualCollection","prepared","VirtualCollectionProjectionRuntime","name","inheritAttrs","props","scope","type","String","required","placements","Array","Object","itemAs","itemAttributes","Function","default","undefined","size","slots","setup","surface","registrations","Map","elements","refs","itemRef","id","existing","get","callback","value","element","HTMLElement","delete","set","registerItem","unregister","values","clear","sizing","itemSizing","children","placement","index","length","domain","at","attributes","rendered","push","key","ref","style","visible","normalizeChildren","VirtualCollectionBootstrapProjectionRuntime","count","Number","width","bootstrapRef","Math","min","freeze","rect","x","y","height","renderHighLevelItems","render","empty","child","renderCollectionBootstrapItems","createVirtualCollectionExpose","root","initialState","phase","emptyScrollport","emptySurface","scrollport","state","plan","scrollToID","alignment","scrollTo","refresh","flush","nearlyEqual","left","right","abs","isArray"],"sources":["../../src/virtual/virtual-collection.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onScopeDispose,provide,shallowReactive,shallowRef,toValue,watch}from'vue';import{createAxisMeasurementResolver,createVirtualizer,virtualItemStyle,virtualSurfaceStyle}from'@sectile/dom/virtual';import{Primitive}from'../primitive.js';const virtualizerContextKey=Symbol('SectileVirtualizerRoot');const virtualizerSurfaceContextKey=Symbol('SectileVirtualizerSurface');export function useVirtualizer(options){const scrollport=options.scrollport??shallowRef(null);const surface=options.surface??shallowRef(null);const plan=shallowRef(null);const connection=shallowRef();const frames=new Map;const frameRegistrations=new Map;const items=new Map;const itemRegistrations=new Map;let connectedScrollport;let connectedSurface;let disposed=false;const report=error=>{options.onError?.(error)};const updateInitialPlan=()=>{if(options.initialViewport===undefined){plan.value=null;return}const overscan=toValue(options.overscan);const result=options.strategy.tryQuery(options.state.value,{viewport:options.initialViewport,...overscan===undefined?{}:{overscan}});if(!result.ok){report(result.error);return}plan.value=result.value;options.onPlanChange?.(result.value)};updateInitialPlan();const disconnectConnection=()=>{frameRegistrations.clear();itemRegistrations.clear();const current=connection.value;connection.value=undefined;connectedScrollport=undefined;connectedSurface=undefined;current?.disconnect()};const connect=()=>{if(disposed)return;disconnectConnection();const currentScrollport=scrollport.value;const currentSurface=surface.value;if(currentScrollport===null||currentScrollport===undefined||currentSurface===null||currentSurface===undefined){updateInitialPlan();return}const overscan=toValue(options.overscan);const viewportInsets=toValue(options.viewportInsets);const next=createVirtualizer({scrollport:currentScrollport,surface:currentSurface,state:options.state.value,strategy:options.strategy,...overscan===undefined?{}:{overscan},...viewportInsets===undefined?{}:{viewportInsets},...options.measure===undefined?{}:{measure:options.measure},...options.readViewport===undefined?{}:{readViewport:options.readViewport},...options.writeScroll===undefined?{}:{writeScroll:options.writeScroll},...options.environment===undefined?{}:{environment:options.environment},onPlanChange:value=>{plan.value=value;options.onPlanChange?.(value)},onStateChange:value=>{options.state.value=value;options.onStateChange?.(value)},onError:report});connectedScrollport=currentScrollport;connectedSurface=currentSurface;connection.value=next;for(const frame of frames.keys()){frameRegistrations.set(frame,next.registerFrame(frame))}for(const[item,desired]of items){itemRegistrations.set(item,next.registerItem(item,desired.id))}};const retireObsoleteConnection=()=>{if(connection.value===undefined)return;if(scrollport.value===connectedScrollport&&surface.value===connectedSurface)return;disconnectConnection()};watch([scrollport,surface],retireObsoleteConnection,{flush:'sync'});watch([scrollport,surface],connect,{flush:'post',immediate:true});watch(options.state,value=>{if(connection.value===undefined)updateInitialPlan();else connection.value.setState(value)},{flush:'sync'});watch(()=>toValue(options.overscan),value=>{if(connection.value===undefined)updateInitialPlan();else connection.value.setOverscan(value)},{deep:true,flush:'sync'});watch(()=>toValue(options.viewportInsets),value=>{connection.value?.setViewportInsets(value)},{deep:true,flush:'sync'});onScopeDispose(()=>{disposed=true;disconnectConnection();frames.clear();items.clear()});const currentConnection=()=>connection.value;return Object.freeze({scrollport,surface,plan,connection,registerFrame:element=>{const token=Object.freeze({});frameRegistrations.get(element)?.();frameRegistrations.delete(element);frames.set(element,token);if(connection.value!==undefined){frameRegistrations.set(element,connection.value.registerFrame(element))}return()=>{if(frames.get(element)!==token)return;frameRegistrations.get(element)?.();frameRegistrations.delete(element);frames.delete(element)}},registerItem:(element,id)=>{const token=Object.freeze({});itemRegistrations.get(element)?.();itemRegistrations.delete(element);items.set(element,Object.freeze({id,token}));if(connection.value!==undefined){itemRegistrations.set(element,connection.value.registerItem(element,id))}return()=>{if(items.get(element)?.token!==token)return;itemRegistrations.get(element)?.();itemRegistrations.delete(element);items.delete(element)}},measure:measurements=>{const active=currentConnection();return active===undefined?virtualizerNotConnected():active.measure(measurements)},mutate:mutation=>{const active=currentConnection();return active===undefined?virtualizerNotConnected():active.mutate(mutation)},scrollTo:(id,alignment)=>{const active=currentConnection();return active===undefined?virtualizerNotConnected():active.scrollTo(id,alignment)},refresh:()=>{connection.value?.refresh()},flush:()=>{const active=currentConnection();return active===undefined?virtualizerNotConnected():active.flush()}})}export const VirtualizerRoot=/* @__PURE__ */defineComponent({name:'SectileVirtualizerRoot',inheritAttrs:false,props:{defaultState:{type:Object,required:true},strategy:{type:Object,required:true},scrollport:{type:[String,Object],default:'root'},overscan:{type:[Number,Object],default:undefined},viewportInsets:{type:[Number,Object],default:undefined},initialViewport:{type:Object,default:undefined},measure:{type:Function,default:undefined},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const state=shallowRef(props.defaultState);let rootElement=null;const virtualizer=useVirtualizer({state,strategy:props.strategy,overscan:()=>props.overscan,viewportInsets:()=>props.viewportInsets,...props.initialViewport===undefined?{}:{initialViewport:props.initialViewport},...props.measure===undefined?{}:{measure:props.measure},onStateChange:value=>{emit('stateChange',value)},onPlanChange:value=>{emit('planChange',value)},onError:error=>{emit('error',error)}});const resolveScrollport=target=>{virtualizer.scrollport.value=target==='root'?rootElement:target==='document'?rootElement?.ownerDocument??null:target};watch(()=>props.scrollport,resolveScrollport,{flush:'sync'});watch(()=>props.defaultState,value=>{if(!Object.is(state.value,value))state.value=value},{flush:'sync'});let constructionWarningShown=false;watch(()=>[props.strategy,props.measure,props.initialViewport],(value,previous)=>{if(constructionWarningShown||value.every((item,index)=>Object.is(item,previous[index])))return;constructionWarningShown=true;console.warn('[Sectile] VirtualizerRoot strategy, measure, and initialViewport are construction-time options. Remount the root to change them.')},{flush:'sync'});const slotProps=computed(()=>Object.freeze({state:state.value,plan:virtualizer.plan.value,placements:virtualizer.plan.value?.placements??Object.freeze([]),scrollTo:virtualizer.scrollTo,measure:virtualizer.measure,mutate:virtualizer.mutate,refresh:virtualizer.refresh,flush:virtualizer.flush}));provide(virtualizerContextKey,{plan:computed(()=>virtualizer.plan.value),surface:virtualizer.surface,registerFrame:virtualizer.registerFrame,registerItem:virtualizer.registerItem});expose(shallowReactive({get scrollport(){return virtualizer.scrollport},get surface(){return virtualizer.surface},get state(){return slotProps.value.state},get plan(){return slotProps.value.plan},get placements(){return slotProps.value.placements},scrollTo:virtualizer.scrollTo,measure:virtualizer.measure,mutate:virtualizer.mutate,refresh:virtualizer.refresh,flush:virtualizer.flush}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{rootElement=asHTMLElement(element);resolveScrollport(props.scrollport)},'data-scope':'virtualizer','data-part':'root'}),{default:()=>slots['default']?.(slotProps.value)})}});export const VirtualizerHeader=/* @__PURE__ */defineComponent({name:'SectileVirtualizerHeader',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useVirtualizerRoot('VirtualizerHeader');let element=null;let unregister;const setElement=value=>{const next=asHTMLElement(value);if(element===next)return;unregister?.();unregister=undefined;element=next;if(next!==null)unregister=root.registerFrame(next)};onBeforeUnmount(()=>{unregister?.();unregister=undefined;element=null});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setElement,'data-scope':'virtualizer','data-part':'header'}),{default:()=>slots['default']?.()})}});export const VirtualizerSurface=/* @__PURE__ */defineComponent({name:'SectileVirtualizerSurface',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useVirtualizerRoot('VirtualizerSurface');provide(virtualizerSurfaceContextKey,{registerItem:root.registerItem});let element=null;const style=computed(()=>root.plan.value===null?Object.freeze({position:'relative'}):virtualSurfaceStyle(root.plan.value));const setElement=value=>{const next=asHTMLElement(value);if(element===next)return;if(element!==null&&root.surface.value===element){root.surface.value=null}element=next;if(next!==null)root.surface.value=next};onBeforeUnmount(()=>{if(element!==null&&root.surface.value===element){root.surface.value=null}element=null});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setElement,style:style.value,'data-scope':'virtualizer','data-part':'surface'}),{default:()=>slots['default']?.(root.plan.value)})}});export const VirtualizerItem=/* @__PURE__ */defineComponent({name:'SectileVirtualizerItem',inheritAttrs:false,props:{placement:{type:Object,required:true},size:{type:String,default:'none'},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const surface=useVirtualizerSurface('VirtualizerItem');let element=null;let unregister;const sizing=computed(()=>Object.freeze({width:props.size==='width'||props.size==='both',height:props.size==='height'||props.size==='both'}));const setElement=value=>{const next=asHTMLElement(value);if(element===next)return;unregister?.();unregister=undefined;element=next;if(next!==null){unregister=surface.registerItem(next,props.placement.id)}};onBeforeUnmount(()=>{unregister?.();unregister=undefined;element=null});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setElement,style:virtualItemStyle(props.placement,sizing.value),'data-scope':'virtualizer','data-part':'item','data-index':props.placement.index,'data-visible':props.placement.visible?'':undefined}),{default:()=>slots['default']?.(props.placement)})}});export const VirtualizerFooter=/* @__PURE__ */defineComponent({name:'SectileVirtualizerFooter',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useVirtualizerRoot('VirtualizerFooter');let element=null;let unregister;const setElement=value=>{const next=asHTMLElement(value);if(element===next)return;unregister?.();unregister=undefined;element=next;if(next!==null)unregister=root.registerFrame(next)};onBeforeUnmount(()=>{unregister?.();unregister=undefined;element=null});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setElement,'data-scope':'virtualizer','data-part':'footer'}),{default:()=>slots['default']?.()})}});function useVirtualizerRoot(part){const root=inject(virtualizerContextKey);if(root===undefined){throw new TypeError(`${part} must be used inside VirtualizerRoot.`)}return root}function useVirtualizerSurface(part){const surface=inject(virtualizerSurfaceContextKey);if(surface===undefined){throw new TypeError(`${part} must be used inside VirtualizerSurface.`)}return surface}export function useVirtualizerSurfaceRegistration(part){return useVirtualizerSurface(part)}function asHTMLElement(value){return typeof value==='object'&&value!==null&&'offsetHeight'in value?value:null}export function virtualizerNotConnected(){return{ok:false,error:{class:'transition-rejection',code:'virtualizer-not-connected',message:'not connected'}}}export{createAxisMeasurementResolver,virtualItemStyle,virtualSurfaceStyle};
|
|
2
|
+
//# sourceMappingURL=virtual-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-core.js","names":["computed","defineComponent","h","inject","mergeProps","onBeforeUnmount","onScopeDispose","provide","shallowReactive","shallowRef","toValue","watch","createAxisMeasurementResolver","createVirtualizer","virtualItemStyle","virtualSurfaceStyle","Primitive","virtualizerContextKey","Symbol","virtualizerSurfaceContextKey","useVirtualizer","options","scrollport","surface","plan","connection","frames","Map","frameRegistrations","items","itemRegistrations","connectedScrollport","connectedSurface","disposed","report","error","onError","updateInitialPlan","initialViewport","undefined","value","overscan","result","strategy","tryQuery","state","viewport","ok","onPlanChange","disconnectConnection","clear","current","disconnect","connect","currentScrollport","currentSurface","viewportInsets","next","measure","readViewport","writeScroll","environment","onStateChange","frame","keys","set","registerFrame","item","desired","registerItem","id","retireObsoleteConnection","flush","immediate","setState","setOverscan","deep","setViewportInsets","currentConnection","Object","freeze","element","token","get","delete","measurements","active","virtualizerNotConnected","mutate","mutation","scrollTo","alignment","refresh","VirtualizerRoot","name","inheritAttrs","props","defaultState","type","required","String","default","Number","Function","as","asChild","Boolean","emits","stateChange","_state","planChange","_plan","_error","slots","setup","attrs","emit","expose","rootElement","virtualizer","resolveScrollport","target","ownerDocument","is","constructionWarningShown","previous","every","index","console","warn","slotProps","placements","elementRef","asHTMLElement","VirtualizerHeader","root","useVirtualizerRoot","unregister","setElement","VirtualizerSurface","style","position","VirtualizerItem","placement","size","useVirtualizerSurface","sizing","width","height","visible","VirtualizerFooter","part","TypeError","useVirtualizerSurfaceRegistration","class","code","message"],"sources":["../../src/virtual/virtual-core.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@ import type { StableID } from '@sectile/core';
|
|
|
3
3
|
import { type VirtualLanePolicy, type VirtualSizePolicy } from '@sectile/virtual/collection';
|
|
4
4
|
import { type TrackGridLayoutState } from '@sectile/virtual/track-grid-layout';
|
|
5
5
|
import { type VirtualInsets, type VirtualLayoutPlan, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
|
|
6
|
-
import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './
|
|
6
|
+
import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './virtual-collection.js';
|
|
7
7
|
export interface VirtualGridProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionBaseProps<Value, ID> {
|
|
8
8
|
readonly sizePolicy: VirtualSizePolicy<Value>;
|
|
9
9
|
readonly lanePolicy: VirtualLanePolicy;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createExactVirtualExtent,createVirtualExtent,resolveVirtualLaneGeometry,virtualSizePolicyRequiresMeasurement}from'@sectile/virtual/collection';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createDenseTrackGridLayout,trackGridLayoutStrategy}from'@sectile/virtual/track-grid-layout';import{}from'@sectile/dom/virtual';import{VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./virtual-core.js';import{createVirtualCollectionExpose,nearlyEqual,prepareVirtualCollection,renderCollectionBootstrapItems,renderHighLevelItems,updatePreparedVirtualCollection}from'./virtual-collection.js';const VirtualGridRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualGrid',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},sizePolicy:{type:Object,required:true},lanePolicy:{type:Object,required:true},rowGap:{type:Number,default:0},overscan:{type:[Number,Object],default:240},viewportInsets:{type:[Number,Object],default:undefined},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,props.maxItems));const initialGeometry=resolveVirtualLaneGeometry(initialViewport?.width??0,props.lanePolicy);const automaticEstimate=shallowRef();const isBootstrapping=()=>virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined&&prepared.value.domain.size>0;const initialState=virtualSizePolicyRequiresMeasurement(props.sizePolicy)?createVirtualGridState(prepareVirtualCollection([],props.getID,props.maxItems),[],props,initialGeometry,0):createVirtualGridState(prepared.value,props.items,props,initialGeometry);const activeState=shallowRef(initialState);const root=shallowRef();const viewportWidth=shallowRef(initialViewport?.width??0);const measuredHeights=new Map;const bootstrapElements=new Map;let bootstrapScheduled=false;let disposed=false;const bootstrapItemRef=(index,value)=>{const element=value instanceof HTMLElement?value:null;if(element===null)bootstrapElements.delete(index);else{bootstrapElements.set(index,element);scheduleBootstrap()}};const completeBootstrap=()=>{if(!isBootstrapping())return;const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);const count=Math.min(geometry.count,prepared.value.domain.size);let maximum=0;for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const height=element.getBoundingClientRect().height;if(!Number.isFinite(height)||height<=0)return;maximum=Math.max(maximum,height)}automaticEstimate.value=maximum;bootstrapElements.clear();activeState.value=createVirtualGridState(prepared.value,props.items,props,geometry,maximum)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||prepared.value.domain.size===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear()});const measure=props.sizePolicy.kind==='fixed'?undefined:({element,placement,state})=>{const bounds=element.getBoundingClientRect();if(bounds.height<=0)return null;measuredHeights.set(placement.id,bounds.height);const grid=state;const region=grid.regions.at(placement.index);if(region===undefined)return null;const height=gridMeasuredRowHeight(region.row,grid.columns.size,prepared.value,props.items,props.sizePolicy,measuredHeights,automaticEstimate.value);const current=grid.rows.extentAt(region.row);if(current?.kind==='exact'&&nearlyEqual(current.value,height)){return null}return Object.freeze({axis:'row',index:region.row,extent:createExactVirtualExtent(height)})};const sync=()=>{if(virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined){prepared.value=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);scheduleBootstrap();return}const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);if(next.valueChange!==null&&props.sizePolicy.kind!=='fixed'){const end=next.valueChange.index+next.valueChange.count;for(let index=next.valueChange.index;index<end;index+=1){const id=next.domain.at(index);if(id!==null)measuredHeights.delete(id)}}if(measuredHeights.size>2_048){for(const id of measuredHeights.keys()){if(!next.domain.contains(id))measuredHeights.delete(id)}}if(syncVirtualGrid(exposed,prepared.value,next,props.items,props,geometry,measuredHeights,automaticEstimate.value)){prepared.value=next}};watch(()=>[props.items,props.getID,props.sizePolicy,props.lanePolicy,props.rowGap,viewportWidth.value],sync,{flush:'post'});expose(createVirtualCollectionExpose(root,initialState,()=>prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready'));return()=>h(VirtualizerRoot,{...attrs,ref:root,defaultState:activeState.value,strategy:trackGridLayoutStrategy,overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-grid','data-phase':prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>{viewportWidth.value=plan.viewport.width;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>[slots['header']===undefined?null:h(VirtualizerHeader,{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{as:props.contentAs},{default:()=>isBootstrapping()?renderCollectionBootstrapItems('virtual-grid',prepared.value,props.items,Math.min(resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).count,prepared.value.domain.size),resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).extent,props.itemAs,props.itemAttributes,(value,id,index,placement)=>slots['item']?.({value,id,index,placement,row:0,column:index}),bootstrapItemRef):renderHighLevelItems('virtual-grid',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,props.sizePolicy.kind==='fixed'?'both':'width',(value,id,index,placement)=>{const grid=root.value?.state;const region=grid?.regions.at(placement.index);return slots['item']?.({value,id,index,placement,row:region?.row??0,column:region?.column??0})},slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,{},{default:()=>slots['footer']?.()})]})}});export const VirtualGrid=VirtualGridRuntime;function createVirtualGridState(prepared,items,props,geometry,automaticEstimate){const rowCount=Math.ceil(prepared.domain.size/geometry.count);return createDenseTrackGridLayout(createGridRowExtentIndex(rowCount,geometry.count,items,props,automaticEstimate),createUniformExtentIndex(geometry.count,createExactVirtualExtent(geometry.extent),{maxItems:props.maxItems}),prepared.domain.ids,{rowGap:props.rowGap,columnGap:geometry.gap,maxRegions:props.maxItems})}function createGridRowExtentIndex(rowCount,columnCount,items,props,automaticEstimate){const shared=props.sizePolicy.kind==='fixed'||props.sizePolicy.kind==='measured'||props.sizePolicy.kind==='estimated'&&typeof props.sizePolicy.estimate==='number'?createVirtualExtent(props.sizePolicy,items[0],0,automaticEstimate):null;return shared===null?createExtentIndex(createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate),{maxItems:props.maxItems}):createUniformExtentIndex(rowCount,shared,{maxItems:props.maxItems})}function createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate,startRow=0){return Object.freeze(Array.from({length:rowCount},(_unused,localRow)=>{const row=startRow+localRow;if(props.sizePolicy.kind==='fixed'){return createExactVirtualExtent(props.sizePolicy.extent)}const start=row*columnCount;const end=Math.min(items.length,start+columnCount);let maximum=0;for(let index=start;index<end;index+=1){maximum=Math.max(maximum,extentValue(createVirtualExtent(props.sizePolicy,items[index],index,automaticEstimate)))}return Object.freeze({kind:'unknown',fallback:maximum})}))}function gridMeasuredRowHeight(row,columnCount,prepared,items,sizePolicy,measured,automaticEstimate){const start=row*columnCount;const end=Math.min(prepared.domain.size,start+columnCount);let maximum=0;for(let index=start;index<end;index+=1){const id=prepared.domain.at(index);const fallback=extentValue(createVirtualExtent(sizePolicy,items[index],index,automaticEstimate));maximum=Math.max(maximum,measured.get(id)??fallback)}return maximum}function extentValue(extent){return extent.kind==='unknown'?extent.fallback:extent.value}function createResolvedGridRowExtents(rowCount,columnCount,prepared,items,props,measured,automaticEstimate,startRow=0){const extents=createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate,startRow);if(props.sizePolicy.kind==='fixed')return extents;return Object.freeze(extents.map((extent,localRow)=>{const row=startRow+localRow;const measuredHeight=gridMeasuredRowHeight(row,columnCount,prepared,items,props.sizePolicy,measured,automaticEstimate);return measuredHeight>extentValue(extent)?createExactVirtualExtent(measuredHeight):extent}))}function syncVirtualGrid(exposed,_previous,prepared,items,props,geometry,measured,automaticEstimate){const state=exposed.state;const rowCount=Math.ceil(prepared.domain.size/geometry.count);const currentColumn=state.columns.extentAt(0);const geometryUnchanged=state.columns.size===geometry.count&&state.rowGap===props.rowGap&&state.columnGap===geometry.gap&¤tColumn?.kind==='exact'&&nearlyEqual(currentColumn.value,geometry.extent);if(geometryUnchanged&&prepared.change===null&&prepared.valueChange===null){return state.regions.size===prepared.domain.size&&state.rows.size===rowCount}if(geometryUnchanged&&prepared.change===null&&prepared.valueChange!==null){if(props.sizePolicy.kind==='fixed')return true;const startRow=Math.floor(prepared.valueChange.index/geometry.count);const endRow=Math.min(rowCount,Math.ceil((prepared.valueChange.index+prepared.valueChange.count)/geometry.count));if(endRow<=startRow)return true;const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',rowPatch:Object.freeze({index:startRow,deleteCount:endRow-startRow,inserted:createResolvedGridRowExtents(endRow-startRow,geometry.count,prepared,items,props,measured,automaticEstimate,startRow)})}));return result.ok}if(geometryUnchanged&&prepared.change!==null){const rowPatch=props.sizePolicy.kind==='fixed'?rowCount===state.rows.size?undefined:rowCount<state.rows.size?Object.freeze({index:rowCount,deleteCount:state.rows.size-rowCount,inserted:Object.freeze([])}):Object.freeze({index:state.rows.size,deleteCount:0,inserted:createGridRowExtents(rowCount-state.rows.size,geometry.count,items,props,automaticEstimate,state.rows.size)}):(()=>{const startRow=Math.floor(prepared.change.index/geometry.count);return Object.freeze({index:startRow,deleteCount:Math.max(0,state.rows.size-startRow),inserted:createResolvedGridRowExtents(Math.max(0,rowCount-startRow),geometry.count,prepared,items,props,measured,automaticEstimate,startRow)})})();const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',...rowPatch===undefined?{}:{rowPatch},regionPatch:Object.freeze({type:'splice',index:prepared.change.index,deleteCount:prepared.change.deleteCount,inserted:prepared.change.inserted})}));return result.ok}const rowExtents=createResolvedGridRowExtents(rowCount,geometry.count,prepared,items,props,measured,automaticEstimate);const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',rowPatch:Object.freeze({index:0,deleteCount:state.rows.size,inserted:rowExtents}),columnPatch:Object.freeze({index:0,deleteCount:state.columns.size,inserted:Object.freeze(Array.from({length:geometry.count},()=>createExactVirtualExtent(geometry.extent)))}),...prepared.change===null?{}:{regionPatch:Object.freeze({type:'splice',index:prepared.change.index,deleteCount:prepared.change.deleteCount,inserted:prepared.change.inserted})}}));return result.ok}
|
|
2
|
+
//# sourceMappingURL=virtual-grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-grid.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createExactVirtualExtent","createVirtualExtent","resolveVirtualLaneGeometry","virtualSizePolicyRequiresMeasurement","createExtentIndex","createUniformExtentIndex","createDenseTrackGridLayout","trackGridLayoutStrategy","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","createVirtualCollectionExpose","nearlyEqual","prepareVirtualCollection","renderCollectionBootstrapItems","renderHighLevelItems","updatePreparedVirtualCollection","VirtualGridRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","sizePolicy","Object","lanePolicy","rowGap","Number","default","overscan","viewportInsets","undefined","maxItems","initialViewport","as","String","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","initialGeometry","width","automaticEstimate","isBootstrapping","value","domain","size","initialState","createVirtualGridState","activeState","root","viewportWidth","measuredHeights","Map","bootstrapElements","bootstrapScheduled","disposed","bootstrapItemRef","index","element","HTMLElement","delete","set","scheduleBootstrap","completeBootstrap","geometry","count","Math","min","maximum","get","height","getBoundingClientRect","isFinite","max","clear","measure","kind","placement","state","bounds","id","grid","region","regions","at","gridMeasuredRowHeight","row","columns","current","rows","extentAt","axis","extent","sync","exposed","next","valueChange","end","keys","contains","syncVirtualGrid","flush","ref","defaultState","strategy","onStateChange","onPlanChange","plan","viewport","onError","placements","column","VirtualGrid","rowCount","ceil","createGridRowExtentIndex","ids","columnGap","gap","maxRegions","columnCount","shared","estimate","createGridRowExtents","startRow","from","length","_unused","localRow","start","extentValue","fallback","measured","createResolvedGridRowExtents","extents","map","measuredHeight","_previous","currentColumn","geometryUnchanged","change","floor","endRow","result","mutate","rowPatch","deleteCount","inserted","ok","regionPatch","rowExtents","columnPatch"],"sources":["../../src/virtual/virtual-grid.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-list.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createSequence","createExactVirtualExtent","createVirtualExtent","reconcileVirtualCollectionExtents","reconcileVirtualCollectionValueExtents","virtualSizePolicyRequiresMeasurement","createExtentIndex","createUniformExtentIndex","createLinearLayout","linearLayoutStrategyFor","setLinearCrossExtent","tryApplyLinearMeasurements","tryApplyLinearPatch","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","constrainPreparedVirtualCollection","createVirtualCollectionExpose","prepareVirtualCollection","renderHighLevelItems","updatePreparedVirtualCollection","VirtualListRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","sizePolicy","Object","axis","String","default","gap","Number","overscan","viewportInsets","undefined","maxItems","initialViewport","as","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","automaticEstimate","bootstrapCount","value","domain","size","bootstrapElements","Map","bootstrapRefs","bootstrapScheduled","disposed","initialCrossExtent","crossExtentForViewport","initialState","createEmptyVirtualListState","crossExtent","createVirtualListState","activeState","root","measure","kind","createVirtualListMeasurementResolver","isBootstrapping","phase","currentState","state","bootstrapItemRef","index","existing","get","callback","element","HTMLElement","delete","set","scheduleBootstrap","completeBootstrap","count","Math","min","extents","bounds","getBoundingClientRect","extent","height","width","isFinite","push","total","reduce","sum","max","length","viewport","plan","viewportExtent","target","bootstrapTrailingOverscanExtent","average","ceil","clear","next","nextState","exposed","patch","result","mutate","ok","valueUpdates","generation","measurements","flush","syncCrossExtent","is","constructionWarningShown","x","y","sameVirtualSizePolicy","sameVirtualRect","console","warn","ref","defaultState","strategy","style","overflow","onStateChange","onPlanChange","onError","placements","display","renderVirtualListBootstrapItems","linearItemSize","id","placement","VirtualList","measureVirtualListElement","indexOf","current","extentAt","abs","createVirtualListExtentIndex","maxIDCodeUnits","bottom","right","render","itemRef","from","_unused","at","attributes","rect","visible","rendered","children","isArray","key","marginTop","marginLeft","shared","estimate","left"],"sources":["../../src/virtual/virtual-list.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@ import type { StableID } from '@sectile/core';
|
|
|
3
3
|
import { type VirtualLanePolicy, type VirtualSizePolicy } from '@sectile/virtual/collection';
|
|
4
4
|
import { type MasonryLayoutState, type MasonryPlacement, type MasonryPlacementPolicy } from '@sectile/virtual/masonry-layout';
|
|
5
5
|
import { type VirtualInsets, type VirtualLayoutPlan, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
|
|
6
|
-
import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './
|
|
6
|
+
import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './virtual-collection.js';
|
|
7
7
|
export interface VirtualMasonryProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionBaseProps<Value, ID> {
|
|
8
8
|
readonly sizePolicy: VirtualSizePolicy<Value>;
|
|
9
9
|
readonly lanePolicy: VirtualLanePolicy;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createExactVirtualExtent,createVirtualExtent,reconcileVirtualCollectionExtents,reconcileVirtualCollectionValueExtents,resolveVirtualLaneGeometry,virtualSizePolicyRequiresMeasurement}from'@sectile/virtual/collection';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createMasonryLayout,masonryLayoutStrategy}from'@sectile/virtual/masonry-layout';import{createAxisMeasurementResolver}from'@sectile/dom/virtual';import{VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./virtual-core.js';import{constrainPreparedVirtualCollection,createVirtualCollectionExpose,nearlyEqual,prepareVirtualCollection,renderCollectionBootstrapItems,renderHighLevelItems,updatePreparedVirtualCollection}from'./virtual-collection.js';const VirtualMasonryRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualMasonry',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},sizePolicy:{type:Object,required:true},lanePolicy:{type:Object,required:true},itemGap:{type:Number,default:0},placementPolicy:{type:String,default:'shortest'},overscan:{type:[Number,Object],default:240},viewportInsets:{type:[Number,Object],default:undefined},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,props.maxItems));const initialGeometry=resolveVirtualLaneGeometry(initialViewport?.width??0,props.lanePolicy);const automaticEstimate=shallowRef();const initialState=virtualSizePolicyRequiresMeasurement(props.sizePolicy)?createVirtualMasonryState(prepareVirtualCollection([],props.getID,props.maxItems),[],props,initialGeometry,0):createVirtualMasonryState(prepared.value,props.items,props,initialGeometry);const activeState=shallowRef(initialState);const root=shallowRef();const viewportWidth=shallowRef(initialViewport?.width??0);const bootstrapElements=new Map;let bootstrapScheduled=false;let disposed=false;const isBootstrapping=()=>virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined&&prepared.value.domain.size>0;const bootstrapItemRef=(index,value)=>{const element=value instanceof HTMLElement?value:null;if(element===null)bootstrapElements.delete(index);else{bootstrapElements.set(index,element);scheduleBootstrap()}};const completeBootstrap=()=>{if(!isBootstrapping())return;const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);const count=Math.min(geometry.count,prepared.value.domain.size);let total=0;for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const height=element.getBoundingClientRect().height;if(!Number.isFinite(height)||height<=0)return;total+=height}const estimate=total/count;automaticEstimate.value=estimate;bootstrapElements.clear();activeState.value=createVirtualMasonryState(prepared.value,props.items,props,geometry,estimate)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||prepared.value.domain.size===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear()});const measure=props.sizePolicy.kind==='fixed'?undefined:createAxisMeasurementResolver('vertical');watch(()=>[props.items,props.getID],()=>{if(virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined){prepared.value=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);scheduleBootstrap();return}const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);let state=exposed.state;const patch=reconcileVirtualCollectionExtents(state,next,props.sizePolicy,automaticEstimate.value);if(patch!==null){const result=exposed.mutate(Object.freeze({type:'items',...patch}));if(!result.ok)return;state=result.value.state}const valueUpdates=reconcileVirtualCollectionValueExtents(state,next,props.sizePolicy,automaticEstimate.value);if(valueUpdates.length>0){const result=exposed.measure(valueUpdates);if(!result.ok)return}prepared.value=next},{flush:'post'});watch(()=>[props.lanePolicy,props.itemGap,props.placementPolicy,viewportWidth.value],()=>{const exposed=root.value;if(exposed===undefined)return;const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);const state=exposed.state;if(state.laneCount===geometry.count&&nearlyEqual(state.laneExtent,geometry.extent)&&state.laneGap===geometry.gap&&state.itemGap===props.itemGap&&state.placementPolicy===props.placementPolicy)return;exposed.mutate(Object.freeze({type:'geometry',laneCount:geometry.count,laneExtent:geometry.extent,laneGap:geometry.gap,itemGap:props.itemGap,placementPolicy:props.placementPolicy}))},{flush:'post'});expose(createVirtualCollectionExpose(root,initialState,()=>prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready'));return()=>h(VirtualizerRoot,{...attrs,ref:root,defaultState:activeState.value,strategy:masonryLayoutStrategy,overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-masonry','data-phase':prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>{viewportWidth.value=plan.viewport.width;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>[slots['header']===undefined?null:h(VirtualizerHeader,{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{as:props.contentAs},{default:()=>isBootstrapping()?renderCollectionBootstrapItems('virtual-masonry',prepared.value,props.items,Math.min(resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).count,prepared.value.domain.size),resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).extent,props.itemAs,props.itemAttributes,(value,id,index,placement)=>slots['item']?.({value,id,index,placement:Object.freeze({...placement,lane:index}),lane:index}),bootstrapItemRef):renderHighLevelItems('virtual-masonry',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,props.sizePolicy.kind==='fixed'?'both':'width',(value,id,index,placement)=>{const masonryPlacement=placement;return slots['item']?.({value,id,index,placement:masonryPlacement,lane:masonryPlacement.lane})},slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,{},{default:()=>slots['footer']?.()})]})}});export const VirtualMasonry=VirtualMasonryRuntime;function createVirtualMasonryState(prepared,items,props,geometry,automaticEstimate){return createMasonryLayout(constrainPreparedVirtualCollection(prepared,props.maxItems),createCollectionExtents(prepared,items,props,automaticEstimate),{laneCount:geometry.count,laneExtent:geometry.extent,laneGap:geometry.gap,itemGap:props.itemGap,placementPolicy:props.placementPolicy,maxLanes:Math.max(geometry.count,1_024)})}function createCollectionExtents(prepared,items,props,automaticEstimate){if(prepared.domain.size===0){return createUniformExtentIndex(0,createExactVirtualExtent(0),{maxItems:props.maxItems})}const shared=props.sizePolicy.kind==='fixed'||props.sizePolicy.kind==='measured'||props.sizePolicy.kind==='estimated'&&typeof props.sizePolicy.estimate==='number'?createVirtualExtent(props.sizePolicy,items[0],0,automaticEstimate):null;return shared===null?createExtentIndex(Array.from({length:prepared.domain.size},(_unused,index)=>createVirtualExtent(props.sizePolicy,items[index],index,automaticEstimate)),{maxItems:props.maxItems}):createUniformExtentIndex(prepared.domain.size,shared,{maxItems:props.maxItems})}
|
|
2
|
+
//# sourceMappingURL=virtual-masonry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-masonry.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createExactVirtualExtent","createVirtualExtent","reconcileVirtualCollectionExtents","reconcileVirtualCollectionValueExtents","resolveVirtualLaneGeometry","virtualSizePolicyRequiresMeasurement","createExtentIndex","createUniformExtentIndex","createMasonryLayout","masonryLayoutStrategy","createAxisMeasurementResolver","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","constrainPreparedVirtualCollection","createVirtualCollectionExpose","nearlyEqual","prepareVirtualCollection","renderCollectionBootstrapItems","renderHighLevelItems","updatePreparedVirtualCollection","VirtualMasonryRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","sizePolicy","Object","lanePolicy","itemGap","Number","default","placementPolicy","String","overscan","viewportInsets","undefined","maxItems","initialViewport","as","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","initialGeometry","width","automaticEstimate","initialState","createVirtualMasonryState","value","activeState","root","viewportWidth","bootstrapElements","Map","bootstrapScheduled","disposed","isBootstrapping","domain","size","bootstrapItemRef","index","element","HTMLElement","delete","set","scheduleBootstrap","completeBootstrap","geometry","count","Math","min","total","get","height","getBoundingClientRect","isFinite","estimate","clear","measure","kind","exposed","next","state","patch","result","mutate","ok","valueUpdates","length","flush","laneCount","laneExtent","extent","laneGap","gap","ref","defaultState","strategy","onStateChange","onPlanChange","plan","viewport","onError","placements","id","placement","lane","masonryPlacement","VirtualMasonry","createCollectionExtents","maxLanes","max","shared","from","_unused"],"sources":["../../src/virtual/virtual-masonry.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@ import { type AllowedComponentProps, type ComponentCustomProps, type PropType, t
|
|
|
2
2
|
import type { StableID } from '@sectile/core';
|
|
3
3
|
import { type SpatialLayoutState, type SpatialPlacement } from '@sectile/virtual/spatial-layout';
|
|
4
4
|
import { type VirtualInsets, type VirtualLayoutPlan, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
|
|
5
|
-
import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './
|
|
5
|
+
import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './virtual-collection.js';
|
|
6
6
|
export type VirtualSpatialRectResolver<Value> = {
|
|
7
7
|
bivarianceHack(value: Value, index: number): VirtualRect;
|
|
8
8
|
}['bivarianceHack'];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{defineComponent,h,shallowRef,watch}from'vue';import{createSpatialLayout,spatialLayoutStrategy}from'@sectile/virtual/spatial-layout';import{}from'@sectile/dom/virtual';import{VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./virtual-core.js';import{createVirtualCollectionExpose,prepareVirtualCollection,renderHighLevelItems,updatePreparedVirtualCollection}from'./virtual-collection.js';const VirtualSpatialRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualSpatial',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},getRect:{type:Function,required:true},getZIndex:{type:[Number,Function],default:0},sizeOwnership:{type:String,required:true},overscan:{type:[Number,Object],default:240},viewportInsets:{type:[Number,Object],default:undefined},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const sizeOwnership=props.sizeOwnership;const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,props.maxItems));const initialState=createVirtualSpatialState(prepared.value,props.items,props);const root=shallowRef();const measure=sizeOwnership==='mounted'?({element,placement,state})=>{const bounds=element.getBoundingClientRect();if(bounds.width<=0||bounds.height<=0)return null;const current=state.items.at(placement.index);if(current===undefined)return null;if(current.rect.width===bounds.width&¤t.rect.height===bounds.height)return null;return Object.freeze({id:placement.id,rect:Object.freeze({x:current.rect.x,y:current.rect.y,width:bounds.width,height:bounds.height})})}:undefined;watch(()=>[props.items,props.getID,props.getRect,props.getZIndex],(current,previous)=>{const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);const state=exposed.state;const resolverChanged=current[2]!==previous[2]||current[3]!==previous[3];const valuePatch=next.valueChange===null?null:Object.freeze({index:next.valueChange.index,deleteCount:next.valueChange.count,inserted:Object.freeze(next.domain.ids.slice(next.valueChange.index,next.valueChange.index+next.valueChange.count))});const collectionPatch=next.change??valuePatch;const result=resolverChanged||collectionPatch===null?resolverChanged?exposed.mutate(Object.freeze({type:'replace',items:preserveMountedSpatialSizes(createSpatialItems(next,props.items,props),state,sizeOwnership)})):null:exposed.mutate(Object.freeze({type:'patch',patch:Object.freeze({type:'splice',index:collectionPatch.index,deleteCount:collectionPatch.deleteCount,inserted:collectionPatch.inserted}),inserted:preserveMountedSpatialSizes(createSpatialItemsRange(next,props.items,props,collectionPatch.index,collectionPatch.inserted.length),state,sizeOwnership)}));if(result===null){prepared.value=next;return}if(result.ok)prepared.value=next},{flush:'post'});let sizeOwnershipWarningShown=false;watch(()=>props.sizeOwnership,value=>{if(sizeOwnershipWarningShown||value===sizeOwnership)return;sizeOwnershipWarningShown=true;console.warn('[Sectile] VirtualSpatial sizeOwnership is a construction-time option. Remount the spatial collection to change it.')},{flush:'sync'});expose(createVirtualCollectionExpose(root,initialState,()=>prepared.value.domain.size===0?'empty':'ready'));return()=>h(VirtualizerRoot,{...attrs,ref:root,defaultState:initialState,strategy:spatialLayoutStrategy,overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-spatial','data-phase':prepared.value.domain.size===0?'empty':'ready',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>emit('planChange',plan),onError:error=>emit('error',error)},{default:({placements})=>[slots['header']===undefined?null:h(VirtualizerHeader,{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{as:props.contentAs},{default:()=>renderHighLevelItems('virtual-spatial',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,sizeOwnership==='mounted'?'none':'both',(value,id,index,placement)=>{const spatialPlacement=placement;return slots['item']?.({value,id,index,placement:spatialPlacement,zIndex:spatialPlacement.zIndex})},slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,{},{default:()=>slots['footer']?.()})]})}});export const VirtualSpatial=VirtualSpatialRuntime;function createVirtualSpatialState(prepared,items,props){return createSpatialLayout(createSpatialItems(prepared,items,props),{maxItems:props.maxItems,domain:prepared.domain})}function createSpatialItems(prepared,items,props){return createSpatialItemsRange(prepared,items,props,0,prepared.domain.size)}function createSpatialItemsRange(prepared,items,props,start,count){const spatialItems=Array(count);for(let localIndex=0;localIndex<count;localIndex+=1){const index=start+localIndex;spatialItems[localIndex]={id:prepared.domain.at(index),rect:props.getRect(items[index],index),zIndex:typeof props.getZIndex==='number'?props.getZIndex:props.getZIndex(items[index],index)}}return spatialItems}function preserveMountedSpatialSizes(items,state,sizeOwnership){if(sizeOwnership!=='mounted')return items;return items.map(item=>{const previousIndex=state.domain.indexOf(item.id);const previous=previousIndex===null?undefined:state.items.at(previousIndex);return previous===undefined?item:{...item,rect:{...item.rect,width:previous.rect.width,height:previous.rect.height}}})}
|
|
2
|
+
//# sourceMappingURL=virtual-spatial.js.map
|