{"version":3,"file":"orderby.cjs","names":[],"sources":["../../../src/common/data/orderby.ts"],"sourcesContent":["export function parseOrderby(value = ''): {\n  field: string\n  orderby: string\n  asc: boolean\n  desc: boolean\n} {\n  let [field = '', orderby = 'asc'] = value.split(' ')\n  orderby = orderby.toLowerCase()\n  return {\n    field,\n    orderby,\n    asc: orderby !== 'desc',\n    desc: orderby === 'desc',\n  }\n}\n\nexport function composeOrderby(field: string, asc = true): string {\n  return `${field} ${asc ? 'asc' : 'desc'}`\n}\n\n// Classic compare function with direction flag\nexport function cmp(a: any, b: any, asc = true): -1 | 0 | 1 {\n  const aa = a || 0\n  const bb = b || 0\n  return aa > bb ? (asc ? 1 : -1) : aa < bb ? (asc ? -1 : 1) : 0 // use Math.sign(?) for performance?\n}\n\n// todo: support localeCompare()\nexport function sortedOrderby<T>(values: T[], ...orderby: string[]): T[] {\n  if (orderby.length > 0) {\n    const orderByList = orderby.map(parseOrderby)\n    // let { field, asc } = parseOrderby(orderby)\n    // if (field != null && typeof field === \"string\") {\n    // let bigger = asc ? 1 : -1\n    // let smaller = asc ? -1 : 1\n    const sortValues = Array.from(values)\n    sortValues.sort((a: any, b: any): number => {\n      for (const { field, asc } of orderByList) {\n        const result = cmp(a[field], b[field], asc)\n        if (result !== 0)\n          return result\n      }\n      return 0\n      // const aa = a[field] || 0\n      // const bb = b[field] || 0\n      // return aa > bb ? bigger : aa < bb ? smaller : 0\n    })\n    return sortValues\n  }\n  return values\n}\n"],"mappings":";;;AAAA,SAAgB,aAAa,QAAQ,IAKnC;CACA,IAAI,CAAC,QAAQ,IAAI,UAAU,SAAS,MAAM,MAAM,IAAI;AACpD,WAAU,QAAQ,aAAa;AAC/B,QAAO;EACL;EACA;EACA,KAAK,YAAY;EACjB,MAAM,YAAY;EACnB;;AAGH,SAAgB,eAAe,OAAe,MAAM,MAAc;AAChE,QAAO,GAAG,MAAM,GAAG,MAAM,QAAQ;;AAInC,SAAgB,IAAI,GAAQ,GAAQ,MAAM,MAAkB;CAC1D,MAAM,KAAK,KAAK;CAChB,MAAM,KAAK,KAAK;AAChB,QAAO,KAAK,KAAM,MAAM,IAAI,KAAM,KAAK,KAAM,MAAM,KAAK,IAAK;;AAI/D,SAAgB,cAAiB,QAAa,GAAG,SAAwB;AACvE,KAAI,QAAQ,SAAS,GAAG;EACtB,MAAM,cAAc,QAAQ,IAAI,aAAa;EAK7C,MAAM,aAAa,MAAM,KAAK,OAAO;AACrC,aAAW,MAAM,GAAQ,MAAmB;AAC1C,QAAK,MAAM,EAAE,OAAO,SAAS,aAAa;IACxC,MAAM,SAAS,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAC3C,QAAI,WAAW,EACb,QAAO;;AAEX,UAAO;IAIP;AACF,SAAO;;AAET,QAAO"}