design-react-kit
Version:
Componenti React per Bootstrap 5
1 lines • 5.76 kB
Source Map (JSON)
{"version":3,"sources":["../../src/Transfer/useTransferContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo, useState } from 'react';\n\ninterface TransferContextType {\n sourceItems: { id: string; content: React.ReactNode }[];\n targetItems: { id: string; content: React.ReactNode }[];\n sourceCandidates: string[];\n targetCandidates: string[];\n setSourceItems: ({\n items,\n setOriginals\n }: {\n items: { id: string; content: React.ReactNode }[];\n setOriginals?: boolean;\n }) => void;\n setTargetItems: ({\n items,\n setOriginals\n }: {\n items: { id: string; content: React.ReactNode }[];\n setOriginals?: boolean;\n }) => void;\n setSourceCandidates: (items: string[]) => void;\n setTargetCandidates: (items: string[]) => void;\n isChanged: boolean;\n reset: () => void;\n}\n\nexport const TransferContext = createContext<TransferContextType>({\n sourceItems: [],\n targetItems: [],\n sourceCandidates: [],\n targetCandidates: [],\n setSourceItems: () => {},\n setTargetItems: () => {},\n setSourceCandidates: () => {},\n setTargetCandidates: () => {},\n isChanged: false,\n reset: () => {}\n});\n\nexport const useTransferContext = () => useContext(TransferContext);\n\nexport const TransferContextProvider = ({ children }: { children: React.ReactNode }) => {\n const [sourceItems, setSourceItems] = useState<{ id: string; content: React.ReactNode }[]>([]);\n const [targetItems, setTargetItems] = useState<{ id: string; content: React.ReactNode }[]>([]);\n const [sourceCandidates, setSourceCandidates] = useState<string[]>([]);\n const [targetCandidates, setTargetCandidates] = useState<string[]>([]);\n const [originalSourceItems, setOriginalSourceItems] = useState<{ id: string; content: React.ReactNode }[]>([]);\n const [originalTargetItems, setOriginalTargetItems] = useState<{ id: string; content: React.ReactNode }[]>([]);\n\n const value = useMemo(\n () => ({\n sourceCandidates,\n targetCandidates,\n sourceItems,\n targetItems,\n setSourceItems: ({\n items,\n setOriginals\n }: {\n items: { id: string; content: React.ReactNode }[];\n setOriginals?: boolean;\n }) => {\n setSourceItems(items);\n if (setOriginals) {\n setOriginalSourceItems(items);\n }\n },\n setTargetItems: ({\n items,\n setOriginals\n }: {\n items: { id: string; content: React.ReactNode }[];\n setOriginals?: boolean;\n }) => {\n setTargetItems(items);\n if (setOriginals) {\n setOriginalTargetItems(items);\n }\n },\n setSourceCandidates,\n setTargetCandidates,\n reset: () => {\n setSourceItems(originalSourceItems);\n setTargetItems(originalTargetItems);\n setSourceCandidates([]);\n setTargetCandidates([]);\n },\n isChanged:\n JSON.stringify(sourceItems) !== JSON.stringify(originalSourceItems) ||\n JSON.stringify(targetItems) !== JSON.stringify(originalTargetItems)\n }),\n [sourceItems, targetItems, sourceCandidates, targetCandidates, originalSourceItems, originalTargetItems]\n );\n\n return <TransferContext.Provider value={value}>{children}</TransferContext.Provider>;\n};\n\nexport const useTransfer = () => {\n const { sourceItems, targetItems, sourceCandidates, targetCandidates } = useTransferContext();\n\n return {\n source: sourceItems.map((item) => {\n return { ...item, checked: sourceCandidates.includes(item.id) };\n }),\n target: targetItems.map((item) => {\n return { ...item, checked: targetCandidates.includes(item.id) };\n })\n };\n};\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,EAAA,4BAAAC,EAAA,gBAAAC,EAAA,uBAAAC,IAAA,eAAAC,EAAAN,GAAA,IAAAO,EAAoE,sBA2BvDL,KAAkB,iBAAmC,CAChE,YAAa,CAAC,EACd,YAAa,CAAC,EACd,iBAAkB,CAAC,EACnB,iBAAkB,CAAC,EACnB,eAAgB,IAAM,CAAC,EACvB,eAAgB,IAAM,CAAC,EACvB,oBAAqB,IAAM,CAAC,EAC5B,oBAAqB,IAAM,CAAC,EAC5B,UAAW,GACX,MAAO,IAAM,CAAC,CAChB,CAAC,EAEYG,EAAqB,OAAM,cAAWH,CAAe,EAErDC,EAA0B,CAAC,CAAE,SAAAK,CAAS,IAAqC,CACtF,GAAM,CAACC,EAAaC,CAAc,KAAI,YAAqD,CAAC,CAAC,EACvF,CAACC,EAAaC,CAAc,KAAI,YAAqD,CAAC,CAAC,EACvF,CAACC,EAAkBC,CAAmB,KAAI,YAAmB,CAAC,CAAC,EAC/D,CAACC,EAAkBC,CAAmB,KAAI,YAAmB,CAAC,CAAC,EAC/D,CAACC,EAAqBC,CAAsB,KAAI,YAAqD,CAAC,CAAC,EACvG,CAACC,EAAqBC,CAAsB,KAAI,YAAqD,CAAC,CAAC,EAEvGC,KAAQ,WACZ,KAAO,CACL,iBAAAR,EACA,iBAAAE,EACA,YAAAN,EACA,YAAAE,EACA,eAAgB,CAAC,CACf,MAAAW,EACA,aAAAC,CACF,IAGM,CACJb,EAAeY,CAAK,EAChBC,GACFL,EAAuBI,CAAK,CAEhC,EACA,eAAgB,CAAC,CACf,MAAAA,EACA,aAAAC,CACF,IAGM,CACJX,EAAeU,CAAK,EAChBC,GACFH,EAAuBE,CAAK,CAEhC,EACA,oBAAAR,EACA,oBAAAE,EACA,MAAO,IAAM,CACXN,EAAeO,CAAmB,EAClCL,EAAeO,CAAmB,EAClCL,EAAoB,CAAC,CAAC,EACtBE,EAAoB,CAAC,CAAC,CACxB,EACA,UACE,KAAK,UAAUP,CAAW,IAAM,KAAK,UAAUQ,CAAmB,GAClE,KAAK,UAAUN,CAAW,IAAM,KAAK,UAAUQ,CAAmB,CACtE,GACA,CAACV,EAAaE,EAAaE,EAAkBE,EAAkBE,EAAqBE,CAAmB,CACzG,EAEA,OAAO,EAAAK,QAAA,cAACtB,EAAgB,SAAhB,CAAyB,MAAOmB,GAAQb,CAAS,CAC3D,EAEaJ,EAAc,IAAM,CAC/B,GAAM,CAAE,YAAAK,EAAa,YAAAE,EAAa,iBAAAE,EAAkB,iBAAAE,CAAiB,EAAIV,EAAmB,EAE5F,MAAO,CACL,OAAQI,EAAY,IAAKgB,IAChB,CAAE,GAAGA,EAAM,QAASZ,EAAiB,SAASY,EAAK,EAAE,CAAE,EAC/D,EACD,OAAQd,EAAY,IAAKc,IAChB,CAAE,GAAGA,EAAM,QAASV,EAAiB,SAASU,EAAK,EAAE,CAAE,EAC/D,CACH,CACF","names":["useTransferContext_exports","__export","TransferContext","TransferContextProvider","useTransfer","useTransferContext","__toCommonJS","import_react","children","sourceItems","setSourceItems","targetItems","setTargetItems","sourceCandidates","setSourceCandidates","targetCandidates","setTargetCandidates","originalSourceItems","setOriginalSourceItems","originalTargetItems","setOriginalTargetItems","value","items","setOriginals","React","item"]}