1 line
4.5 KiB
Plaintext
1 line
4.5 KiB
Plaintext
{"version":3,"file":"useSelectionState.mjs","sources":["../../../admin/src/hooks/useSelectionState.ts"],"sourcesContent":["import * as React from 'react';\n\nexport const useSelectionState = <TValues extends object>(\n keys: Array<keyof TValues>,\n initialValue: TValues[]\n) => {\n const [selections, setSelections] = React.useState(initialValue);\n\n const selectOne = (selection: TValues) => {\n const index = selections.findIndex((currentSelection) =>\n keys.every((key) => currentSelection[key] === selection[key])\n );\n\n if (index > -1) {\n setSelections((prevSelected) => [\n ...prevSelected.slice(0, index),\n ...prevSelected.slice(index + 1),\n ]);\n } else {\n setSelections((prevSelected) => [...prevSelected, selection]);\n }\n };\n\n const selectAll = (nextSelections?: TValues[]) => {\n if (selections.length > 0) {\n setSelections([]);\n } else {\n setSelections(nextSelections!);\n }\n };\n\n const selectOnly = (nextSelection: TValues) => {\n const index = selections.findIndex((currentSelection) =>\n keys.every((key) => currentSelection[key] === nextSelection[key])\n );\n\n if (index > -1) {\n setSelections([]);\n } else {\n setSelections([nextSelection]);\n }\n };\n\n const selectMultiple = (nextSelections: TValues[]) => {\n setSelections((currSelections) => [\n // already selected items\n ...currSelections,\n // filter out already selected items from nextSelections\n ...nextSelections.filter(\n (nextSelection) =>\n currSelections.findIndex((currentSelection) =>\n keys.every((key) => currentSelection[key] === nextSelection[key])\n ) === -1\n ),\n ]);\n };\n\n const deselectMultiple = (nextSelections: TValues[]) => {\n setSelections((currSelections) => [\n // filter out items in currSelections that are in nextSelections\n ...currSelections.filter(\n (currentSelection) =>\n nextSelections.findIndex((nextSelection) =>\n keys.every((key) => currentSelection[key] === nextSelection[key])\n ) === -1\n ),\n ]);\n };\n\n return [\n selections,\n { selectOne, selectAll, selectOnly, selectMultiple, deselectMultiple, setSelections },\n ] as const;\n};\n"],"names":["useSelectionState","keys","initialValue","selections","setSelections","React","useState","selectOne","selection","index","findIndex","currentSelection","every","key","prevSelected","slice","selectAll","nextSelections","length","selectOnly","nextSelection","selectMultiple","currSelections","filter","deselectMultiple"],"mappings":";;AAEO,MAAMA,iBAAoB,GAAA,CAC/BC,IACAC,EAAAA,YAAAA,GAAAA;AAEA,IAAA,MAAM,CAACC,UAAYC,EAAAA,aAAAA,CAAc,GAAGC,KAAAA,CAAMC,QAAQ,CAACJ,YAAAA,CAAAA;AAEnD,IAAA,MAAMK,YAAY,CAACC,SAAAA,GAAAA;AACjB,QAAA,MAAMC,QAAQN,UAAWO,CAAAA,SAAS,CAAC,CAACC,mBAClCV,IAAKW,CAAAA,KAAK,CAAC,CAACC,MAAQF,gBAAgB,CAACE,IAAI,KAAKL,SAAS,CAACK,GAAI,CAAA,CAAA,CAAA;QAG9D,IAAIJ,KAAAA,GAAQ,CAAC,CAAG,EAAA;AACdL,YAAAA,aAAAA,CAAc,CAACU,YAAiB,GAAA;uBAC3BA,YAAaC,CAAAA,KAAK,CAAC,CAAGN,EAAAA,KAAAA,CAAAA;uBACtBK,YAAaC,CAAAA,KAAK,CAACN,KAAQ,GAAA,CAAA;AAC/B,iBAAA,CAAA;SACI,MAAA;AACLL,YAAAA,aAAAA,CAAc,CAACU,YAAiB,GAAA;AAAIA,oBAAAA,GAAAA,YAAAA;AAAcN,oBAAAA;AAAU,iBAAA,CAAA;AAC9D;AACF,KAAA;AAEA,IAAA,MAAMQ,YAAY,CAACC,cAAAA,GAAAA;QACjB,IAAId,UAAAA,CAAWe,MAAM,GAAG,CAAG,EAAA;AACzBd,YAAAA,aAAAA,CAAc,EAAE,CAAA;SACX,MAAA;YACLA,aAAca,CAAAA,cAAAA,CAAAA;AAChB;AACF,KAAA;AAEA,IAAA,MAAME,aAAa,CAACC,aAAAA,GAAAA;AAClB,QAAA,MAAMX,QAAQN,UAAWO,CAAAA,SAAS,CAAC,CAACC,mBAClCV,IAAKW,CAAAA,KAAK,CAAC,CAACC,MAAQF,gBAAgB,CAACE,IAAI,KAAKO,aAAa,CAACP,GAAI,CAAA,CAAA,CAAA;QAGlE,IAAIJ,KAAAA,GAAQ,CAAC,CAAG,EAAA;AACdL,YAAAA,aAAAA,CAAc,EAAE,CAAA;SACX,MAAA;YACLA,aAAc,CAAA;AAACgB,gBAAAA;AAAc,aAAA,CAAA;AAC/B;AACF,KAAA;AAEA,IAAA,MAAMC,iBAAiB,CAACJ,cAAAA,GAAAA;AACtBb,QAAAA,aAAAA,CAAc,CAACkB,cAAmB,GAAA;;AAE7BA,gBAAAA,GAAAA,cAAAA;;mBAEAL,cAAeM,CAAAA,MAAM,CACtB,CAACH,aAAAA,GACCE,eAAeZ,SAAS,CAAC,CAACC,gBAAAA,GACxBV,IAAKW,CAAAA,KAAK,CAAC,CAACC,GAAAA,GAAQF,gBAAgB,CAACE,GAAAA,CAAI,KAAKO,aAAa,CAACP,GAAI,CAAA,CAAA,CAAA,KAC5D,CAAC,CAAA;AAEZ,aAAA,CAAA;AACH,KAAA;AAEA,IAAA,MAAMW,mBAAmB,CAACP,cAAAA,GAAAA;AACxBb,QAAAA,aAAAA,CAAc,CAACkB,cAAmB,GAAA;;mBAE7BA,cAAeC,CAAAA,MAAM,CACtB,CAACZ,gBAAAA,GACCM,eAAeP,SAAS,CAAC,CAACU,aAAAA,GACxBnB,IAAKW,CAAAA,KAAK,CAAC,CAACC,GAAAA,GAAQF,gBAAgB,CAACE,GAAAA,CAAI,KAAKO,aAAa,CAACP,GAAI,CAAA,CAAA,CAAA,KAC5D,CAAC,CAAA;AAEZ,aAAA,CAAA;AACH,KAAA;IAEA,OAAO;AACLV,QAAAA,UAAAA;AACA,QAAA;AAAEI,YAAAA,SAAAA;AAAWS,YAAAA,SAAAA;AAAWG,YAAAA,UAAAA;AAAYE,YAAAA,cAAAA;AAAgBG,YAAAA,gBAAAA;AAAkBpB,YAAAA;AAAc;AACrF,KAAA;AACH;;;;"} |