{"version":3,"file":"default-spotlight-filter.mjs","names":[],"sources":["../src/default-spotlight-filter.ts"],"sourcesContent":["import type {\n  SpotlightActionData,\n  SpotlightActionGroupData,\n  SpotlightActions,\n  SpotlightFilterFunction,\n} from './Spotlight';\n\nfunction getKeywords(keywords: string | string[] | undefined) {\n  if (Array.isArray(keywords)) {\n    return keywords\n      .map((keyword) => keyword.trim())\n      .join(',')\n      .toLowerCase()\n      .trim();\n  }\n\n  if (typeof keywords === 'string') {\n    return keywords.toLowerCase().trim();\n  }\n\n  return '';\n}\n\nfunction getFlatActions(data: SpotlightActions[]) {\n  return data.reduce<SpotlightActionData[]>((acc, item) => {\n    if ('actions' in item) {\n      return [...acc, ...item.actions.map((action) => ({ ...action, group: item.group }))];\n    }\n\n    return [...acc, item];\n  }, []);\n}\n\nfunction flatActionsToGroups(data: SpotlightActionData[]) {\n  const groups: Record<string, { pushed: boolean; data: SpotlightActionGroupData }> = {};\n  const result: SpotlightActions[] = [];\n\n  data.forEach((action) => {\n    if (action.group) {\n      if (!groups[action.group]) {\n        groups[action.group] = { pushed: false, data: { group: action.group, actions: [] } };\n      }\n\n      groups[action.group].data.actions.push(action);\n\n      if (!groups[action.group].pushed) {\n        groups[action.group].pushed = true;\n        result.push(groups[action.group].data);\n      }\n    } else {\n      result.push(action);\n    }\n  });\n\n  return result;\n}\n\nexport const defaultSpotlightFilter: SpotlightFilterFunction = (_query, data) => {\n  const query = _query.trim().toLowerCase();\n  const priorityMatrix: SpotlightActionData[][] = [[], []];\n  const flatActions = getFlatActions(data);\n  flatActions.forEach((item) => {\n    if (item.label?.toLowerCase().includes(query)) {\n      priorityMatrix[0].push(item);\n    } else if (\n      item.description?.toLowerCase().includes(query) ||\n      getKeywords(item.keywords).includes(query)\n    ) {\n      priorityMatrix[1].push(item);\n    }\n  });\n\n  return flatActionsToGroups(priorityMatrix.flat());\n};\n"],"mappings":";;AAOA,SAAS,YAAY,UAAyC;CAC5D,IAAI,MAAM,QAAQ,QAAQ,GACxB,OAAO,SACJ,KAAK,YAAY,QAAQ,KAAK,CAAC,EAC/B,KAAK,GAAG,EACR,YAAY,EACZ,KAAK;CAGV,IAAI,OAAO,aAAa,UACtB,OAAO,SAAS,YAAY,EAAE,KAAK;CAGrC,OAAO;AACT;AAEA,SAAS,eAAe,MAA0B;CAChD,OAAO,KAAK,QAA+B,KAAK,SAAS;EACvD,IAAI,aAAa,MACf,OAAO,CAAC,GAAG,KAAK,GAAG,KAAK,QAAQ,KAAK,YAAY;GAAE,GAAG;GAAQ,OAAO,KAAK;EAAM,EAAE,CAAC;EAGrF,OAAO,CAAC,GAAG,KAAK,IAAI;CACtB,GAAG,CAAC,CAAC;AACP;AAEA,SAAS,oBAAoB,MAA6B;CACxD,MAAM,SAA8E,CAAC;CACrF,MAAM,SAA6B,CAAC;CAEpC,KAAK,SAAS,WAAW;EACvB,IAAI,OAAO,OAAO;GAChB,IAAI,CAAC,OAAO,OAAO,QACjB,OAAO,OAAO,SAAS;IAAE,QAAQ;IAAO,MAAM;KAAE,OAAO,OAAO;KAAO,SAAS,CAAC;IAAE;GAAE;GAGrF,OAAO,OAAO,OAAO,KAAK,QAAQ,KAAK,MAAM;GAE7C,IAAI,CAAC,OAAO,OAAO,OAAO,QAAQ;IAChC,OAAO,OAAO,OAAO,SAAS;IAC9B,OAAO,KAAK,OAAO,OAAO,OAAO,IAAI;GACvC;EACF,OACE,OAAO,KAAK,MAAM;CAEtB,CAAC;CAED,OAAO;AACT;AAEA,MAAa,0BAAmD,QAAQ,SAAS;CAC/E,MAAM,QAAQ,OAAO,KAAK,EAAE,YAAY;CACxC,MAAM,iBAA0C,CAAC,CAAC,GAAG,CAAC,CAAC;CAEvD,eADmC,IACzB,EAAE,SAAS,SAAS;EAC5B,IAAI,KAAK,OAAO,YAAY,EAAE,SAAS,KAAK,GAC1C,eAAe,GAAG,KAAK,IAAI;OACtB,IACL,KAAK,aAAa,YAAY,EAAE,SAAS,KAAK,KAC9C,YAAY,KAAK,QAAQ,EAAE,SAAS,KAAK,GAEzC,eAAe,GAAG,KAAK,IAAI;CAE/B,CAAC;CAED,OAAO,oBAAoB,eAAe,KAAK,CAAC;AAClD"}