@solid2-aria/components 0.0.0-stage → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +58 -2
- package/dist/LICENSES/Apache-2.0.txt +201 -0
- package/dist/LICENSES/react-spectrum-NOTICE.txt +242 -0
- package/dist/NOTICE.txt +636 -0
- package/dist/browser/autocomplete.d.ts +35 -0
- package/dist/browser/autocomplete.js +69 -0
- package/dist/browser/autocomplete.js.map +1 -0
- package/dist/browser/breadcrumbs.d.ts +71 -0
- package/dist/browser/breadcrumbs.js +121 -0
- package/dist/browser/breadcrumbs.js.map +1 -0
- package/dist/browser/button.d.ts +36 -0
- package/dist/browser/button.js +156 -0
- package/dist/browser/button.js.map +1 -0
- package/dist/browser/calendar.d.ts +103 -0
- package/dist/browser/calendar.js +581 -0
- package/dist/browser/calendar.js.map +1 -0
- package/dist/browser/checkbox.d.ts +67 -0
- package/dist/browser/checkbox.js +345 -0
- package/dist/browser/checkbox.js.map +1 -0
- package/dist/browser/collection-dnd.d.ts +56 -0
- package/dist/browser/collection-dnd.js +156 -0
- package/dist/browser/collection-dnd.js.map +1 -0
- package/dist/browser/collection.d.ts +153 -0
- package/dist/browser/collection.js +106 -0
- package/dist/browser/collection.js.map +1 -0
- package/dist/browser/color-area.d.ts +21 -0
- package/dist/browser/color-area.js +94 -0
- package/dist/browser/color-area.js.map +1 -0
- package/dist/browser/color-field.d.ts +39 -0
- package/dist/browser/color-field.js +232 -0
- package/dist/browser/color-field.js.map +1 -0
- package/dist/browser/color-picker.d.ts +30 -0
- package/dist/browser/color-picker.js +84 -0
- package/dist/browser/color-picker.js.map +1 -0
- package/dist/browser/color-slider.d.ts +23 -0
- package/dist/browser/color-slider.js +132 -0
- package/dist/browser/color-slider.js.map +1 -0
- package/dist/browser/color-swatch-picker.d.ts +29 -0
- package/dist/browser/color-swatch-picker.js +131 -0
- package/dist/browser/color-swatch-picker.js.map +1 -0
- package/dist/browser/color-swatch.d.ts +19 -0
- package/dist/browser/color-swatch.js +42 -0
- package/dist/browser/color-swatch.js.map +1 -0
- package/dist/browser/color-thumb.d.ts +42 -0
- package/dist/browser/color-thumb.js +114 -0
- package/dist/browser/color-thumb.js.map +1 -0
- package/dist/browser/color-wheel.d.ts +29 -0
- package/dist/browser/color-wheel.js +109 -0
- package/dist/browser/color-wheel.js.map +1 -0
- package/dist/browser/combo-box.d.ts +113 -0
- package/dist/browser/combo-box.js +394 -0
- package/dist/browser/combo-box.js.map +1 -0
- package/dist/browser/create-drag-and-drop.d.ts +61 -0
- package/dist/browser/create-drag-and-drop.js +56 -0
- package/dist/browser/create-drag-and-drop.js.map +1 -0
- package/dist/browser/date-field.d.ts +71 -0
- package/dist/browser/date-field.js +508 -0
- package/dist/browser/date-field.js.map +1 -0
- package/dist/browser/date-picker.d.ts +50 -0
- package/dist/browser/date-picker.js +403 -0
- package/dist/browser/date-picker.js.map +1 -0
- package/dist/browser/dialog.d.ts +35 -0
- package/dist/browser/dialog.js +148 -0
- package/dist/browser/dialog.js.map +1 -0
- package/dist/browser/disclosure.d.ts +56 -0
- package/dist/browser/disclosure.js +180 -0
- package/dist/browser/disclosure.js.map +1 -0
- package/dist/browser/drag-and-drop.d.ts +43 -0
- package/dist/browser/drag-and-drop.js +66 -0
- package/dist/browser/drag-and-drop.js.map +1 -0
- package/dist/browser/drop-zone.d.ts +33 -0
- package/dist/browser/drop-zone.js +161 -0
- package/dist/browser/drop-zone.js.map +1 -0
- package/dist/browser/field-error.d.ts +28 -0
- package/dist/browser/field-error.js +60 -0
- package/dist/browser/field-error.js.map +1 -0
- package/dist/browser/file-trigger.d.ts +30 -0
- package/dist/browser/file-trigger.js +66 -0
- package/dist/browser/file-trigger.js.map +1 -0
- package/dist/browser/form.d.ts +28 -0
- package/dist/browser/form.js +64 -0
- package/dist/browser/form.js.map +1 -0
- package/dist/browser/grid-layout.d.ts +22 -0
- package/dist/browser/grid-layout.js +30 -0
- package/dist/browser/grid-layout.js.map +1 -0
- package/dist/browser/grid-list.d.ts +95 -0
- package/dist/browser/grid-list.js +609 -0
- package/dist/browser/grid-list.js.map +1 -0
- package/dist/browser/group.d.ts +35 -0
- package/dist/browser/group.js +92 -0
- package/dist/browser/group.js.map +1 -0
- package/dist/browser/header.d.ts +25 -0
- package/dist/browser/header.js +57 -0
- package/dist/browser/header.js.map +1 -0
- package/dist/browser/heading.d.ts +26 -0
- package/dist/browser/heading.js +53 -0
- package/dist/browser/heading.js.map +1 -0
- package/dist/browser/hidden-date-input.d.ts +34 -0
- package/dist/browser/hidden-date-input.js +84 -0
- package/dist/browser/hidden-date-input.js.map +1 -0
- package/dist/browser/index.d.ts +133 -0
- package/dist/browser/index.js +98 -0
- package/dist/browser/input.d.ts +33 -0
- package/dist/browser/input.js +94 -0
- package/dist/browser/input.js.map +1 -0
- package/dist/browser/intl/ar-AE.js +11 -0
- package/dist/browser/intl/ar-AE.js.map +1 -0
- package/dist/browser/intl/bg-BG.js +11 -0
- package/dist/browser/intl/bg-BG.js.map +1 -0
- package/dist/browser/intl/cs-CZ.js +11 -0
- package/dist/browser/intl/cs-CZ.js.map +1 -0
- package/dist/browser/intl/da-DK.js +11 -0
- package/dist/browser/intl/da-DK.js.map +1 -0
- package/dist/browser/intl/de-DE.js +11 -0
- package/dist/browser/intl/de-DE.js.map +1 -0
- package/dist/browser/intl/el-GR.js +11 -0
- package/dist/browser/intl/el-GR.js.map +1 -0
- package/dist/browser/intl/en-US.js +11 -0
- package/dist/browser/intl/en-US.js.map +1 -0
- package/dist/browser/intl/es-ES.js +11 -0
- package/dist/browser/intl/es-ES.js.map +1 -0
- package/dist/browser/intl/et-EE.js +11 -0
- package/dist/browser/intl/et-EE.js.map +1 -0
- package/dist/browser/intl/fi-FI.js +11 -0
- package/dist/browser/intl/fi-FI.js.map +1 -0
- package/dist/browser/intl/fr-FR.js +11 -0
- package/dist/browser/intl/fr-FR.js.map +1 -0
- package/dist/browser/intl/he-IL.js +11 -0
- package/dist/browser/intl/he-IL.js.map +1 -0
- package/dist/browser/intl/hr-HR.js +11 -0
- package/dist/browser/intl/hr-HR.js.map +1 -0
- package/dist/browser/intl/hu-HU.js +11 -0
- package/dist/browser/intl/hu-HU.js.map +1 -0
- package/dist/browser/intl/index.js +75 -0
- package/dist/browser/intl/index.js.map +1 -0
- package/dist/browser/intl/it-IT.js +11 -0
- package/dist/browser/intl/it-IT.js.map +1 -0
- package/dist/browser/intl/ja-JP.js +11 -0
- package/dist/browser/intl/ja-JP.js.map +1 -0
- package/dist/browser/intl/ko-KR.js +11 -0
- package/dist/browser/intl/ko-KR.js.map +1 -0
- package/dist/browser/intl/lt-LT.js +11 -0
- package/dist/browser/intl/lt-LT.js.map +1 -0
- package/dist/browser/intl/lv-LV.js +11 -0
- package/dist/browser/intl/lv-LV.js.map +1 -0
- package/dist/browser/intl/nb-NO.js +11 -0
- package/dist/browser/intl/nb-NO.js.map +1 -0
- package/dist/browser/intl/nl-NL.js +11 -0
- package/dist/browser/intl/nl-NL.js.map +1 -0
- package/dist/browser/intl/pl-PL.js +11 -0
- package/dist/browser/intl/pl-PL.js.map +1 -0
- package/dist/browser/intl/pt-BR.js +11 -0
- package/dist/browser/intl/pt-BR.js.map +1 -0
- package/dist/browser/intl/pt-PT.js +11 -0
- package/dist/browser/intl/pt-PT.js.map +1 -0
- package/dist/browser/intl/ro-RO.js +11 -0
- package/dist/browser/intl/ro-RO.js.map +1 -0
- package/dist/browser/intl/ru-RU.js +11 -0
- package/dist/browser/intl/ru-RU.js.map +1 -0
- package/dist/browser/intl/sk-SK.js +11 -0
- package/dist/browser/intl/sk-SK.js.map +1 -0
- package/dist/browser/intl/sl-SI.js +11 -0
- package/dist/browser/intl/sl-SI.js.map +1 -0
- package/dist/browser/intl/sr-SP.js +11 -0
- package/dist/browser/intl/sr-SP.js.map +1 -0
- package/dist/browser/intl/sv-SE.js +11 -0
- package/dist/browser/intl/sv-SE.js.map +1 -0
- package/dist/browser/intl/tr-TR.js +11 -0
- package/dist/browser/intl/tr-TR.js.map +1 -0
- package/dist/browser/intl/uk-UA.js +11 -0
- package/dist/browser/intl/uk-UA.js.map +1 -0
- package/dist/browser/intl/zh-CN.js +11 -0
- package/dist/browser/intl/zh-CN.js.map +1 -0
- package/dist/browser/intl/zh-TW.js +11 -0
- package/dist/browser/intl/zh-TW.js.map +1 -0
- package/dist/browser/keyboard.d.ts +25 -0
- package/dist/browser/keyboard.js +50 -0
- package/dist/browser/keyboard.js.map +1 -0
- package/dist/browser/label.d.ts +26 -0
- package/dist/browser/label.js +53 -0
- package/dist/browser/label.js.map +1 -0
- package/dist/browser/link.d.ts +34 -0
- package/dist/browser/link.js +92 -0
- package/dist/browser/link.js.map +1 -0
- package/dist/browser/list-box.d.ts +171 -0
- package/dist/browser/list-box.js +547 -0
- package/dist/browser/list-box.js.map +1 -0
- package/dist/browser/menu.d.ts +150 -0
- package/dist/browser/menu.js +597 -0
- package/dist/browser/menu.js.map +1 -0
- package/dist/browser/meter.d.ts +29 -0
- package/dist/browser/meter.js +73 -0
- package/dist/browser/meter.js.map +1 -0
- package/dist/browser/modal.d.ts +48 -0
- package/dist/browser/modal.js +190 -0
- package/dist/browser/modal.js.map +1 -0
- package/dist/browser/navigation-tree.d.ts +54 -0
- package/dist/browser/navigation-tree.js +233 -0
- package/dist/browser/navigation-tree.js.map +1 -0
- package/dist/browser/number-field.d.ts +36 -0
- package/dist/browser/number-field.js +179 -0
- package/dist/browser/number-field.js.map +1 -0
- package/dist/browser/overlay-arrow.d.ts +32 -0
- package/dist/browser/overlay-arrow.js +65 -0
- package/dist/browser/overlay-arrow.js.map +1 -0
- package/dist/browser/overlay-contexts.d.ts +22 -0
- package/dist/browser/overlay-contexts.js +24 -0
- package/dist/browser/overlay-contexts.js.map +1 -0
- package/dist/browser/popover.d.ts +50 -0
- package/dist/browser/popover.js +255 -0
- package/dist/browser/popover.js.map +1 -0
- package/dist/browser/preview-trigger.d.ts +25 -0
- package/dist/browser/preview-trigger.js +93 -0
- package/dist/browser/preview-trigger.js.map +1 -0
- package/dist/browser/progress-bar.d.ts +30 -0
- package/dist/browser/progress-bar.js +76 -0
- package/dist/browser/progress-bar.js.map +1 -0
- package/dist/browser/radio-group.d.ts +67 -0
- package/dist/browser/radio-group.js +336 -0
- package/dist/browser/radio-group.js.map +1 -0
- package/dist/browser/search-field.d.ts +34 -0
- package/dist/browser/search-field.js +156 -0
- package/dist/browser/search-field.js.map +1 -0
- package/dist/browser/select.d.ts +115 -0
- package/dist/browser/select.js +351 -0
- package/dist/browser/select.js.map +1 -0
- package/dist/browser/selection-indicator.d.ts +25 -0
- package/dist/browser/selection-indicator.js +40 -0
- package/dist/browser/selection-indicator.js.map +1 -0
- package/dist/browser/separator.d.ts +30 -0
- package/dist/browser/separator.js +68 -0
- package/dist/browser/separator.js.map +1 -0
- package/dist/browser/shared-element-transition.d.ts +35 -0
- package/dist/browser/shared-element-transition.js +141 -0
- package/dist/browser/shared-element-transition.js.map +1 -0
- package/dist/browser/sheet.d.ts +64 -0
- package/dist/browser/sheet.js +982 -0
- package/dist/browser/sheet.js.map +1 -0
- package/dist/browser/slider.d.ts +77 -0
- package/dist/browser/slider.js +318 -0
- package/dist/browser/slider.js.map +1 -0
- package/dist/browser/switch.d.ts +54 -0
- package/dist/browser/switch.js +240 -0
- package/dist/browser/switch.js.map +1 -0
- package/dist/browser/table-layout.d.ts +22 -0
- package/dist/browser/table-layout.js +31 -0
- package/dist/browser/table-layout.js.map +1 -0
- package/dist/browser/table.d.ts +184 -0
- package/dist/browser/table.js +1268 -0
- package/dist/browser/table.js.map +1 -0
- package/dist/browser/tabs.d.ts +194 -0
- package/dist/browser/tabs.js +378 -0
- package/dist/browser/tabs.js.map +1 -0
- package/dist/browser/tag-group.d.ts +112 -0
- package/dist/browser/tag-group.js +291 -0
- package/dist/browser/tag-group.js.map +1 -0
- package/dist/browser/text-area.d.ts +16 -0
- package/dist/browser/text-area.js +75 -0
- package/dist/browser/text-area.js.map +1 -0
- package/dist/browser/text-field.d.ts +31 -0
- package/dist/browser/text-field.js +152 -0
- package/dist/browser/text-field.js.map +1 -0
- package/dist/browser/text.d.ts +25 -0
- package/dist/browser/text.js +52 -0
- package/dist/browser/text.js.map +1 -0
- package/dist/browser/toast.d.ts +66 -0
- package/dist/browser/toast.js +226 -0
- package/dist/browser/toast.js.map +1 -0
- package/dist/browser/toggle-button-group.d.ts +32 -0
- package/dist/browser/toggle-button-group.js +74 -0
- package/dist/browser/toggle-button-group.js.map +1 -0
- package/dist/browser/toggle-button.d.ts +33 -0
- package/dist/browser/toggle-button.js +119 -0
- package/dist/browser/toggle-button.js.map +1 -0
- package/dist/browser/token-field.d.ts +124 -0
- package/dist/browser/token-field.js +277 -0
- package/dist/browser/token-field.js.map +1 -0
- package/dist/browser/toolbar.d.ts +28 -0
- package/dist/browser/toolbar.js +51 -0
- package/dist/browser/toolbar.js.map +1 -0
- package/dist/browser/tooltip.d.ts +44 -0
- package/dist/browser/tooltip.js +183 -0
- package/dist/browser/tooltip.js.map +1 -0
- package/dist/browser/tree-drop-target-delegate.d.ts +33 -0
- package/dist/browser/tree-drop-target-delegate.js +178 -0
- package/dist/browser/tree-drop-target-delegate.js.map +1 -0
- package/dist/browser/tree.d.ts +98 -0
- package/dist/browser/tree.js +699 -0
- package/dist/browser/tree.js.map +1 -0
- package/dist/browser/utils.d.ts +94 -0
- package/dist/browser/utils.js +173 -0
- package/dist/browser/utils.js.map +1 -0
- package/dist/browser/virtualizer.d.ts +33 -0
- package/dist/browser/virtualizer.js +179 -0
- package/dist/browser/virtualizer.js.map +1 -0
- package/dist/server/autocomplete.js +125 -0
- package/dist/server/autocomplete.js.map +1 -0
- package/dist/server/breadcrumbs.js +185 -0
- package/dist/server/breadcrumbs.js.map +1 -0
- package/dist/server/button.js +252 -0
- package/dist/server/button.js.map +1 -0
- package/dist/server/calendar.js +1054 -0
- package/dist/server/calendar.js.map +1 -0
- package/dist/server/checkbox.js +595 -0
- package/dist/server/checkbox.js.map +1 -0
- package/dist/server/collection-dnd.js +217 -0
- package/dist/server/collection-dnd.js.map +1 -0
- package/dist/server/collection.js +106 -0
- package/dist/server/collection.js.map +1 -0
- package/dist/server/color-area.js +142 -0
- package/dist/server/color-area.js.map +1 -0
- package/dist/server/color-field.js +394 -0
- package/dist/server/color-field.js.map +1 -0
- package/dist/server/color-picker.js +170 -0
- package/dist/server/color-picker.js.map +1 -0
- package/dist/server/color-slider.js +328 -0
- package/dist/server/color-slider.js.map +1 -0
- package/dist/server/color-swatch-picker.js +234 -0
- package/dist/server/color-swatch-picker.js.map +1 -0
- package/dist/server/color-swatch.js +52 -0
- package/dist/server/color-swatch.js.map +1 -0
- package/dist/server/color-thumb.js +132 -0
- package/dist/server/color-thumb.js.map +1 -0
- package/dist/server/color-wheel.js +188 -0
- package/dist/server/color-wheel.js.map +1 -0
- package/dist/server/combo-box.js +914 -0
- package/dist/server/combo-box.js.map +1 -0
- package/dist/server/create-drag-and-drop.js +56 -0
- package/dist/server/create-drag-and-drop.js.map +1 -0
- package/dist/server/date-field.js +1055 -0
- package/dist/server/date-field.js.map +1 -0
- package/dist/server/date-picker.js +1079 -0
- package/dist/server/date-picker.js.map +1 -0
- package/dist/server/dialog.js +295 -0
- package/dist/server/dialog.js.map +1 -0
- package/dist/server/disclosure.js +292 -0
- package/dist/server/disclosure.js.map +1 -0
- package/dist/server/drag-and-drop.js +66 -0
- package/dist/server/drag-and-drop.js.map +1 -0
- package/dist/server/drop-zone.js +241 -0
- package/dist/server/drop-zone.js.map +1 -0
- package/dist/server/field-error.js +90 -0
- package/dist/server/field-error.js.map +1 -0
- package/dist/server/file-trigger.js +98 -0
- package/dist/server/file-trigger.js.map +1 -0
- package/dist/server/form.js +116 -0
- package/dist/server/form.js.map +1 -0
- package/dist/server/grid-layout.js +30 -0
- package/dist/server/grid-layout.js.map +1 -0
- package/dist/server/grid-list.js +1015 -0
- package/dist/server/grid-list.js.map +1 -0
- package/dist/server/group.js +146 -0
- package/dist/server/group.js.map +1 -0
- package/dist/server/header.js +72 -0
- package/dist/server/header.js.map +1 -0
- package/dist/server/heading.js +68 -0
- package/dist/server/heading.js.map +1 -0
- package/dist/server/hidden-date-input.js +79 -0
- package/dist/server/hidden-date-input.js.map +1 -0
- package/dist/server/index.js +98 -0
- package/dist/server/input.js +134 -0
- package/dist/server/input.js.map +1 -0
- package/dist/server/intl/ar-AE.js +11 -0
- package/dist/server/intl/ar-AE.js.map +1 -0
- package/dist/server/intl/bg-BG.js +11 -0
- package/dist/server/intl/bg-BG.js.map +1 -0
- package/dist/server/intl/cs-CZ.js +11 -0
- package/dist/server/intl/cs-CZ.js.map +1 -0
- package/dist/server/intl/da-DK.js +11 -0
- package/dist/server/intl/da-DK.js.map +1 -0
- package/dist/server/intl/de-DE.js +11 -0
- package/dist/server/intl/de-DE.js.map +1 -0
- package/dist/server/intl/el-GR.js +11 -0
- package/dist/server/intl/el-GR.js.map +1 -0
- package/dist/server/intl/en-US.js +11 -0
- package/dist/server/intl/en-US.js.map +1 -0
- package/dist/server/intl/es-ES.js +11 -0
- package/dist/server/intl/es-ES.js.map +1 -0
- package/dist/server/intl/et-EE.js +11 -0
- package/dist/server/intl/et-EE.js.map +1 -0
- package/dist/server/intl/fi-FI.js +11 -0
- package/dist/server/intl/fi-FI.js.map +1 -0
- package/dist/server/intl/fr-FR.js +11 -0
- package/dist/server/intl/fr-FR.js.map +1 -0
- package/dist/server/intl/he-IL.js +11 -0
- package/dist/server/intl/he-IL.js.map +1 -0
- package/dist/server/intl/hr-HR.js +11 -0
- package/dist/server/intl/hr-HR.js.map +1 -0
- package/dist/server/intl/hu-HU.js +11 -0
- package/dist/server/intl/hu-HU.js.map +1 -0
- package/dist/server/intl/index.js +75 -0
- package/dist/server/intl/index.js.map +1 -0
- package/dist/server/intl/it-IT.js +11 -0
- package/dist/server/intl/it-IT.js.map +1 -0
- package/dist/server/intl/ja-JP.js +11 -0
- package/dist/server/intl/ja-JP.js.map +1 -0
- package/dist/server/intl/ko-KR.js +11 -0
- package/dist/server/intl/ko-KR.js.map +1 -0
- package/dist/server/intl/lt-LT.js +11 -0
- package/dist/server/intl/lt-LT.js.map +1 -0
- package/dist/server/intl/lv-LV.js +11 -0
- package/dist/server/intl/lv-LV.js.map +1 -0
- package/dist/server/intl/nb-NO.js +11 -0
- package/dist/server/intl/nb-NO.js.map +1 -0
- package/dist/server/intl/nl-NL.js +11 -0
- package/dist/server/intl/nl-NL.js.map +1 -0
- package/dist/server/intl/pl-PL.js +11 -0
- package/dist/server/intl/pl-PL.js.map +1 -0
- package/dist/server/intl/pt-BR.js +11 -0
- package/dist/server/intl/pt-BR.js.map +1 -0
- package/dist/server/intl/pt-PT.js +11 -0
- package/dist/server/intl/pt-PT.js.map +1 -0
- package/dist/server/intl/ro-RO.js +11 -0
- package/dist/server/intl/ro-RO.js.map +1 -0
- package/dist/server/intl/ru-RU.js +11 -0
- package/dist/server/intl/ru-RU.js.map +1 -0
- package/dist/server/intl/sk-SK.js +11 -0
- package/dist/server/intl/sk-SK.js.map +1 -0
- package/dist/server/intl/sl-SI.js +11 -0
- package/dist/server/intl/sl-SI.js.map +1 -0
- package/dist/server/intl/sr-SP.js +11 -0
- package/dist/server/intl/sr-SP.js.map +1 -0
- package/dist/server/intl/sv-SE.js +11 -0
- package/dist/server/intl/sv-SE.js.map +1 -0
- package/dist/server/intl/tr-TR.js +11 -0
- package/dist/server/intl/tr-TR.js.map +1 -0
- package/dist/server/intl/uk-UA.js +11 -0
- package/dist/server/intl/uk-UA.js.map +1 -0
- package/dist/server/intl/zh-CN.js +11 -0
- package/dist/server/intl/zh-CN.js.map +1 -0
- package/dist/server/intl/zh-TW.js +11 -0
- package/dist/server/intl/zh-TW.js.map +1 -0
- package/dist/server/keyboard.js +65 -0
- package/dist/server/keyboard.js.map +1 -0
- package/dist/server/label.js +68 -0
- package/dist/server/label.js.map +1 -0
- package/dist/server/link.js +138 -0
- package/dist/server/link.js.map +1 -0
- package/dist/server/list-box.js +906 -0
- package/dist/server/list-box.js.map +1 -0
- package/dist/server/menu.js +1188 -0
- package/dist/server/menu.js.map +1 -0
- package/dist/server/meter.js +101 -0
- package/dist/server/meter.js.map +1 -0
- package/dist/server/modal.js +360 -0
- package/dist/server/modal.js.map +1 -0
- package/dist/server/navigation-tree.js +316 -0
- package/dist/server/navigation-tree.js.map +1 -0
- package/dist/server/number-field.js +371 -0
- package/dist/server/number-field.js.map +1 -0
- package/dist/server/overlay-arrow.js +81 -0
- package/dist/server/overlay-arrow.js.map +1 -0
- package/dist/server/overlay-contexts.js +24 -0
- package/dist/server/overlay-contexts.js.map +1 -0
- package/dist/server/popover.js +455 -0
- package/dist/server/popover.js.map +1 -0
- package/dist/server/preview-trigger.js +153 -0
- package/dist/server/preview-trigger.js.map +1 -0
- package/dist/server/progress-bar.js +104 -0
- package/dist/server/progress-bar.js.map +1 -0
- package/dist/server/radio-group.js +586 -0
- package/dist/server/radio-group.js.map +1 -0
- package/dist/server/search-field.js +288 -0
- package/dist/server/search-field.js.map +1 -0
- package/dist/server/select.js +771 -0
- package/dist/server/select.js.map +1 -0
- package/dist/server/selection-indicator.js +54 -0
- package/dist/server/selection-indicator.js.map +1 -0
- package/dist/server/separator.js +91 -0
- package/dist/server/separator.js.map +1 -0
- package/dist/server/shared-element-transition.js +189 -0
- package/dist/server/shared-element-transition.js.map +1 -0
- package/dist/server/sheet.js +1197 -0
- package/dist/server/sheet.js.map +1 -0
- package/dist/server/slider.js +581 -0
- package/dist/server/slider.js.map +1 -0
- package/dist/server/switch.js +400 -0
- package/dist/server/switch.js.map +1 -0
- package/dist/server/table-layout.js +31 -0
- package/dist/server/table-layout.js.map +1 -0
- package/dist/server/table.js +2075 -0
- package/dist/server/table.js.map +1 -0
- package/dist/server/tabs.js +668 -0
- package/dist/server/tabs.js.map +1 -0
- package/dist/server/tag-group.js +538 -0
- package/dist/server/tag-group.js.map +1 -0
- package/dist/server/text-area.js +115 -0
- package/dist/server/text-area.js.map +1 -0
- package/dist/server/text-field.js +272 -0
- package/dist/server/text-field.js.map +1 -0
- package/dist/server/text.js +67 -0
- package/dist/server/text.js.map +1 -0
- package/dist/server/toast.js +449 -0
- package/dist/server/toast.js.map +1 -0
- package/dist/server/toggle-button-group.js +125 -0
- package/dist/server/toggle-button-group.js.map +1 -0
- package/dist/server/toggle-button.js +183 -0
- package/dist/server/toggle-button.js.map +1 -0
- package/dist/server/token-field.js +457 -0
- package/dist/server/token-field.js.map +1 -0
- package/dist/server/toolbar.js +67 -0
- package/dist/server/toolbar.js.map +1 -0
- package/dist/server/tooltip.js +331 -0
- package/dist/server/tooltip.js.map +1 -0
- package/dist/server/tree-drop-target-delegate.js +178 -0
- package/dist/server/tree-drop-target-delegate.js.map +1 -0
- package/dist/server/tree.js +1096 -0
- package/dist/server/tree.js.map +1 -0
- package/dist/server/utils.js +184 -0
- package/dist/server/utils.js.map +1 -0
- package/dist/server/virtualizer.js +254 -0
- package/dist/server/virtualizer.js.map +1 -0
- package/package.json +437 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.js","names":["{dnd.dropState && <RootDropIndicator />}","<CollectionDropIndicator {...indicatorProps} ref={ref} />","ref={ref}","{values.isEmpty && props.renderEmptyState && (\n <div role=\"row\">\n <div role=\"gridcell\">{props.renderEmptyState(values)}</div>\n </div>\n )}","{props.renderEmptyState(values)}","props.renderEmptyState(values)","<div role=\"row\">\n <div role=\"gridcell\">{props.renderEmptyState(values)}</div>\n </div>","{dnd.preview}","state.selectionManager.selectionMode === \"none\"\n ? undefined\n : state.selectionManager.selectionMode","<CheckboxContext\n value={{\n slots: {\n [DEFAULT_SLOT]: {},\n get selection() {\n return checkbox.checkboxProps;\n },\n },\n }}\n >\n <CheckboxFieldContext\n value={{\n slots: {\n [DEFAULT_SLOT]: {},\n get selection() {\n return checkbox.checkboxProps;\n },\n },\n }}\n >\n <ButtonContext\n value={{\n slots: {\n [DEFAULT_SLOT]: {},\n chevron: mergeProps(\n merge(() => aria.expandButtonProps ?? {}),\n {}\n ),\n drag: mergeProps(\n merge(() => drag?.dragButtonProps ?? {}),\n {\n style: { \"pointer-events\": \"none\" as const },\n }\n ),\n },\n }}\n >\n <TreeItemContentContext value={values}>\n <SelectionIndicatorContext\n value={{\n get isSelected() {\n return aria.isSelected;\n },\n }}\n >\n <TreeItemChildren state={state} itemKey={item.key} />\n </SelectionIndicatorContext>\n </TreeItemContentContext>\n </ButtonContext>\n </CheckboxFieldContext>\n </CheckboxContext>","style={{ display: \"contents\" }}","elementRef={ref}","setElementRef={(element: HTMLDivElement) => {\n setRef(element);\n }}","dom.div","<dom.div\n {...mergeProps(\n filterDOMProps(props, { global: true }),\n render,\n merge(() => aria.gridProps ?? {}),\n merge(() => focus.focusProps ?? {}),\n merge(() => dnd.collectionProps ?? {})\n )}\n ref={(element: HTMLDivElement) => {\n outer.setElementRef(element);\n }}\n slot={props.slot ?? undefined}\n data-empty={values.isEmpty || undefined}\n data-focused={focus.isFocused || undefined}\n data-focus-visible={focus.isFocusVisible || undefined}\n data-drop-target={values.isDropTarget || undefined}\n >\n <TreeStateContext value={state}>\n <DragAndDropContext value={dnd}>\n <DropIndicatorContext\n value={{\n render: (indicatorProps, ref) => (\n <CollectionDropIndicator {...indicatorProps} ref={ref} />\n ),\n }}\n >\n {dnd.dropState && <RootDropIndicator />}\n <Root\n collection={state.collection}\n scrollRef={outer.elementRef}\n persistedKeys={createDndPersistedKeys(\n state.selectionManager,\n props.dragAndDropHooks,\n dnd.dropState\n )}\n renderDropIndicator={createRenderDropIndicator(\n props.dragAndDropHooks,\n dnd.dropState\n )}\n />\n </DropIndicatorContext>\n </DragAndDropContext>\n </TreeStateContext>\n {values.isEmpty && props.renderEmptyState && (\n <div role=\"row\">\n <div role=\"gridcell\">{props.renderEmptyState(values)}</div>\n </div>\n )}\n {dnd.preview}\n </dom.div>","{drop && !drop.isHidden && (\n <div role=\"row\" style={{ position: \"absolute\" }}>\n <div role=\"gridcell\">\n <div\n {...mergeProps(\n merge(() => hidden.visuallyHiddenProps ?? {}),\n merge(() => drop.dropIndicatorProps ?? {})\n )}\n role=\"button\"\n ref={(element: HTMLDivElement) => {\n setDropRef(element);\n }}\n />\n {values.hasChildItems && (\n <div\n {...mergeProps(\n merge(() => hidden.visuallyHiddenProps ?? {}),\n merge(() => aria.expandButtonProps ?? {})\n )}\n role=\"button\"\n tabindex={-1}\n ref={(element: HTMLDivElement) => {\n setActivateRef(element);\n }}\n />\n )}\n </div>\n </div>\n )}","<div\n {...mergeProps(\n merge(() => hidden.visuallyHiddenProps ?? {}),\n merge(() => drop.dropIndicatorProps ?? {})\n )}\n role=\"button\"\n ref={(element: HTMLDivElement) => {\n setDropRef(element);\n }}\n />","{values.hasChildItems && (\n <div\n {...mergeProps(\n merge(() => hidden.visuallyHiddenProps ?? {}),\n merge(() => aria.expandButtonProps ?? {})\n )}\n role=\"button\"\n tabindex={-1}\n ref={(element: HTMLDivElement) => {\n setActivateRef(element);\n }}\n />\n )}","<div\n {...mergeProps(\n merge(() => hidden.visuallyHiddenProps ?? {}),\n merge(() => aria.expandButtonProps ?? {})\n )}\n role=\"button\"\n tabindex={-1}\n ref={(element: HTMLDivElement) => {\n setActivateRef(element);\n }}\n />","tabindex={-1}","values.hasChildItems","<div role=\"row\" style={{ position: \"absolute\" }}>\n <div role=\"gridcell\">\n <div\n {...mergeProps(\n merge(() => hidden.visuallyHiddenProps ?? {}),\n merge(() => drop.dropIndicatorProps ?? {})\n )}\n role=\"button\"\n ref={(element: HTMLDivElement) => {\n setDropRef(element);\n }}\n />\n {values.hasChildItems && (\n <div\n {...mergeProps(\n merge(() => hidden.visuallyHiddenProps ?? {}),\n merge(() => aria.expandButtonProps ?? {})\n )}\n role=\"button\"\n tabindex={-1}\n ref={(element: HTMLDivElement) => {\n setActivateRef(element);\n }}\n />\n )}\n </div>\n </div>","style={{ position: \"absolute\" }}","<dom.div\n {...mergeProps(\n omit(filterDOMProps(props, { global: true }), \"id\", \"onClick\"),\n render,\n merge(() => aria.rowProps ?? {}),\n merge(() => focus.focusProps ?? {}),\n merge(() => within.focusProps ?? {}),\n merge(() => hover.hoverProps ?? {}),\n merge(() => drag?.dragProps ?? {})\n )}\n ref={(element: HTMLDivElement) => {\n setRef(element);\n }}\n data-expanded={getTruthyValue(\n values.hasChildItems && values.isExpanded\n )}\n data-has-child-items={values.hasChildItems || undefined}\n data-level={values.level}\n data-selected={aria.isSelected || undefined}\n data-disabled={aria.isDisabled || undefined}\n data-hovered={hover.isHovered || undefined}\n data-focused={aria.isFocused || undefined}\n data-focus-visible={focus.isFocusVisible || undefined}\n data-focus-visible-within={within.isFocusVisible || undefined}\n data-pressed={aria.isPressed || undefined}\n data-allows-dragging={!!dnd.dragState || undefined}\n data-dragging={values.isDragging ?? undefined}\n data-drop-target={drop?.isDropTarget ?? undefined}\n data-selection-mode={\n state.selectionManager.selectionMode === \"none\"\n ? undefined\n : state.selectionManager.selectionMode\n }\n >\n <div {...aria.gridCellProps} style={{ display: \"contents\" }}>\n <CheckboxContext\n value={{\n slots: {\n [DEFAULT_SLOT]: {},\n get selection() {\n return checkbox.checkboxProps;\n },\n },\n }}\n >\n <CheckboxFieldContext\n value={{\n slots: {\n [DEFAULT_SLOT]: {},\n get selection() {\n return checkbox.checkboxProps;\n },\n },\n }}\n >\n <ButtonContext\n value={{\n slots: {\n [DEFAULT_SLOT]: {},\n chevron: mergeProps(\n merge(() => aria.expandButtonProps ?? {}),\n {}\n ),\n drag: mergeProps(\n merge(() => drag?.dragButtonProps ?? {}),\n {\n style: { \"pointer-events\": \"none\" as const },\n }\n ),\n },\n }}\n >\n <TreeItemContentContext value={values}>\n <SelectionIndicatorContext\n value={{\n get isSelected() {\n return aria.isSelected;\n },\n }}\n >\n <TreeItemChildren state={state} itemKey={item.key} />\n </SelectionIndicatorContext>\n </TreeItemContentContext>\n </ButtonContext>\n </CheckboxFieldContext>\n </CheckboxContext>\n </div>\n </dom.div>","{props.children}","<div inert style={{ height: 0, position: \"relative\", width: 0 }}>\n <div\n ref={(element: HTMLDivElement) => {\n setSentinel(element);\n }}\n style={{ height: \"1px\", position: \"absolute\", width: \"1px\" }}\n />\n </div>","style={{ height: 0, position: \"relative\", width: 0 }}","style={{ height: \"1px\", position: \"absolute\", width: \"1px\" }}","{props.isLoading === true && (\n <dom.div {...render} role=\"row\" ref={ref}>\n <div role=\"gridcell\">{render.children}</div>\n </dom.div>\n )}","<dom.div {...render} role=\"row\" ref={ref}>\n <div role=\"gridcell\">{render.children}</div>\n </dom.div>","role=\"row\"","{render.children}","render.children","<div role=\"gridcell\">{render.children}</div>","<dom.div\n {...mergeProps(\n omit(filterDOMProps(props, { global: true }), \"id\"),\n merge(() => aria.rowGroupProps ?? {})\n )}\n render={props.render}\n class={props.class ?? \"solid2-aria-TreeSection\"}\n ref={(element: HTMLDivElement) => {\n setRef(element);\n }}\n >\n <GridListHeaderContext value={{ role: \"row\" }}>\n <GridListHeaderInnerContext value={aria.rowHeaderProps}>\n <Branch collection={state.collection} parent={item} />\n </GridListHeaderInnerContext>\n </GridListHeaderContext>\n </dom.div>","<GridListHeader\n {\n // oxlint-disable solid/reactivity -- Keep prop filtering in the renderer's lazy evaluation.\n ...omit(props, \"ref\")\n // oxlint-enable solid/reactivity\n }\n ref={(element: HTMLDivElement) => {\n assignRef(\n untrack(() => props.ref),\n element\n );\n }}\n class={props.class ?? \"solid2-aria-TreeHeader\"}\n />","{content()}","_$memo","_$mergeProps","_$applyRef","_$ssrHydrationKey","_$scope","_$escape","_$ssr","_$ssrElement","_$ssrElementAttribute","_$ssrStyleProperty","_$ssrStyleProperties"],"sources":["../../src/tree.tsx"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n/*\n * Derived from Adobe React Spectrum: packages/react-aria-components/src/Tree.tsx.\n * Modified for Solid Aria: preserve flattened tree traversal with Solid collection nodes, controlled expansion, and reactive accessibility primitives; uses Solid class props.\n * Licensed under Apache-2.0. See LICENSES/Apache-2.0.txt and NOTICE.txt at the repository root.\n */\n\nimport {\n BaseCollection,\n CollectionNode,\n LoaderNode,\n SectionNode,\n} from \"@solid2-aria/core/collections/base-collection\";\nimport {\n Collection,\n CollectionBuilder,\n createBranchComponent,\n createLeafComponent,\n} from \"@solid2-aria/core/collections/collection-builder\";\nimport { createCachedChildren } from \"@solid2-aria/core/collections/create-cached-children\";\nimport { createFocusRing } from \"@solid2-aria/core/focus/create-focus-ring\";\nimport { createGridListSection } from \"@solid2-aria/core/gridlist/create-grid-list-section\";\nimport { createGridListSelectionCheckbox } from \"@solid2-aria/core/gridlist/create-grid-list-selection-checkbox\";\nimport { createCollator } from \"@solid2-aria/core/i18n/create-collator\";\nimport { createLocale } from \"@solid2-aria/core/i18n/i18n-provider\";\nimport { createHover } from \"@solid2-aria/core/interactions/create-hover\";\nimport { ListKeyboardDelegate } from \"@solid2-aria/core/selection/list-keyboard-delegate\";\nimport { createTree } from \"@solid2-aria/core/tree/create-tree\";\nimport type { AriaTreeProps } from \"@solid2-aria/core/tree/create-tree\";\nimport { createTreeItem } from \"@solid2-aria/core/tree/create-tree-item\";\nimport type { AriaTreeItemOptions } from \"@solid2-aria/core/tree/create-tree-item\";\nimport { createLoadMoreSentinel } from \"@solid2-aria/core/utils/create-load-more-sentinel\";\nimport type { LoadMoreSentinelProps } from \"@solid2-aria/core/utils/create-load-more-sentinel\";\nimport { filterDOMProps } from \"@solid2-aria/core/utils/filter-dom-props\";\nimport { isPresent } from \"@solid2-aria/core/utils/is-present\";\nimport { mergeProps } from \"@solid2-aria/core/utils/merge-props\";\nimport { requireValue } from \"@solid2-aria/core/utils/require-value\";\nimport { getTruthyValue, isTruthy } from \"@solid2-aria/core/utils/truthy\";\nimport { createVisuallyHidden } from \"@solid2-aria/core/visually-hidden/visually-hidden\";\nimport { createTreeState } from \"@solid2-aria/stately/tree/create-tree-state\";\nimport type { TreeState } from \"@solid2-aria/stately/tree/create-tree-state\";\nimport { createControlledSignal } from \"@solid2-aria/stately/utils/create-controlled-signal\";\nimport { getNodeProps } from \"@solid2-aria/stately/utils/get-node-props\";\nimport type {\n Key,\n Node,\n LinkDOMProps,\n HoverEvents,\n PressEvents,\n MultipleSelection,\n Expandable,\n SelectionMode,\n SelectionBehavior,\n DisabledBehavior,\n} from \"@solid2-aria/types-shared\";\nimport type { GlobalDOMAttributes } from \"@solid2-aria/types-shared-web\";\nimport type { JSX } from \"@solidjs/web\";\nimport {\n merge,\n untrack,\n createSignal,\n createContext,\n useContext,\n createMemo,\n omit,\n} from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\n\nimport { ButtonContext } from \"./button\";\nimport { CheckboxContext, CheckboxFieldContext } from \"./checkbox\";\nimport {\n CollectionRendererContext,\n DefaultCollectionRenderer,\n} from \"./collection\";\nimport type {\n CollectionProps,\n ItemRenderProps,\n SectionProps,\n} from \"./collection\";\nimport { createCollectionItemDragAndDrop } from \"./collection-dnd\";\nimport type { DragAndDropHooks } from \"./create-drag-and-drop\";\nimport {\n DragAndDropContext,\n DropIndicatorContext,\n createDndPersistedKeys,\n createRenderDropIndicator,\n} from \"./drag-and-drop\";\nimport {\n GridListHeader,\n GridListHeaderContext,\n GridListHeaderInnerContext,\n RootDropIndicator,\n createCollectionDragAndDrop,\n CollectionDropIndicator,\n} from \"./grid-list\";\nimport type { GridListHeaderProps } from \"./grid-list\";\nimport { SelectionIndicatorContext } from \"./selection-indicator\";\nimport { TreeDropTargetDelegate } from \"./tree-drop-target-delegate\";\nimport {\n assignRef,\n dom,\n DEFAULT_SLOT,\n createContextProps,\n createRenderProps,\n} from \"./utils\";\nimport type {\n ChildrenOrFunction,\n ClassOrFunction,\n ContextValue,\n RenderProps,\n StyleRenderProps,\n SlotProps,\n DOMRenderProps,\n Ref,\n} from \"./utils\";\n\nclass TreeCollection<T> extends BaseCollection<T> {\n private expandedKeys = new Set<Key>();\n\n withExpandedKeys(lastExpandedKeys: Set<Key>, expandedKeys: Set<Key>) {\n const collection = this.clone();\n collection.expandedKeys = expandedKeys;\n\n // Clone ancestor section nodes so React knows to re-render since the same item won't cause a new render but a clone creating a new object with the same value will\n // Without this change, the items won't expand and collapse when virtualized inside a section\n TreeCollection.cloneAncestorSections(\n expandedKeys,\n lastExpandedKeys,\n collection\n );\n TreeCollection.cloneAncestorSections(\n lastExpandedKeys,\n expandedKeys,\n collection\n );\n\n collection.frozen = this.frozen;\n\n return collection;\n }\n\n // diff lastExpandedKeys and expandedKeys so we only clone what has changed\n private static cloneAncestorSections<T>(\n keys: Iterable<Key>,\n excludeSet: Set<Key>,\n collection: TreeCollection<T>\n ) {\n for (const key of keys) {\n if (!excludeSet.has(key)) {\n let currentKey: Key | null = key;\n\n while (isPresent(currentKey)) {\n const item: CollectionNode<T> = requireValue(\n collection.getItem(currentKey),\n \"Expected collection.getItem(currentKey)\"\n );\n\n if (item?.type === \"section\") {\n collection.keyMap.set(currentKey, item.clone());\n break;\n } else {\n currentKey = item?.parentKey ?? null;\n }\n }\n }\n }\n }\n\n override *[Symbol.iterator]() {\n const firstKey = this.getFirstKey();\n\n let node: Node<T> | null = isPresent(firstKey)\n ? this.getItem(firstKey)\n : null;\n\n while (node) {\n yield node;\n\n if (node.type === \"section\") {\n node = isPresent(node.nextKey) ? this.getItem(node.nextKey) : null;\n } else {\n // This will include both item and content nodes\n // We handle the content nodes in useCollectionRenderer and ListLayout\n const key = this.getKeyAfter(node.key);\n node = isPresent(key) ? this.getItem(key) : null;\n }\n }\n }\n\n override getLastKey() {\n // Find the deepest expanded child. We don't use collection.getLastKey() here\n // because that will return the deepest child regardless of expandedKeys.\n // Instead, start from the last top-level key and walk down.\n const key = this.lastKey;\n\n if (!isPresent(key)) {\n return null;\n }\n\n let node = requireValue(this.getItem(key), \"Expected this.getItem(key)\");\n\n while (\n isPresent(node?.lastChildKey) &&\n (node.type !== \"item\" || this.expandedKeys.has(node.key))\n ) {\n node = requireValue(\n this.getItem(node.lastChildKey),\n \"Expected this.getItem(node.lastChildKey)\"\n );\n }\n\n return node?.key;\n }\n\n override getKeyAfter(key: Key) {\n let node = requireValue(this.getItem(key), \"Expected this.getItem(key)\");\n\n if (!isTruthy(node)) {\n return null;\n }\n\n if (\n (this.expandedKeys.has(node.key) || node.type !== \"item\") &&\n isPresent(node.firstChildKey)\n ) {\n return node.firstChildKey;\n }\n\n while (isTruthy(node)) {\n if (isPresent(node.nextKey)) {\n return node.nextKey;\n }\n\n if (!isPresent(node.parentKey)) {\n return null;\n }\n\n node = requireValue(\n this.getItem(node.parentKey),\n \"Expected this.getItem(node.parentKey)\"\n );\n }\n\n return null;\n }\n\n override getKeyBefore(key: Key) {\n let node = requireValue(this.getItem(key), \"Expected this.getItem(key)\");\n\n if (!isTruthy(node)) {\n return null;\n }\n\n if (isPresent(node.prevKey)) {\n node = requireValue(\n this.getItem(node.prevKey),\n \"Expected this.getItem(node.prevKey)\"\n );\n\n // If the lastChildKey is expanded, check its lastChildKey\n while (\n Boolean(node) &&\n (node.type !== \"item\" || this.expandedKeys.has(node.key)) &&\n isPresent(node.lastChildKey)\n ) {\n node = requireValue(\n this.getItem(node.lastChildKey),\n \"Expected this.getItem(node.lastChildKey)\"\n );\n }\n\n return node?.key ?? null;\n }\n\n return node.parentKey;\n }\n\n override *getChildren(key: Key): IterableIterator<CollectionNode<T>> {\n const parent = this.getItem(key);\n\n let node = isPresent(parent?.firstChildKey)\n ? this.getItem(parent.firstChildKey)\n : null;\n\n if (parent?.type === \"section\") {\n while (node && node.key !== parent.nextKey) {\n yield node;\n const nextKey = this.getKeyAfter(node.key);\n node = isPresent(nextKey) ? this.getItem(nextKey) : null;\n }\n\n return;\n }\n\n while (node) {\n yield node;\n node = isPresent(node.nextKey) ? this.getItem(node.nextKey) : null;\n }\n }\n\n getTextValue(key: Key): string {\n const item = this.getItem(key);\n\n return item ? item.textValue : \"\";\n }\n}\n\nexport interface TreeRenderProps {\n isEmpty: boolean;\n\n isFocused: boolean;\n\n isFocusVisible: boolean;\n\n selectionMode: SelectionMode;\n\n allowsDragging: boolean;\n\n isDropTarget: boolean;\n\n state: TreeState<unknown>;\n}\n\nexport type TreeEmptyStateRenderProps = Omit<TreeRenderProps, \"isEmpty\">;\n\nexport interface TreeProps<T>\n extends\n Omit<AriaTreeProps<T>, \"children\">,\n MultipleSelection,\n CollectionProps<T>,\n StyleRenderProps<TreeRenderProps>,\n SlotProps,\n Expandable,\n GlobalDOMAttributes<HTMLDivElement> {\n class?: ClassOrFunction<TreeRenderProps>;\n\n selectionBehavior?: SelectionBehavior;\n\n renderEmptyState?: (props: TreeEmptyStateRenderProps) => JSX.Element;\n\n disabledBehavior?: DisabledBehavior;\n\n dragAndDropHooks?: DragAndDropHooks<NoInfer<T>>;\n}\n\nexport interface TreeItemRenderProps extends ItemRenderProps {\n isExpanded: boolean;\n\n hasChildItems: boolean;\n\n level: number;\n\n isFocusVisibleWithin: boolean;\n\n state: TreeState<unknown>;\n\n id: Key;\n}\n\nexport type TreeItemContentRenderProps = TreeItemRenderProps;\n\nexport interface TreeItemContentProps {\n children: ChildrenOrFunction<TreeItemContentRenderProps>;\n}\n\nexport interface TreeItemProps<T = object>\n extends\n StyleRenderProps<TreeItemRenderProps>,\n LinkDOMProps,\n HoverEvents,\n PressEvents,\n Pick<\n AriaTreeItemOptions,\n \"hasChildItems\" | \"focusMode\" | \"allowsArrowNavigation\"\n >,\n Omit<GlobalDOMAttributes<HTMLDivElement>, \"onClick\"> {\n class?: ClassOrFunction<TreeItemRenderProps>;\n\n id?: Key;\n\n value?: T;\n\n textValue: string;\n\n \"aria-label\"?: string;\n\n children: JSX.Element;\n\n isDisabled?: boolean;\n\n onAction?: () => void;\n}\n\nexport interface TreeLoadMoreItemRenderProps {\n level: number;\n}\n\nexport interface TreeLoadMoreItemProps\n extends\n Omit<LoadMoreSentinelProps, \"collection\" | \"direction\">,\n RenderProps<TreeLoadMoreItemRenderProps> {\n class?: ClassOrFunction<TreeLoadMoreItemRenderProps>;\n\n children?: ChildrenOrFunction<TreeLoadMoreItemRenderProps>;\n\n isLoading?: boolean;\n}\n\nexport interface TreeSectionProps<T>\n extends SectionProps<T>, DOMRenderProps<\"div\", undefined> {}\n\nexport type TreeHeaderProps = GridListHeaderProps;\n\nexport const TreeContext =\n // oxlint-disable-next-line typescript/no-explicit-any -- The collection owner and its descendants share one item type through this context.\n createContext<ContextValue<TreeProps<any>, HTMLDivElement>>(null);\n\n// oxlint-disable-next-line typescript/no-explicit-any -- The collection owner and its descendants share one item type through this context.\nexport const TreeStateContext = createContext<TreeState<any> | null>(null);\n\nexport const TreeItemContentContext =\n createContext<TreeItemContentRenderProps | null>(null);\n\nexport function Tree<T>(input: TreeProps<T> & { ref?: Ref<HTMLDivElement> }) {\n const [props, ref, setRef] = createContextProps(\n input,\n untrack(() => input.ref),\n TreeContext\n );\n\n return (\n <CollectionBuilder\n createCollection={() => new TreeCollection<T>()}\n content={<Collection {...props} />}\n >\n {(collection) => (\n <TreeInner\n props={props}\n collection={collection}\n elementRef={ref}\n setElementRef={(element: HTMLDivElement) => {\n setRef(element);\n }}\n />\n )}\n </CollectionBuilder>\n );\n}\n\nfunction TreeInner<T>(outer: {\n props: TreeProps<T>;\n collection: TreeCollection<T>;\n elementRef: Accessor<HTMLDivElement | null>;\n setElementRef: (element: HTMLDivElement) => void;\n}) {\n const { props } = untrack(() => outer);\n const renderer = useContext(CollectionRendererContext);\n\n const [expanded, setExpanded] = createControlledSignal(\n () => (props.expandedKeys ? new Set(props.expandedKeys) : undefined),\n untrack(() => new Set(props.defaultExpandedKeys)),\n (keys) => {\n props.onExpandedChange?.(keys);\n }\n );\n\n const collection = createMemo(() =>\n outer.collection.withExpandedKeys(new Set(), expanded())\n );\n\n // oxlint-disable-next-line typescript/no-explicit-any -- The public collection accepts primitive items; this state adapter only reads their keyed nodes.\n const state = createTreeState<any>(\n mergeProps(props, {\n get collection() {\n return collection();\n },\n get expandedKeys() {\n return expanded();\n },\n onExpandedChange: setExpanded,\n })\n );\n\n const locale = createLocale();\n const collator = createCollator({ sensitivity: \"base\", usage: \"search\" });\n\n const delegate = createMemo(\n () =>\n new ListKeyboardDelegate({\n collator,\n get collection() {\n return state.collection;\n },\n get disabledBehavior() {\n return state.selectionManager.disabledBehavior;\n },\n get disabledKeys() {\n return state.disabledKeys;\n },\n layoutDelegate: renderer.layoutDelegate,\n ref: outer.elementRef,\n })\n );\n\n const aria = createTree(\n mergeProps(props, {\n get isVirtualized() {\n return renderer.isVirtualized;\n },\n get keyboardDelegate() {\n return delegate();\n },\n }),\n state,\n untrack(() => outer.elementRef)\n );\n\n const treeDelegate = new TreeDropTargetDelegate<T>();\n\n const hooks = untrack(() => props.dragAndDropHooks);\n\n if (hooks?.createDroppableCollectionState) {\n treeDelegate.setup(\n hooks.dropTargetDelegate ??\n renderer.dropTargetDelegate ??\n new hooks.ListDropTargetDelegate(\n {\n [Symbol.iterator]() {\n return state.collection[Symbol.iterator]();\n },\n },\n untrack(() => outer.elementRef)\n ),\n state,\n locale.direction\n );\n }\n\n const dnd = createCollectionDragAndDrop({\n get collection() {\n return state.collection;\n },\n dropTargetDelegate: treeDelegate,\n get hooks() {\n return props.dragAndDropHooks;\n },\n get keyboardDelegate() {\n return delegate();\n },\n onDropActivate: (event) => {\n if (event.target.type === \"item\") {\n const { key } = event.target;\n const item = state.collection.getItem(key);\n\n const expandable =\n isTruthy(getNodeProps(item).hasChildItems) ||\n [...(state.collection.getChildren?.(key) ?? [])].some(\n (child) => child.type === \"item\"\n );\n\n if (\n expandable &&\n (!state.expandedKeys.has(key) ||\n props.dragAndDropHooks?.isVirtualDragging?.() === true)\n ) {\n state.toggleKey(key);\n }\n }\n },\n onKeyDown: (event) => {\n const target = dnd.dropState?.target;\n\n if (target?.type !== \"item\" || target.dropPosition !== \"on\") {\n return;\n }\n\n const isExpanded = state.expandedKeys.has(target.key);\n\n if (\n (event.key ===\n (locale.direction === \"rtl\" ? \"ArrowLeft\" : \"ArrowRight\") &&\n !isExpanded) ||\n (event.key ===\n (locale.direction === \"rtl\" ? \"ArrowRight\" : \"ArrowLeft\") &&\n isExpanded)\n ) {\n state.toggleKey(target.key);\n }\n },\n get ref() {\n return outer.elementRef;\n },\n get selectionManager() {\n return state.selectionManager;\n },\n });\n\n const focus = createFocusRing();\n\n const values: TreeRenderProps = {\n get allowsDragging() {\n return !!dnd.dragState;\n },\n get isDropTarget() {\n return dnd.dropState?.isDropTarget({ type: \"root\" }) === true;\n },\n get isEmpty() {\n return ![...state.collection].some((node) => node.type === \"item\");\n },\n get isFocusVisible() {\n return focus.isFocusVisible;\n },\n get isFocused() {\n return focus.isFocused;\n },\n get selectionMode() {\n return state.selectionManager.selectionMode;\n },\n state,\n };\n\n const render = createRenderProps(\n mergeProps(props, {\n children: undefined,\n defaultClass: \"solid2-aria-Tree\",\n values,\n })\n );\n\n const Root = renderer.CollectionRoot;\n\n return (\n <dom.div\n {...mergeProps(\n filterDOMProps(props, { global: true }),\n render,\n merge(() => aria.gridProps ?? {}),\n merge(() => focus.focusProps ?? {}),\n merge(() => dnd.collectionProps ?? {})\n )}\n ref={(element: HTMLDivElement) => {\n outer.setElementRef(element);\n }}\n slot={props.slot ?? undefined}\n data-empty={values.isEmpty || undefined}\n data-focused={focus.isFocused || undefined}\n data-focus-visible={focus.isFocusVisible || undefined}\n data-drop-target={values.isDropTarget || undefined}\n >\n <TreeStateContext value={state}>\n <DragAndDropContext value={dnd}>\n <DropIndicatorContext\n value={{\n render: (indicatorProps, ref) => (\n <CollectionDropIndicator {...indicatorProps} ref={ref} />\n ),\n }}\n >\n {dnd.dropState && <RootDropIndicator />}\n <Root\n collection={state.collection}\n scrollRef={outer.elementRef}\n persistedKeys={createDndPersistedKeys(\n state.selectionManager,\n props.dragAndDropHooks,\n dnd.dropState\n )}\n renderDropIndicator={createRenderDropIndicator(\n props.dragAndDropHooks,\n dnd.dropState\n )}\n />\n </DropIndicatorContext>\n </DragAndDropContext>\n </TreeStateContext>\n {values.isEmpty && props.renderEmptyState && (\n <div role=\"row\">\n <div role=\"gridcell\">{props.renderEmptyState(values)}</div>\n </div>\n )}\n {dnd.preview}\n </dom.div>\n );\n}\n\nclass TreeContentNode extends CollectionNode<unknown> {\n static override readonly type = \"content\";\n}\n\nclass TreeItemNode extends CollectionNode<unknown> {\n static override readonly type = \"item\";\n}\n\nexport const TreeItemContent = createLeafComponent(\n TreeContentNode,\n (props: TreeItemContentProps) => {\n const values = useContext(TreeItemContentContext);\n\n if (!values) {\n throw new Error(\"TreeItemContent must be rendered within TreeItem.\");\n }\n\n const render = createRenderProps(mergeProps(props, { values }));\n\n return (\n <CollectionRendererContext value={DefaultCollectionRenderer}>\n {render.children}\n </CollectionRendererContext>\n );\n }\n);\n\nexport const TreeItem = createBranchComponent(\n TreeItemNode,\n <T,>(\n props: TreeItemProps<T>,\n forwardedRef: Ref<HTMLDivElement>,\n item: Node<T>\n ) => {\n const state = requireValue(\n useContext(TreeStateContext),\n \"Expected useContext(TreeStateContext)\"\n );\n\n const dnd = useContext(DragAndDropContext);\n\n const [ref, setRef] = createSignal<HTMLDivElement | null>(null, {\n ownedWrite: true,\n });\n\n const aria = createTreeItem(\n {\n get allowsArrowNavigation() {\n return props.allowsArrowNavigation;\n },\n get focusMode() {\n return props.focusMode;\n },\n get hasChildItems() {\n return props.hasChildItems;\n },\n node: item,\n shouldSelectOnPressUp: !!dnd.dragState,\n },\n state,\n ref\n );\n\n const hover = createHover(\n mergeProps(props, {\n get isDisabled() {\n return !aria.allowsSelection && !aria.hasAction && !dnd.dragState;\n },\n })\n );\n\n const focus = createFocusRing();\n const within = createFocusRing({ within: true });\n const checkbox = createGridListSelectionCheckbox({ key: item.key }, state);\n\n const [dropRef, setDropRef] = createSignal<HTMLDivElement | null>(null, {\n ownedWrite: true,\n });\n\n const [activateRef, setActivateRef] = createSignal<HTMLDivElement | null>(\n null,\n { ownedWrite: true }\n );\n\n const { drag, drop } = createCollectionItemDragAndDrop(\n dnd,\n item.key,\n dropRef,\n activateRef\n );\n\n const values: TreeItemRenderProps = {\n get allowsDragging() {\n return !!dnd.dragState;\n },\n get hasChildItems() {\n return (\n props.hasChildItems === true ||\n [...(state.collection.getChildren?.(item.key) ?? [])].some(\n (node) => node.type === \"item\"\n )\n );\n },\n id: item.key,\n get isDisabled() {\n return aria.isDisabled;\n },\n get isDragging() {\n return dnd.dragState?.isDragging(item.key) === true;\n },\n get isDropTarget() {\n return drop?.isDropTarget === true;\n },\n get isExpanded() {\n return state.expandedKeys.has(item.key);\n },\n get isFocusVisible() {\n return focus.isFocusVisible;\n },\n get isFocusVisibleWithin() {\n return within.isFocusVisible;\n },\n get isFocused() {\n return aria.isFocused;\n },\n get isHovered() {\n return hover.isHovered;\n },\n get isPressed() {\n return aria.isPressed;\n },\n get isSelected() {\n return aria.isSelected;\n },\n get level() {\n return Number(aria.rowProps[\"aria-level\"] ?? 1);\n },\n get selectionBehavior() {\n return state.selectionManager.selectionBehavior;\n },\n get selectionMode() {\n return state.selectionManager.selectionMode;\n },\n state,\n };\n\n const render = createRenderProps(\n mergeProps(props, {\n children: undefined,\n defaultClass: \"solid2-aria-TreeItem\",\n values,\n })\n );\n\n const hidden = createVisuallyHidden();\n\n return (\n <>\n {drop && !drop.isHidden && (\n <div role=\"row\" style={{ position: \"absolute\" }}>\n <div role=\"gridcell\">\n <div\n {...mergeProps(\n merge(() => hidden.visuallyHiddenProps ?? {}),\n merge(() => drop.dropIndicatorProps ?? {})\n )}\n role=\"button\"\n ref={(element: HTMLDivElement) => {\n setDropRef(element);\n }}\n />\n {values.hasChildItems && (\n <div\n {...mergeProps(\n merge(() => hidden.visuallyHiddenProps ?? {}),\n merge(() => aria.expandButtonProps ?? {})\n )}\n role=\"button\"\n tabindex={-1}\n ref={(element: HTMLDivElement) => {\n setActivateRef(element);\n }}\n />\n )}\n </div>\n </div>\n )}\n <dom.div\n {...mergeProps(\n omit(filterDOMProps(props, { global: true }), \"id\", \"onClick\"),\n render,\n merge(() => aria.rowProps ?? {}),\n merge(() => focus.focusProps ?? {}),\n merge(() => within.focusProps ?? {}),\n merge(() => hover.hoverProps ?? {}),\n merge(() => drag?.dragProps ?? {})\n )}\n ref={(element: HTMLDivElement) => {\n setRef(element);\n }}\n data-expanded={getTruthyValue(\n values.hasChildItems && values.isExpanded\n )}\n data-has-child-items={values.hasChildItems || undefined}\n data-level={values.level}\n data-selected={aria.isSelected || undefined}\n data-disabled={aria.isDisabled || undefined}\n data-hovered={hover.isHovered || undefined}\n data-focused={aria.isFocused || undefined}\n data-focus-visible={focus.isFocusVisible || undefined}\n data-focus-visible-within={within.isFocusVisible || undefined}\n data-pressed={aria.isPressed || undefined}\n data-allows-dragging={!!dnd.dragState || undefined}\n data-dragging={values.isDragging ?? undefined}\n data-drop-target={drop?.isDropTarget ?? undefined}\n data-selection-mode={\n state.selectionManager.selectionMode === \"none\"\n ? undefined\n : state.selectionManager.selectionMode\n }\n >\n <div {...aria.gridCellProps} style={{ display: \"contents\" }}>\n <CheckboxContext\n value={{\n slots: {\n [DEFAULT_SLOT]: {},\n get selection() {\n return checkbox.checkboxProps;\n },\n },\n }}\n >\n <CheckboxFieldContext\n value={{\n slots: {\n [DEFAULT_SLOT]: {},\n get selection() {\n return checkbox.checkboxProps;\n },\n },\n }}\n >\n <ButtonContext\n value={{\n slots: {\n [DEFAULT_SLOT]: {},\n chevron: mergeProps(\n merge(() => aria.expandButtonProps ?? {}),\n {}\n ),\n drag: mergeProps(\n merge(() => drag?.dragButtonProps ?? {}),\n {\n style: { \"pointer-events\": \"none\" as const },\n }\n ),\n },\n }}\n >\n <TreeItemContentContext value={values}>\n <SelectionIndicatorContext\n value={{\n get isSelected() {\n return aria.isSelected;\n },\n }}\n >\n <TreeItemChildren state={state} itemKey={item.key} />\n </SelectionIndicatorContext>\n </TreeItemContentContext>\n </ButtonContext>\n </CheckboxFieldContext>\n </CheckboxContext>\n </div>\n </dom.div>\n </>\n );\n },\n (props) => <>{props.children}</>\n);\n\nexport const TreeLoadMoreItem = createLeafComponent(\n LoaderNode,\n (\n props: TreeLoadMoreItemProps,\n ref: Ref<HTMLDivElement>,\n item: Node<unknown>\n ) => {\n const state = requireValue(\n useContext(TreeStateContext),\n \"Expected useContext(TreeStateContext)\"\n );\n\n const [sentinel, setSentinel] = createSignal<HTMLDivElement | null>(null, {\n ownedWrite: true,\n });\n\n createLoadMoreSentinel(\n mergeProps(props, {\n get collection() {\n return state.collection;\n },\n }),\n sentinel\n );\n\n const render = createRenderProps(\n mergeProps(props, {\n get children() {\n return item.rendered;\n },\n defaultClass: \"solid2-aria-TreeLoadingIndicator\",\n values: { level: item.level + 1 },\n })\n );\n\n return (\n <>\n <div inert style={{ height: 0, position: \"relative\", width: 0 }}>\n <div\n ref={(element: HTMLDivElement) => {\n setSentinel(element);\n }}\n style={{ height: \"1px\", position: \"absolute\", width: \"1px\" }}\n />\n </div>\n {props.isLoading === true && (\n <dom.div {...render} role=\"row\" ref={ref}>\n <div role=\"gridcell\">{render.children}</div>\n </dom.div>\n )}\n </>\n );\n }\n);\n\nexport const TreeSection = createBranchComponent(\n SectionNode,\n <T,>(\n props: TreeSectionProps<T>,\n forwardedRef: Ref<HTMLDivElement>,\n item: Node<T>\n ) => {\n const state = requireValue(\n useContext(TreeStateContext),\n \"Expected useContext(TreeStateContext)\"\n );\n\n const renderer = useContext(CollectionRendererContext);\n const Branch = renderer.CollectionBranch;\n\n const [ref, setRef] = createSignal<HTMLDivElement | null>(null, {\n ownedWrite: true,\n });\n\n const aria = createGridListSection(props, state, ref);\n\n return (\n <dom.div\n {...mergeProps(\n omit(filterDOMProps(props, { global: true }), \"id\"),\n merge(() => aria.rowGroupProps ?? {})\n )}\n render={props.render}\n class={props.class ?? \"solid2-aria-TreeSection\"}\n ref={(element: HTMLDivElement) => {\n setRef(element);\n }}\n >\n <GridListHeaderContext value={{ role: \"row\" }}>\n <GridListHeaderInnerContext value={aria.rowHeaderProps}>\n <Branch collection={state.collection} parent={item} />\n </GridListHeaderInnerContext>\n </GridListHeaderContext>\n </dom.div>\n );\n }\n);\n\nexport function TreeHeader(\n props: TreeHeaderProps & { ref?: Ref<HTMLDivElement> }\n) {\n return (\n <GridListHeader\n {\n // oxlint-disable solid/reactivity -- Keep prop filtering in the renderer's lazy evaluation.\n ...omit(props, \"ref\")\n // oxlint-enable solid/reactivity\n }\n ref={(element: HTMLDivElement) => {\n assignRef(\n untrack(() => props.ref),\n element\n );\n }}\n class={props.class ?? \"solid2-aria-TreeHeader\"}\n />\n );\n}\n\nfunction TreeItemChildren(props: { state: TreeState<unknown>; itemKey: Key }) {\n const content = createCachedChildren({\n children: (node: Node<unknown>) =>\n node.type === \"content\" ? (node.render?.(node) ?? node.rendered) : null,\n get items() {\n return props.state.collection.getChildren?.(props.itemKey);\n },\n });\n\n return <>{content()}</>;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
/*
|
|
13
|
+
* Derived from Adobe React Spectrum: packages/react-aria-components/src/utils.tsx.
|
|
14
|
+
* Modified for Solid Aria: adapted components, contexts, refs, and reactive properties for Solid 2; uses Solid class props.
|
|
15
|
+
* Licensed under Apache-2.0. See LICENSES/Apache-2.0.txt and NOTICE.txt at the repository root.
|
|
16
|
+
*/
|
|
17
|
+
import { mergeProps } from "@solid2-aria/core/utils/merge-props";
|
|
18
|
+
import { createMemo, createSignal, merge, omit, onCleanup, onSettled, untrack, useContext } from "solid-js";
|
|
19
|
+
import { dynamic, memo, mergeProps as mergeProps$1 } from "@solidjs/web";
|
|
20
|
+
import { requireValue } from "@solid2-aria/core/utils/require-value";
|
|
21
|
+
// src/utils.tsx
|
|
22
|
+
var _m$ = Symbol();
|
|
23
|
+
var _d$ = {
|
|
24
|
+
get() {
|
|
25
|
+
return this[_m$].children;
|
|
26
|
+
},
|
|
27
|
+
enumerable: true,
|
|
28
|
+
configurable: true
|
|
29
|
+
};
|
|
30
|
+
function _P$(_p) {
|
|
31
|
+
this[_m$] = _p;
|
|
32
|
+
Object.defineProperty(this, "children", _d$);
|
|
33
|
+
}
|
|
34
|
+
_P$.prototype = Object.prototype;
|
|
35
|
+
function assignRef(ref, element) {
|
|
36
|
+
if (element === null) return;
|
|
37
|
+
if (Array.isArray(ref)) for (const callback of ref) assignRef(callback, element);
|
|
38
|
+
else if (typeof ref === "function") ref(element);
|
|
39
|
+
}
|
|
40
|
+
const DEFAULT_SLOT = Symbol("default");
|
|
41
|
+
function createSlottedContext(context, slot) {
|
|
42
|
+
const value = useContext(context);
|
|
43
|
+
if (slot === null) return null;
|
|
44
|
+
const slots = untrack(() => value !== null && value !== void 0 && typeof value === "object" && "slots" in value ? value.slots : void 0);
|
|
45
|
+
if (slots) {
|
|
46
|
+
const key = typeof slot === "string" && slot.length > 0 ? slot : DEFAULT_SLOT;
|
|
47
|
+
if (!(key in slots)) throw new Error(`${typeof slot === "string" && slot.length > 0 ? `Invalid slot "${slot}".` : "A slot prop is required."} Valid slot names are ${Object.keys(slots).join(", ")}.`);
|
|
48
|
+
const current = untrack(() => slots[key]);
|
|
49
|
+
if (current !== null && current !== void 0 && typeof current === "object") {
|
|
50
|
+
const read = () => {
|
|
51
|
+
const next = slots[key];
|
|
52
|
+
return next !== null && next !== void 0 && typeof next === "object" ? next : {};
|
|
53
|
+
};
|
|
54
|
+
return merge(read);
|
|
55
|
+
}
|
|
56
|
+
return current;
|
|
57
|
+
}
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
function createContextProps(props, ref, context) {
|
|
61
|
+
const ctx = createSlottedContext(context, untrack(() => "slot" in props && (typeof props.slot === "string" || props.slot === null || props.slot === false) ? props.slot : void 0));
|
|
62
|
+
const merged = mergeProps(ctx ? omit(ctx, "ref", "registerSlot") : {}, props);
|
|
63
|
+
const slotRef = untrack(() => ctx?.registerSlot)?.();
|
|
64
|
+
const contextRef = untrack(() => ctx?.ref);
|
|
65
|
+
const [element, setElement] = createSignal(null, { ownedWrite: true });
|
|
66
|
+
const attach = (node) => {
|
|
67
|
+
setElement(() => node);
|
|
68
|
+
assignRef(ref, node);
|
|
69
|
+
assignRef(contextRef, node);
|
|
70
|
+
assignRef(slotRef, node);
|
|
71
|
+
};
|
|
72
|
+
return [
|
|
73
|
+
merged,
|
|
74
|
+
element,
|
|
75
|
+
attach
|
|
76
|
+
];
|
|
77
|
+
}
|
|
78
|
+
function createRenderProps(props) {
|
|
79
|
+
const classValue = createMemo(() => {
|
|
80
|
+
const value = props.class;
|
|
81
|
+
return (typeof value === "function" ? value({
|
|
82
|
+
...props.values,
|
|
83
|
+
defaultClass: props.defaultClass
|
|
84
|
+
}) : value) ?? props.defaultClass;
|
|
85
|
+
});
|
|
86
|
+
const style = createMemo(() => {
|
|
87
|
+
const value = typeof props.style === "function" ? props.style({
|
|
88
|
+
...props.values,
|
|
89
|
+
defaultStyle: props.defaultStyle ?? {}
|
|
90
|
+
}) : props.style;
|
|
91
|
+
if (typeof value === "string" || value === false) return value;
|
|
92
|
+
return value !== void 0 || props.defaultStyle !== void 0 ? {
|
|
93
|
+
...props.defaultStyle,
|
|
94
|
+
...value
|
|
95
|
+
} : void 0;
|
|
96
|
+
});
|
|
97
|
+
const readContent = () => {
|
|
98
|
+
const child = props.children;
|
|
99
|
+
if (typeof child === "function") {
|
|
100
|
+
if (child.length === 0) return untrack(() => child({
|
|
101
|
+
...props.values,
|
|
102
|
+
defaultChildren: props.defaultChildren
|
|
103
|
+
}));
|
|
104
|
+
return child(mergeProps(typeof props.values === "object" && props.values !== null ? props.values : {}, { get defaultChildren() {
|
|
105
|
+
return props.defaultChildren;
|
|
106
|
+
} }));
|
|
107
|
+
}
|
|
108
|
+
return child ?? props.defaultChildren;
|
|
109
|
+
};
|
|
110
|
+
return {
|
|
111
|
+
get children() {
|
|
112
|
+
return readContent();
|
|
113
|
+
},
|
|
114
|
+
get class() {
|
|
115
|
+
return classValue();
|
|
116
|
+
},
|
|
117
|
+
"data-rac": "",
|
|
118
|
+
get render() {
|
|
119
|
+
return props.render ? (domProps) => requireValue(props.render, "Expected props.render")(domProps, props.values) : void 0;
|
|
120
|
+
},
|
|
121
|
+
get style() {
|
|
122
|
+
return style();
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function composeRenderProps(value, wrap) {
|
|
127
|
+
return (values) => {
|
|
128
|
+
if (typeof value !== "function") return wrap(value, values);
|
|
129
|
+
return wrap(value(values), values);
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function createSlot(initial = true) {
|
|
133
|
+
const [present, setPresent] = createSignal(untrack(() => typeof initial === "function" ? initial() : initial), { ownedWrite: true });
|
|
134
|
+
const elements = /* @__PURE__ */ new Set();
|
|
135
|
+
const register = () => {
|
|
136
|
+
let current;
|
|
137
|
+
onCleanup(() => {
|
|
138
|
+
if (current) elements.delete(current);
|
|
139
|
+
setPresent(elements.size > 0);
|
|
140
|
+
});
|
|
141
|
+
return (element) => {
|
|
142
|
+
if (current) elements.delete(current);
|
|
143
|
+
current = element;
|
|
144
|
+
elements.add(element);
|
|
145
|
+
setPresent(true);
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
onSettled(() => {
|
|
149
|
+
if (elements.size === 0) setPresent(false);
|
|
150
|
+
});
|
|
151
|
+
return [register, present];
|
|
152
|
+
}
|
|
153
|
+
function removeDataAttributes(props) {
|
|
154
|
+
return omit(props, (key) => typeof key === "string" && key.startsWith("data-"));
|
|
155
|
+
}
|
|
156
|
+
const cache = /* @__PURE__ */ new Map();
|
|
157
|
+
const dom = new Proxy({}, { get(_target, key) {
|
|
158
|
+
if (typeof key !== "string") return;
|
|
159
|
+
let component = cache.get(key);
|
|
160
|
+
if (!component) {
|
|
161
|
+
const tag = key;
|
|
162
|
+
const NativeElement = dynamic(() => tag, { static: true });
|
|
163
|
+
component = (props) => {
|
|
164
|
+
const ref = untrack(() => props.ref);
|
|
165
|
+
const forwarded = mergeProps(omit(props, "render", "ref"), { ref(element) {
|
|
166
|
+
assignRef(ref, element);
|
|
167
|
+
} });
|
|
168
|
+
const render = untrack(() => props.render);
|
|
169
|
+
return render ? memo(() => {
|
|
170
|
+
return render(forwarded);
|
|
171
|
+
}) : NativeElement(mergeProps$1(() => {
|
|
172
|
+
return omit(forwarded, "children");
|
|
173
|
+
}, new _P$(forwarded)));
|
|
174
|
+
};
|
|
175
|
+
cache.set(key, component);
|
|
176
|
+
}
|
|
177
|
+
return component;
|
|
178
|
+
} });
|
|
179
|
+
function domElement(tag) {
|
|
180
|
+
return dom[tag];
|
|
181
|
+
}
|
|
182
|
+
export { DEFAULT_SLOT, assignRef, composeRenderProps, createContextProps, createRenderProps, createSlot, createSlottedContext, dom, domElement, removeDataAttributes };
|
|
183
|
+
|
|
184
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","names":["{render(forwarded)}","<NativeElement\n {\n // oxlint-disable solid/reactivity -- Keep prop filtering in the renderer's lazy evaluation.\n ...omit(forwarded, \"children\")\n // oxlint-enable solid/reactivity\n }\n >\n {forwarded.children}\n </NativeElement>","render","_$memo","_$mergeProps"],"sources":["../../src/utils.tsx"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n/*\n * Derived from Adobe React Spectrum: packages/react-aria-components/src/utils.tsx.\n * Modified for Solid Aria: adapted components, contexts, refs, and reactive properties for Solid 2; uses Solid class props.\n * Licensed under Apache-2.0. See LICENSES/Apache-2.0.txt and NOTICE.txt at the repository root.\n */\n\nimport type { CSSProperties } from \"@solid2-aria/core/types\";\nimport { mergeProps } from \"@solid2-aria/core/utils/merge-props\";\nimport { requireValue } from \"@solid2-aria/core/utils/require-value\";\nimport { dynamic } from \"@solidjs/web\";\nimport type { JSX } from \"@solidjs/web\";\nimport {\n merge,\n createSignal,\n createMemo,\n omit,\n onSettled,\n onCleanup,\n useContext,\n untrack,\n} from \"solid-js\";\nimport type { Context, Accessor } from \"solid-js\";\n\nexport type Ref<T extends Element> = JSX.Ref<T>;\n\nexport function assignRef<T extends Element>(\n ref: Ref<T>,\n element: NoInfer<T> | null\n): void {\n if (element === null) {\n return;\n }\n\n if (Array.isArray(ref)) {\n for (const callback of ref) {\n assignRef(callback, element);\n }\n } else if (typeof ref === \"function\") {\n ref(element);\n }\n}\n\nexport const DEFAULT_SLOT = Symbol(\"default\");\n\nexport type WithRef<T, E extends Element> = T & {\n ref?: Ref<E>;\n registerSlot?: () => JSX.RefCallback<Element>;\n};\n\nexport interface SlotProps {\n slot?: string | null | false;\n}\n\nexport type SlottedContextValue<T> =\n | T\n | { slots?: Record<string | symbol, T> }\n | null\n | undefined;\n\nexport type ContextValue<T, E extends Element> = SlottedContextValue<\n WithRef<T, E>\n>;\n\nexport type ClassOrFunction<T> =\n | JSX.ClassValue\n | ((values: T & { defaultClass: string | undefined }) => JSX.ClassValue);\n\nexport type StyleOrFunction<T> =\n | CSSProperties\n | string\n | false\n | ((\n values: T & { defaultStyle: CSSProperties }\n ) => CSSProperties | undefined);\n\nexport type ChildrenOrFunction<T> =\n | JSX.Element\n | ((values: T & { defaultChildren: JSX.Element | undefined }) => JSX.Element);\n\nexport type DOMRenderFunction<E extends keyof JSX.IntrinsicElements, T> = (\n props: JSX.IntrinsicElements[E],\n values: T\n) => JSX.Element;\n\nexport interface DOMRenderProps<E extends keyof JSX.IntrinsicElements, T> {\n render?: DOMRenderFunction<E, T>;\n}\n\nexport interface PossibleLinkDOMRenderProps<\n E extends keyof JSX.IntrinsicElements,\n T,\n> {\n render?: (\n props: JSX.IntrinsicElements[E] | JSX.IntrinsicElements[\"a\"],\n values: T\n ) => JSX.Element;\n}\n\nexport interface StyleProps {\n class?: JSX.ClassValue;\n style?: CSSProperties;\n}\n\nexport interface DOMProps extends StyleProps {\n id?: string;\n children?: JSX.Element;\n ref?: Ref<HTMLElement>;\n}\n\nexport interface StyleRenderProps<\n T,\n E extends keyof JSX.IntrinsicElements = \"div\",\n> extends DOMRenderProps<E, T> {\n class?: ClassOrFunction<T>;\n style?: StyleOrFunction<T>;\n}\n\nexport interface RenderProps<\n T,\n E extends keyof JSX.IntrinsicElements = \"div\",\n> extends StyleRenderProps<T, E> {\n children?: ChildrenOrFunction<T>;\n}\n\nexport interface RACValidation {\n validationBehavior?: \"native\" | \"aria\";\n}\n\nexport function createSlottedContext<T>(\n context: Context<SlottedContextValue<T>>,\n slot?: string | null | false\n): T | null | undefined {\n const value = useContext(context);\n\n if (slot === null) {\n return null;\n }\n\n const slots = untrack(() =>\n value !== null &&\n value !== undefined &&\n typeof value === \"object\" &&\n \"slots\" in value\n ? value.slots\n : undefined\n );\n\n if (slots) {\n const key =\n typeof slot === \"string\" && slot.length > 0 ? slot : DEFAULT_SLOT;\n\n if (!(key in slots)) {\n throw new Error(\n `${typeof slot === \"string\" && slot.length > 0 ? `Invalid slot \"${slot}\".` : \"A slot prop is required.\"} Valid slot names are ${Object.keys(slots).join(\", \")}.`\n );\n }\n\n const current = untrack(() => slots[key]);\n\n if (\n current !== null &&\n current !== undefined &&\n typeof current === \"object\"\n ) {\n const read = (): object => {\n const next = slots[key];\n\n return next !== null && next !== undefined && typeof next === \"object\"\n ? next\n : {};\n };\n\n // SAFETY: Every value at this stable slot key has the context's T shape.\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- Native merge preserves the slot object properties through lazy reads.\n return merge(read) as T;\n }\n\n return current;\n }\n\n // SAFETY: Slotted values were resolved above; the remaining value is the context's T fallback.\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- Optional slots are structurally indistinguishable from a plain T value.\n return value as T | null | undefined;\n}\n\nexport function createContextProps<\n T extends object,\n U extends object,\n C extends Element,\n E extends C = C,\n>(\n props: T,\n ref: Ref<E>,\n context: Context<ContextValue<U, C>>\n): [T, Accessor<E | null>, (element: E | null) => void] {\n const slot = untrack(() =>\n \"slot\" in props &&\n (typeof props.slot === \"string\" ||\n props.slot === null ||\n props.slot === false)\n ? props.slot\n : undefined\n );\n\n const ctx = createSlottedContext(context, slot);\n\n const merged = mergeProps(\n ctx\n ? // oxlint-disable solid/reactivity -- Keep prop filtering in the renderer's lazy evaluation.\n omit(ctx, \"ref\", \"registerSlot\")\n : // oxlint-enable solid/reactivity\n {},\n props\n );\n\n const registerSlot = untrack(() => ctx?.registerSlot);\n const slotRef = registerSlot?.();\n const contextRef = untrack(() => ctx?.ref);\n\n const [element, setElement] = createSignal<E | null>(null, {\n ownedWrite: true,\n });\n\n const attach = (node: E | null) => {\n setElement(() => node);\n assignRef(ref, node);\n assignRef(contextRef, node);\n assignRef(slotRef, node);\n };\n\n // SAFETY: Local props provide T's required fields and override contextual defaults.\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- mergeProps preserves all required local prop keys.\n return [merged as T, element, attach];\n}\n\nexport interface ResolvedRenderProps<\n E extends keyof JSX.IntrinsicElements = \"div\",\n> {\n children: JSX.Element;\n class: JSX.ClassValue;\n \"data-rac\": string;\n render: ((props: JSX.IntrinsicElements[E]) => JSX.Element) | undefined;\n style: CSSProperties | string | false | undefined;\n}\n\nexport function createRenderProps<\n T,\n E extends keyof JSX.IntrinsicElements = \"div\",\n>(\n props: RenderProps<T, E> & {\n values: T;\n defaultChildren?: JSX.Element;\n defaultClass?: string;\n defaultStyle?: CSSProperties;\n }\n): ResolvedRenderProps<E> {\n const classValue = createMemo(() => {\n const value = props.class;\n\n return (\n (typeof value === \"function\"\n ? value({ ...props.values, defaultClass: props.defaultClass })\n : value) ?? props.defaultClass\n );\n });\n\n const style = createMemo(() => {\n const value =\n typeof props.style === \"function\"\n ? props.style({\n ...props.values,\n defaultStyle: props.defaultStyle ?? {},\n })\n : props.style;\n\n if (typeof value === \"string\" || value === false) {\n return value;\n }\n\n return value !== undefined || props.defaultStyle !== undefined\n ? { ...props.defaultStyle, ...value }\n : undefined;\n });\n\n const readContent = (): JSX.Element => {\n const child = props.children;\n\n if (typeof child === \"function\") {\n if (child.length === 0) {\n return untrack(() =>\n child({ ...props.values, defaultChildren: props.defaultChildren })\n );\n }\n\n // SAFETY: Render state is the owner's T value; mergeProps adds only the lazy defaultChildren property.\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- Generic state and its lazy default are combined at the render callback boundary.\n const values = mergeProps(\n typeof props.values === \"object\" && props.values !== null\n ? props.values\n : {},\n {\n get defaultChildren() {\n return props.defaultChildren;\n },\n }\n ) as T & { defaultChildren: JSX.Element | undefined };\n\n return child(values);\n }\n\n return child ?? props.defaultChildren;\n };\n\n return {\n get children() {\n return readContent();\n },\n get class() {\n return classValue();\n },\n \"data-rac\": \"\",\n get render() {\n return props.render\n ? // oxlint-disable-next-line solid/reactivity -- The returned callback runs in its consumer's scope.\n (domProps: JSX.IntrinsicElements[E]) =>\n requireValue(props.render, \"Expected props.render\")(\n domProps,\n props.values\n )\n : undefined;\n },\n get style() {\n return style();\n },\n };\n}\n\nexport function composeRenderProps<T, U, V extends T>(\n value: T | ((values: U) => V),\n wrap: (previous: T, values: U) => V\n): (values: U) => V {\n return (values) => {\n if (typeof value !== \"function\") {\n return wrap(value, values);\n }\n\n // SAFETY: Function values are render callbacks by this API's contract.\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- T may itself be callable, so typeof cannot eliminate the generic branch.\n const render = value as (values: U) => V;\n\n return wrap(render(values), values);\n };\n}\n\nexport function createSlot(\n initial: boolean | (() => boolean) = true\n): [() => JSX.RefCallback<Element>, Accessor<boolean>] {\n const [present, setPresent] = createSignal(\n untrack(() => (typeof initial === \"function\" ? initial() : initial)),\n { ownedWrite: true }\n );\n\n const elements = new Set<Element>();\n\n const register = () => {\n let current: Element | undefined;\n\n // Registration runs in the slotted child's owner; DOM ref callbacks are unowned.\n onCleanup(() => {\n if (current) {\n elements.delete(current);\n }\n\n setPresent(elements.size > 0);\n });\n\n return (element: Element) => {\n if (current) {\n elements.delete(current);\n }\n\n current = element;\n elements.add(element);\n setPresent(true);\n };\n };\n\n onSettled(() => {\n if (elements.size === 0) {\n setPresent(false);\n }\n });\n\n return [register, present];\n}\n\nexport function removeDataAttributes<T extends object>(props: T): T {\n // SAFETY: Only optional data attributes are omitted; the component's required props remain.\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- The predicate filters extension attributes outside the declared component contract.\n return omit(\n props,\n (key) => typeof key === \"string\" && key.startsWith(\"data-\")\n ) as T;\n}\n\ntype DOMComponents = {\n [E in keyof JSX.IntrinsicElements]: (\n props: Omit<JSX.IntrinsicElements[E], \"ref\"> & {\n ref?: Ref<\n E extends keyof HTMLElementTagNameMap\n ? HTMLElementTagNameMap[E]\n : Element\n >;\n render?: (props: JSX.IntrinsicElements[E], values: never) => JSX.Element;\n }\n ) => JSX.Element;\n};\n\ninterface NativeProps {\n children?: JSX.Element;\n render?: (props: NativeProps) => JSX.Element;\n ref?: Ref<Element>;\n class?: JSX.ClassValue;\n}\n\ntype NativeComponent = (props: NativeProps) => JSX.Element;\n\nconst cache = new Map<string, NativeComponent>();\n\n// SAFETY: Each proxy key creates a native component that forwards the matching tag's attributes and ref.\n// oxlint-disable-next-line typescript/no-unsafe-type-assertion -- The mapped intrinsic tag signatures are implemented by the native component factory.\nexport const dom = new Proxy(\n {},\n {\n get(_target, key): NativeComponent | undefined {\n if (typeof key !== \"string\") {\n return undefined;\n }\n\n let component = cache.get(key);\n\n if (!component) {\n // SAFETY: Consumers index dom with keyof JSX.IntrinsicElements, including renderer-supported custom tags.\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- Proxy handler keys lose the public mapped type's intrinsic tag constraint.\n const tag = key as keyof JSX.IntrinsicElements;\n\n const NativeElement = dynamic(() => tag, { static: true });\n\n component = (props: NativeProps) => {\n const ref = untrack(() => props.ref);\n\n const forwarded = mergeProps(omit(props, \"render\", \"ref\"), {\n ref(element: Element) {\n assignRef(ref, element);\n },\n });\n\n const render = untrack(() => props.render);\n\n // oxlint-disable-next-line solid/components-return-once -- The render callback is selected once for this DOM owner.\n return render ? (\n <>{render(forwarded)}</>\n ) : (\n <NativeElement\n {\n // oxlint-disable solid/reactivity -- Keep prop filtering in the renderer's lazy evaluation.\n ...omit(forwarded, \"children\")\n // oxlint-enable solid/reactivity\n }\n >\n {forwarded.children}\n </NativeElement>\n );\n };\n\n cache.set(key, component);\n }\n\n return component;\n },\n }\n) as DOMComponents;\n\nexport function domElement(\n tag: keyof JSX.IntrinsicElements\n): DOMComponents[\"div\"] {\n // SAFETY: Polymorphic components use shared HTML attributes; the chosen tag owns its native behavior.\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- Dynamic intrinsic unions do not expose a common callable signature.\n return dom[tag] as DOMComponents[\"div\"];\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
/*
|
|
13
|
+
* Derived from Adobe React Spectrum: packages/react-aria-components/src/Virtualizer.tsx.
|
|
14
|
+
* Modified for Solid Aria: collection virtualization, scroll measurement, view ownership and layout options use Solid primitives.
|
|
15
|
+
* Licensed under Apache-2.0. See LICENSES/Apache-2.0.txt and NOTICE.txt at the repository root.
|
|
16
|
+
*/
|
|
17
|
+
import { CollectionRendererContext, renderAfterDropIndicators } from "./collection.js";
|
|
18
|
+
import { For, createContext, createMemo, merge, untrack, useContext } from "solid-js";
|
|
19
|
+
import { escape, memo, ssrElement } from "@solidjs/web";
|
|
20
|
+
import { requireValue } from "@solid2-aria/core/utils/require-value";
|
|
21
|
+
import { isTruthy } from "@solid2-aria/core/utils/truthy";
|
|
22
|
+
import { createScrollView } from "@solid2-aria/core/virtualizer/scroll-view";
|
|
23
|
+
import { VirtualizerItem } from "@solid2-aria/core/virtualizer/virtualizer-item";
|
|
24
|
+
import { createVirtualizerState } from "@solid2-aria/stately/virtualizer/create-virtualizer-state";
|
|
25
|
+
// src/virtualizer.tsx
|
|
26
|
+
var _m$ = Symbol();
|
|
27
|
+
var _m$2 = Symbol();
|
|
28
|
+
var _m$3 = Symbol();
|
|
29
|
+
var _d$ = {
|
|
30
|
+
get() {
|
|
31
|
+
return this[_m$].children;
|
|
32
|
+
},
|
|
33
|
+
enumerable: true,
|
|
34
|
+
configurable: true
|
|
35
|
+
};
|
|
36
|
+
function _P$(_p, _p2) {
|
|
37
|
+
this[_m$] = _p;
|
|
38
|
+
this.value = _p2;
|
|
39
|
+
Object.defineProperty(this, "children", _d$);
|
|
40
|
+
}
|
|
41
|
+
_P$.prototype = Object.prototype;
|
|
42
|
+
var _d$2 = {
|
|
43
|
+
get() {
|
|
44
|
+
const props = this[_m$];
|
|
45
|
+
const options = this[_m$2];
|
|
46
|
+
return VirtualizerOptionsContext(new _P$(props, options));
|
|
47
|
+
},
|
|
48
|
+
enumerable: true,
|
|
49
|
+
configurable: true
|
|
50
|
+
};
|
|
51
|
+
function _P$2(_p3, _p4, _p5) {
|
|
52
|
+
this[_m$] = _p3;
|
|
53
|
+
this[_m$2] = _p4;
|
|
54
|
+
this.value = _p5;
|
|
55
|
+
Object.defineProperty(this, "children", _d$2);
|
|
56
|
+
}
|
|
57
|
+
_P$2.prototype = Object.prototype;
|
|
58
|
+
var _d$3 = {
|
|
59
|
+
get() {
|
|
60
|
+
return this[_m$].visibleViews;
|
|
61
|
+
},
|
|
62
|
+
enumerable: true,
|
|
63
|
+
configurable: true
|
|
64
|
+
};
|
|
65
|
+
function _P$3(_p6, _p7) {
|
|
66
|
+
this[_m$] = _p6;
|
|
67
|
+
Object.defineProperty(this, "each", _d$3);
|
|
68
|
+
this.children = _p7;
|
|
69
|
+
}
|
|
70
|
+
_P$3.prototype = Object.prototype;
|
|
71
|
+
var _d$4 = {
|
|
72
|
+
get() {
|
|
73
|
+
const state = this[_m$];
|
|
74
|
+
const props = this[_m$2];
|
|
75
|
+
const options = this[_m$3];
|
|
76
|
+
return For(new _P$3(state, (view) => renderView(null, view, props.renderDropIndicator, options.shouldObserveItemSize)));
|
|
77
|
+
},
|
|
78
|
+
enumerable: true,
|
|
79
|
+
configurable: true
|
|
80
|
+
};
|
|
81
|
+
function _P$4(_p8, _p9, _p0, _p1) {
|
|
82
|
+
this[_m$] = _p8;
|
|
83
|
+
this[_m$2] = _p9;
|
|
84
|
+
this[_m$3] = _p0;
|
|
85
|
+
this.value = _p1;
|
|
86
|
+
Object.defineProperty(this, "children", _d$4);
|
|
87
|
+
}
|
|
88
|
+
_P$4.prototype = Object.prototype;
|
|
89
|
+
var _d$5 = {
|
|
90
|
+
get() {
|
|
91
|
+
const view = this[_m$];
|
|
92
|
+
return requireValue(view.layoutInfo, "Expected view.layoutInfo");
|
|
93
|
+
},
|
|
94
|
+
enumerable: true,
|
|
95
|
+
configurable: true
|
|
96
|
+
};
|
|
97
|
+
var _d$6 = {
|
|
98
|
+
get() {
|
|
99
|
+
return this[_m$].virtualizer;
|
|
100
|
+
},
|
|
101
|
+
enumerable: true,
|
|
102
|
+
configurable: true
|
|
103
|
+
};
|
|
104
|
+
var _d$7 = {
|
|
105
|
+
get() {
|
|
106
|
+
return this[_m$2]?.layoutInfo;
|
|
107
|
+
},
|
|
108
|
+
enumerable: true,
|
|
109
|
+
configurable: true
|
|
110
|
+
};
|
|
111
|
+
var _d$8 = {
|
|
112
|
+
get() {
|
|
113
|
+
return this[_m$].rendered;
|
|
114
|
+
},
|
|
115
|
+
enumerable: true,
|
|
116
|
+
configurable: true
|
|
117
|
+
};
|
|
118
|
+
function _P$5(_p10, _p11, _p12) {
|
|
119
|
+
this[_m$] = _p10;
|
|
120
|
+
this[_m$2] = _p11;
|
|
121
|
+
Object.defineProperty(this, "layoutInfo", _d$5);
|
|
122
|
+
Object.defineProperty(this, "virtualizer", _d$6);
|
|
123
|
+
Object.defineProperty(this, "parent", _d$7);
|
|
124
|
+
this.shouldObserveItemSize = _p12;
|
|
125
|
+
Object.defineProperty(this, "children", _d$8);
|
|
126
|
+
}
|
|
127
|
+
_P$5.prototype = Object.prototype;
|
|
128
|
+
var _d$9 = {
|
|
129
|
+
get() {
|
|
130
|
+
return this[_m$].virtualizer;
|
|
131
|
+
},
|
|
132
|
+
enumerable: true,
|
|
133
|
+
configurable: true
|
|
134
|
+
};
|
|
135
|
+
var _d$10 = {
|
|
136
|
+
get() {
|
|
137
|
+
return this[_m$2]?.layoutInfo;
|
|
138
|
+
},
|
|
139
|
+
enumerable: true,
|
|
140
|
+
configurable: true
|
|
141
|
+
};
|
|
142
|
+
function _P$6(_p13, _p14, _p15, _p16) {
|
|
143
|
+
this[_m$] = _p13;
|
|
144
|
+
this[_m$2] = _p14;
|
|
145
|
+
this.layoutInfo = _p15;
|
|
146
|
+
Object.defineProperty(this, "virtualizer", _d$9);
|
|
147
|
+
Object.defineProperty(this, "parent", _d$10);
|
|
148
|
+
this.children = _p16;
|
|
149
|
+
}
|
|
150
|
+
_P$6.prototype = Object.prototype;
|
|
151
|
+
const VirtualizerOptionsContext = createContext(null);
|
|
152
|
+
const VirtualizerContext = createContext(null);
|
|
153
|
+
function Virtualizer(props) {
|
|
154
|
+
const layout = createMemo(() => typeof props.layout === "function" ? new props.layout() : props.layout);
|
|
155
|
+
return CollectionRendererContext(new _P$2(props, {
|
|
156
|
+
get layout() {
|
|
157
|
+
return layout();
|
|
158
|
+
},
|
|
159
|
+
get layoutOptions() {
|
|
160
|
+
return props.layoutOptions;
|
|
161
|
+
},
|
|
162
|
+
get shouldObserveItemSize() {
|
|
163
|
+
return props.shouldObserveItemSize;
|
|
164
|
+
}
|
|
165
|
+
}, {
|
|
166
|
+
CollectionBranch,
|
|
167
|
+
CollectionRoot,
|
|
168
|
+
get dropTargetDelegate() {
|
|
169
|
+
const initialValue = layout();
|
|
170
|
+
return initialValue.getDropTargetFromPoint ? { getDropTargetFromPoint: (x, y, valid) => initialValue.getDropTargetFromPoint?.(x, y, valid) ?? null } : void 0;
|
|
171
|
+
},
|
|
172
|
+
isVirtualized: true,
|
|
173
|
+
get layoutDelegate() {
|
|
174
|
+
return layout();
|
|
175
|
+
}
|
|
176
|
+
}));
|
|
177
|
+
}
|
|
178
|
+
function CollectionRoot(props) {
|
|
179
|
+
const options = requireValue(useContext(VirtualizerOptionsContext), "Expected useContext(VirtualizerOptionsContext)");
|
|
180
|
+
const derivedOptions = untrack(() => options.layout).createLayoutOptions?.();
|
|
181
|
+
const state = createVirtualizerState({
|
|
182
|
+
allowsWindowScrolling: true,
|
|
183
|
+
get collection() {
|
|
184
|
+
return props.collection;
|
|
185
|
+
},
|
|
186
|
+
get layout() {
|
|
187
|
+
return options.layout;
|
|
188
|
+
},
|
|
189
|
+
get layoutOptions() {
|
|
190
|
+
return Boolean(derivedOptions) && Boolean(options.layoutOptions) ? merge(options.layoutOptions, derivedOptions) : derivedOptions ?? options.layoutOptions;
|
|
191
|
+
},
|
|
192
|
+
onVisibleRectChange(rect) {
|
|
193
|
+
const element = props.scrollRef?.();
|
|
194
|
+
if (element) {
|
|
195
|
+
element.scrollLeft = rect.x;
|
|
196
|
+
element.scrollTop = rect.y;
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
get persistedKeys() {
|
|
200
|
+
return props.persistedKeys;
|
|
201
|
+
},
|
|
202
|
+
renderView: (_type, item) => item?.render?.(item) ?? item?.rendered
|
|
203
|
+
});
|
|
204
|
+
const scroll = createScrollView({
|
|
205
|
+
allowsWindowScrolling: true,
|
|
206
|
+
get contentSize() {
|
|
207
|
+
return state.contentSize;
|
|
208
|
+
},
|
|
209
|
+
onScrollEnd: state.endScrolling,
|
|
210
|
+
onScrollStart: state.startScrolling,
|
|
211
|
+
onSizeChange: state.setSize,
|
|
212
|
+
onVisibleRectChange: state.setVisibleRect
|
|
213
|
+
}, requireValue(untrack(() => props.scrollRef), "Expected props.scrollRef"));
|
|
214
|
+
return ssrElement("div", scroll.contentProps, () => {
|
|
215
|
+
return escape(VirtualizerContext(new _P$4(state, props, options, state)));
|
|
216
|
+
}, true);
|
|
217
|
+
}
|
|
218
|
+
function CollectionBranch(props) {
|
|
219
|
+
const state = requireValue(useContext(VirtualizerContext), "Expected useContext(VirtualizerContext)");
|
|
220
|
+
const options = requireValue(useContext(VirtualizerOptionsContext), "Expected useContext(VirtualizerOptionsContext)");
|
|
221
|
+
const view = () => state.virtualizer.getVisibleView(props.parent.key);
|
|
222
|
+
return memo(() => {
|
|
223
|
+
return memo(() => {
|
|
224
|
+
return !!view();
|
|
225
|
+
})() ? [...requireValue(view(), "Expected view()").children].map((child) => renderView(requireValue(view(), "Expected view()"), child, props.renderDropIndicator, options.shouldObserveItemSize)) : null;
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
function renderView(parent, view, renderIndicator, observe) {
|
|
229
|
+
const node = view.content;
|
|
230
|
+
const rendered = VirtualizerItem(new _P$5(view, parent, observe));
|
|
231
|
+
if (node?.type !== "item" || !renderIndicator || !view.virtualizer.layout.getDropTargetLayoutInfo) return rendered;
|
|
232
|
+
return [
|
|
233
|
+
memo(() => {
|
|
234
|
+
return renderIndicatorView(parent, view, {
|
|
235
|
+
dropPosition: "before",
|
|
236
|
+
key: node.key,
|
|
237
|
+
type: "item"
|
|
238
|
+
}, renderIndicator);
|
|
239
|
+
}),
|
|
240
|
+
rendered,
|
|
241
|
+
memo(() => {
|
|
242
|
+
return renderAfterDropIndicators(view.virtualizer.collection, node, (target) => renderIndicatorView(parent, view, target, renderIndicator));
|
|
243
|
+
})
|
|
244
|
+
];
|
|
245
|
+
}
|
|
246
|
+
function renderIndicatorView(parent, view, target, render) {
|
|
247
|
+
const indicator = render(target);
|
|
248
|
+
if (!isTruthy(indicator)) return null;
|
|
249
|
+
const info = requireValue(view.virtualizer.layout.getDropTargetLayoutInfo?.(target), "Expected a drop target layout");
|
|
250
|
+
return VirtualizerItem(new _P$6(view, parent, info, indicator));
|
|
251
|
+
}
|
|
252
|
+
export { Virtualizer };
|
|
253
|
+
|
|
254
|
+
//# sourceMappingURL=virtualizer.js.map
|