{"version":3,"file":"testSupportData.cjs","names":["_Status","require","_jsxRuntime","columns","exports","accessorKey","header","enableColumnFilter","size","enableHiding","filterVariant","Cell","cell","value","getValue","severity","jsx","Status","label","charAt","toUpperCase","slice","filterSelectOptions","data","order","id","name","city","state","age","risk","result","i","concat","lotsOfData","filterData","args","search","filters","sort","page","resultsPerPage","searchFiltered","filter","row","Object","values","some","toString","toLowerCase","includes","personKeys","isKeyOfPerson","key","handleStartLetterFilter","firstLetter","handleStandardFilter","rowValue","String","undefined","Array","isArray","arrayValue","filterValue","compareValues","a","b","desc","columnFiltered","every","sorted","length","reduce","aValue","bValue","startRow","endRow","reorderData","rowId","newRowIndex","rowIndex","findIndex","removedRow","splice","reorderedData"],"sources":["../../../../src/labs/DataView/testSupportData.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Status } from \"../../Status.js\";\nimport { DataFilter } from \"../DataFilters.js\";\nimport { DataColumns, DataGetDataType } from \"./dataTypes.js\";\n\nexport type Person = {\n  age: number;\n  city: string;\n  id: string;\n  name: string;\n  order: number;\n  risk: \"high\" | \"medium\" | \"low\";\n  state: string;\n};\n\nexport const columns: DataColumns<Person> = [\n  {\n    accessorKey: \"order\",\n    header: \"ID\",\n    enableColumnFilter: false,\n    size: 120,\n  },\n  {\n    accessorKey: \"name\",\n    header: \"Name\",\n    enableHiding: false,\n  },\n  {\n    accessorKey: \"city\",\n    header: \"City\",\n  },\n  {\n    accessorKey: \"state\",\n    header: \"State\",\n  },\n  {\n    accessorKey: \"age\",\n    header: \"Age\",\n    size: 80,\n    filterVariant: \"range\",\n  },\n  {\n    accessorKey: \"risk\",\n    header: \"Risk level\",\n    Cell: ({ cell }) => {\n      const value = cell.getValue<string>();\n      const severity =\n        value === \"low\" ? \"success\" : value === \"medium\" ? \"warning\" : \"error\";\n      return (\n        <Status\n          label={value.charAt(0).toUpperCase() + value.slice(1)}\n          severity={severity}\n        />\n      );\n    },\n    filterVariant: \"multi-select\",\n    filterSelectOptions: [\n      {\n        label: \"Low\",\n        value: \"low\",\n      },\n      {\n        label: \"Medium\",\n        value: \"medium\",\n      },\n      {\n        label: \"High\",\n        value: \"high\",\n      },\n    ],\n  },\n];\n\nexport const data: Person[] = [\n  {\n    order: 1,\n    id: \"1\",\n    name: \"Luke Skywalker\",\n    city: \"Mos Eisley\",\n    state: \"Tatooine\",\n    age: 19,\n    risk: \"low\",\n  },\n  {\n    order: 2,\n    id: \"2\",\n    name: \"Han Solo\",\n    city: \"Corellia\",\n    state: \"Corellia\",\n    age: 40,\n    risk: \"medium\",\n  },\n  {\n    order: 3,\n    id: \"3\",\n    name: \"Leia Organa\",\n    city: \"Alderaan City\",\n    state: \"Alderaan\",\n    age: 19,\n    risk: \"low\",\n  },\n  {\n    order: 4,\n    id: \"4\",\n    name: \"Chewbacca\",\n    city: \"Kashyyyk City\",\n    state: \"Kashyyyk\",\n    age: 50,\n    risk: \"high\",\n  },\n  {\n    order: 5,\n    id: \"5\",\n    name: \"C-3P0\",\n    city: \"Mos Espa\",\n    state: \"Tatooine\",\n    age: 25,\n    risk: \"low\",\n  },\n  {\n    order: 6,\n    id: \"6\",\n    name: \"R2-D2\",\n    city: \"Theed\",\n    state: \"Naboo\",\n    age: 25,\n    risk: \"low\",\n  },\n];\n\nlet result: Person[] = [];\nfor (let i = 0; i < 50; i++) {\n  result = result.concat(data);\n}\nexport const lotsOfData = result;\n\nexport const filterData = ({\n  data,\n  ...args\n}: {\n  data: Person[];\n} & DataGetDataType) => {\n  const { search, filters, sort, page = 1, resultsPerPage = 20 } = args;\n\n  const searchFiltered = search\n    ? data.filter((row) =>\n        Object.values(row).some((value) =>\n          value.toString().toLowerCase().includes(search.toLowerCase()),\n        ),\n      )\n    : data;\n\n  const personKeys: (keyof Person)[] = [\n    \"order\",\n    \"id\",\n    \"name\",\n    \"city\",\n    \"state\",\n    \"age\",\n    \"risk\",\n  ];\n\n  const isKeyOfPerson = (key: string): key is keyof Person => {\n    return personKeys.includes(key as keyof Person);\n  };\n\n  const handleStartLetterFilter = (\n    row: Person,\n    value: DataFilter[\"value\"],\n  ): boolean => {\n    if (typeof row.name !== \"string\") return true;\n    const firstLetter = row.name[0]?.toLowerCase();\n    if (value === \"vowel\") return \"aeiou\".includes(firstLetter);\n    if (value === \"consonant\") return !\"aeiou\".includes(firstLetter);\n    return true;\n  };\n\n  const handleStandardFilter = (\n    row: Person,\n    id: keyof Person,\n    value: DataFilter[\"value\"],\n  ): boolean => {\n    const rowValue = String(row[id]).toLowerCase();\n\n    if (value === null || value === undefined) {\n      return true;\n    }\n\n    if (typeof value === \"string\" || typeof value === \"number\") {\n      return rowValue.includes(String(value).toLowerCase());\n    }\n\n    if (Array.isArray(value)) {\n      return value.some((arrayValue) => {\n        const filterValue =\n          typeof arrayValue === \"object\" ? arrayValue.value : arrayValue;\n        return row[id]\n          ?.toString()\n          .toLowerCase()\n          .includes(filterValue.toString().toLowerCase());\n      });\n    }\n\n    return false;\n  };\n\n  const compareValues = (\n    a: string | number,\n    b: string | number,\n    desc: boolean,\n  ): number => {\n    if (a < b) return desc ? 1 : -1;\n    if (a > b) return desc ? -1 : 1;\n    return 0;\n  };\n\n  // In a real-world scenario, the consumer would provide their own backend filtering/searching logic. This is a demo of what that could look like for the provided sample data and demo filters.\n  const columnFiltered = filters\n    ? searchFiltered.filter((row) =>\n        filters.every(({ id, value }: DataFilter) => {\n          // If the filter value is null, return all the data\n          if (value === null || value === undefined) {\n            return true;\n          }\n\n          // Handle custom filters\n          if (id === \"startLetter\") {\n            return handleStartLetterFilter(row, value);\n          }\n\n          // Handle standard Person properties\n          if (isKeyOfPerson(id)) {\n            return handleStandardFilter(row, id, value);\n          }\n\n          return true;\n        }),\n      )\n    : searchFiltered;\n\n  const sorted =\n    sort && sort.length > 0\n      ? [...columnFiltered].sort((a, b) =>\n          sort.reduce((result, { id, desc }) => {\n            if (result !== 0) return result;\n\n            if (isKeyOfPerson(id)) {\n              const aValue = a[id];\n              const bValue = b[id];\n              return compareValues(aValue, bValue, desc);\n            }\n\n            // Handle custom sort fields if needed\n            return 0;\n          }, 0),\n        )\n      : columnFiltered;\n\n  const startRow = (page - 1) * resultsPerPage;\n  const endRow = startRow + resultsPerPage;\n\n  return sorted.slice(startRow, endRow);\n};\n\nexport const reorderData = <Data extends Person>({\n  data,\n  rowId,\n  newRowIndex,\n}: {\n  data: Data[];\n  newRowIndex: number;\n  rowId: string | number;\n}): Data[] => {\n  const rowIndex = data.findIndex((row) => row.id === rowId);\n\n  if (rowIndex === -1) {\n    return data;\n  }\n\n  const [removedRow] = data.splice(rowIndex, 1);\n\n  const reorderedData = [\n    ...data.slice(0, newRowIndex),\n    removedRow,\n    ...data.slice(newRowIndex),\n  ];\n\n  return reorderedData;\n};\n"],"mappings":";;;;;;AAYA,IAAAA,OAAA,GAAAC,OAAA;AAAyC,IAAAC,WAAA,GAAAD,OAAA;AAZzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAgBO,MAAME,OAA4B,GAAAC,OAAA,CAAAD,OAAA,GAAG,CAC1C;EACEE,WAAW,EAAE,OAAO;EACpBC,MAAM,EAAE,IAAI;EACZC,kBAAkB,EAAE,KAAK;EACzBC,IAAI,EAAE;AACR,CAAC,EACD;EACEH,WAAW,EAAE,MAAM;EACnBC,MAAM,EAAE,MAAM;EACdG,YAAY,EAAE;AAChB,CAAC,EACD;EACEJ,WAAW,EAAE,MAAM;EACnBC,MAAM,EAAE;AACV,CAAC,EACD;EACED,WAAW,EAAE,OAAO;EACpBC,MAAM,EAAE;AACV,CAAC,EACD;EACED,WAAW,EAAE,KAAK;EAClBC,MAAM,EAAE,KAAK;EACbE,IAAI,EAAE,EAAE;EACRE,aAAa,EAAE;AACjB,CAAC,EACD;EACEL,WAAW,EAAE,MAAM;EACnBC,MAAM,EAAE,YAAY;EACpBK,IAAI,EAAEA,CAAC;IAAEC;EAAK,CAAC,KAAK;IAClB,MAAMC,KAAK,GAAGD,IAAI,CAACE,QAAQ,CAAS,CAAC;IACrC,MAAMC,QAAQ,GACZF,KAAK,KAAK,KAAK,GAAG,SAAS,GAAGA,KAAK,KAAK,QAAQ,GAAG,SAAS,GAAG,OAAO;IACxE,OACE,IAAAX,WAAA,CAAAc,GAAA,EAAChB,OAAA,CAAAiB,MAAM;MACLC,KAAK,EAAEL,KAAK,CAACM,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,GAAGP,KAAK,CAACQ,KAAK,CAAC,CAAC,CAAE;MACtDN,QAAQ,EAAEA;IAAS,CACpB,CAAC;EAEN,CAAC;EACDL,aAAa,EAAE,cAAc;EAC7BY,mBAAmB,EAAE,CACnB;IACEJ,KAAK,EAAE,KAAK;IACZL,KAAK,EAAE;EACT,CAAC,EACD;IACEK,KAAK,EAAE,QAAQ;IACfL,KAAK,EAAE;EACT,CAAC,EACD;IACEK,KAAK,EAAE,MAAM;IACbL,KAAK,EAAE;EACT,CAAC;AAEL,CAAC,CACF;AAEM,MAAMU,IAAc,GAAAnB,OAAA,CAAAmB,IAAA,GAAG,CAC5B;EACEC,KAAK,EAAE,CAAC;EACRC,EAAE,EAAE,GAAG;EACPC,IAAI,EAAE,gBAAgB;EACtBC,IAAI,EAAE,YAAY;EAClBC,KAAK,EAAE,UAAU;EACjBC,GAAG,EAAE,EAAE;EACPC,IAAI,EAAE;AACR,CAAC,EACD;EACEN,KAAK,EAAE,CAAC;EACRC,EAAE,EAAE,GAAG;EACPC,IAAI,EAAE,UAAU;EAChBC,IAAI,EAAE,UAAU;EAChBC,KAAK,EAAE,UAAU;EACjBC,GAAG,EAAE,EAAE;EACPC,IAAI,EAAE;AACR,CAAC,EACD;EACEN,KAAK,EAAE,CAAC;EACRC,EAAE,EAAE,GAAG;EACPC,IAAI,EAAE,aAAa;EACnBC,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE,UAAU;EACjBC,GAAG,EAAE,EAAE;EACPC,IAAI,EAAE;AACR,CAAC,EACD;EACEN,KAAK,EAAE,CAAC;EACRC,EAAE,EAAE,GAAG;EACPC,IAAI,EAAE,WAAW;EACjBC,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE,UAAU;EACjBC,GAAG,EAAE,EAAE;EACPC,IAAI,EAAE;AACR,CAAC,EACD;EACEN,KAAK,EAAE,CAAC;EACRC,EAAE,EAAE,GAAG;EACPC,IAAI,EAAE,OAAO;EACbC,IAAI,EAAE,UAAU;EAChBC,KAAK,EAAE,UAAU;EACjBC,GAAG,EAAE,EAAE;EACPC,IAAI,EAAE;AACR,CAAC,EACD;EACEN,KAAK,EAAE,CAAC;EACRC,EAAE,EAAE,GAAG;EACPC,IAAI,EAAE,OAAO;EACbC,IAAI,EAAE,OAAO;EACbC,KAAK,EAAE,OAAO;EACdC,GAAG,EAAE,EAAE;EACPC,IAAI,EAAE;AACR,CAAC,CACF;AAED,IAAIC,MAAgB,GAAG,EAAE;AACzB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;EAC3BD,MAAM,GAAGA,MAAM,CAACE,MAAM,CAACV,IAAI,CAAC;AAC9B;AACO,MAAMW,UAAU,GAAA9B,OAAA,CAAA8B,UAAA,GAAGH,MAAM;AAEzB,MAAMI,UAAU,GAAGA,CAAC;EACzBZ,IAAI;EACJ,GAAGa;AAGa,CAAC,KAAK;EACtB,MAAM;IAAEC,MAAM;IAAEC,OAAO;IAAEC,IAAI;IAAEC,IAAI,GAAG,CAAC;IAAEC,cAAc,GAAG;EAAG,CAAC,GAAGL,IAAI;EAErE,MAAMM,cAAc,GAAGL,MAAM,GACzBd,IAAI,CAACoB,MAAM,CAAEC,GAAG,IACdC,MAAM,CAACC,MAAM,CAACF,GAAG,CAAC,CAACG,IAAI,CAAElC,KAAK,IAC5BA,KAAK,CAACmC,QAAQ,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,CAACC,QAAQ,CAACb,MAAM,CAACY,WAAW,CAAC,CAAC,CAC9D,CACF,CAAC,GACD1B,IAAI;EAER,MAAM4B,UAA4B,GAAG,CACnC,OAAO,EACP,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,KAAK,EACL,MAAM,CACP;EAED,MAAMC,aAAa,GAAIC,GAAW,IAA0B;IAC1D,OAAOF,UAAU,CAACD,QAAQ,CAACG,GAAmB,CAAC;EACjD,CAAC;EAED,MAAMC,uBAAuB,GAAGA,CAC9BV,GAAW,EACX/B,KAA0B,KACd;IACZ,IAAI,OAAO+B,GAAG,CAAClB,IAAI,KAAK,QAAQ,EAAE,OAAO,IAAI;IAC7C,MAAM6B,WAAW,GAAGX,GAAG,CAAClB,IAAI,CAAC,CAAC,CAAC,EAAEuB,WAAW,CAAC,CAAC;IAC9C,IAAIpC,KAAK,KAAK,OAAO,EAAE,OAAO,OAAO,CAACqC,QAAQ,CAACK,WAAW,CAAC;IAC3D,IAAI1C,KAAK,KAAK,WAAW,EAAE,OAAO,CAAC,OAAO,CAACqC,QAAQ,CAACK,WAAW,CAAC;IAChE,OAAO,IAAI;EACb,CAAC;EAED,MAAMC,oBAAoB,GAAGA,CAC3BZ,GAAW,EACXnB,EAAgB,EAChBZ,KAA0B,KACd;IACZ,MAAM4C,QAAQ,GAAGC,MAAM,CAACd,GAAG,CAACnB,EAAE,CAAC,CAAC,CAACwB,WAAW,CAAC,CAAC;IAE9C,IAAIpC,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK8C,SAAS,EAAE;MACzC,OAAO,IAAI;IACb;IAEA,IAAI,OAAO9C,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC1D,OAAO4C,QAAQ,CAACP,QAAQ,CAACQ,MAAM,CAAC7C,KAAK,CAAC,CAACoC,WAAW,CAAC,CAAC,CAAC;IACvD;IAEA,IAAIW,KAAK,CAACC,OAAO,CAAChD,KAAK,CAAC,EAAE;MACxB,OAAOA,KAAK,CAACkC,IAAI,CAAEe,UAAU,IAAK;QAChC,MAAMC,WAAW,GACf,OAAOD,UAAU,KAAK,QAAQ,GAAGA,UAAU,CAACjD,KAAK,GAAGiD,UAAU;QAChE,OAAOlB,GAAG,CAACnB,EAAE,CAAC,EACVuB,QAAQ,CAAC,CAAC,CACXC,WAAW,CAAC,CAAC,CACbC,QAAQ,CAACa,WAAW,CAACf,QAAQ,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,CAAC;MACnD,CAAC,CAAC;IACJ;IAEA,OAAO,KAAK;EACd,CAAC;EAED,MAAMe,aAAa,GAAGA,CACpBC,CAAkB,EAClBC,CAAkB,EAClBC,IAAa,KACF;IACX,IAAIF,CAAC,GAAGC,CAAC,EAAE,OAAOC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAIF,CAAC,GAAGC,CAAC,EAAE,OAAOC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;IAC/B,OAAO,CAAC;EACV,CAAC;EAGD,MAAMC,cAAc,GAAG9B,OAAO,GAC1BI,cAAc,CAACC,MAAM,CAAEC,GAAG,IACxBN,OAAO,CAAC+B,KAAK,CAAC,CAAC;IAAE5C,EAAE;IAAEZ;EAAkB,CAAC,KAAK;IAE3C,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK8C,SAAS,EAAE;MACzC,OAAO,IAAI;IACb;IAGA,IAAIlC,EAAE,KAAK,aAAa,EAAE;MACxB,OAAO6B,uBAAuB,CAACV,GAAG,EAAE/B,KAAK,CAAC;IAC5C;IAGA,IAAIuC,aAAa,CAAC3B,EAAE,CAAC,EAAE;MACrB,OAAO+B,oBAAoB,CAACZ,GAAG,EAAEnB,EAAE,EAAEZ,KAAK,CAAC;IAC7C;IAEA,OAAO,IAAI;EACb,CAAC,CACH,CAAC,GACD6B,cAAc;EAElB,MAAM4B,MAAM,GACV/B,IAAI,IAAIA,IAAI,CAACgC,MAAM,GAAG,CAAC,GACnB,CAAC,GAAGH,cAAc,CAAC,CAAC7B,IAAI,CAAC,CAAC0B,CAAC,EAAEC,CAAC,KAC5B3B,IAAI,CAACiC,MAAM,CAAC,CAACzC,MAAM,EAAE;IAAEN,EAAE;IAAE0C;EAAK,CAAC,KAAK;IACpC,IAAIpC,MAAM,KAAK,CAAC,EAAE,OAAOA,MAAM;IAE/B,IAAIqB,aAAa,CAAC3B,EAAE,CAAC,EAAE;MACrB,MAAMgD,MAAM,GAAGR,CAAC,CAACxC,EAAE,CAAC;MACpB,MAAMiD,MAAM,GAAGR,CAAC,CAACzC,EAAE,CAAC;MACpB,OAAOuC,aAAa,CAACS,MAAM,EAAEC,MAAM,EAAEP,IAAI,CAAC;IAC5C;IAGA,OAAO,CAAC;EACV,CAAC,EAAE,CAAC,CACN,CAAC,GACDC,cAAc;EAEpB,MAAMO,QAAQ,GAAG,CAACnC,IAAI,GAAG,CAAC,IAAIC,cAAc;EAC5C,MAAMmC,MAAM,GAAGD,QAAQ,GAAGlC,cAAc;EAExC,OAAO6B,MAAM,CAACjD,KAAK,CAACsD,QAAQ,EAAEC,MAAM,CAAC;AACvC,CAAC;AAACxE,OAAA,CAAA+B,UAAA,GAAAA,UAAA;AAEK,MAAM0C,WAAW,GAAGA,CAAsB;EAC/CtD,IAAI;EACJuD,KAAK;EACLC;AAKF,CAAC,KAAa;EACZ,MAAMC,QAAQ,GAAGzD,IAAI,CAAC0D,SAAS,CAAErC,GAAG,IAAKA,GAAG,CAACnB,EAAE,KAAKqD,KAAK,CAAC;EAE1D,IAAIE,QAAQ,KAAK,CAAC,CAAC,EAAE;IACnB,OAAOzD,IAAI;EACb;EAEA,MAAM,CAAC2D,UAAU,CAAC,GAAG3D,IAAI,CAAC4D,MAAM,CAACH,QAAQ,EAAE,CAAC,CAAC;EAE7C,MAAMI,aAAa,GAAG,CACpB,GAAG7D,IAAI,CAACF,KAAK,CAAC,CAAC,EAAE0D,WAAW,CAAC,EAC7BG,UAAU,EACV,GAAG3D,IAAI,CAACF,KAAK,CAAC0D,WAAW,CAAC,CAC3B;EAED,OAAOK,aAAa;AACtB,CAAC;AAAChF,OAAA,CAAAyE,WAAA,GAAAA,WAAA","ignoreList":[]}