{"version":3,"file":"sort-controller.mjs","sources":["../../../../packages/components/src/subject/sort-controller.ts"],"sourcesContent":["import type { SubjectLikeItem } from './pagination'\n\nexport function moveSubjectItem(items: SubjectLikeItem[], fromIndex: number, toIndex: number): SubjectLikeItem[] {\n  if (fromIndex === toIndex || fromIndex < 0 || toIndex < 0 || fromIndex >= items.length || toIndex >= items.length) {\n    return items.map(item => ({ ...item }))\n  }\n\n  const next = items.map(item => ({ ...item }))\n  const [moved] = next.splice(fromIndex, 1)\n  next.splice(toIndex, 0, moved)\n  return next\n}\n\nexport function reorderSubjects(items: SubjectLikeItem[], orderedIds: string[]): SubjectLikeItem[] {\n  if (!orderedIds.length) {\n    return items.map(item => ({ ...item }))\n  }\n\n  const itemMap = new Map<string, SubjectLikeItem>()\n  const next: SubjectLikeItem[] = []\n\n  items.forEach((item) => {\n    if (item.customId) {\n      itemMap.set(String(item.customId), { ...item })\n    }\n  })\n\n  orderedIds.forEach((id) => {\n    const item = itemMap.get(String(id))\n    if (!item) {\n      return\n    }\n    next.push(item)\n    itemMap.delete(String(id))\n  })\n\n  items.forEach((item) => {\n    if (!item.customId || itemMap.has(String(item.customId))) {\n      next.push(itemMap.get(String(item.customId)) || { ...item })\n      itemMap.delete(String(item.customId))\n    }\n  })\n\n  return next\n}\n"],"names":["moveSubjectItem","items","fromIndex","toIndex","item","next","moved","reorderSubjects","orderedIds","itemMap","id"],"mappings":"AAEO,SAASA,EAAgBC,EAA0BC,EAAmBC,EAAoC,CAC/G,GAAID,IAAcC,GAAWD,EAAY,GAAKC,EAAU,GAAKD,GAAaD,EAAM,QAAUE,GAAWF,EAAM,OACzG,OAAOA,EAAM,IAAIG,IAAS,CAAE,GAAGA,GAAO,EAGxC,MAAMC,EAAOJ,EAAM,QAAa,CAAE,GAAGG,GAAO,EACtC,CAACE,CAAK,EAAID,EAAK,OAAOH,EAAW,CAAC,EACxC,OAAAG,EAAK,OAAOF,EAAS,EAAGG,CAAK,EACtBD,CACT,CAEO,SAASE,EAAgBN,EAA0BO,EAAyC,CACjG,GAAI,CAACA,EAAW,OACd,OAAOP,EAAM,IAAIG,IAAS,CAAE,GAAGA,GAAO,EAGxC,MAAMK,MAAc,IACdJ,EAA0B,CAAA,EAEhC,OAAAJ,EAAM,QAASG,GAAS,CAClBA,EAAK,UACPK,EAAQ,IAAI,OAAOL,EAAK,QAAQ,EAAG,CAAE,GAAGA,EAAM,CAElD,CAAC,EAEDI,EAAW,QAASE,GAAO,CACzB,MAAMN,EAAOK,EAAQ,IAAI,OAAOC,CAAE,CAAC,EAC9BN,IAGLC,EAAK,KAAKD,CAAI,EACdK,EAAQ,OAAO,OAAOC,CAAE,CAAC,EAC3B,CAAC,EAEDT,EAAM,QAASG,GAAS,EAClB,CAACA,EAAK,UAAYK,EAAQ,IAAI,OAAOL,EAAK,QAAQ,CAAC,KACrDC,EAAK,KAAKI,EAAQ,IAAI,OAAOL,EAAK,QAAQ,CAAC,GAAK,CAAE,GAAGA,EAAM,EAC3DK,EAAQ,OAAO,OAAOL,EAAK,QAAQ,CAAC,EAExC,CAAC,EAEMC,CACT"}