@hitgrab/finder 0.1.17-alpha → 0.1.19-alpha

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 (63) hide show
  1. package/dist/index.cjs +1 -0
  2. package/dist/index.d.cts +538 -0
  3. package/dist/index.d.mts +538 -0
  4. package/dist/index.mjs +1 -0
  5. package/package.json +9 -16
  6. package/dist/core/__tests__/core.test.d.ts +0 -1
  7. package/dist/core/__tests__/effects.test.d.ts +0 -1
  8. package/dist/core/__tests__/events.test.d.ts +0 -1
  9. package/dist/core/__tests__/filter.test.d.ts +0 -1
  10. package/dist/core/__tests__/group-by.test.d.ts +0 -1
  11. package/dist/core/__tests__/pagination.test.d.ts +0 -1
  12. package/dist/core/__tests__/search.test.d.ts +0 -1
  13. package/dist/core/__tests__/sort-by.test.d.ts +0 -1
  14. package/dist/core/__tests__/test-constants.d.ts +0 -5
  15. package/dist/core/__tests__/test-types.d.ts +0 -6
  16. package/dist/core/__tests__/utils.test.d.ts +0 -1
  17. package/dist/core/core-constants.d.ts +0 -46
  18. package/dist/core/debounce-callback-registry.d.ts +0 -3
  19. package/dist/core/effect-book.d.ts +0 -12
  20. package/dist/core/event-emitter.d.ts +0 -12
  21. package/dist/core/filter-utils/boolean-filter.d.ts +0 -10
  22. package/dist/core/filter-utils/filter-factory.d.ts +0 -18
  23. package/dist/core/filter-utils/multiple-filter.d.ts +0 -10
  24. package/dist/core/filter-utils/single-filter.d.ts +0 -10
  25. package/dist/core/filters.d.ts +0 -28
  26. package/dist/core/finder-core-implementation.d.ts +0 -44
  27. package/dist/core/finder-core.d.ts +0 -99
  28. package/dist/core/finder-error.d.ts +0 -3
  29. package/dist/core/group-by.d.ts +0 -23
  30. package/dist/core/pagination.d.ts +0 -19
  31. package/dist/core/rule-book.d.ts +0 -14
  32. package/dist/core/search/calculate-character-match-indexes.d.ts +0 -1
  33. package/dist/core/search/calculate-string-match-segments.d.ts +0 -9
  34. package/dist/core/search/default-search-and-sort-algorithm.d.ts +0 -2
  35. package/dist/core/search/search-score.d.ts +0 -4
  36. package/dist/core/search/search-string-transform.d.ts +0 -8
  37. package/dist/core/search/string-match-haystack.d.ts +0 -15
  38. package/dist/core/search.d.ts +0 -18
  39. package/dist/core/sort-by.d.ts +0 -23
  40. package/dist/core/tester.d.ts +0 -8
  41. package/dist/core/types/core-types.d.ts +0 -93
  42. package/dist/core/types/effect-types.d.ts +0 -20
  43. package/dist/core/types/event-types.d.ts +0 -44
  44. package/dist/core/types/rule-types.d.ts +0 -93
  45. package/dist/core/types/string-match-types.d.ts +0 -10
  46. package/dist/core/utils/rule-type-enforcers.d.ts +0 -15
  47. package/dist/core/utils/rule-utils.d.ts +0 -9
  48. package/dist/index.d.ts +0 -13
  49. package/dist/index.js +0 -5041
  50. package/dist/index.umd.cjs +0 -27
  51. package/dist/react/components/finder-content-empty.d.ts +0 -7
  52. package/dist/react/components/finder-content-groups.d.ts +0 -7
  53. package/dist/react/components/finder-content-items.d.ts +0 -7
  54. package/dist/react/components/finder-content-loading.d.ts +0 -7
  55. package/dist/react/components/finder-content-no-matches.d.ts +0 -7
  56. package/dist/react/components/finder-content.d.ts +0 -25
  57. package/dist/react/components/finder-search-term-haystack.d.ts +0 -8
  58. package/dist/react/components/finder.d.ts +0 -9
  59. package/dist/react/components/string-match.d.ts +0 -12
  60. package/dist/react/hooks/use-finder-ref.d.ts +0 -2
  61. package/dist/react/hooks/use-finder.d.ts +0 -3
  62. package/dist/react/providers/finder-core-context.d.ts +0 -3
  63. package/dist/react/types/react-types.d.ts +0 -41
