@g4rcez/components 0.2.6 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index.js +51 -46
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +7717 -7528
  5. package/dist/index.mjs.map +1 -1
  6. package/dist/index.umd.js +51 -46
  7. package/dist/index.umd.js.map +1 -1
  8. package/dist/preset/preset.tailwind.d.ts +1 -1
  9. package/dist/preset/preset.tailwind.d.ts.map +1 -1
  10. package/dist/preset/preset.tailwind.js +1 -1
  11. package/dist/preset/src/styles/dark.js +1 -1
  12. package/dist/preset/src/styles/light.js +1 -1
  13. package/dist/preset.tailwind.d.ts +1 -1
  14. package/dist/preset.tailwind.d.ts.map +1 -1
  15. package/dist/preset.tailwind.js +1 -1
  16. package/dist/src/components/core/polymorph.d.ts +1 -1
  17. package/dist/src/components/core/polymorph.d.ts.map +1 -1
  18. package/dist/src/components/core/tag.d.ts +16 -16
  19. package/dist/src/components/core/tag.d.ts.map +1 -1
  20. package/dist/src/components/display/shortcut.d.ts +4 -0
  21. package/dist/src/components/display/shortcut.d.ts.map +1 -0
  22. package/dist/src/components/display/shortcut.js +17 -0
  23. package/dist/src/components/floating/command-palette.d.ts +36 -0
  24. package/dist/src/components/floating/command-palette.d.ts.map +1 -0
  25. package/dist/src/components/floating/command-palette.js +139 -0
  26. package/dist/src/components/floating/modal.d.ts +60 -3
  27. package/dist/src/components/floating/modal.d.ts.map +1 -1
  28. package/dist/src/components/floating/modal.js +18 -10
  29. package/dist/src/components/form/autocomplete.d.ts.map +1 -1
  30. package/dist/src/components/form/autocomplete.js +9 -5
  31. package/dist/src/components/form/multi-select.d.ts.map +1 -1
  32. package/dist/src/components/form/multi-select.js +7 -2
  33. package/dist/src/components/index.d.ts +1 -0
  34. package/dist/src/components/index.d.ts.map +1 -1
  35. package/dist/src/components/index.js +1 -0
  36. package/dist/src/components/table/index.d.ts.map +1 -1
  37. package/dist/src/components/table/index.js +1 -1
  38. package/dist/src/config/context.d.ts.map +1 -1
  39. package/dist/src/config/default-translations.d.ts +1 -0
  40. package/dist/src/config/default-translations.d.ts.map +1 -1
  41. package/dist/src/config/default-translations.js +1 -0
  42. package/dist/src/hooks/use-remove-scroll.js +5 -4
  43. package/dist/src/hooks/use-translations.d.ts +1 -0
  44. package/dist/src/hooks/use-translations.d.ts.map +1 -1
  45. package/dist/src/lib/combi-keys.d.ts +12 -0
  46. package/dist/src/lib/combi-keys.d.ts.map +1 -0
  47. package/dist/src/lib/combi-keys.js +48 -0
  48. package/dist/src/lib/fns.d.ts.map +1 -1
  49. package/dist/src/lib/fzf.d.ts +16 -0
  50. package/dist/src/lib/fzf.d.ts.map +1 -0
  51. package/dist/src/lib/fzf.js +120 -0
  52. package/dist/src/styles/dark.js +1 -1
  53. package/dist/src/styles/light.js +1 -1
  54. package/dist/src/types.d.ts +5 -0
  55. package/dist/src/types.d.ts.map +1 -1
  56. package/package.json +118 -120
@@ -10,6 +10,7 @@ export * from "./display/notifications";
10
10
  export * from "./display/stats";
11
11
  export * from "./display/tabs";
12
12
  export * from "./display/timeline";
13
+ export * from "./floating/command-palette";
13
14
  export * from "./floating/dropdown";
14
15
  export * from "./floating/expand";
