{"version":3,"file":"SummaryList.mocks.jsx","sourceRoot":"","sources":["../../../src/core/SummaryList/SummaryList.mocks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,OAAO,SAAS,MAAM,aAAa,CAAC;AAkBpC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,QAAgB,CAAC,EAAgC,EAAE;IACpF,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EACvB,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAC1C,KAAK,EACL,OAAO,EAAE,EAAE,SAAS,EAAE,EAKvB,EAAgB,EAAE;IACjB,MAAM,QAAQ,GAAG,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC;IAC5C,OAAO;QACL,IAAI,EAAE;YACJ,EAAE,EAAE,KAAK;YACT,SAAS;YACT,QAAQ;YACR,KAAK;YACL,SAAS;SACV;QACD,EAAE,EAAE,KAAK;QACT,OAAO,EAAE,QAAQ;QACjB,eAAe,EAAE,QAAQ;QACzB,SAAS,EAAE,CACT,CAAC,GAAG,CACF;QAAA,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAC7B;MAAA,EAAE,GAAG,CAAC,CACP;QACD,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAG;QAChE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KACvD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,EAAc,EACd,EAAE,KAAK,KAAyB,EAAE,KAAK,EAAE,SAAS,EAAE,EACQ,EAAE;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;YAG9C,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,qBAAqB,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3B,CAAC,CAAC","sourcesContent":["import { useEffect, useState } from 'react';\nimport type { Dispatch, ReactNode, SetStateAction } from 'react';\n\nimport { Avatar, EmailDisplay, useAfterInitialEffect } from '@pega/cosmos-react-core';\n\nimport mockUsers from './mockUsers';\nimport type { MockUser } from './mockUsers';\n\nexport interface MockListItem {\n  id: string;\n  primary: string;\n  secondary: ReactNode;\n  visual: ReactNode;\n  data?: {\n    [key: string]: unknown;\n  };\n  [key: string]: unknown;\n}\n\nexport interface MockUserAPIResponse {\n  results: MockUser[];\n}\n\nexport const getMockUsers = async (limit: number = 3): Promise<MockUserAPIResponse> => {\n  return new Promise(resolve => {\n    setTimeout(() => {\n      resolve({ results: mockUsers.slice(0, limit) });\n    }, 500);\n  });\n};\n\nconst getMockListItem = ({\n  name: { first: firstName, last: lastName },\n  email,\n  picture: { thumbnail }\n}: {\n  name: { first: string; last: string };\n  email: string;\n  picture: { thumbnail: string };\n}): MockListItem => {\n  const fullName = `${firstName} ${lastName}`;\n  return {\n    data: {\n      id: email,\n      firstName,\n      lastName,\n      email,\n      thumbnail\n    },\n    id: email,\n    primary: fullName,\n    contextualLabel: fullName,\n    secondary: (\n      <div>\n        <EmailDisplay value={email} />\n      </div>\n    ),\n    visual: <Avatar size='l' name={fullName} imageSrc={thumbnail} />,\n    actions: [{ id: '11', text: 'Delete', icon: 'trash' }]\n  };\n};\n\nexport const useMockListData = (\n  cb: () => void,\n  { count }: { count?: number } = { count: undefined }\n): [MockListItem[], Dispatch<SetStateAction<MockListItem[]>>] => {\n  const [items, setItems] = useState<MockListItem[]>([]);\n\n  useEffect(() => {\n    let mounted = true;\n\n    (async () => {\n      const { results } = await getMockUsers(count);\n\n      // Avoids: Warning: Can't perform a React state update on an unmounted component.\n      if (mounted) {\n        setItems(results.map(getMockListItem));\n      }\n    })();\n\n    return () => {\n      mounted = false;\n    };\n  }, [count]);\n\n  useAfterInitialEffect(cb, [items]);\n\n  return [items, setItems];\n};\n"]}