@@ -1,44 +0,0 @@
1
- import { EVENT_SOURCE, EVENTS } from "../core-constants";
2
- import { FinderCore } from "../finder-core";
3
- import { FinderRule } from "./rule-types";
4
- export type FinderTouchSource = (typeof EVENT_SOURCE)[keyof typeof EVENT_SOURCE];
5
- interface FinderSharedEventProps {
6
- source: string;
7
- event: FinderEventName;
8
- timestamp: number;
9
- instance: FinderCore;
10
- }
11
- export interface FinderInitEvent extends FinderSharedEventProps {
12
- source: "core";
13
- event: "init";
14
- }
15
- export interface FinderFirstUserInteractionEvent extends FinderSharedEventProps {
16
- source: "core";
17
- event: "firstUserInteraction";
18
- }
19
- export interface FinderReadyEvent extends FinderSharedEventProps {
20
- source: "core";
21
- event: "ready";
22
- }
23
- export type FinderEvent = FinderInitEvent | FinderFirstUserInteractionEvent | FinderReadyEvent | FinderChangeEvent;
24
- export type FinderOnInitCallback = (event: FinderInitEvent) => void;
25
- export type FinderOnReadyCallback = (event: FinderReadyEvent) => void;
26
- export type FinderOnFirstUserInteractCallback = (event: FinderFirstUserInteractionEvent) => void;
27
- export type FinderOnChangeCallback = (event: FinderChangeEvent) => void;
28
- export type FinderTouchCallback = (event: FinderTouchEvent) => void;
29
- /**
30
- * Internal communication between mixins and core
31
- */
32
- export interface FinderTouchEvent {
33
- source: FinderTouchSource;
34
- event: FinderEventName;
35
- current: any;
36
- initial: any;
37
- rule?: FinderRule;
38
- }
39
- /**
40
- * External type that consumers will receive
41
- */
42
- export type FinderChangeEvent = FinderTouchEvent & FinderSharedEventProps;
43
- export type FinderEventName = (typeof EVENTS)[keyof typeof EVENTS];
44
- export {};
@@ -1,93 +0,0 @@
1
- import { FinderResultGroup, SortDirection } from "./core-types";
2
- /**
3
- * Select a property from the item to sort by.
4
- */
5
- export type FinderPropertySelector<FItem, FContext = any> = (item: FItem, context: FContext) => string | number;
6
- interface RuleBase {
7
- id: string;
8
- debounceMilliseconds?: number;
9
- label?: string;
10
- hidden?: boolean;
11
- }
12
- export type FinderRule<FItem = any, FContext = any> = SearchRule<FItem, FContext> | FilterRuleUnion<FItem, FContext> | HydratedFilterRule<FItem, FContext> | SortByRule<FItem, FContext> | GroupByRule<FItem, FContext>;
13
- export type HydratedFinderRule<FItem = any, FContext = any> = SearchRule<FItem, FContext> | HydratedFilterRule<FItem, FContext> | SortByRule<FItem, FContext> | GroupByRule<FItem, FContext>;
14
- export interface SearchRule<FItem = any, FContext = any> extends Omit<RuleBase, "id"> {
15
- id?: string;
16
- searchFn?: (item: FItem, context: FContext) => string | string[];
17
- }
18
- export interface FilterOptionGeneratorFnOptions<FItem, FContext = any> {
19
- items: FItem[];
20
- context: FContext;
21
- }
22
- /**
23
- * Describes the display of a filter or sort option.
24
- */
25
- export interface FilterOption<FValue = any> {
26
- label: string;
27
- value: FValue;
28
- disabled?: boolean;
29
- }
30
- export interface FilterRule<FItem = any, FValue = any, FContext = any> extends RuleBase {
31
- options?: FilterOption<FValue>[] | ((options: FilterOptionGeneratorFnOptions<FItem, FContext>) => FilterOption<FValue>[]);
32
- required?: boolean;
33
- }
34
- export interface FilterRuleWithBooleanValue<FItem, FContext = any> extends FilterRule<FItem> {
35
- multiple?: false;
36
- boolean: true;
37
- filterFn: (item: FItem, value: boolean, context: FContext) => boolean;
38
- defaultValue?: boolean;
39
- }
40
- export interface FilterRuleWithSingleValue<FItem, FValue, FContext = any> extends FilterRule<FItem, FValue, FContext> {
41
- multiple?: false;
42
- boolean?: false;
43
- filterFn: (item: FItem, value: FValue, context: FContext) => boolean;
44
- defaultValue?: FValue;
45
- }
46
- export interface FilterRuleWithMultipleValues<FItem, FValue, FContext = any> extends FilterRule<FItem, FValue, FContext> {
47
- multiple: true;
48
- boolean?: false;
49
- filterFn: (item: FItem, value: FValue[], context: FContext) => boolean;
50
- defaultValue?: FValue[];
51
- }
52
- export type FilterRuleUnion<FItem = any, FValue = any> = FilterRuleWithBooleanValue<FItem> | FilterRuleWithSingleValue<FItem, FValue> | FilterRuleWithMultipleValues<FItem, FValue>;
53
- /**
54
- * A hydrated filter has rendered any option generator functions, and narrowed ambiguous properties from FilterRule.
55
- */
56
- export interface HydratedFilterRule<FItem = any, FValue = any, FContext = any> extends Omit<FilterRule<FItem, FValue>, "options"> {
57
- options?: FilterOption<FValue>[];
58
- required: boolean;
59
- boolean: boolean;
60
- hidden: boolean;
61
- multiple: boolean;
62
- filterFn: ((item: FItem, value: FValue, context: FContext) => boolean) | ((item: FItem, value: FValue[], context: FContext) => boolean);
63
- defaultValue?: boolean | FValue | FValue[];
64
- _isHydrated: true;
65
- }
66
- export interface SortByRule<FItem = any, FContext = any> extends RuleBase {
67
- sortFn: FinderPropertySelector<FItem, FContext> | FinderPropertySelector<FItem, FContext>[];
68
- defaultSortDirection?: SortDirection;
69
- }
70
- export interface GroupByRule<FItem = any, FContext = any> extends RuleBase {
71
- groupFn: FinderPropertySelector<FItem, FContext>;
72
- sortGroupFn?: FinderPropertySelector<FinderResultGroup<FItem>, FContext>;
73
- defaultGroupSortDirection?: SortDirection;
74
- sticky?: {
75
- header?: string | string[];
76
- footer?: string | string[];
77
- };
78
- }
79
- export interface SearchTestOptions {
80
- rule: SearchRule[];
81
- searchTerm: string;
82
- }
83
- export interface FilterTestOptions {
84
- rules: HydratedFilterRule[];
85
- values?: Record<string, any>;
86
- isAdditive?: boolean;
87
- }
88
- export interface FilterTestRuleOptions {
89
- rule: string | FilterRuleUnion | HydratedFilterRule;
90
- value: any;
91
- isAdditive?: boolean;
92
- }
93
- export {};
@@ -1,10 +0,0 @@
1
- /**
2
- * These values all point to the transformed haystack.
3
- */
4
- export interface StringMatchSegment {
5
- index: number;
6
- length: number;
7
- is_match: boolean;
8
- value: string;
9
- }
10
- export type SearchCharacterIndexFn = (haystack: string, needle: string) => number[] | undefined;
@@ -1,15 +0,0 @@
1
- import { FinderCore } from "../finder-core";
2
- import { RuleEffect, SearchEffect } from "../types/effect-types";
3
- import { FilterRuleWithBooleanValue, FilterRuleWithMultipleValues, FilterRuleWithSingleValue, FinderRule, GroupByRule, SearchRule, SortByRule } from "../types/rule-types";
4
- /**
5
- * Enforce structure for an array of rule of mixed types.
6
- */
7
- export declare function finderRuleset<FItem, FContext = any>(rules: FinderRule<FItem, FContext>[]): FinderRule<FItem, FContext>[];
8
- export declare function searchRule<FItem, FContext = any>(rule: SearchRule<FItem, FContext>): SearchRule<FItem, FContext>;
9
- export declare function filterRule<FItem, FValue = any, FContext = any, T = FilterRuleWithMultipleValues<FItem, FValue, FContext>>(rule: T): FilterRuleWithMultipleValues<FItem, FValue>;
10
- export declare function filterRule<FItem, FValue = any, FContext = any, T = FilterRuleWithBooleanValue<FItem, FContext>>(rule: T): FilterRuleWithBooleanValue<FItem, FValue>;
11
- export declare function filterRule<FItem, FValue = any, FContext = any, T = FilterRuleWithSingleValue<FItem, FValue, FContext>>(rule: T): FilterRuleWithSingleValue<FItem, FValue>;
12
- export declare function sortByRule<FItem, FContext = any>(rule: SortByRule<FItem, FContext>): SortByRule<FItem, FContext>;
13
- export declare function groupByRule<FItem, FContext = any>(rule: GroupByRule<FItem, FContext>): GroupByRule<FItem, FContext>;
14
- export declare function ruleEffect<FItem, FContext = any>(rules: string | FinderRule<FItem> | (string | FinderRule<FItem>)[] | ((items: FItem[], context: FContext) => string | FinderRule<FItem> | (string | FinderRule<FItem>)[]), onChange: (instance: FinderCore<FItem, FContext>, rule: FinderRule) => void): RuleEffect<FItem, FContext>;
15
- export declare function searchEffect<FItem, FContext = any>(haystack: string | string[] | ((items: FItem[], context: FContext) => string | string[]), onChange: (instance: FinderCore<FItem, FContext>, searchTerm: string) => void): SearchEffect<FItem, FContext>;
@@ -1,9 +0,0 @@
1
- import { RuleEffect, SearchEffect } from "../types/effect-types";
2
- import { FilterRuleUnion, GroupByRule, HydratedFilterRule, SearchRule, SortByRule } from "../types/rule-types";
3
- export declare function isSortByRule<FItem>(rule: unknown): rule is SortByRule<FItem>;
4
- export declare function isSearchRule<FItem>(rule: unknown): rule is SearchRule<FItem>;
5
- export declare function isFilterRule<FItem>(rule: unknown): rule is FilterRuleUnion<FItem>;
6
- export declare function isHydratedFilterRule<FItem>(rule: unknown): rule is HydratedFilterRule<FItem>;
7
- export declare function isGroupByRule<FItem>(rule: unknown): rule is GroupByRule<FItem>;
8
- export declare function isRuleEffect<FItem>(data: unknown): data is RuleEffect<FItem>;
9
- export declare function isSearchEffect<FItem>(data: unknown): data is SearchEffect<FItem>;
package/dist/index.d.ts DELETED
@@ -1,13 +0,0 @@
1
- export type { FinderConstructorOptions, FinderResultGroup, SortDirection } from "./core/types/core-types";
2
- export { finderRuleset, searchRule, filterRule, sortByRule, groupByRule, ruleEffect, searchEffect } from "./core/utils/rule-type-enforcers";
3
- export type { FinderRule, SearchRule, SortByRule, GroupByRule, FilterRule, HydratedFilterRule, FilterRuleUnion, FilterOption } from "./core/types/rule-types";
4
- export type { RuleEffect, SearchEffect } from "./core/types/effect-types";
5
- export type { FinderEvent, FinderInitEvent, FinderReadyEvent, FinderFirstUserInteractionEvent, FinderChangeEvent } from "./core/types/event-types";
6
- /**
7
- * React hooks and components
8
- */
9
- export { useFinder } from "./react/hooks/use-finder";
10
- export { Finder } from "./react/components/finder";
11
- export { useFinderRef } from "./react/hooks/use-finder-ref";
12
- export { StringMatch } from "./react/components/string-match";
13
- export type { FinderProps, FinderContentProps, StringMatchSegmentProps } from "./react/types/react-types";