15
16
  export * from "./floating/menu";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/table/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAA2B,cAAc,EAAoD,MAAM,OAAO,CAAC;AAMzH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,OAAO,EAAa,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAoB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAS3F,KAAK,eAAe,CAAC,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,gBAAgB,CAAC,GAClE,mBAAmB,CAAC,CAAC,CAAC,GAAG;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACxB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAmKN,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC,GAAG;IACrH,IAAI,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CACH,mBAAmB,CAAC,CAAC,CAAC,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;CAC3B,CACJ,CAAC;AASN,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,GAAG,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,4CA8GxD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/table/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAA2B,cAAc,EAAoD,MAAM,OAAO,CAAC;AAMzH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,OAAO,EAAa,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAoB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAS3F,KAAK,eAAe,CAAC,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,gBAAgB,CAAC,GAClE,mBAAmB,CAAC,CAAC,CAAC,GAAG;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACxB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAkKN,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC,GAAG;IACrH,IAAI,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CACH,mBAAmB,CAAC,CAAC,CAAC,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;CAC3B,CACJ,CAAC;AASN,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,GAAG,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,4CA8GxD,CAAC"}
@@ -87,7 +87,7 @@ const InnerTable = ({ cols, filters, setCols, sorters, setFilters, setSorters, o
87
87
  }, [loadingMoreRef, onScrollEndRef]);
88
88
  const empty = rows.length === 0;
89
89
  const context = { loading: props.loading, loadingMore: props.loadingMore, cols: cols, Aside: props.Aside };
90
- return (_jsxs("div", { className: "min-w-full", children: [_jsxs("div", { className: `group rounded-lg ${border ? "border border-table-border" : ""}`, children: [_jsx(TableVirtuoso, { useWindowScroll: true, followOutput: "smooth", components: components, totalCount: rows.length, data: empty ? emptyRows : rows, itemContent: empty ? EmptyCell : Row, fixedFooterContent: showLoadingFooter ? Frag : null, context: context, fixedHeaderContent: () => (_jsx(TableHeader, { headers: cols, filters: filters, setCols: setCols, sorters: sorters, setFilters: setFilters, setSorters: setSorters, loading: !!props.loading, inlineFilter: props.inlineFilter, inlineSorter: props.inlineSorter })) }), empty ? _jsx(EmptyContent, { loading: props.loading }) : null, _jsx("div", { "aria-hidden": "true", ref: ref, className: "h-0.5 w-full" })] }), pagination !== null ? _jsx(Pagination, { ...pagination }) : null] }));
90
+ return (_jsxs("div", { className: "min-w-full", children: [_jsxs("div", { className: `group rounded-lg ${border ? "border border-table-border" : ""}`, children: [_jsx(TableVirtuoso, { useWindowScroll: true, context: context, components: components, totalCount: rows.length, itemContent: empty ? EmptyCell : Row, data: empty ? emptyRows : rows, fixedFooterContent: showLoadingFooter ? Frag : null, fixedHeaderContent: () => (_jsx(TableHeader, { headers: cols, filters: filters, setCols: setCols, sorters: sorters, setFilters: setFilters, setSorters: setSorters, loading: !!props.loading, inlineFilter: props.inlineFilter, inlineSorter: props.inlineSorter })) }), empty ? _jsx(EmptyContent, { loading: props.loading }) : null, _jsx("div", { "aria-hidden": "true", ref: ref, className: "h-0.5 w-full" })] }), pagination !== null ? _jsx(Pagination, { ...pagination }) : null] }));
91
91
  };
92
92
  const dispatcherFun = (prev, setter) => typeof setter === "function" ? setter(prev) : setter;
