{"version":3,"file":"sort-controller.cjs","sources":["../../../../packages/components-wc/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":["items","fromIndex","toIndex","length","map","item","next","moved","splice","orderedIds","itemMap","Map","forEach","customId","set","String","id","get","push","delete","has"],"mappings":"qCAEO,SAAyBA,EAA0BC,EAAmBC,GAC3E,GAAID,IAAcC,GAAWD,EAAY,GAAKC,EAAU,GAAKD,GAAaD,EAAMG,QAAUD,GAAWF,EAAMG,OACzG,OAAOH,EAAMI,IAAIC,IAAA,IAAcA,KAGjC,MAAMC,EAAON,EAAMI,YAAkBC,MAC9BE,GAASD,EAAKE,OAAOP,EAAW,GAEvC,OADAK,EAAKE,OAAON,EAAS,EAAGK,GACjBD,CACT,0BAEO,SAAyBN,EAA0BS,GACxD,IAAKA,EAAWN,OACd,OAAOH,EAAMI,IAAIC,IAAA,IAAcA,KAGjC,MAAMK,MAAcC,IACdL,EAA0B,GAwBhC,OAtBAN,EAAMY,QAASP,IACTA,EAAKQ,UACPH,EAAQI,IAAIC,OAAOV,EAAKQ,UAAW,IAAKR,MAI5CI,EAAWG,QAASI,IAClB,MAAMX,EAAOK,EAAQO,IAAIF,OAAOC,IAC3BX,IAGLC,EAAKY,KAAKb,GACVK,EAAQS,OAAOJ,OAAOC,OAGxBhB,EAAMY,QAASP,IACRA,EAAKQ,WAAYH,EAAQU,IAAIL,OAAOV,EAAKQ,aAC5CP,EAAKY,KAAKR,EAAQO,IAAIF,OAAOV,EAAKQ,YAAc,IAAKR,IACrDK,EAAQS,OAAOJ,OAAOV,EAAKQ,cAIxBP,CACT"}