1
0
Fork 0

[breaking]: FreeSewing v4 (#7297)

Refer to the CHANGELOG for all info.

---------

Co-authored-by: Wouter van Wageningen <wouter.vdub@yahoo.com>
Co-authored-by: Josh Munic <jpmunic@gmail.com>
Co-authored-by: Jonathan Haas <haasjona@gmail.com>
This commit is contained in:
Joost De Cock 2025-04-01 16:15:20 +02:00 committed by GitHub
parent d22fbe78d9
commit 51dc1d9732
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6626 changed files with 142053 additions and 150606 deletions

View file

@ -0,0 +1,40 @@
import React, { useState } from 'react'
export const useSelection = (items) => {
const [selection, setSelection] = useState({})
/*
* This variable keeps track of how many are selected
*/
const count = Object.keys(selection).length
/*
* This method toggles a single item in the selection
*/
const toggle = (id) => {
const newSelection = { ...selection }
if (newSelection[id]) delete newSelection[id]
else newSelection[id] = 1
setSelection(newSelection)
}
/*
* This method toggles all on or off
*/
const toggleAll = () => {
if (count === items.length) setSelection({})
else {
const newSelection = {}
for (const item of items) newSelection[item.id] = 1
setSelection(newSelection)
}
}
return {
count,
selection,
setSelection,
toggle,
toggleAll,
}
}