93
93
  const compareAndExec = (prev, state, exec) => (prev === state ? undefined : exec?.(state));
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/config/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC;CAC/B,CAAC,CAAC;AAEH,eAAO,MAAM,OAAO;;;;mBAHZ,QAAS,IAAI;GAQnB,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/config/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC;CAC/B,CAAC,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;GAKlB,CAAC"}
@@ -54,6 +54,7 @@ export declare const defaultTranslations: {
54
54
  calendarMonthLabel: string;
55
55
  multiSelectSelectedLabel: string;
56
56
  multiSelectInnerPlaceholder: string;
57
+ commandPaletteEmpty: string;
57
58
  };
58
59
  export type Translations = typeof defaultTranslations;
59
60
  //# sourceMappingURL=default-translations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-translations.d.ts","sourceRoot":"","sources":["../../../src/config/default-translations.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAgDQ;QAChC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAA;KAC1B;;;;;;;;;CAeJ,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,mBAAmB,CAAC"}
1
+ {"version":3,"file":"default-translations.d.ts","sourceRoot":"","sources":["../../../src/config/default-translations.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAgDQ;QAChC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAA;KAC1B;;;;;;;;;;CAiBJ,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,mBAAmB,CAAC"}
@@ -49,4 +49,5 @@ export const defaultTranslations = {
49
49
  calendarMonthLabel: "Month",
50
50
  multiSelectSelectedLabel: "Selected",
51
51
  multiSelectInnerPlaceholder: "Search...",
52
+ commandPaletteEmpty: "Nothing here...",
52
53
  };
@@ -8,17 +8,18 @@ export const useRemoveScroll = (remove, removeStyle = "overflow-hidden") => {
8
8
  const isCoarseDevice = useIsCoarseDevice();
9
9
  const prev = useRef(isSsr() ? "" : document.documentElement.style.overflowY);
10
10
  useEffect(() => {
11
- const html = document.documentElement;
11
+ if (ref.current === null && !remove)
12
+ return;
12
13
  if (removeStyle === "overflow-hidden") {
13
14
  if (remove) {
14
15
  prev.current = document.documentElement.style.overflowY;
15
- html.style.overflowY = "hidden";
16
+ document.documentElement.style.overflowY = "hidden";
16
17
  if (isCoarseDevice || isMobile())
17
18
  return;
18
- html.style.padding = hasVerticalScroll(html) ? "0 15px 0 0" : "";
19
+ document.documentElement.style.padding = hasVerticalScroll(document.documentElement) ? "0 15px 0 0" : "";
19
20
  }
20
21
  else {
21
- html.style.padding = "";
22
+ document.documentElement.style.padding = "";
22
23
  document.documentElement.style.overflowY = prev.current;
23
24
  }
24
25
  }
@@ -53,5 +53,6 @@ export declare const useTranslations: () => {
53
53
  calendarMonthLabel: string;
54
54
  multiSelectSelectedLabel: string;
55
55
  multiSelectInnerPlaceholder: string;
56
+ commandPaletteEmpty: string;
56
57
  };
57
58
  //# sourceMappingURL=use-translations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-translations.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-translations.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAKs+C,CAAC;;gBAAoD,MAAO,SAAS;;;;;;;;;;CADtkD,CAAC"}
1
+ {"version":3,"file":"use-translations.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-translations.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAKs+C,CAAC;;;;;;;;;;;;;CADlgD,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare const isMac: () => boolean;
2
+ type Handler = (e: KeyboardEvent) => void;
3
+ export declare class CombiKeys {
4
+ combinations: Array<{
5
+ key: string;
6
+ fn: Handler;
7
+ }>;
8
+ add<S extends string>(combi: S, fn: Handler): void;
9
+ register(): () => void;
10
+ }
11
+ export {};
12
+ //# sourceMappingURL=combi-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combi-keys.d.ts","sourceRoot":"","sources":["../../../src/lib/combi-keys.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,eAAsC,CAAC;AAUzD,KAAK,OAAO,GAAG,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;AAI1C,qBAAa,SAAS;IACX,YAAY,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC,CAAM;IAEvD,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO;IAM3C,QAAQ;CAwBlB"}
@@ -0,0 +1,48 @@
1
+ const osx = /Mac|iPod|iPhone|iPad/;
2
+ export const isMac = () => osx.test(navigator.userAgent);
3
+ const parseCombination = (combination) => combination.split("+").map((k) => {
4
+ const key = k.trim();
5
+ if (key === "Mod")
6
+ return isMac() ? "Meta" : "Control";
7
+ if (key === "Hyper")
8
+ return isMac() ? "Meta+Shift+Alt" : "Control+Shift+Alt";
9
+ return key;
10
+ });
11
+ const combine = (keys) => keys.map((x) => x.trim()).join("+");
12
+ export class CombiKeys {
13
+ combinations = [];
14
+ add(combi, fn) {
15
+ const key = combine(parseCombination(combi));
16
+ if (this.combinations.find((x) => x.key === key))
17
+ return;
18
+ this.combinations.push({ fn, key });
19
+ }
20
+ register() {
21
+ const controller = new AbortController();
22
+ const handler = (event) => {
23
+ const element = event.target;
24
+ if (element.tagName === "INPUT" || element.tagName === "TEXTAREA") {
25
+ const bypass = element.getAttribute("data-combikeysbypass");
26
+ if (bypass !== "true")
27
+ return;
28
+ }
29
+ const activeKeys = new Set();
30
+ if (event.metaKey)
31
+ activeKeys.add("Meta");
32
+ if (event.ctrlKey)
33
+ activeKeys.add("Control");
34
+ if (event.altKey)
35
+ activeKeys.add("Alt");
36
+ activeKeys.add(event.shiftKey ? event.key.toUpperCase() : event.key);
37
+ const action = combine(Array.from(activeKeys));
38
+ this.combinations.forEach((bind) => {
39
+ if (bind.key === action) {
40
+ event.preventDefault();
41
+ return void bind.fn(event);
42
+ }
43
+ });
44
+ };
45
+ window.addEventListener("keydown", handler, { signal: controller.signal });
46
+ return () => controller.abort();
47
+ }
48
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../src/lib/fns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAI/B,eAAO,MAAM,IAAI,QAAO,MAUvB,CAAC;AAUF,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,oBAGzE,CAAC;AAEF,eAAO,MAAM,KAAK,eAAsC,CAAC;AAEzD,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,WAAkD,CAAC;AAE3F,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,MAAM,UAQpD,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,GAAG,OAAO,YAAO,CAAC;AAEzC,eAAO,MAAM,IAAI,YAAW,CAAC;AAE7B,eAAO,MAAM,QAAQ,eAGpB,CAAA"}
1
+ {"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../src/lib/fns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAI/B,eAAO,MAAM,IAAI,QAAO,MAUvB,CAAC;AAUF,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,oBAGzE,CAAC;AAEF,eAAO,MAAM,KAAK,eAAsC,CAAC;AAEzD,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,WAAkD,CAAC;AAE3F,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,MAAM,UAQpD,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,GAAG,OAAO,YAAO,CAAC;AAEzC,eAAO,MAAM,IAAI,YAAY,CAAC;AAE9B,eAAO,MAAM,QAAQ,eAGpB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { Any, Walk } from "../types";
2
+ export declare const fuzzyMatch: (text: string, search: string) => number | null;
3
+ export type Match = "EQUAL" | "CONTAINS" | "CONTAINS_NUMBERS" | "STARTS_WITH" | "ENDS_WITH" | "FUZZY";
4
+ export type MatchValue<T> = {
5
+ match?: Match;
6
+ score?: number;
7
+ key: Walk<T>;
8
+ value: string | string[];
9
+ ifNotMatch?: (value: string, source: string) => boolean;
10
+ };
11
+ export type Matcher<T> = {
12
+ match?: Match;
13
+ key: Walk<T>;
14
+ };
15
+ export declare const fzf: <T extends Any, ID extends Walk<T>>(items: T[], id: ID, keys: MatchValue<T>[]) => T[];
16
+ //# sourceMappingURL=fzf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fzf.d.ts","sourceRoot":"","sources":["../../../src/lib/fzf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,QAAQ,MAAM,KAAG,MAAM,GAAG,IA+ClE,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,kBAAkB,GAAG,aAAa,GAAG,WAAW,GAAG,OAAO,CAAC;AAEtG,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAwDzD,eAAO,MAAM,GAAG,GAAI,CAAC,SAAS,GAAG,EAAE,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,QAwB/F,CAAC"}
@@ -0,0 +1,120 @@
1
+ export const fuzzyMatch = (text, search) => {
2
+ text = String(text).toLocaleLowerCase();
3
+ search = String(search).toLocaleLowerCase();
4
+ const firstChar = search[0];
5
+ const firstCharIndexes = text
6
+ .split("")
7
+ .map((char, index) => (char === firstChar ? index : false))
8
+ .filter((index) => index !== false);
9
+ if (firstCharIndexes.length === 0) {
10
+ return null;
11
+ }
12
+ const matchedIndexes = [];
13
+ firstCharIndexes.forEach((startingIndex) => {
14
+ let index = startingIndex + 1;
15
+ const indexes = [startingIndex];
16
+ for (let i = 1; i < search.length; i++) {
17
+ const letter = search[i];
18
+ index = text.indexOf(letter, index);
19
+ if (index === -1) {
20
+ return;
21
+ }
22
+ indexes.push(index);
23
+ index++;
24
+ }
25
+ matchedIndexes.push(indexes);
26
+ });
27
+ if (matchedIndexes.length === 0) {
28
+ return null;
29
+ }
30
+ const bestMatch = matchedIndexes.sort((a, b) => {
31
+ if (a.length === 1) {
32
+ return a[0] - b[0];
33
+ }
34
+ const aSpread = a[a.length - 1] - a[0];
35
+ const bSpread = b[b.length - 1] - b[0];
36
+ return aSpread - bSpread;
37
+ })[0];
38
+ if (text === search) {
39
+ return 1;
40
+ }
41
+ else if (bestMatch.length > 1) {
42
+ return 2 + (bestMatch[bestMatch.length - 1] - bestMatch[0]);
43
+ }
44
+ return 2 + bestMatch[0];
45
+ };
46
+ const travel = (path, regexp, obj) => {
47
+ const keys = path.split(regexp).filter(Boolean);
48
+ let res = obj;
49
+ for (const key of keys) {
50
+ if (res === null || res === undefined) {
51
+ return res;
52
+ }
53
+ res = res[key];
54
+ }
55
+ return res;
56
+ };
57
+ const regexPaths = { basic: /[,[\]]+?/, extend: /[,[\].]+?/ };
58
+ const path = (obj, path) => {
59
+ const result = travel(path, regexPaths.basic, obj);
60
+ if (result !== undefined && result !== obj)
61
+ return result;
62
+ return travel(path, regexPaths.extend, obj);
63
+ };
64
+ const onlyNumbers = (str) => str.replace(/[^0-9]/g, "");
65
+ const diacritics = (input) => input.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
66
+ const strCompare = (text, value, _, match = "FUZZY") => {
67
+ if (match === "CONTAINS") {
68
+ return text.includes(value);
69
+ }
70
+ if (match === "EQUAL") {
71
+ return text === value;
72
+ }
73
+ if (match === "CONTAINS_NUMBERS") {
74
+ return onlyNumbers(text).includes(onlyNumbers(value));
75
+ }
76
+ if (match === "STARTS_WITH") {
77
+ return text.startsWith(value);
78
+ }
79
+ if (match === "ENDS_WITH") {
80
+ return text.endsWith(value);
81
+ }
82
+ if (match === "FUZZY") {
83
+ const r = fuzzyMatch(text, value);
84
+ return r !== null;
85
+ }
86
+ return false;
87
+ };
88
+ const compare = (search, value, defaultScore, match = "FUZZY") => {
89
+ if (Array.isArray(value)) {
90
+ return value.some((x) => strCompare(search, x, defaultScore, match));
91
+ }
92
+ return strCompare(search, value, defaultScore, match);
93
+ };
94
+ export const fzf = (items, id, keys) => {
95
+ if (keys.length === 0) {
96
+ return items;
97
+ }
98
+ const map = new Map();
99
+ const remap = keys.map((x) => ({
100
+ ...x,
101
+ value: Array.isArray(x.value) ? x.value.map(diacritics) : diacritics(`${x.value}`),
102
+ }));
103
+ items.forEach((item) => {
104
+ const idVal = path(item, id);
105
+ remap.forEach((filter) => {
106
+ const searchValue = path(item, filter.key);
107
+ if (!searchValue)
108
+ return;
109
+ const search = diacritics(`${searchValue}`.toLocaleLowerCase()).trim();
110
+ const target = diacritics(`${filter.value}`.toLocaleLowerCase()).trim();
111
+ if (compare(search, target, filter.score, filter.match)) {
112
+ map.set(idVal, item);
113
+ }
114
+ else if (filter.ifNotMatch && filter.ifNotMatch(search, target)) {
115
+ map.set(idVal, item);
116
+ }
117
+ });
118
+ });
119
+ return Array.from(map.values());
120
+ };
@@ -10,7 +10,7 @@ export const DARK_THEME = {
10
10
  colors: {
11
11
  foreground: "hsla(210, 50%, 98%)",
12
12
  background: "hsla(0, 0%, 9%)",
13
- muted: "hsla(0, 0%, 12%)",
13
+ muted: "hsla(210, 10%, 40%)",
14
14
  disabled: "hsla(240, 4%, 33%)",
15
15
  emphasis: {
16
16
  foreground: "hsla(251, 91%, 95%)",
@@ -26,7 +26,7 @@ export const LIGHT_THEME = {
26
26
  },
27
27
  secondary: {
28
28
  background: "hsla(210, 25%, 35%)",
29
- DEFAULT: "hsla(210, 25%, 35%)",
29
+ DEFAULT: "hsla(210, 25%, 45%)",
30
30
  subtle: "hsla(207, 29%, 39%)",
31
31
  hover: "hsla(210, 21%, 67%)",
32
32
  foreground: "hsla(210, 40%, 98%)",
@@ -18,4 +18,9 @@ export interface ReactComponent<P = Any> {
18
18
  export type CvaVariants<T extends object> = {
19
19
  [K in keyof T]?: keyof T[K];
20
20
  };
21
+ type Irreducible = string | number | null | undefined | Date | symbol;
22
+ export type Walk<T> = T extends object ? {
23
+ [K in keyof T]: T[K] extends any[] ? K : K extends Irreducible ? T[K] extends object ? K | T[K] extends Date ? K : `${K & string}.${Walk<T[K]> & string}` : K : never;
24
+ }[keyof T] : never;
25
+ export {};
21
26
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAExE,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;AAEvE,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC;AAErD,MAAM,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;AAElE,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtD,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC;AAE1B,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC;AAE9C,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1C,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAE1C,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,GAAG;IACnC,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEjC,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC9C;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI;KACvC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAC9B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAExE,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;AAEvE,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC;AAErD,MAAM,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;AAElE,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtD,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC;AAE1B,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC;AAE9C,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1C,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAE1C,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,GAAG;IACnC,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEjC,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC9C;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI;KACvC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAC9B,CAAC;AAEF,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC;AAEtE,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAChC;KACK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,GAC5B,CAAC,GACD,CAAC,SAAS,WAAW,GACnB,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACf,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACjB,CAAC,GACD,GAAG,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,GAC1C,CAAC,GACL,KAAK;CAChB,CAAC,MAAM,CAAC,CAAC,GACV,KAAK,CAAC"}