@proyecto-viviana/solidaria-components 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ActionBar.js +184 -0
- package/dist/ActionBar.js.map +1 -0
- package/dist/ActionBar.jsx +128 -0
- package/dist/ActionBar.jsx.map +1 -0
- package/dist/ActionGroup.js +179 -0
- package/dist/ActionGroup.js.map +1 -0
- package/dist/ActionGroup.jsx +129 -0
- package/dist/ActionGroup.jsx.map +1 -0
- package/dist/Alert.js +111 -0
- package/dist/Alert.js.map +1 -0
- package/dist/Alert.jsx +82 -0
- package/dist/Alert.jsx.map +1 -0
- package/dist/Autocomplete.js +130 -0
- package/dist/Autocomplete.js.map +1 -0
- package/dist/Autocomplete.jsx +116 -0
- package/dist/Autocomplete.jsx.map +1 -0
- package/dist/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs.js +334 -0
- package/dist/Breadcrumbs.js.map +1 -0
- package/dist/Breadcrumbs.jsx +266 -0
- package/dist/Breadcrumbs.jsx.map +1 -0
- package/dist/Button.d.ts.map +1 -1
- package/dist/Button.js +348 -0
- package/dist/Button.js.map +1 -0
- package/dist/Button.jsx +314 -0
- package/dist/Button.jsx.map +1 -0
- package/dist/Calendar.d.ts +4 -4
- package/dist/Calendar.d.ts.map +1 -1
- package/dist/Calendar.js +538 -0
- package/dist/Calendar.js.map +1 -0
- package/dist/Calendar.jsx +333 -0
- package/dist/Calendar.jsx.map +1 -0
- package/dist/CalendarPicker.d.ts +33 -0
- package/dist/CalendarPicker.d.ts.map +1 -0
- package/dist/CalendarPicker.js +44 -0
- package/dist/CalendarPicker.js.map +1 -0
- package/dist/CalendarPicker.jsx +44 -0
- package/dist/CalendarPicker.jsx.map +1 -0
- package/dist/Checkbox.d.ts +83 -4
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +923 -0
- package/dist/Checkbox.js.map +1 -0
- package/dist/Checkbox.jsx +707 -0
- package/dist/Checkbox.jsx.map +1 -0
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +202 -0
- package/dist/Collection.js.map +1 -0
- package/dist/Collection.jsx +152 -0
- package/dist/Collection.jsx.map +1 -0
- package/dist/Color.d.ts.map +1 -1
- package/dist/Color.js +1720 -0
- package/dist/Color.js.map +1 -0
- package/dist/Color.jsx +1344 -0
- package/dist/Color.jsx.map +1 -0
- package/dist/ColorEditor.js +208 -0
- package/dist/ColorEditor.js.map +1 -0
- package/dist/ColorEditor.jsx +120 -0
- package/dist/ColorEditor.jsx.map +1 -0
- package/dist/ComboBox.d.ts +4 -4
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js +992 -0
- package/dist/ComboBox.js.map +1 -0
- package/dist/ComboBox.jsx +714 -0
- package/dist/ComboBox.jsx.map +1 -0
- package/dist/ContextualHelpTrigger.js +146 -0
- package/dist/ContextualHelpTrigger.js.map +1 -0
- package/dist/ContextualHelpTrigger.jsx +109 -0
- package/dist/ContextualHelpTrigger.jsx.map +1 -0
- package/dist/DateField.d.ts +3 -3
- package/dist/DateField.d.ts.map +1 -1
- package/dist/DateField.js +4 -0
- package/dist/DateField.jsx +4 -0
- package/dist/DateField2.js +499 -0
- package/dist/DateField2.js.map +1 -0
- package/dist/DateField2.jsx +317 -0
- package/dist/DateField2.jsx.map +1 -0
- package/dist/DatePicker.d.ts +4 -4
- package/dist/DatePicker.d.ts.map +1 -1
- package/dist/DatePicker.js +991 -0
- package/dist/DatePicker.js.map +1 -0
- package/dist/DatePicker.jsx +682 -0
- package/dist/DatePicker.jsx.map +1 -0
- package/dist/Dialog.d.ts.map +1 -1
- package/dist/Dialog.js +337 -0
- package/dist/Dialog.js.map +1 -0
- package/dist/Dialog.jsx +192 -0
- package/dist/Dialog.jsx.map +1 -0
- package/dist/Disclosure.d.ts.map +1 -1
- package/dist/Disclosure.js +328 -0
- package/dist/Disclosure.js.map +1 -0
- package/dist/Disclosure.jsx +230 -0
- package/dist/Disclosure.jsx.map +1 -0
- package/dist/DragAndDrop.d.ts.map +1 -1
- package/dist/DragAndDrop.js +176 -0
- package/dist/DragAndDrop.js.map +1 -0
- package/dist/DragAndDrop.jsx +160 -0
- package/dist/DragAndDrop.jsx.map +1 -0
- package/dist/DropZone.d.ts.map +1 -1
- package/dist/DropZone.js +189 -0
- package/dist/DropZone.js.map +1 -0
- package/dist/DropZone.jsx +144 -0
- package/dist/DropZone.jsx.map +1 -0
- package/dist/FieldError.js +66 -0
- package/dist/FieldError.js.map +1 -0
- package/dist/FieldError.jsx +47 -0
- package/dist/FieldError.jsx.map +1 -0
- package/dist/FileTrigger.js +79 -0
- package/dist/FileTrigger.js.map +1 -0
- package/dist/FileTrigger.jsx +49 -0
- package/dist/FileTrigger.jsx.map +1 -0
- package/dist/Focusable.js +70 -0
- package/dist/Focusable.js.map +1 -0
- package/dist/Focusable.jsx +69 -0
- package/dist/Focusable.jsx.map +1 -0
- package/dist/Form.js +99 -0
- package/dist/Form.js.map +1 -0
- package/dist/Form.jsx +73 -0
- package/dist/Form.jsx.map +1 -0
- package/dist/GridList.d.ts +34 -2
- package/dist/GridList.d.ts.map +1 -1
- package/dist/GridList.js +723 -0
- package/dist/GridList.js.map +1 -0
- package/dist/GridList.jsx +552 -0
- package/dist/GridList.jsx.map +1 -0
- package/dist/HiddenTimeInput.js +104 -0
- package/dist/HiddenTimeInput.js.map +1 -0
- package/dist/HiddenTimeInput.jsx +69 -0
- package/dist/HiddenTimeInput.jsx.map +1 -0
- package/dist/Icon.d.ts.map +1 -1
- package/dist/Icon.js +127 -0
- package/dist/Icon.js.map +1 -0
- package/dist/Icon.jsx +72 -0
- package/dist/Icon.jsx.map +1 -0
- package/dist/Keyboard.js +30 -0
- package/dist/Keyboard.js.map +1 -0
- package/dist/Keyboard.jsx +24 -0
- package/dist/Keyboard.jsx.map +1 -0
- package/dist/Landmark.js +134 -0
- package/dist/Landmark.js.map +1 -0
- package/dist/Landmark.jsx +118 -0
- package/dist/Landmark.jsx.map +1 -0
- package/dist/Link.d.ts.map +1 -1
- package/dist/Link.js +219 -0
- package/dist/Link.js.map +1 -0
- package/dist/Link.jsx +189 -0
- package/dist/Link.jsx.map +1 -0
- package/dist/ListBox.d.ts.map +1 -1
- package/dist/ListBox.js +670 -0
- package/dist/ListBox.js.map +1 -0
- package/dist/ListBox.jsx +508 -0
- package/dist/ListBox.jsx.map +1 -0
- package/dist/Menu.d.ts +27 -9
- package/dist/Menu.d.ts.map +1 -1
- package/dist/Menu.js +1254 -0
- package/dist/Menu.js.map +1 -0
- package/dist/Menu.jsx +1042 -0
- package/dist/Menu.jsx.map +1 -0
- package/dist/Meter.d.ts.map +1 -1
- package/dist/Meter.js +123 -0
- package/dist/Meter.js.map +1 -0
- package/dist/Meter.jsx +107 -0
- package/dist/Meter.jsx.map +1 -0
- package/dist/Modal.d.ts.map +1 -1
- package/dist/Modal.js +380 -0
- package/dist/Modal.js.map +1 -0
- package/dist/Modal.jsx +314 -0
- package/dist/Modal.jsx.map +1 -0
- package/dist/NumberField.d.ts +3 -3
- package/dist/NumberField.d.ts.map +1 -1
- package/dist/NumberField.js +573 -0
- package/dist/NumberField.js.map +1 -0
- package/dist/NumberField.jsx +443 -0
- package/dist/NumberField.jsx.map +1 -0
- package/dist/Popover.d.ts +10 -2
- package/dist/Popover.d.ts.map +1 -1
- package/dist/Popover.js +464 -0
- package/dist/Popover.js.map +1 -0
- package/dist/Popover.jsx +333 -0
- package/dist/Popover.jsx.map +1 -0
- package/dist/Pressable.js +69 -0
- package/dist/Pressable.js.map +1 -0
- package/dist/Pressable.jsx +68 -0
- package/dist/Pressable.jsx.map +1 -0
- package/dist/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar.js +130 -0
- package/dist/ProgressBar.js.map +1 -0
- package/dist/ProgressBar.jsx +114 -0
- package/dist/ProgressBar.jsx.map +1 -0
- package/dist/RadioGroup.d.ts +82 -4
- package/dist/RadioGroup.d.ts.map +1 -1
- package/dist/RadioGroup.js +931 -0
- package/dist/RadioGroup.js.map +1 -0
- package/dist/RadioGroup.jsx +681 -0
- package/dist/RadioGroup.jsx.map +1 -0
- package/dist/RangeCalendar.d.ts.map +1 -1
- package/dist/RangeCalendar.js +410 -0
- package/dist/RangeCalendar.js.map +1 -0
- package/dist/RangeCalendar.jsx +253 -0
- package/dist/RangeCalendar.jsx.map +1 -0
- package/dist/RouterProvider.js +118 -0
- package/dist/RouterProvider.js.map +1 -0
- package/dist/RouterProvider.jsx +112 -0
- package/dist/RouterProvider.jsx.map +1 -0
- package/dist/SearchField.d.ts +2 -2
- package/dist/SearchField.d.ts.map +1 -1
- package/dist/SearchField.js +643 -0
- package/dist/SearchField.js.map +1 -0
- package/dist/SearchField.jsx +526 -0
- package/dist/SearchField.jsx.map +1 -0
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +1031 -0
- package/dist/Select.js.map +1 -0
- package/dist/Select.jsx +744 -0
- package/dist/Select.jsx.map +1 -0
- package/dist/SelectionIndicator.d.ts.map +1 -1
- package/dist/SelectionIndicator.js +86 -0
- package/dist/SelectionIndicator.js.map +1 -0
- package/dist/SelectionIndicator.jsx +50 -0
- package/dist/SelectionIndicator.jsx.map +1 -0
- package/dist/Separator.js +97 -0
- package/dist/Separator.js.map +1 -0
- package/dist/Separator.jsx +85 -0
- package/dist/Separator.jsx.map +1 -0
- package/dist/SharedElementTransition.d.ts.map +1 -1
- package/dist/SharedElementTransition.js +165 -0
- package/dist/SharedElementTransition.js.map +1 -0
- package/dist/SharedElementTransition.jsx +138 -0
- package/dist/SharedElementTransition.jsx.map +1 -0
- package/dist/Slider.d.ts +33 -1
- package/dist/Slider.d.ts.map +1 -1
- package/dist/Slider.js +515 -0
- package/dist/Slider.js.map +1 -0
- package/dist/Slider.jsx +403 -0
- package/dist/Slider.jsx.map +1 -0
- package/dist/StepList.js +198 -0
- package/dist/StepList.js.map +1 -0
- package/dist/StepList.jsx +141 -0
- package/dist/StepList.jsx.map +1 -0
- package/dist/Switch.d.ts +65 -2
- package/dist/Switch.d.ts.map +1 -1
- package/dist/Switch.js +534 -0
- package/dist/Switch.js.map +1 -0
- package/dist/Switch.jsx +393 -0
- package/dist/Switch.jsx.map +1 -0
- package/dist/Table.d.ts +48 -0
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +1759 -0
- package/dist/Table.js.map +1 -0
- package/dist/Table.jsx +1348 -0
- package/dist/Table.jsx.map +1 -0
- package/dist/Tabs.d.ts +0 -4
- package/dist/Tabs.d.ts.map +1 -1
- package/dist/Tabs.js +595 -0
- package/dist/Tabs.js.map +1 -0
- package/dist/Tabs.jsx +367 -0
- package/dist/Tabs.jsx.map +1 -0
- package/dist/TagGroup.d.ts.map +1 -1
- package/dist/TagGroup.js +378 -0
- package/dist/TagGroup.js.map +1 -0
- package/dist/TagGroup.jsx +270 -0
- package/dist/TagGroup.jsx.map +1 -0
- package/dist/Text.d.ts +18 -6
- package/dist/Text.d.ts.map +1 -1
- package/dist/Text.js +42 -0
- package/dist/Text.js.map +1 -0
- package/dist/Text.jsx +35 -0
- package/dist/Text.jsx.map +1 -0
- package/dist/TextField.d.ts +6 -6
- package/dist/TextField.d.ts.map +1 -1
- package/dist/TextField.js +436 -0
- package/dist/TextField.js.map +1 -0
- package/dist/TextField.jsx +403 -0
- package/dist/TextField.jsx.map +1 -0
- package/dist/TimeField.d.ts +3 -3
- package/dist/TimeField.d.ts.map +1 -1
- package/dist/TimeField.js +372 -0
- package/dist/TimeField.js.map +1 -0
- package/dist/TimeField.jsx +224 -0
- package/dist/TimeField.jsx.map +1 -0
- package/dist/Toast.d.ts +14 -0
- package/dist/Toast.d.ts.map +1 -1
- package/dist/Toast.js +551 -0
- package/dist/Toast.js.map +1 -0
- package/dist/Toast.jsx +361 -0
- package/dist/Toast.jsx.map +1 -0
- package/dist/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton.js +123 -0
- package/dist/ToggleButton.js.map +1 -0
- package/dist/ToggleButton.jsx +88 -0
- package/dist/ToggleButton.jsx.map +1 -0
- package/dist/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButtonGroup.js +114 -0
- package/dist/ToggleButtonGroup.js.map +1 -0
- package/dist/ToggleButtonGroup.jsx +85 -0
- package/dist/ToggleButtonGroup.jsx.map +1 -0
- package/dist/Toolbar.js +112 -0
- package/dist/Toolbar.js.map +1 -0
- package/dist/Toolbar.jsx +92 -0
- package/dist/Toolbar.jsx.map +1 -0
- package/dist/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip.js +539 -0
- package/dist/Tooltip.js.map +1 -0
- package/dist/Tooltip.jsx +465 -0
- package/dist/Tooltip.jsx.map +1 -0
- package/dist/Tree.d.ts +14 -2
- package/dist/Tree.d.ts.map +1 -1
- package/dist/Tree.js +1424 -0
- package/dist/Tree.js.map +1 -0
- package/dist/Tree.jsx +1172 -0
- package/dist/Tree.jsx.map +1 -0
- package/dist/Virtualizer.d.ts +16 -2
- package/dist/Virtualizer.d.ts.map +1 -1
- package/dist/Virtualizer.js +2 -0
- package/dist/Virtualizer.jsx +2 -0
- package/dist/Virtualizer2.js +751 -0
- package/dist/Virtualizer2.js.map +1 -0
- package/dist/Virtualizer2.jsx +730 -0
- package/dist/Virtualizer2.jsx.map +1 -0
- package/dist/VirtualizerLayouts.d.ts +18 -0
- package/dist/VirtualizerLayouts.d.ts.map +1 -1
- package/dist/VisuallyHidden.js +42 -0
- package/dist/VisuallyHidden.js.map +1 -0
- package/dist/VisuallyHidden.jsx +35 -0
- package/dist/VisuallyHidden.jsx.map +1 -0
- package/dist/contexts.js +33 -0
- package/dist/contexts.js.map +1 -0
- package/dist/contexts.jsx +33 -0
- package/dist/contexts.jsx.map +1 -0
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -23932
- package/dist/index.jsx +70 -18337
- package/dist/useDragAndDrop.js +2 -0
- package/dist/useDragAndDrop.jsx +2 -0
- package/dist/useDragAndDrop2.js +395 -0
- package/dist/useDragAndDrop2.js.map +1 -0
- package/dist/useDragAndDrop2.jsx +395 -0
- package/dist/useDragAndDrop2.jsx.map +1 -0
- package/dist/utils.d.ts +83 -11
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +285 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.jsx +277 -0
- package/dist/utils.jsx.map +1 -0
- package/dist/virtualizer/Layout.js +144 -0
- package/dist/virtualizer/Layout.js.map +1 -0
- package/dist/virtualizer/Layout.jsx +144 -0
- package/dist/virtualizer/Layout.jsx.map +1 -0
- package/package.json +401 -4
- package/src/Breadcrumbs.tsx +3 -1
- package/src/Button.tsx +22 -2
- package/src/Calendar.tsx +27 -10
- package/src/CalendarPicker.tsx +73 -0
- package/src/Checkbox.tsx +539 -3
- package/src/Collection.tsx +9 -3
- package/src/Color.tsx +42 -14
- package/src/ComboBox.tsx +50 -6
- package/src/DateField.tsx +20 -2
- package/src/DatePicker.tsx +57 -5
- package/src/Dialog.tsx +13 -5
- package/src/Disclosure.tsx +3 -1
- package/src/DragAndDrop.tsx +3 -1
- package/src/DropZone.tsx +3 -1
- package/src/GridList.tsx +125 -24
- package/src/Icon.tsx +3 -1
- package/src/Link.tsx +3 -1
- package/src/ListBox.tsx +31 -4
- package/src/Menu.tsx +252 -128
- package/src/Meter.tsx +3 -1
- package/src/Modal.tsx +100 -52
- package/src/NumberField.tsx +51 -8
- package/src/Popover.tsx +40 -10
- package/src/ProgressBar.tsx +3 -1
- package/src/RadioGroup.tsx +468 -4
- package/src/RangeCalendar.tsx +3 -1
- package/src/SearchField.tsx +27 -3
- package/src/Select.tsx +22 -7
- package/src/SelectionIndicator.tsx +3 -1
- package/src/SharedElementTransition.tsx +3 -1
- package/src/Slider.tsx +159 -13
- package/src/Switch.tsx +395 -2
- package/src/Table.tsx +409 -95
- package/src/Tabs.tsx +16 -45
- package/src/TagGroup.tsx +3 -1
- package/src/Text.tsx +31 -10
- package/src/TextField.tsx +43 -5
- package/src/TimeField.tsx +20 -2
- package/src/Toast.tsx +79 -14
- package/src/ToggleButton.tsx +3 -1
- package/src/ToggleButtonGroup.tsx +3 -1
- package/src/Tooltip.tsx +3 -1
- package/src/Tree.tsx +77 -9
- package/src/Virtualizer.tsx +180 -31
- package/src/VirtualizerLayouts.ts +45 -10
- package/src/index.ts +50 -0
- package/src/utils.tsx +243 -27
- package/dist/index.js.map +0 -1
- package/dist/index.jsx.map +0 -1
package/dist/Tree.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tree.js","names":["JSX","onCleanup","createContext","createEffect","createMemo","createSignal","splitProps","useContext","For","Show","createTree","createTreeItem","createTreeSelectionCheckbox","createGridListSection","createFocusRing","createHover","mergeProps","AriaTreeProps","createTreeState","createTreeCollection","TreeState","TreeCollection","TreeNode","TreeItemData","Key","DropTarget","ItemDropTarget","RenderChildren","ClassNameOrFunction","StyleOrFunction","SlotProps","useRenderProps","filterDOMProps","SharedElementTransition","DragAndDropHooks","getNormalizedDropTargetKey","mergePersistedKeysIntoVirtualRange","useDndPersistedKeys","useRenderDropIndicator","CollectionRendererContext","flattenCollectionEntries","isCollectionSection","CollectionEntry","CollectionRendererContextValue","SectionProps","useCollectionRenderer","GridListHeader","GridListHeaderContext","GridListHeaderInnerContext","GridListHeaderProps","useVirtualizerContext","handleLinkClick","LinkDOMProps","RouterOptions","useLinkProps","useRouter","RefLike","el","T","current","assignRef","ref","TreeRenderProps","isFocused","isFocusVisible","isDisabled","isEmpty","TreeProps","Omit","items","selectionMode","selectionBehavior","disabledBehavior","disabledKeys","Iterable","selectedKeys","defaultSelectedKeys","onSelectionChange","keys","Set","expandedKeys","defaultExpandedKeys","onExpandedChange","children","item","state","TreeRenderItemState","Element","class","style","renderEmptyState","hasMore","isLoading","loadingState","onLoadMore","Promise","renderLoadMoreItem","loadMoreClass","loadMoreStyle","dragAndDropHooks","HTMLDivElement","isExpanded","isExpandable","level","TreeItemRenderProps","isSelected","isPressed","isHovered","TreeItemProps","HTMLAttributes","HTMLElement","id","textValue","onAction","hasChildItems","href","target","download","rel","hrefLang","ping","referrerPolicy","routerOptions","TreeExpandButtonProps","CSSProperties","props","key","TreeLoadMoreItemProps","scrollOffset","TreeSectionProps","TreeHeaderProps","TreeContextValue","collection","renderItem","dragState","dropState","TreeDropTargetDelegate","getDropTargetFromPoint","x","y","isValidDropTarget","getKeyboardNavigationTarget","direction","getKeyboardPageNavigationTarget","PointerTrackingState","lastY","lastX","yDirection","xDirection","boundaryContext","parentKey","lastSwitchY","lastSwitchX","preferredTargetIndex","X_SWITCH_THRESHOLD","Y_SWITCH_THRESHOLD","EXPANSION_KEYS","expand","ltr","rtl","collapse","const","resolveTreeDirection","element","dir","closest","getAttribute","window","getComputedStyle","computedDirection","document","createTreeDropTargetDelegate","delegate","baseKeyboardNav","pointerTracking","getPotentialTargets","originalTarget","dropPosition","getNodeNextKey","node","declaredNextKey","nextKey","currentItem","getItem","type","potentialTargets","hasChildNodes","has","firstChildItemNode","child","getChildren","beforeFirstChildTarget","ancestorTargets","parentItem","nextItem","isLastChildAtLevel","afterParentTarget","push","length","getKeyAfter","nextNode","beforeTarget","filter","candidate","selectTarget","currentYMovement","currentXMovement","initialTargetIndex","distanceFromLastXSwitch","Math","abs","distanceFromLastYSwitch","currentIndex","currentTargetIndex","targetIndex","max","min","isVisibleRow","rowIndex","tryValid","t","getFirstChildItemKey","getLastChildItemKey","lastKey","getDeepestLastChild","lastChild","firstKey","getFirstKey","firstChild","targetNode","nextSiblingKey","nextSibling","parentNode","parentNextKey","parentNextNode","getLastKey","rootKey","deepest","prevKey","getKeyBefore","baseTarget","deltaY","deltaX","keyBefore","normalized","bind","TreeItemContextValue","TreeContext","TreeStateContext","TreeItemContext","TreeItemContentContext","isTreeItemRecord","value","Record","PropertyKey","treeItemDataFromNode","undefined","childNodes","map","Tree","local","stateProps","ariaProps","setRef","flatItems","hasSections","some","entry","collectionFactory","lastExpandedKeys","setLastExpandedKeys","lastItemsLength","setLastItemsLength","collectionVersion","setCollectionVersion","expanded","areSetsEqual","v","treeDirection","treeProps","isVirtualized","keyboardNavigationBehavior","focusProps","renderValues","renderProps","defaultClassName","domProps","filtered","global","cleanTreeProps","_ref1","rest","cleanFocusProps","_ref2","visibleRows","rows","virtualizer","parentCollectionRenderer","getDropTargetByIndex","index","position","hasDroppableDnd","hooks","Boolean","useDroppableCollectionState","useDroppableCollection","dropTargetDelegate","ListDropTargetDelegate","hasDraggableDnd","useDraggableCollectionState","useDraggableCollection","activeDropState","originalGetDropOperation","getDropOperation","types","allowedOperations","currentDraggingKeys","draggingKeys","size","currentKey","activeDragState","contextValue","droppableCollection","baseDropTargetDelegate","layout","orientation","getBaseKeyboardNavigationTarget","keyboardDelegate","getKeyBelow","getKeyAbove","getKeyPageBelow","getKeyPageAbove","setSelectedKeys","clearSelection","toggleSelection","setFocusedKey","onDropActivate","event","isVirtualDragging","toggleKey","onKeyDown","currentDirection","expandKey","collapseKey","isRootDropTarget","dndRenderDropIndicator","dndDropIndicator","persistedKeys","focusedKey","virtualRange","baseRange","getVisibleRange","persistedIndexes","Array","from","findIndex","dropTarget","normalizedDropKey","focusedIndex","forceIncludeIndexes","forceIncludeMaxSpan","virtualizedVisibleRows","range","slice","start","end","setDropTargetItemCountResolver","setDropTargetIndexResolver","setDropTargetResolver","rowIndexByKey","Map","i","set","getAfterIndicatorIndexes","absoluteIndex","renderRange","next","result","cursorIndex","cursor","shouldRender","get","parentDelegate","_x","_y","_v","treeDelegate","setKeyboardNavigationOverride","isValid","collectionRenderer","renderDropIndicator","rootKeyByNodeKey","rootMap","row","getParentKey","renderableRows","offset","globalIndex","sectionedRenderableRows","matching","sectionRootKeys","sectionRows","section","renderTreeRow","itemIndex","beforeIndicator","onIndicator","afterIndicatorIndexes","itemData","itemState","_$memo","_$createComponent","each","afterIndex","Provider","_el$","_$getNextElement","_tmpl$","_el$2","_el$3","_co$","_$getNextMarker","_el$4","_el$5","_co$2","_$use","_$spread","_$mergeProps","collectionProps","data-focused","data-focus-visible","data-disabled","data-empty","data-drop-target","data-selection-mode","data-allows-dragging","_$insert","_el$6","_tmpl$2","_el$7","offsetTop","_el$8","_tmpl$3","_$effect","_$p","_$setStyleProperty","when","fallback","TreeSection","title","TreeHeader","offsetBottom","_el$9","_tmpl$4","_c$","TreeLoadMoreItem","_$runHydrationEvents","TreeItem","context","Error","treeContext","router","linkProps","setItemRef","itemNode","String","treeItemAria","hoverProps","draggableItem","useDraggableItem","Parameters","NonNullable","droppableItem","useDroppableItem","cleanRowProps","rowProps","cleanHoverProps","_ref3","itemContextValue","rowStyle","rowContent","_el$0","_tmpl$5","gridCellProps","renderChildren","mergedRowProps","dragProps","dropProps","onLinkedRowClick","MouseEvent","onClick","downloadAttr","referrerPolicyAttr","linkedRowDomProps","_el$1","data-selected","data-pressed","data-hovered","data-expanded","data-expandable","data-has-child-items","data-level","data-dragging","isDragging","isDropTarget","TreeExpandButton","itemContext","stateContext","cleanExpandProps","_ref","expandButtonProps","dataProps","startsWith","_el$10","_tmpl$6","TreeSelectionCheckbox","itemKey","excludeFromTabOrder","treeSelectionCheckboxAria","_el$11","_tmpl$7","checkboxProps","tabIndex","aria-label","sentinelRef","isPending","setIsPending","triggerLoadMore","IntersectionObserver","margin","observer","entries","isIntersecting","rootMargin","observe","disconnect","_el$12","_tmpl$8","_el$13","_ref$","_el$14","_tmpl$9","_el$15","$$focusin","addEventListener","_p$","_v$","_v$2","_v$3","_v$4","_v$5","e","_$setAttribute","_$className","a","_$style","o","TreeItemContentProps","TreeItemContentRenderProps","TreeItemContent","hasChildren","filteredDomProps","_el$16","rowGroupProps","slot","rowHeaderProps","Item","ExpandButton","SelectionCheckbox","LoadMoreItem","Section","Header","b","_$delegateEvents"],"sources":["../src/Tree.tsx"],"sourcesContent":["/**\n * Tree component for solidaria-components\n *\n * A pre-wired headless tree that combines state + aria hooks.\n * Based on react-aria-components/src/Tree.tsx\n *\n * Tree displays hierarchical data with expandable/collapsible nodes,\n * supporting keyboard navigation and selection.\n */\n\nimport {\n type JSX,\n onCleanup,\n createContext,\n createEffect,\n createMemo,\n createSignal,\n splitProps,\n useContext,\n For,\n Show,\n} from \"solid-js\";\nimport {\n createTree,\n createTreeItem,\n createTreeSelectionCheckbox,\n createGridListSection,\n createFocusRing,\n createHover,\n mergeProps,\n type AriaTreeProps,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n createTreeState,\n createTreeCollection,\n type TreeState,\n type TreeCollection,\n type TreeNode,\n type TreeItemData,\n type Key,\n type DropTarget,\n type ItemDropTarget,\n} from \"@proyecto-viviana/solid-stately\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\nimport { SharedElementTransition } from \"./SharedElementTransition\";\nimport { type DragAndDropHooks } from \"./useDragAndDrop\";\nimport {\n getNormalizedDropTargetKey,\n mergePersistedKeysIntoVirtualRange,\n useDndPersistedKeys,\n useRenderDropIndicator,\n} from \"./DragAndDrop\";\nimport {\n CollectionRendererContext,\n flattenCollectionEntries,\n isCollectionSection,\n type CollectionEntry,\n type CollectionRendererContextValue,\n type SectionProps,\n useCollectionRenderer,\n} from \"./Collection\";\nimport {\n GridListHeader,\n GridListHeaderContext,\n GridListHeaderInnerContext,\n type GridListHeaderProps,\n} from \"./GridList\";\nimport { useVirtualizerContext } from \"./Virtualizer\";\nimport {\n handleLinkClick,\n type LinkDOMProps,\n type RouterOptions,\n useLinkProps,\n useRouter,\n} from \"./RouterProvider\";\n\ntype RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;\n\nfunction assignRef<T>(ref: RefLike<T>, el: T): void {\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(el);\n } else {\n ref.current = el;\n }\n}\n\nexport interface TreeRenderProps {\n /** Whether the tree has focus. */\n isFocused: boolean;\n /** Whether the tree has keyboard focus. */\n isFocusVisible: boolean;\n /** Whether the tree is disabled. */\n isDisabled: boolean;\n /** Whether the tree is empty. */\n isEmpty: boolean;\n}\n\nexport interface TreeProps<T extends object> extends Omit<AriaTreeProps, \"children\">, SlotProps {\n /** The hierarchical items to render in the tree. */\n items?: CollectionEntry<TreeItemData<T>>[];\n /** The selection mode. */\n selectionMode?: \"none\" | \"single\" | \"multiple\";\n /** The selection behavior (toggle vs replace). */\n selectionBehavior?: \"toggle\" | \"replace\";\n /** Whether disabled items can still receive focus. */\n disabledBehavior?: \"selection\" | \"all\";\n /** Keys of disabled items. */\n disabledKeys?: Iterable<Key>;\n /** Currently selected keys (controlled). */\n selectedKeys?: \"all\" | Iterable<Key>;\n /** Default selected keys (uncontrolled). */\n defaultSelectedKeys?: \"all\" | Iterable<Key>;\n /** Handler called when selection changes. */\n onSelectionChange?: (keys: \"all\" | Set<Key>) => void;\n /** Currently expanded keys (controlled). */\n expandedKeys?: Iterable<Key>;\n /** Default expanded keys (uncontrolled). */\n defaultExpandedKeys?: Iterable<Key>;\n /** Handler called when expansion changes. */\n onExpandedChange?: (keys: Set<Key>) => void;\n /** The children of the component. A function provided to render each item. */\n children: (item: TreeItemData<T>, state: TreeRenderItemState) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<TreeRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<TreeRenderProps>;\n /** A function to render when the tree is empty. */\n renderEmptyState?: () => JSX.Element;\n /** Whether there are more items to load. */\n hasMore?: boolean;\n /** Whether additional items are currently loading. */\n isLoading?: boolean;\n /** Loading state for async collection parity. */\n loadingState?: \"idle\" | \"loading\" | \"loadingMore\" | \"sorting\" | \"filtering\" | \"error\";\n /** Called when the load more sentinel becomes visible. */\n onLoadMore?: () => void | Promise<void>;\n /** Renders the load-more sentinel content. */\n renderLoadMoreItem?: (state: { isLoading: boolean }) => JSX.Element;\n /** CSS className for the load-more sentinel. */\n loadMoreClass?: ClassNameOrFunction<{ isLoading: boolean }>;\n /** Inline style for the load-more sentinel. */\n loadMoreStyle?: StyleOrFunction<{ isLoading: boolean }>;\n /** Drag and drop hooks from `useDragAndDrop`. */\n dragAndDropHooks?: DragAndDropHooks<T>;\n /** Ref for the rendered tree element. */\n ref?: RefLike<HTMLDivElement>;\n}\n\nexport interface TreeRenderItemState {\n /** Whether the item is expanded. */\n isExpanded: boolean;\n /** Whether the item is expandable (has children). */\n isExpandable: boolean;\n /** The nesting level (0 = root). */\n level: number;\n}\n\nexport interface TreeItemRenderProps {\n /** Whether the item is selected. */\n isSelected: boolean;\n /** Whether the item is focused. */\n isFocused: boolean;\n /** Whether the item has keyboard focus. */\n isFocusVisible: boolean;\n /** Whether the item is pressed. */\n isPressed: boolean;\n /** Whether the item is hovered. */\n isHovered: boolean;\n /** Whether the item is disabled. */\n isDisabled: boolean;\n /** Whether the item is expanded. */\n isExpanded: boolean;\n /** Whether the item is expandable (has children). */\n isExpandable: boolean;\n /** The nesting level (0 = root). */\n level: number;\n /** The selection mode active on the tree. */\n selectionMode: \"none\" | \"single\" | \"multiple\";\n /** The selection behavior active on the tree. */\n selectionBehavior: \"toggle\" | \"replace\";\n}\n\nexport interface TreeItemProps<T extends object>\n extends\n SlotProps,\n Omit<JSX.HTMLAttributes<HTMLElement>, \"class\" | \"style\" | \"children\" | \"id\" | \"ref\"> {\n /** The unique key for the item. */\n id: Key;\n /** The item value. */\n item?: TreeItemData<T>;\n /** The children of the item. A function may be provided to receive render props. */\n children?: RenderChildren<TreeItemRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<TreeItemRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<TreeItemRenderProps>;\n /** The text value of the item (for accessibility). */\n textValue?: string;\n /** Handler called when the item is activated. */\n onAction?: () => void;\n /** Whether this item has children that may not be loaded yet. */\n hasChildItems?: boolean;\n /** Whether this item is disabled. */\n isDisabled?: boolean;\n /** Link target metadata. */\n href?: string;\n target?: LinkDOMProps[\"target\"];\n download?: LinkDOMProps[\"download\"];\n rel?: LinkDOMProps[\"rel\"];\n hrefLang?: string;\n ping?: LinkDOMProps[\"ping\"];\n referrerPolicy?: LinkDOMProps[\"referrerPolicy\"];\n routerOptions?: RouterOptions;\n /** Ref for the rendered row element. */\n ref?: RefLike<HTMLElement>;\n}\n\nexport interface TreeExpandButtonProps {\n /** CSS class name for the button. */\n class?: string;\n /** CSS style for the button. */\n style?: JSX.CSSProperties;\n /** Children to render inside the button. */\n children?: JSX.Element | ((props: { isExpanded: boolean }) => JSX.Element);\n [key: `data-${string}`]: string | undefined;\n}\n\nexport interface TreeLoadMoreItemProps extends SlotProps {\n onLoadMore: () => void | Promise<void>;\n isLoading?: boolean;\n loadingState?: \"idle\" | \"loading\" | \"loadingMore\" | \"sorting\" | \"filtering\" | \"error\";\n level?: number;\n /** Scroll offset multiplier for early loading trigger (default: 1 = 100% of viewport height). */\n scrollOffset?: number;\n children?: JSX.Element;\n class?: ClassNameOrFunction<{ isLoading: boolean }>;\n style?: StyleOrFunction<{ isLoading: boolean }>;\n}\n\nexport interface TreeSectionProps extends SectionProps {}\nexport interface TreeHeaderProps extends GridListHeaderProps {}\n\ninterface TreeContextValue<T extends object> {\n state: TreeState<T, TreeCollection<T>>;\n collection: TreeCollection<T>;\n isDisabled: boolean;\n renderItem: (item: TreeItemData<T>, state: TreeRenderItemState) => JSX.Element;\n dragAndDropHooks?: DragAndDropHooks<T>;\n dragState?: unknown;\n dropState?: unknown;\n}\n\ninterface TreeDropTargetDelegate {\n getDropTargetFromPoint: (\n x: number,\n y: number,\n isValidDropTarget: (target: DropTarget) => boolean,\n ) => DropTarget | null;\n getKeyboardNavigationTarget?: (\n target: DropTarget | null,\n direction: \"next\" | \"previous\",\n isValidDropTarget: (target: DropTarget) => boolean,\n ) => DropTarget | null;\n getKeyboardPageNavigationTarget?: (\n target: DropTarget | null,\n direction: \"next\" | \"previous\",\n isValidDropTarget: (target: DropTarget) => boolean,\n ) => DropTarget | null;\n}\n\ninterface PointerTrackingState {\n lastY: number;\n lastX: number;\n yDirection: \"up\" | \"down\" | null;\n xDirection: \"left\" | \"right\" | null;\n boundaryContext: {\n parentKey: Key;\n lastSwitchY: number;\n lastSwitchX: number;\n preferredTargetIndex?: number;\n } | null;\n}\n\nconst X_SWITCH_THRESHOLD = 10;\nconst Y_SWITCH_THRESHOLD = 5;\nconst EXPANSION_KEYS = {\n expand: { ltr: \"ArrowRight\", rtl: \"ArrowLeft\" },\n collapse: { ltr: \"ArrowLeft\", rtl: \"ArrowRight\" },\n} as const;\n\nfunction resolveTreeDirection(element: HTMLElement | null): \"ltr\" | \"rtl\" {\n if (element) {\n const dir = element.closest(\"[dir]\")?.getAttribute(\"dir\");\n if (dir === \"rtl\") return \"rtl\";\n if (dir === \"ltr\") return \"ltr\";\n if (typeof window !== \"undefined\" && typeof window.getComputedStyle === \"function\") {\n const computedDirection = window.getComputedStyle(element).direction;\n if (computedDirection === \"rtl\") return \"rtl\";\n if (computedDirection === \"ltr\") return \"ltr\";\n }\n }\n if (typeof document !== \"undefined\") {\n return document.dir === \"rtl\" ? \"rtl\" : \"ltr\";\n }\n return \"ltr\";\n}\n\nfunction createTreeDropTargetDelegate<T extends object>(\n delegate: TreeDropTargetDelegate,\n state: TreeState<T, TreeCollection<T>>,\n direction: \"ltr\" | \"rtl\",\n baseKeyboardNav?: (\n target: DropTarget | null,\n direction: \"next\" | \"previous\",\n isValidDropTarget: (target: DropTarget) => boolean,\n ) => DropTarget | null,\n): TreeDropTargetDelegate {\n const pointerTracking: PointerTrackingState = {\n lastY: 0,\n lastX: 0,\n yDirection: null,\n xDirection: null,\n boundaryContext: null,\n };\n\n const getPotentialTargets = (\n originalTarget: ItemDropTarget,\n isValidDropTarget: (target: DropTarget) => boolean,\n ): ItemDropTarget[] => {\n if (originalTarget.dropPosition === \"on\") return [originalTarget];\n\n const collection = state.collection;\n const getNodeNextKey = (node: TreeNode<T> | null | undefined): Key | null => {\n if (!node) return null;\n const declaredNextKey = (node as TreeNode<T> & { nextKey?: Key | null }).nextKey;\n return declaredNextKey ?? null;\n };\n const target: ItemDropTarget = { ...originalTarget };\n let currentItem = collection.getItem(target.key);\n while (currentItem && currentItem.type !== \"item\") {\n const nextKey = getNodeNextKey(currentItem);\n if (nextKey == null) break;\n target.key = nextKey;\n currentItem = collection.getItem(nextKey);\n }\n\n const potentialTargets: ItemDropTarget[] = [target];\n\n if (\n currentItem &&\n currentItem.hasChildNodes &&\n state.expandedKeys.has(currentItem.key) &&\n target.dropPosition === \"after\"\n ) {\n let firstChildItemNode: TreeNode<T> | null = null;\n for (const child of collection.getChildren(currentItem.key)) {\n if (child.type === \"item\") {\n firstChildItemNode = child;\n break;\n }\n }\n\n if (firstChildItemNode) {\n const beforeFirstChildTarget: ItemDropTarget = {\n type: \"item\",\n key: firstChildItemNode.key,\n dropPosition: \"before\",\n };\n\n if (isValidDropTarget(beforeFirstChildTarget)) {\n return [beforeFirstChildTarget];\n }\n return [];\n }\n }\n\n if (getNodeNextKey(currentItem) != null) {\n return [originalTarget];\n }\n\n let parentKey = currentItem?.parentKey ?? null;\n const ancestorTargets: ItemDropTarget[] = [];\n while (parentKey != null) {\n const parentItem = collection.getItem(parentKey);\n const nextKey = getNodeNextKey(parentItem);\n const nextItem = nextKey != null ? collection.getItem(nextKey) : null;\n const isLastChildAtLevel = !nextItem || nextItem.parentKey !== parentKey;\n\n if (isLastChildAtLevel) {\n const afterParentTarget: ItemDropTarget = {\n type: \"item\",\n key: parentKey,\n dropPosition: \"after\",\n };\n\n if (isValidDropTarget(afterParentTarget)) {\n ancestorTargets.push(afterParentTarget);\n }\n if (nextItem) break;\n }\n\n parentKey = parentItem?.parentKey ?? null;\n }\n\n if (ancestorTargets.length > 0) {\n potentialTargets.push(...ancestorTargets);\n }\n\n if (potentialTargets.length === 1) {\n const nextKey = collection.getKeyAfter(target.key);\n const nextNode = nextKey != null ? collection.getItem(nextKey) : null;\n if (\n nextKey != null &&\n nextNode &&\n currentItem &&\n nextNode.level != null &&\n currentItem.level != null &&\n nextNode.level > currentItem.level\n ) {\n const beforeTarget: ItemDropTarget = {\n type: \"item\",\n key: nextKey,\n dropPosition: \"before\",\n };\n if (isValidDropTarget(beforeTarget)) return [beforeTarget];\n }\n }\n\n return potentialTargets.filter((candidate) => isValidDropTarget(candidate));\n };\n\n const selectTarget = (\n potentialTargets: ItemDropTarget[],\n originalTarget: ItemDropTarget,\n x: number,\n y: number,\n currentYMovement: \"up\" | \"down\" | null,\n currentXMovement: \"left\" | \"right\" | null,\n ): ItemDropTarget => {\n if (potentialTargets.length < 2) return potentialTargets[0];\n\n const currentItem = state.collection.getItem(originalTarget.key);\n const parentKey = currentItem?.parentKey;\n if (parentKey == null) return potentialTargets[0];\n\n if (\n !pointerTracking.boundaryContext ||\n pointerTracking.boundaryContext.parentKey !== parentKey\n ) {\n const initialTargetIndex =\n pointerTracking.yDirection === \"up\" ? potentialTargets.length - 1 : 0;\n pointerTracking.boundaryContext = {\n parentKey,\n preferredTargetIndex: initialTargetIndex,\n lastSwitchY: y,\n lastSwitchX: x,\n };\n }\n\n const boundaryContext = pointerTracking.boundaryContext;\n const distanceFromLastXSwitch = Math.abs(x - boundaryContext.lastSwitchX);\n const distanceFromLastYSwitch = Math.abs(y - boundaryContext.lastSwitchY);\n\n if (distanceFromLastYSwitch > Y_SWITCH_THRESHOLD && currentYMovement) {\n const currentIndex = boundaryContext.preferredTargetIndex ?? 0;\n if (currentYMovement === \"down\" && currentIndex === 0) {\n boundaryContext.preferredTargetIndex = potentialTargets.length - 1;\n } else if (currentYMovement === \"up\" && currentIndex === potentialTargets.length - 1) {\n boundaryContext.preferredTargetIndex = 0;\n }\n pointerTracking.xDirection = null;\n }\n\n if (distanceFromLastXSwitch > X_SWITCH_THRESHOLD && currentXMovement) {\n const currentTargetIndex = boundaryContext.preferredTargetIndex ?? 0;\n\n if (currentXMovement === \"left\") {\n if (direction === \"ltr\") {\n if (currentTargetIndex < potentialTargets.length - 1) {\n boundaryContext.preferredTargetIndex = currentTargetIndex + 1;\n boundaryContext.lastSwitchX = x;\n }\n } else if (currentTargetIndex > 0) {\n boundaryContext.preferredTargetIndex = currentTargetIndex - 1;\n boundaryContext.lastSwitchX = x;\n }\n } else if (currentXMovement === \"right\") {\n if (direction === \"ltr\") {\n if (currentTargetIndex > 0) {\n boundaryContext.preferredTargetIndex = currentTargetIndex - 1;\n boundaryContext.lastSwitchX = x;\n }\n } else if (currentTargetIndex < potentialTargets.length - 1) {\n boundaryContext.preferredTargetIndex = currentTargetIndex + 1;\n boundaryContext.lastSwitchX = x;\n }\n }\n\n pointerTracking.yDirection = null;\n }\n\n const targetIndex = Math.max(\n 0,\n Math.min(boundaryContext.preferredTargetIndex ?? 0, potentialTargets.length - 1),\n );\n return potentialTargets[targetIndex];\n };\n\n // --- Tree-aware keyboard DnD navigation (RAC parity) ---\n const getKeyboardNavigationTarget = (\n target: DropTarget | null,\n dir: \"next\" | \"previous\",\n isValidDropTarget: (target: DropTarget) => boolean,\n ): DropTarget | null => {\n const collection = state.collection;\n\n // If the target key is not a visible row (e.g. collapsed/hidden child node),\n // fall back to the base (non-override) index-based navigation to avoid infinite recursion.\n // The collection keyMap contains ALL nodes (even collapsed), so check visible rows instead.\n if (target && target.type === \"item\") {\n const node = collection.getItem(target.key);\n const isVisibleRow =\n node != null && (node as TreeNode<T> & { rowIndex?: number }).rowIndex != null;\n if (!isVisibleRow) {\n return baseKeyboardNav?.(target, dir, isValidDropTarget) ?? null;\n }\n }\n\n // Helpers\n const tryValid = (t: DropTarget): DropTarget | null => (isValidDropTarget(t) ? t : null);\n\n const getNodeNextKey = (node: TreeNode<T> | null | undefined): Key | null => {\n if (!node) return null;\n return (node as TreeNode<T> & { nextKey?: Key | null }).nextKey ?? null;\n };\n\n const isExpanded = (key: Key): boolean => {\n const node = collection.getItem(key);\n if (!node || !node.hasChildNodes) return false;\n return state.expandedKeys.has(key);\n };\n\n const getFirstChildItemKey = (key: Key): Key | null => {\n for (const child of collection.getChildren(key)) {\n if (child.type === \"item\") return child.key;\n }\n return null;\n };\n\n const getLastChildItemKey = (key: Key): Key | null => {\n let lastKey: Key | null = null;\n for (const child of collection.getChildren(key)) {\n if (child.type === \"item\") lastKey = child.key;\n }\n return lastKey;\n };\n\n // Find the deepest last expanded descendant (for \"previous\" from 'after')\n const getDeepestLastChild = (key: Key): Key => {\n let current = key;\n while (isExpanded(current)) {\n const lastChild = getLastChildItemKey(current);\n if (lastChild == null) break;\n current = lastChild;\n }\n return current;\n };\n\n if (dir === \"next\") {\n // From null → root\n if (!target) {\n return tryValid({ type: \"root\" });\n }\n // From root → first item 'before'\n if (target.type === \"root\") {\n const firstKey = collection.getFirstKey();\n if (firstKey != null) {\n return tryValid({ type: \"item\", key: firstKey, dropPosition: \"before\" });\n }\n return null;\n }\n if (target.type === \"item\") {\n switch (target.dropPosition) {\n case \"before\":\n return (\n tryValid({ type: \"item\", key: target.key, dropPosition: \"on\" }) ??\n tryValid({ type: \"item\", key: target.key, dropPosition: \"after\" })\n );\n case \"on\": {\n // If item is expanded and has children, go to first child 'before'\n if (isExpanded(target.key)) {\n const firstChild = getFirstChildItemKey(target.key);\n if (firstChild != null) {\n return (\n tryValid({ type: \"item\", key: firstChild, dropPosition: \"before\" }) ??\n tryValid({ type: \"item\", key: firstChild, dropPosition: \"on\" })\n );\n }\n }\n // Otherwise, next item in collection or 'after'\n const nextKey = collection.getKeyAfter(target.key);\n const targetNode = collection.getItem(target.key);\n const nextNode = nextKey != null ? collection.getItem(nextKey) : null;\n if (\n targetNode &&\n nextNode &&\n nextNode.level != null &&\n targetNode.level != null &&\n nextNode.level >= targetNode.level\n ) {\n return (\n tryValid({ type: \"item\", key: nextNode.key, dropPosition: \"before\" }) ??\n tryValid({ type: \"item\", key: target.key, dropPosition: \"after\" })\n );\n }\n return tryValid({ type: \"item\", key: target.key, dropPosition: \"after\" });\n }\n case \"after\": {\n // If item is expanded (and we're at 'after'), first child\n if (isExpanded(target.key)) {\n const firstChild = getFirstChildItemKey(target.key);\n if (firstChild != null) {\n return (\n tryValid({ type: \"item\", key: firstChild, dropPosition: \"before\" }) ??\n tryValid({ type: \"item\", key: firstChild, dropPosition: \"on\" })\n );\n }\n }\n // Check if this is the last sibling at its level\n const targetNode = collection.getItem(target.key);\n const nextSiblingKey = getNodeNextKey(targetNode);\n if (nextSiblingKey != null) {\n const nextSibling = collection.getItem(nextSiblingKey);\n if (nextSibling?.type === \"item\") {\n return (\n tryValid({ type: \"item\", key: nextSibling.key, dropPosition: \"before\" }) ??\n tryValid({ type: \"item\", key: nextSibling.key, dropPosition: \"on\" })\n );\n }\n }\n // Traverse up to parent when at last sibling\n if (targetNode?.parentKey != null) {\n const parentNode = collection.getItem(targetNode.parentKey);\n const parentNextKey = getNodeNextKey(parentNode);\n const parentNextNode =\n parentNextKey != null ? collection.getItem(parentNextKey) : null;\n if (parentNextNode?.type === \"item\") {\n return tryValid({ type: \"item\", key: parentNextNode.key, dropPosition: \"before\" });\n }\n if (parentNode?.type === \"item\") {\n return tryValid({ type: \"item\", key: parentNode.key, dropPosition: \"after\" });\n }\n }\n // Reached end — try next item in flat collection\n const nextKey = collection.getKeyAfter(target.key);\n if (nextKey != null) {\n return (\n tryValid({ type: \"item\", key: nextKey, dropPosition: \"before\" }) ??\n tryValid({ type: \"item\", key: nextKey, dropPosition: \"on\" })\n );\n }\n return tryValid({ type: \"root\" });\n }\n }\n }\n return null;\n }\n\n // From null or root → last root-level item 'after'\n if (!target || target.type === \"root\") {\n const lastKey = collection.getLastKey();\n if (lastKey != null) {\n // Find root-level ancestor of last key\n let rootKey = lastKey;\n let node = collection.getItem(lastKey);\n while (node?.parentKey != null) {\n rootKey = node.parentKey;\n node = collection.getItem(rootKey);\n }\n return tryValid({ type: \"item\", key: rootKey, dropPosition: \"after\" });\n }\n return null;\n }\n\n if (target.type === \"item\") {\n switch (target.dropPosition) {\n case \"after\": {\n // If expanded with children, go to deepest last child 'after'\n const deepest = getDeepestLastChild(target.key);\n if (deepest !== target.key) {\n return (\n tryValid({ type: \"item\", key: deepest, dropPosition: \"after\" }) ??\n tryValid({ type: \"item\", key: target.key, dropPosition: \"on\" })\n );\n }\n return tryValid({ type: \"item\", key: target.key, dropPosition: \"on\" });\n }\n case \"on\":\n return tryValid({ type: \"item\", key: target.key, dropPosition: \"before\" });\n case \"before\": {\n // Move to the previous sibling's deepest last child 'after'\n const prevKey = collection.getKeyBefore(target.key);\n if (prevKey != null) {\n const deepest = getDeepestLastChild(prevKey);\n return (\n tryValid({ type: \"item\", key: deepest, dropPosition: \"after\" }) ??\n tryValid({ type: \"item\", key: prevKey, dropPosition: \"on\" })\n );\n }\n // No previous — go to root\n return tryValid({ type: \"root\" });\n }\n }\n }\n\n return null;\n };\n\n return {\n getDropTargetFromPoint(x, y, isValidDropTarget) {\n const baseTarget = delegate.getDropTargetFromPoint(x, y, isValidDropTarget);\n if (!baseTarget || baseTarget.type === \"root\") return baseTarget;\n\n const deltaY = y - pointerTracking.lastY;\n const deltaX = x - pointerTracking.lastX;\n let currentYMovement: \"up\" | \"down\" | null = pointerTracking.yDirection;\n let currentXMovement: \"left\" | \"right\" | null = pointerTracking.xDirection;\n\n if (Math.abs(deltaY) > Y_SWITCH_THRESHOLD) {\n currentYMovement = deltaY > 0 ? \"down\" : \"up\";\n pointerTracking.yDirection = currentYMovement;\n pointerTracking.lastY = y;\n }\n\n if (Math.abs(deltaX) > X_SWITCH_THRESHOLD) {\n currentXMovement = deltaX > 0 ? \"right\" : \"left\";\n pointerTracking.xDirection = currentXMovement;\n pointerTracking.lastX = x;\n }\n\n let target: ItemDropTarget = baseTarget;\n if (target.dropPosition === \"before\") {\n const keyBefore = state.collection.getKeyBefore(target.key);\n if (keyBefore != null) {\n const normalized: ItemDropTarget = {\n type: \"item\",\n key: keyBefore,\n dropPosition: \"after\",\n };\n if (isValidDropTarget(normalized)) target = normalized;\n }\n }\n\n const potentialTargets = getPotentialTargets(target, isValidDropTarget);\n if (potentialTargets.length === 0) return { type: \"root\" };\n\n if (potentialTargets.length > 1) {\n return selectTarget(potentialTargets, target, x, y, currentYMovement, currentXMovement);\n }\n\n pointerTracking.boundaryContext = null;\n return potentialTargets[0];\n },\n getKeyboardNavigationTarget,\n getKeyboardPageNavigationTarget: delegate.getKeyboardPageNavigationTarget?.bind(delegate),\n };\n}\n\ninterface TreeItemContextValue<T extends object> {\n node: TreeNode<T>;\n isExpanded: boolean;\n isExpandable: boolean;\n level: number;\n}\n\nexport const TreeContext = createContext<TreeContextValue<object> | null>(null);\nexport const TreeStateContext = createContext<TreeState<object, TreeCollection<object>> | null>(\n null,\n);\nexport const TreeItemContext = createContext<TreeItemContextValue<object> | null>(null);\nconst TreeItemContentContext = createContext<TreeItemRenderProps | null>(null);\n\nfunction isTreeItemRecord(value: unknown): value is Record<PropertyKey, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction treeItemDataFromNode<T extends object>(node: TreeNode<T>): TreeItemData<T> {\n const value = node.value;\n const item: Record<PropertyKey, unknown> = isTreeItemRecord(value) ? value : {};\n return {\n ...item,\n key: node.key,\n id: (item.id as Key | undefined) ?? node.key,\n value: (value ?? undefined) as T | undefined,\n textValue: node.textValue,\n isDisabled: node.isDisabled,\n hasChildItems: node.hasChildNodes,\n children:\n node.childNodes.length > 0\n ? node.childNodes.map((child) => treeItemDataFromNode(child))\n : undefined,\n };\n}\n\n/**\n * A tree displays hierarchical data with expandable/collapsible nodes,\n * supporting keyboard navigation and selection.\n */\nexport function Tree<T extends object>(props: TreeProps<T>): JSX.Element {\n const [local, stateProps, ariaProps] = splitProps(\n props,\n [\n \"class\",\n \"style\",\n \"slot\",\n \"renderEmptyState\",\n \"hasMore\",\n \"isLoading\",\n \"loadingState\",\n \"onLoadMore\",\n \"renderLoadMoreItem\",\n \"loadMoreClass\",\n \"loadMoreStyle\",\n \"dragAndDropHooks\",\n \"ref\",\n ],\n [\n \"items\",\n \"disabledKeys\",\n \"disabledBehavior\",\n \"selectionMode\",\n \"selectionBehavior\",\n \"selectedKeys\",\n \"defaultSelectedKeys\",\n \"onSelectionChange\",\n \"expandedKeys\",\n \"defaultExpandedKeys\",\n \"onExpandedChange\",\n ],\n );\n\n const [ref, setRef] = createSignal<HTMLDivElement | null>(null);\n const flatItems = createMemo<TreeItemData<T>[]>(() =>\n flattenCollectionEntries(stateProps.items ?? []),\n );\n const hasSections = createMemo(() =>\n (stateProps.items ?? []).some((entry) => isCollectionSection(entry)),\n );\n\n const state = createTreeState<T, TreeCollection<T>>(() => ({\n collectionFactory: (expandedKeys) =>\n createTreeCollection(flatItems(), expandedKeys) as TreeCollection<T>,\n disabledKeys: stateProps.disabledKeys,\n disabledBehavior: stateProps.disabledBehavior,\n selectionMode: stateProps.selectionMode,\n selectionBehavior: stateProps.selectionBehavior,\n selectedKeys: stateProps.selectedKeys,\n defaultSelectedKeys: stateProps.defaultSelectedKeys,\n onSelectionChange: stateProps.onSelectionChange,\n expandedKeys: stateProps.expandedKeys,\n defaultExpandedKeys: stateProps.defaultExpandedKeys,\n onExpandedChange: stateProps.onExpandedChange,\n }));\n\n const [lastExpandedKeys, setLastExpandedKeys] = createSignal<Set<Key>>(new Set());\n const [lastItemsLength, setLastItemsLength] = createSignal(flatItems().length);\n const [collectionVersion, setCollectionVersion] = createSignal(0);\n createEffect(() => {\n const expanded = state.expandedKeys;\n const items = flatItems();\n if (!areSetsEqual(lastExpandedKeys(), expanded) || lastItemsLength() !== items.length) {\n setLastExpandedKeys(new Set(expanded));\n setLastItemsLength(items.length);\n setCollectionVersion((v) => v + 1);\n }\n });\n\n // Resolve writing direction for keyboard expand/collapse parity\n const treeDirection = createMemo(() => ariaProps.direction ?? resolveTreeDirection(ref()));\n\n const { treeProps } = createTree<T, TreeCollection<T>>(\n () => ({\n id: ariaProps.id,\n \"aria-label\": ariaProps[\"aria-label\"],\n \"aria-labelledby\": ariaProps[\"aria-labelledby\"],\n \"aria-describedby\": ariaProps[\"aria-describedby\"],\n isVirtualized: ariaProps.isVirtualized,\n onAction: ariaProps.onAction,\n isDisabled: ariaProps.isDisabled,\n keyboardNavigationBehavior: ariaProps.keyboardNavigationBehavior,\n direction: treeDirection(),\n }),\n () => state,\n ref,\n );\n\n const { isFocused, isFocusVisible, focusProps } = createFocusRing();\n\n const renderValues = createMemo<TreeRenderProps>(() => ({\n isFocused: state.isFocused || isFocused(),\n isFocusVisible: isFocusVisible(),\n isDisabled: ariaProps.isDisabled ?? false,\n isEmpty: flatItems().length === 0,\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-Tree\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() => {\n const filtered = filterDOMProps(ariaProps as Record<string, unknown>, { global: true });\n return filtered;\n });\n\n const cleanTreeProps = () => {\n const { ref: _ref1, ...rest } = treeProps as Record<string, unknown>;\n return rest;\n };\n const cleanFocusProps = () => {\n const { ref: _ref2, ...rest } = focusProps as Record<string, unknown>;\n return rest;\n };\n\n const isEmpty = () => flatItems().length === 0;\n\n const visibleRows = createMemo(() => {\n collectionVersion();\n return state.collection.rows;\n });\n const virtualizer = useVirtualizerContext();\n const parentCollectionRenderer = useCollectionRenderer<TreeItemData<T>>();\n const getDropTargetByIndex = (\n index: number,\n position: \"before\" | \"after\" | \"on\",\n ): DropTarget | null => {\n const node = visibleRows()[index];\n if (!node) return null;\n return { type: \"item\", key: node.key, dropPosition: position };\n };\n const hasDroppableDnd = createMemo(() => {\n const hooks = local.dragAndDropHooks;\n return Boolean(\n hooks?.useDroppableCollectionState &&\n hooks.useDroppableCollection &&\n (hooks.dropTargetDelegate ||\n parentCollectionRenderer?.dropTargetDelegate ||\n hooks.ListDropTargetDelegate),\n );\n });\n const hasDraggableDnd = createMemo(() => {\n const hooks = local.dragAndDropHooks;\n return Boolean(hooks?.useDraggableCollectionState && hooks.useDraggableCollection);\n });\n const dragState = createMemo(() => {\n if (!hasDraggableDnd()) return undefined;\n return local.dragAndDropHooks?.useDraggableCollectionState?.({\n items: visibleRows().map((node) => node.value as T),\n });\n });\n const dropState = createMemo(() => {\n if (!hasDroppableDnd()) return undefined;\n return local.dragAndDropHooks?.useDroppableCollectionState?.({});\n });\n createEffect(() => {\n const activeDropState = dropState();\n if (!activeDropState) return;\n const originalGetDropOperation = activeDropState.getDropOperation.bind(activeDropState);\n\n activeDropState.getDropOperation = (target, types, allowedOperations) => {\n const currentDraggingKeys = dragState()?.draggingKeys ?? new Set<string | number>();\n if (target.type === \"item\" && currentDraggingKeys.size > 0) {\n if (currentDraggingKeys.has(target.key) && target.dropPosition === \"on\") {\n return \"cancel\";\n }\n\n let currentKey: Key | null = target.key;\n while (currentKey != null) {\n const item = state.collection.getItem(currentKey);\n const parentKey = item?.parentKey;\n if (parentKey != null && currentDraggingKeys.has(parentKey)) {\n return \"cancel\";\n }\n currentKey = parentKey ?? null;\n }\n }\n\n return originalGetDropOperation(target, types, allowedOperations);\n };\n\n onCleanup(() => {\n activeDropState.getDropOperation = originalGetDropOperation;\n });\n });\n createEffect(() => {\n if (!hasDraggableDnd()) return;\n const hooks = local.dragAndDropHooks;\n const activeDragState = dragState();\n if (!hooks?.useDraggableCollection || !activeDragState) return;\n hooks.useDraggableCollection({}, activeDragState, () => ref());\n });\n const contextValue = createMemo<TreeContextValue<T>>(() => ({\n state,\n collection: state.collection,\n isDisabled: ariaProps.isDisabled ?? false,\n renderItem: props.children,\n dragAndDropHooks: local.dragAndDropHooks,\n dragState: dragState(),\n dropState: dropState(),\n }));\n const droppableCollection = createMemo(() => {\n if (!hasDroppableDnd()) return undefined;\n const hooks = local.dragAndDropHooks;\n const activeDropState = dropState();\n if (!hooks?.useDroppableCollection || !activeDropState) return undefined;\n const direction = resolveTreeDirection(ref());\n const baseDropTargetDelegate =\n hooks.dropTargetDelegate ??\n parentCollectionRenderer?.dropTargetDelegate ??\n (hooks.ListDropTargetDelegate\n ? new hooks.ListDropTargetDelegate(\n () => state.collection,\n () => ref(),\n { layout: \"stack\", orientation: \"vertical\", direction },\n )\n : undefined);\n if (!baseDropTargetDelegate) return undefined;\n const dropTargetDelegate = createTreeDropTargetDelegate(\n baseDropTargetDelegate as TreeDropTargetDelegate,\n state,\n direction,\n virtualizer?.getBaseKeyboardNavigationTarget,\n );\n return hooks.useDroppableCollection(\n {\n dropTargetDelegate,\n keyboardDelegate: {\n getFirstKey: () => state.collection.getFirstKey(),\n getLastKey: () => state.collection.getLastKey(),\n getKeyBelow: (key) => state.collection.getKeyAfter(key),\n getKeyAbove: (key) => state.collection.getKeyBefore(key),\n getKeyPageBelow: (key) => state.collection.getKeyAfter(key),\n getKeyPageAbove: (key) => state.collection.getKeyBefore(key),\n },\n get collection() {\n return state.collection;\n },\n get selectedKeys() {\n return state.selectedKeys;\n },\n setSelectedKeys: (keys: Set<Key>) => {\n if (state.selectionMode === \"none\") return;\n state.clearSelection();\n for (const key of keys) {\n state.toggleSelection(key);\n }\n },\n setFocusedKey: (key) => state.setFocusedKey(key),\n onDropActivate: (event) => {\n if (event.target.type !== \"item\") return;\n const key = event.target.key;\n const item = state.collection.getItem(key);\n const isExpanded = state.isExpanded(key);\n if (item?.hasChildNodes && (!isExpanded || hooks.isVirtualDragging?.())) {\n state.toggleKey(key);\n }\n },\n onKeyDown: (event) => {\n const target = activeDropState.target;\n if (!target || target.type !== \"item\" || target.dropPosition !== \"on\") return;\n const item = state.collection.getItem(target.key);\n if (!item?.hasChildNodes) return;\n const currentDirection = ariaProps.direction ?? resolveTreeDirection(ref());\n const expandKey = EXPANSION_KEYS.expand[currentDirection];\n const collapseKey = EXPANSION_KEYS.collapse[currentDirection];\n if (event.key === expandKey && !state.isExpanded(target.key)) {\n state.toggleKey(target.key);\n } else if (event.key === collapseKey && state.isExpanded(target.key)) {\n state.toggleKey(target.key);\n }\n },\n },\n activeDropState,\n () => ref(),\n );\n });\n const isRootDropTarget = createMemo(() => {\n return Boolean(dropState()?.target?.type === \"root\");\n });\n const dndRenderDropIndicator = createMemo(() =>\n useRenderDropIndicator(local.dragAndDropHooks, dropState()),\n );\n const dndDropIndicator = (index: number, position: \"before\" | \"after\" | \"on\") => {\n const target = getDropTargetByIndex(index, position);\n if (!target || target.type !== \"item\") return undefined;\n return dndRenderDropIndicator()?.(target);\n };\n const persistedKeys = useDndPersistedKeys(\n { focusedKey: () => state.focusedKey },\n local.dragAndDropHooks,\n dropState(),\n state.collection,\n );\n const virtualRange = createMemo(() => {\n if (!virtualizer || !parentCollectionRenderer?.isVirtualized) return null;\n const rows = visibleRows();\n const baseRange = virtualizer.getVisibleRange(rows.length);\n const persistedIndexes = Array.from(persistedKeys())\n .map((key) => rows.findIndex((node) => node.key === key))\n .filter((index) => index >= 0);\n const dropTarget = dropState()?.target;\n const normalizedDropKey = getNormalizedDropTargetKey(dropTarget, state.collection);\n const focusedKey = state.focusedKey;\n const focusedIndex =\n focusedKey != null ? rows.findIndex((node) => node.key === focusedKey) : -1;\n const forceIncludeIndexes = [\n dropTarget?.type === \"item\" ? rows.findIndex((node) => node.key === dropTarget.key) : -1,\n normalizedDropKey != null ? rows.findIndex((node) => node.key === normalizedDropKey) : -1,\n dropTarget?.type === \"item\" ? -1 : focusedIndex,\n ].filter((index) => index >= 0);\n return mergePersistedKeysIntoVirtualRange(\n baseRange,\n persistedIndexes,\n rows.length,\n virtualizer,\n 80,\n {\n forceIncludeIndexes,\n forceIncludeMaxSpan: 320,\n },\n );\n });\n const virtualizedVisibleRows = createMemo(() => {\n const range = virtualRange();\n if (!range) return visibleRows();\n return visibleRows().slice(range.start, range.end);\n });\n createEffect(() => {\n if (!virtualizer || !parentCollectionRenderer?.isVirtualized) return;\n virtualizer.setDropTargetItemCountResolver(() => visibleRows().length);\n virtualizer.setDropTargetIndexResolver((key) => {\n const rows = visibleRows();\n const index = rows.findIndex((node) => node.key === key);\n return index >= 0 ? index : null;\n });\n virtualizer.setDropTargetResolver((target) => {\n const node = visibleRows()[target.index];\n if (!node) return target;\n return {\n ...target,\n key: typeof node.key === \"string\" || typeof node.key === \"number\" ? node.key : undefined,\n parentKey:\n typeof node.parentKey === \"string\" || typeof node.parentKey === \"number\"\n ? node.parentKey\n : node.parentKey == null\n ? null\n : undefined,\n level: typeof node.level === \"number\" ? node.level : undefined,\n };\n });\n onCleanup(() => {\n virtualizer.setDropTargetIndexResolver(undefined);\n virtualizer.setDropTargetItemCountResolver(undefined);\n virtualizer.setDropTargetResolver(undefined);\n });\n });\n const rowIndexByKey = createMemo(() => {\n const map = new Map<Key, number>();\n const rows = visibleRows();\n for (let i = 0; i < rows.length; i += 1) {\n map.set(rows[i].key, i);\n }\n return map;\n });\n const getAfterIndicatorIndexes = (\n absoluteIndex: number,\n renderRange?: { start: number; end: number } | null,\n ): number[] => {\n const rows = visibleRows();\n const current = rows[absoluteIndex];\n if (!current) return [];\n const next = rows[absoluteIndex + 1];\n // \"after\" is equivalent to next sibling's \"before\" when next row is at same or deeper level.\n if (next && next.level >= current.level) {\n return [];\n }\n\n const result: number[] = [];\n let cursorIndex: number | null = absoluteIndex;\n\n // Emit after indicators for current and ancestor boundary levels, matching RAC branch exit semantics.\n while (cursorIndex != null) {\n const cursor: TreeNode<T> | undefined = rows[cursorIndex];\n if (!cursor) break;\n const shouldRender =\n !next || (cursor.parentKey !== next.parentKey && next.level < cursor.level);\n if (!shouldRender) break;\n result.push(cursorIndex);\n if (cursor.parentKey == null) break;\n cursorIndex = rowIndexByKey().get(cursor.parentKey) ?? null;\n }\n if (!renderRange) return result;\n return result.filter((index) => index >= renderRange.start && index < renderRange.end);\n };\n // Install tree-aware keyboard navigation override into the Virtualizer (if present).\n // This replaces the generic index-based navigation with collection-level semantics\n // (tree branch traversal, level-aware wrapping — RAC parity item #36).\n createEffect(() => {\n if (!virtualizer) return;\n const direction = resolveTreeDirection(ref());\n const parentDelegate: TreeDropTargetDelegate = {\n getDropTargetFromPoint:\n parentCollectionRenderer?.dropTargetDelegate?.getDropTargetFromPoint ??\n ((_x, _y, _v) => null),\n getKeyboardNavigationTarget:\n parentCollectionRenderer?.dropTargetDelegate?.getKeyboardNavigationTarget,\n getKeyboardPageNavigationTarget:\n parentCollectionRenderer?.dropTargetDelegate?.getKeyboardPageNavigationTarget,\n };\n const treeDelegate = createTreeDropTargetDelegate(\n parentDelegate,\n state,\n direction,\n virtualizer.getBaseKeyboardNavigationTarget,\n );\n virtualizer.setKeyboardNavigationOverride(\n treeDelegate.getKeyboardNavigationTarget\n ? (target, dir, isValid) => treeDelegate.getKeyboardNavigationTarget!(target, dir, isValid)\n : undefined,\n );\n onCleanup(() => {\n virtualizer.setKeyboardNavigationOverride(undefined);\n });\n });\n const collectionRenderer = createMemo<CollectionRendererContextValue<unknown>>(() => ({\n ...parentCollectionRenderer,\n renderItem: (item) => item as JSX.Element,\n renderDropIndicator: (index: number, position: \"before\" | \"after\" | \"on\") =>\n dndDropIndicator(index, position) ??\n parentCollectionRenderer?.renderDropIndicator?.(index, position),\n }));\n const rootKeyByNodeKey = createMemo(() => {\n const rootMap = new Map<Key, Key>();\n for (const row of visibleRows()) {\n let rootKey: Key = row.key;\n let parentKey = row.parentKey;\n while (parentKey != null) {\n rootKey = parentKey;\n parentKey = state.collection.getParentKey(parentKey);\n }\n rootMap.set(row.key, rootKey);\n }\n return rootMap;\n });\n const renderRange = createMemo(() => {\n const range = virtualRange();\n if (!range) return null;\n return { start: range.start, end: range.end };\n });\n const renderableRows = createMemo(() => {\n const offset = renderRange()?.start ?? 0;\n return virtualizedVisibleRows().map((node, index) => ({\n node,\n globalIndex: offset + index,\n }));\n });\n const sectionedRenderableRows = createMemo(() => {\n if (!hasSections()) return null;\n const rootMap = rootKeyByNodeKey();\n const rows = renderableRows();\n return (stateProps.items ?? []).map((entry) => {\n if (!isCollectionSection(entry)) {\n const matching = rows.filter((row) => rootMap.get(row.node.key) === entry.key);\n return {\n type: \"single\" as const,\n item: entry,\n rows: matching,\n };\n }\n const sectionRootKeys = new Set(entry.items.map((item) => item.key));\n const sectionRows = rows.filter((row) => {\n const rootKey = rootMap.get(row.node.key);\n return rootKey != null && sectionRootKeys.has(rootKey);\n });\n return {\n type: \"section\" as const,\n section: entry,\n rows: sectionRows,\n };\n });\n });\n const renderTreeRow = (node: TreeNode<T>, itemIndex: number) => {\n const beforeIndicator = () => collectionRenderer().renderDropIndicator?.(itemIndex, \"before\");\n const onIndicator = () => collectionRenderer().renderDropIndicator?.(itemIndex, \"on\");\n const afterIndicatorIndexes = () => getAfterIndicatorIndexes(itemIndex, renderRange());\n const itemData = treeItemDataFromNode(node);\n const itemState: TreeRenderItemState = {\n isExpanded: node.isExpanded ?? false,\n isExpandable: node.isExpandable ?? false,\n level: node.level,\n };\n return (\n <>\n {beforeIndicator()}\n {onIndicator()}\n {props.children(itemData, itemState)}\n <For each={afterIndicatorIndexes()}>\n {(afterIndex) => collectionRenderer().renderDropIndicator?.(afterIndex, \"after\")}\n </For>\n </>\n );\n };\n\n return (\n <TreeContext.Provider value={contextValue() as unknown as TreeContextValue<object>}>\n <TreeStateContext.Provider\n value={state as unknown as TreeState<object, TreeCollection<object>>}\n >\n <CollectionRendererContext.Provider value={collectionRenderer()}>\n <div\n ref={(element) => {\n setRef(element);\n assignRef(local.ref, element);\n }}\n {...mergeProps(\n domProps(),\n cleanTreeProps(),\n cleanFocusProps(),\n (droppableCollection()?.collectionProps as Record<string, unknown> | undefined) ?? {},\n )}\n class={renderProps.class()}\n style={renderProps.style()}\n data-focused={state.isFocused || undefined}\n data-focus-visible={isFocusVisible() || undefined}\n data-disabled={ariaProps.isDisabled || undefined}\n data-empty={isEmpty() || undefined}\n data-drop-target={isRootDropTarget() || undefined}\n data-selection-mode={\n stateProps.selectionMode !== \"none\" ? stateProps.selectionMode : undefined\n }\n data-allows-dragging={hasDraggableDnd() || undefined}\n >\n <SharedElementTransition>\n {isEmpty() && local.renderEmptyState ? (\n <div role=\"row\" aria-level={1} style={{ display: \"contents\" }}>\n <div role=\"gridcell\" style={{ display: \"contents\" }}>\n {local.renderEmptyState()}\n </div>\n </div>\n ) : (\n <>\n {virtualRange()?.offsetTop ? (\n <div\n role=\"presentation\"\n aria-hidden=\"true\"\n style={{ height: `${virtualRange()!.offsetTop}px` }}\n data-virtualizer-spacer=\"top\"\n />\n ) : null}\n <Show\n when={hasSections()}\n fallback={\n <For each={renderableRows()}>\n {(row) => renderTreeRow(row.node, row.globalIndex)}\n </For>\n }\n >\n <For each={sectionedRenderableRows() ?? []}>\n {(entry) => (\n <Show when={entry.rows.length > 0}>\n <Show\n when={entry.type === \"section\"}\n fallback={\n <For each={entry.rows}>\n {(row) => renderTreeRow(row.node, row.globalIndex)}\n </For>\n }\n >\n <TreeSection>\n {entry.type === \"section\" && entry.section.title ? (\n <TreeHeader>{entry.section.title}</TreeHeader>\n ) : null}\n <For each={entry.rows}>\n {(row) => renderTreeRow(row.node, row.globalIndex)}\n </For>\n </TreeSection>\n </Show>\n </Show>\n )}\n </For>\n </Show>\n {virtualRange()?.offsetBottom ? (\n <div\n role=\"presentation\"\n aria-hidden=\"true\"\n style={{ height: `${virtualRange()!.offsetBottom}px` }}\n data-virtualizer-spacer=\"bottom\"\n />\n ) : null}\n </>\n )}\n </SharedElementTransition>\n {local.hasMore && local.onLoadMore && (\n <TreeLoadMoreItem\n onLoadMore={local.onLoadMore}\n isLoading={local.isLoading}\n loadingState={local.loadingState}\n class={local.loadMoreClass}\n style={local.loadMoreStyle}\n >\n {local.renderLoadMoreItem?.({\n isLoading:\n !!local.isLoading ||\n local.loadingState === \"loading\" ||\n local.loadingState === \"loadingMore\",\n })}\n </TreeLoadMoreItem>\n )}\n </div>\n </CollectionRendererContext.Provider>\n </TreeStateContext.Provider>\n </TreeContext.Provider>\n );\n}\n\n/**\n * An item in a tree.\n */\nexport function TreeItem<T extends object>(props: TreeItemProps<T>): JSX.Element {\n const [local, domProps] = splitProps(props, [\n \"class\",\n \"style\",\n \"slot\",\n \"id\",\n \"item\",\n \"textValue\",\n \"onAction\",\n \"hasChildItems\",\n \"isDisabled\",\n \"href\",\n \"target\",\n \"download\",\n \"rel\",\n \"hrefLang\",\n \"ping\",\n \"referrerPolicy\",\n \"routerOptions\",\n \"ref\",\n \"children\",\n ]);\n\n const context = useContext(TreeStateContext);\n if (!context) {\n throw new Error(\"TreeItem must be used within a Tree\");\n }\n const state = context as TreeState<T, TreeCollection<T>>;\n const treeContext = useContext(TreeContext) as TreeContextValue<T> | null;\n const router = useRouter();\n const linkProps = createMemo(() =>\n useLinkProps({\n href: local.href,\n target: local.target,\n rel: local.rel,\n download: local.download,\n ping: local.ping,\n referrerPolicy: local.referrerPolicy,\n }),\n );\n\n const [ref, setRef] = createSignal<HTMLElement | null>(null);\n const setItemRef = (element: HTMLElement) => {\n setRef(element);\n assignRef(local.ref, element);\n };\n\n const itemNode = createMemo(() => {\n const node = state.collection.getItem(local.id);\n if (!node) {\n return {\n type: \"item\" as const,\n key: local.id,\n value: local.item?.value ?? null,\n textValue: local.textValue ?? String(local.id),\n level: 0,\n index: 0,\n hasChildNodes: !!local.hasChildItems,\n childNodes: [],\n isDisabled: local.isDisabled,\n isExpandable: !!local.hasChildItems,\n isExpanded: false,\n } as TreeNode<T>;\n }\n return node;\n });\n\n const treeItemAria = createTreeItem<T, TreeCollection<T>>(\n () => ({\n node: itemNode(),\n selectionBehavior: state.selectionBehavior,\n onAction: local.onAction,\n isDisabled: local.isDisabled,\n textValue: local.textValue,\n }),\n () => state,\n ref,\n );\n const isSelected = () => treeItemAria.isSelected;\n const isDisabled = () => treeItemAria.isDisabled;\n const isPressed = () => treeItemAria.isPressed;\n const isExpanded = () => treeItemAria.isExpanded;\n const isExpandable = () => treeItemAria.isExpandable;\n const level = () => treeItemAria.level;\n\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return isDisabled();\n },\n });\n\n const { isFocusVisible, focusProps } = createFocusRing();\n\n const isFocused = createMemo(() => state.focusedKey === local.id);\n const draggableItem = createMemo(() => {\n if (!treeContext?.dragAndDropHooks?.useDraggableItem || !treeContext.dragState)\n return undefined;\n return treeContext.dragAndDropHooks.useDraggableItem(\n {\n key: local.id as string | number,\n },\n treeContext.dragState as Parameters<NonNullable<DragAndDropHooks<T>[\"useDraggableItem\"]>>[1],\n );\n });\n const droppableItem = createMemo(() => {\n if (!treeContext?.dragAndDropHooks?.useDroppableItem || !treeContext.dropState)\n return undefined;\n return treeContext.dragAndDropHooks.useDroppableItem(\n {\n key: local.id as string | number,\n },\n treeContext.dropState as Parameters<NonNullable<DragAndDropHooks<T>[\"useDroppableItem\"]>>[1],\n () => ref(),\n );\n });\n\n const renderValues = createMemo<TreeItemRenderProps>(() => ({\n isSelected: isSelected(),\n isFocused: isFocused(),\n isFocusVisible: isFocusVisible() && isFocused(),\n isPressed: isPressed(),\n isHovered: isHovered(),\n isDisabled: isDisabled(),\n isExpanded: isExpanded(),\n isExpandable: isExpandable(),\n level: level(),\n selectionMode: state.selectionMode,\n selectionBehavior: state.selectionBehavior,\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-Tree-item\",\n },\n renderValues,\n );\n\n const cleanRowProps = () => {\n const { ref: _ref1, ...rest } = treeItemAria.rowProps as Record<string, unknown>;\n return rest;\n };\n const cleanHoverProps = () => {\n const { ref: _ref2, ...rest } = hoverProps as Record<string, unknown>;\n return rest;\n };\n const cleanFocusProps = () => {\n const { ref: _ref3, ...rest } = focusProps as Record<string, unknown>;\n return rest;\n };\n\n const itemContextValue = createMemo<TreeItemContextValue<T>>(() => ({\n node: itemNode(),\n isExpanded: isExpanded(),\n isExpandable: isExpandable(),\n level: level(),\n }));\n\n const rowStyle = () => ({\n \"--tree-item-level\": String(level()),\n ...((typeof renderProps.style() === \"object\" ? renderProps.style() : {}) as Record<\n string,\n string\n >),\n });\n\n const rowContent = () => (\n <TreeItemContentContext.Provider value={renderValues()}>\n <div {...treeItemAria.gridCellProps} class=\"solidaria-Tree-item-content\">\n {renderProps.renderChildren()}\n </div>\n </TreeItemContentContext.Provider>\n );\n\n const mergedRowProps = () =>\n mergeProps(\n cleanRowProps(),\n cleanHoverProps(),\n cleanFocusProps(),\n (draggableItem()?.dragProps as Record<string, unknown> | undefined) ?? {},\n (droppableItem()?.dropProps as Record<string, unknown> | undefined) ?? {},\n );\n\n const onLinkedRowClick = (event: MouseEvent) => {\n const onClick = (mergedRowProps() as { onClick?: (event: MouseEvent) => void }).onClick;\n onClick?.(event);\n handleLinkClick(event, router, local.href, local.routerOptions);\n };\n\n const downloadAttr = () => {\n const download = linkProps().download;\n return typeof download === \"boolean\" ? (download ? \"\" : undefined) : download;\n };\n\n const referrerPolicyAttr = () => linkProps().referrerPolicy || undefined;\n const linkedRowDomProps = () =>\n local.href\n ? {\n onClick: onLinkedRowClick,\n \"data-href\": linkProps().href,\n \"data-target\": linkProps().target,\n \"data-download\": downloadAttr(),\n \"data-rel\": linkProps().rel,\n \"data-hreflang\": local.hrefLang,\n \"data-ping\": linkProps().ping,\n \"data-referrer-policy\": referrerPolicyAttr(),\n }\n : {};\n\n return (\n <TreeItemContext.Provider value={itemContextValue() as unknown as TreeItemContextValue<object>}>\n <div\n ref={setItemRef}\n {...domProps}\n {...mergedRowProps()}\n {...linkedRowDomProps()}\n class={renderProps.class()}\n style={rowStyle()}\n data-selected={isSelected() || undefined}\n data-focused={isFocused() || undefined}\n data-focus-visible={(isFocusVisible() && isFocused()) || undefined}\n data-pressed={isPressed() || undefined}\n data-hovered={isHovered() || undefined}\n data-disabled={isDisabled() || undefined}\n data-expanded={isExpanded() || undefined}\n data-expandable={isExpandable() || undefined}\n data-has-child-items={isExpandable() || undefined}\n data-level={level()}\n data-selection-mode={\n treeContext?.state.selectionMode !== \"none\" ? treeContext?.state.selectionMode : undefined\n }\n data-dragging={draggableItem()?.isDragging || undefined}\n data-drop-target={droppableItem()?.isDropTarget || undefined}\n >\n {rowContent()}\n </div>\n </TreeItemContext.Provider>\n );\n}\n\n/**\n * A button to expand/collapse a tree item.\n */\nexport function TreeExpandButton(props: TreeExpandButtonProps): JSX.Element {\n const itemContext = useContext(TreeItemContext);\n if (!itemContext) {\n throw new Error(\"TreeExpandButton must be used within a Tree\");\n }\n\n const stateContext = useContext(TreeStateContext);\n if (!stateContext) {\n throw new Error(\"TreeExpandButton must be used within a Tree\");\n }\n\n const state = stateContext as TreeState<object, TreeCollection<object>>;\n\n const treeItemAria = createTreeItem(\n () => ({ node: itemContext.node }),\n () => state,\n () => null,\n );\n\n const cleanExpandProps = () => {\n const { ref: _ref, ...rest } = treeItemAria.expandButtonProps as Record<string, unknown>;\n return rest;\n };\n const dataProps = () => {\n const result: Record<string, string | undefined> = {};\n for (const key in props) {\n if (key.startsWith(\"data-\")) {\n result[key] = props[key as `data-${string}`];\n }\n }\n return result;\n };\n\n const isExpanded = createMemo(() => state.isExpanded(itemContext.node.key));\n\n const renderChildren = () => {\n if (typeof props.children === \"function\") {\n return props.children({ isExpanded: isExpanded() });\n }\n return props.children;\n };\n\n return (\n <Show when={itemContext.isExpandable}>\n <button\n {...cleanExpandProps()}\n {...dataProps()}\n class={props.class ?? \"solidaria-Tree-expand-button\"}\n style={props.style}\n data-expanded={isExpanded() || undefined}\n >\n {renderChildren()}\n </button>\n </Show>\n );\n}\n\n/**\n * A checkbox for item selection in a tree.\n */\nexport function TreeSelectionCheckbox(props: {\n itemKey: Key;\n class?: string;\n style?: JSX.CSSProperties;\n excludeFromTabOrder?: boolean;\n \"aria-label\"?: string;\n}): JSX.Element {\n const context = useContext(TreeStateContext);\n if (!context) {\n throw new Error(\"TreeSelectionCheckbox must be used within a Tree\");\n }\n\n const state = context as TreeState<object, TreeCollection<object>>;\n\n const treeSelectionCheckboxAria = createTreeSelectionCheckbox<object, TreeCollection<object>>(\n () => ({ key: props.itemKey }),\n () => state,\n );\n\n return (\n <input\n {...treeSelectionCheckboxAria.checkboxProps}\n class={props.class ?? \"solidaria-Tree-checkbox\"}\n style={props.style}\n tabIndex={props.excludeFromTabOrder ? -1 : undefined}\n aria-label={props[\"aria-label\"] ?? treeSelectionCheckboxAria.checkboxProps[\"aria-label\"]}\n />\n );\n}\n\nexport function TreeLoadMoreItem(props: TreeLoadMoreItemProps): JSX.Element {\n let sentinelRef: HTMLDivElement | undefined;\n const [isPending, setIsPending] = createSignal(false);\n const isLoading = () =>\n !!props.isLoading ||\n props.loadingState === \"loading\" ||\n props.loadingState === \"loadingMore\" ||\n isPending();\n\n const triggerLoadMore = async () => {\n if (isLoading()) return;\n setIsPending(true);\n try {\n await props.onLoadMore();\n } finally {\n setIsPending(false);\n }\n };\n\n createEffect(() => {\n if (!sentinelRef || typeof IntersectionObserver !== \"function\") return;\n const offset = props.scrollOffset ?? 1;\n const margin = `0px 0px ${100 * offset}% 0px`;\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0]?.isIntersecting) {\n void triggerLoadMore();\n }\n },\n { rootMargin: margin },\n );\n observer.observe(sentinelRef);\n return () => observer.disconnect();\n });\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children ?? (() => (isLoading() ? \"Loading more...\" : \"Load more\"));\n },\n class: props.class,\n style: props.style,\n defaultClassName: \"solidaria-Tree-loadMore\",\n },\n () => ({ isLoading: isLoading() }),\n );\n\n return (\n <>\n <div style={{ position: \"relative\", width: 0, height: 0, overflow: \"hidden\" }} inert>\n <div ref={sentinelRef} style={{ position: \"absolute\", height: \"1px\", width: \"1px\" }} />\n </div>\n <div\n role=\"row\"\n aria-level={props.level ?? 1}\n onFocus={() => {\n void triggerLoadMore();\n }}\n onFocusIn={() => {\n void triggerLoadMore();\n }}\n class={renderProps.class()}\n style={renderProps.style()}\n data-loading={isLoading() || undefined}\n data-level={props.level ?? 1}\n >\n <div\n role=\"gridcell\"\n onFocus={() => {\n void triggerLoadMore();\n }}\n >\n {renderProps.renderChildren()}\n </div>\n </div>\n </>\n );\n}\n\nexport interface TreeItemContentProps {\n children?: RenderChildren<TreeItemContentRenderProps>;\n}\nexport type TreeItemContentRenderProps = TreeItemRenderProps;\n\nexport function TreeItemContent(props: TreeItemContentProps): JSX.Element {\n const context = useContext(TreeItemContentContext);\n if (!context) {\n throw new Error(\"TreeItemContent must be used within a TreeItem\");\n }\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children;\n },\n },\n () => context,\n );\n\n return <>{renderProps.renderChildren()}</>;\n}\n\n/**\n * A section within a Tree. Renders as `role=\"rowgroup\"` and supplies its\n * optional {@link TreeHeader} with the row/rowheader props that wire up the\n * section's `aria-labelledby` (mirrors upstream `TreeSection`, which reuses\n * `useGridListSection`).\n */\nexport function TreeSection(props: TreeSectionProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"children\", \"class\", \"style\", \"slot\", \"ref\"]);\n\n const section = createGridListSection({\n get \"aria-label\"() {\n return (domProps as { \"aria-label\"?: string })[\"aria-label\"];\n },\n });\n\n // Mirror upstream: resolve class/style via renderProps but keep children out\n // of it. The real children must only be evaluated inside the header providers\n // below, otherwise a child <TreeHeader> would be instantiated in this\n // component's owner and read the header contexts as null. The values callback\n // runs during setup, so it must not read `local.children` either; mirror\n // upstream's `values: undefined` with a constant.\n const renderProps = useRenderProps(\n {\n children: undefined,\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-TreeSection\",\n },\n () => ({ hasChildren: true }),\n );\n\n const filteredDomProps = createMemo(() => filterDOMProps(domProps, { global: true }));\n\n return (\n <div\n ref={(el) => assignRef(local.ref, el)}\n {...filteredDomProps()}\n {...section.rowGroupProps}\n class={renderProps.class()}\n style={renderProps.style()}\n slot={local.slot}\n data-section\n >\n <GridListHeaderContext.Provider value={section.rowProps}>\n <GridListHeaderInnerContext.Provider value={section.rowHeaderProps}>\n {local.children}\n </GridListHeaderInnerContext.Provider>\n </GridListHeaderContext.Provider>\n </div>\n );\n}\n\n/**\n * The header of a {@link TreeSection}. Mirrors upstream `TreeHeader`, which is a\n * thin wrapper over `GridListHeader` with a Tree-specific class. The row and\n * rowheader semantics come from the enclosing section through context.\n */\nexport function TreeHeader(props: TreeHeaderProps): JSX.Element {\n return (\n <GridListHeader class=\"solidaria-TreeHeader\" {...props}>\n {props.children}\n </GridListHeader>\n );\n}\n\nTree.Item = TreeItem;\nTree.ExpandButton = TreeExpandButton;\nTree.SelectionCheckbox = TreeSelectionCheckbox;\nTree.LoadMoreItem = TreeLoadMoreItem;\nTree.Section = TreeSection;\nTree.Header = TreeHeader;\n\nfunction areSetsEqual<T>(a: Set<T>, b: Set<T>): boolean {\n if (a.size !== b.size) return false;\n for (const entry of a) {\n if (!b.has(entry)) return false;\n }\n return true;\n}\n"],"mappings":"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"}
|