UNPKG

@empoleon/spotlight

Version:

Command center components for react and Empoleon

1 lines 4.7 kB
{"version":3,"file":"default-spotlight-filter.cjs","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"],"names":["getKeywords","keywords","Array","isArray","map","keyword","trim","join","toLowerCase","getFlatActions","data","reduce","acc","item","actions","action","group","flatActionsToGroups","groups","result","forEach","pushed","push","defaultSpotlightFilter","_query","query","priorityMatrix","flatActions","label","includes","description","flat"],"mappings":";;AAOA,SAASA,YAAYC,QAAA,EAAyC;AAC5D,EAAA,IAAIC,KAAA,CAAMC,OAAA,CAAQF,QAAQ,CAAA,EAAG;IAC3B,OAAOA,QAAA,CACJG,GAAA,CAAKC,OAAA,IAAYA,OAAA,CAAQC,IAAA,EAAM,CAAA,CAC/BC,IAAA,CAAK,GAAG,CAAA,CACRC,WAAA,GACAF,IAAA,EAAK;AACV,EAAA;AAEA,EAAA,IAAI,OAAOL,aAAa,QAAA,EAAU;IAChC,OAAOA,QAAA,CAASO,WAAA,EAAY,CAAEF,IAAA,EAAK;AACrC,EAAA;AAEA,EAAA,OAAO,EAAA;AACT;AAEA,SAASG,eAAeC,IAAA,EAA0B;EAChD,OAAOA,IAAA,CAAKC,MAAA,CAA8B,CAACC,GAAA,EAAKC,IAAA,KAAS;IACvD,IAAI,aAAaA,IAAA,EAAM;AACrB,MAAA,OAAO,CAAC,GAAGD,GAAA,EAAK,GAAGC,IAAA,CAAKC,QAAQV,GAAA,CAAKW,MAAA,KAAY;AAAE,QAAA,GAAGA,MAAA;QAAQC,KAAA,EAAOH,IAAA,CAAKG;QAAQ,CAAC,CAAA;AACrF,IAAA;AAEA,IAAA,OAAO,CAAC,GAAGJ,GAAA,EAAKC,IAAI,CAAA;EACtB,CAAA,EAAG,EAAE,CAAA;AACP;AAEA,SAASI,oBAAoBP,IAAA,EAA6B;EACxD,MAAMQ,SAA8E,EAAC;EACrF,MAAMC,SAA6B,EAAC;AAEpCT,EAAAA,IAAA,CAAKU,OAAA,CAASL,MAAA,IAAW;IACvB,IAAIA,OAAOC,KAAA,EAAO;AAChB,MAAA,IAAI,CAACE,MAAA,CAAOH,MAAA,CAAOC,KAAK,CAAA,EAAG;AACzBE,QAAAA,MAAA,CAAOH,MAAA,CAAOC,KAAK,CAAA,GAAI;AAAEK,UAAAA,QAAQ,KAAA;AAAOX,UAAAA,IAAA,EAAM;YAAEM,KAAA,EAAOD,MAAA,CAAOC,KAAA;AAAOF,YAAAA,OAAA,EAAS;AAAG;SAAE;AACrF,MAAA;AAEAI,MAAAA,MAAA,CAAOH,OAAOC,KAAK,CAAA,CAAEN,IAAA,CAAKI,OAAA,CAAQQ,KAAKP,MAAM,CAAA;MAE7C,IAAI,CAACG,MAAA,CAAOH,MAAA,CAAOC,KAAK,EAAEK,MAAA,EAAQ;QAChCH,MAAA,CAAOH,MAAA,CAAOC,KAAK,CAAA,CAAEK,MAAA,GAAS,IAAA;QAC9BF,MAAA,CAAOG,IAAA,CAAKJ,MAAA,CAAOH,MAAA,CAAOC,KAAK,EAAEN,IAAI,CAAA;AACvC,MAAA;AACF,IAAA,CAAA,MAAO;AACLS,MAAAA,MAAA,CAAOG,KAAKP,MAAM,CAAA;AACpB,IAAA;AACF,EAAA,CAAC,CAAA;AAED,EAAA,OAAOI,MAAA;AACT;MAEaI,sBAAA,GAAkDA,CAACC,MAAA,EAAQd,IAAA,KAAS;EAC/E,MAAMe,KAAA,GAAQD,MAAA,CAAOlB,IAAA,EAAK,CAAEE,WAAA,EAAY;AACxC,EAAA,MAAMkB,cAAA,GAA0C,CAAC,EAAC,EAAG,EAAE,CAAA;AACvD,EAAA,MAAMC,WAAA,GAAclB,eAAeC,IAAI,CAAA;AACvCiB,EAAAA,WAAA,CAAYP,OAAA,CAASP,IAAA,IAAS;AAC5B,IAAA,IAAIA,KAAKe,KAAA,EAAOpB,WAAA,EAAY,CAAEqB,QAAA,CAASJ,KAAK,CAAA,EAAG;AAC7CC,MAAAA,cAAA,CAAe,CAAC,CAAA,CAAEJ,IAAA,CAAKT,IAAI,CAAA;IAC7B,CAAA,MAAA,IACEA,IAAA,CAAKiB,WAAA,EAAatB,WAAA,GAAcqB,QAAA,CAASJ,KAAK,CAAA,IAC9CzB,WAAA,CAAYa,IAAA,CAAKZ,QAAQ,CAAA,CAAE4B,QAAA,CAASJ,KAAK,CAAA,EACzC;AACAC,MAAAA,cAAA,CAAe,CAAC,CAAA,CAAEJ,IAAA,CAAKT,IAAI,CAAA;AAC7B,IAAA;AACF,EAAA,CAAC,CAAA;AAED,EAAA,OAAOI,mBAAA,CAAoBS,cAAA,CAAeK,IAAA,EAAM,CAAA;AAClD;;;;"}