{"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"]}