@tooee/search 0.2.4 → 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.
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/nav-search-store.d.ts +21 -15
- package/dist/nav-search-store.d.ts.map +1 -1
- package/dist/nav-search-store.js +122 -105
- package/dist/nav-search-store.js.map +1 -1
- package/dist/{SearchBar.d.ts → search-bar.d.ts} +2 -2
- package/dist/search-bar.d.ts.map +1 -0
- package/dist/{SearchBar.js → search-bar.js} +12 -10
- package/dist/search-bar.js.map +1 -0
- package/dist/search-hook.d.ts +6 -6
- package/dist/search-hook.d.ts.map +1 -1
- package/dist/search-hook.js +55 -35
- package/dist/search-hook.js.map +1 -1
- package/dist/search.d.ts +1 -1
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +6 -5
- package/dist/search.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +9 -9
- package/src/nav-search-store.ts +217 -180
- package/src/{SearchBar.tsx → search-bar.tsx} +20 -20
- package/src/search-hook.ts +111 -93
- package/src/search.ts +15 -13
- package/dist/SearchBar.d.ts.map +0 -1
- package/dist/SearchBar.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,6 @@ export type { NavSearchStore, NavSearchContext, NavSearchEvents, RowKey, } from
|
|
|
5
5
|
export { selectCursor, selectRowKeys, selectSelectionAnchor, selectToggledKeys, selectSearchStatus, selectSearchActive, selectSearchQuery, selectMatches, selectCurrentMatchIndex, deriveSelection, resolveIndex, } from "./nav-search-store.js";
|
|
6
6
|
export type { UseSearchOptions, SearchState } from "./search-hook.js";
|
|
7
7
|
export { findMatchingLines } from "./search.js";
|
|
8
|
-
export { SearchBar } from "./
|
|
9
|
-
export type { SearchBarProps } from "./
|
|
8
|
+
export { SearchBar } from "./search-bar.js";
|
|
9
|
+
export type { SearchBarProps } from "./search-bar.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,MAAM,GACP,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,eAAe,EACf,YAAY,GACb,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,5 +3,5 @@ export { useNavSearchStore, useSearchBindings } from "./search-hook.js";
|
|
|
3
3
|
export { createNavSearchStore } from "./nav-search-store.js";
|
|
4
4
|
export { selectCursor, selectRowKeys, selectSelectionAnchor, selectToggledKeys, selectSearchStatus, selectSearchActive, selectSearchQuery, selectMatches, selectCurrentMatchIndex, deriveSelection, resolveIndex, } from "./nav-search-store.js";
|
|
5
5
|
export { findMatchingLines } from "./search.js";
|
|
6
|
-
export { SearchBar } from "./
|
|
6
|
+
export { SearchBar } from "./search-bar.js";
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAO7D,OAAO,EACL,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,eAAe,EACf,YAAY,GACb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -16,9 +16,9 @@ export interface NavSearchContext {
|
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
export interface NavSearchDeps {
|
|
19
|
-
isSelectable(index: number)
|
|
19
|
+
isSelectable: (index: number) => boolean;
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
interface NavSearchEventDefinitions {
|
|
22
22
|
rowsChanged: {
|
|
23
23
|
keys: readonly RowKey[];
|
|
24
24
|
preserveCursorByKey?: boolean;
|
|
@@ -33,9 +33,9 @@ export type NavSearchEvents = {
|
|
|
33
33
|
setCursor: {
|
|
34
34
|
index: number;
|
|
35
35
|
};
|
|
36
|
-
enterSelect:
|
|
37
|
-
cancelSelect:
|
|
38
|
-
toggleCurrent:
|
|
36
|
+
enterSelect: Record<never, never>;
|
|
37
|
+
cancelSelect: Record<never, never>;
|
|
38
|
+
toggleCurrent: Record<never, never>;
|
|
39
39
|
toggleAndMove: {
|
|
40
40
|
delta: number;
|
|
41
41
|
};
|
|
@@ -46,24 +46,30 @@ export type NavSearchEvents = {
|
|
|
46
46
|
query: string;
|
|
47
47
|
matches: readonly number[];
|
|
48
48
|
};
|
|
49
|
-
searchSubmitted:
|
|
50
|
-
searchCancelled:
|
|
51
|
-
searchNext:
|
|
52
|
-
searchPrevious:
|
|
49
|
+
searchSubmitted: Record<never, never>;
|
|
50
|
+
searchCancelled: Record<never, never>;
|
|
51
|
+
searchNext: Record<never, never>;
|
|
52
|
+
searchPrevious: Record<never, never>;
|
|
53
|
+
}
|
|
54
|
+
export type NavSearchEvents = {
|
|
55
|
+
[EventName in keyof NavSearchEventDefinitions]: NavSearchEventDefinitions[EventName];
|
|
53
56
|
};
|
|
54
|
-
|
|
57
|
+
interface NavSearchEmittedDefinitions {
|
|
55
58
|
restoreMode: {
|
|
56
59
|
mode: Mode;
|
|
57
60
|
};
|
|
58
61
|
jumped: {
|
|
59
62
|
index: number;
|
|
60
63
|
};
|
|
64
|
+
}
|
|
65
|
+
type NavSearchEmitted = {
|
|
66
|
+
[EventName in keyof NavSearchEmittedDefinitions]: NavSearchEmittedDefinitions[EventName];
|
|
61
67
|
};
|
|
62
|
-
export declare
|
|
63
|
-
export declare
|
|
68
|
+
export declare const resolveIndex: (target: number, direction: 1 | -1, rowCount: number, isSelectable: (index: number) => boolean) => number | null;
|
|
69
|
+
export declare const createNavSearchStore: (options?: {
|
|
64
70
|
keys?: readonly RowKey[];
|
|
65
71
|
deps?: NavSearchDeps;
|
|
66
|
-
})
|
|
72
|
+
}) => import("@xstate/store").Store<NavSearchContext, NavSearchEvents, import("@xstate/store").ExtractEvents<NavSearchEmitted>>;
|
|
67
73
|
export type NavSearchStore = ReturnType<typeof createNavSearchStore>;
|
|
68
74
|
export declare const selectCursor: (ctx: NavSearchContext) => number | null;
|
|
69
75
|
export declare const selectRowKeys: (ctx: NavSearchContext) => readonly RowKey[];
|
|
@@ -74,9 +80,9 @@ export declare const selectSearchActive: (ctx: NavSearchContext) => boolean;
|
|
|
74
80
|
export declare const selectSearchQuery: (ctx: NavSearchContext) => string;
|
|
75
81
|
export declare const selectMatches: (ctx: NavSearchContext) => readonly number[];
|
|
76
82
|
export declare const selectCurrentMatchIndex: (ctx: NavSearchContext) => number;
|
|
77
|
-
export declare
|
|
78
|
-
start: number;
|
|
83
|
+
export declare const deriveSelection: (ctx: NavSearchContext, mode: Mode) => {
|
|
79
84
|
end: number;
|
|
85
|
+
start: number;
|
|
80
86
|
} | null;
|
|
81
87
|
export {};
|
|
82
88
|
//# sourceMappingURL=nav-search-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-search-store.d.ts","sourceRoot":"","sources":["../src/nav-search-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"nav-search-store.d.ts","sourceRoot":"","sources":["../src/nav-search-store.ts"],"names":[],"mappings":"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"}
|
package/dist/nav-search-store.js
CHANGED
|
@@ -1,53 +1,101 @@
|
|
|
1
1
|
import { createStore } from "@xstate/store";
|
|
2
|
-
export function resolveIndex(target, direction, rowCount, isSelectable) {
|
|
3
|
-
if (rowCount <= 0)
|
|
2
|
+
export const resolveIndex = function resolveIndex(target, direction, rowCount, isSelectable) {
|
|
3
|
+
if (rowCount <= 0) {
|
|
4
4
|
return null;
|
|
5
|
+
}
|
|
5
6
|
const max = rowCount - 1;
|
|
6
7
|
const clamped = Math.max(0, Math.min(target, max));
|
|
7
|
-
if (isSelectable(clamped))
|
|
8
|
+
if (isSelectable(clamped)) {
|
|
8
9
|
return clamped;
|
|
10
|
+
}
|
|
9
11
|
for (let index = clamped + direction; direction === 1 ? index <= max : index >= 0; index += direction) {
|
|
10
|
-
if (isSelectable(index))
|
|
12
|
+
if (isSelectable(index)) {
|
|
11
13
|
return index;
|
|
14
|
+
}
|
|
12
15
|
}
|
|
13
16
|
for (let index = clamped - direction; direction === 1 ? index >= 0 : index <= max; index -= direction) {
|
|
14
|
-
if (isSelectable(index))
|
|
17
|
+
if (isSelectable(index)) {
|
|
15
18
|
return index;
|
|
19
|
+
}
|
|
16
20
|
}
|
|
17
21
|
return null;
|
|
18
|
-
}
|
|
22
|
+
};
|
|
23
|
+
const toggle = function toggle(ctx) {
|
|
24
|
+
if (ctx.cursor === null) {
|
|
25
|
+
return ctx;
|
|
26
|
+
}
|
|
27
|
+
const key = ctx.rowKeys[ctx.cursor];
|
|
28
|
+
if (key === undefined) {
|
|
29
|
+
return ctx;
|
|
30
|
+
}
|
|
31
|
+
const toggledKeys = new Set(ctx.toggledKeys);
|
|
32
|
+
if (toggledKeys.has(key)) {
|
|
33
|
+
toggledKeys.delete(key);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
toggledKeys.add(key);
|
|
37
|
+
}
|
|
38
|
+
return { ...ctx, toggledKeys };
|
|
39
|
+
};
|
|
40
|
+
const searchStep = function searchStep(ctx, delta, enqueue) {
|
|
41
|
+
if (ctx.search.matches.length === 0) {
|
|
42
|
+
return ctx;
|
|
43
|
+
}
|
|
44
|
+
const currentMatchIndex = (ctx.search.currentMatchIndex + delta + ctx.search.matches.length) % ctx.search.matches.length;
|
|
45
|
+
const cursor = ctx.search.matches[currentMatchIndex];
|
|
46
|
+
enqueue.emit.jumped({ index: cursor });
|
|
47
|
+
return { ...ctx, cursor, search: { ...ctx.search, currentMatchIndex } };
|
|
48
|
+
};
|
|
19
49
|
const EMPTY_KEYS = [];
|
|
20
|
-
export function createNavSearchStore(options = {}) {
|
|
50
|
+
export const createNavSearchStore = function createNavSearchStore(options = {}) {
|
|
21
51
|
const deps = options.deps ?? { isSelectable: () => true };
|
|
22
52
|
const keys = options.keys ?? EMPTY_KEYS;
|
|
23
53
|
const resolve = (index, direction, count = keys.length) => resolveIndex(index, direction, count, deps.isSelectable);
|
|
24
54
|
return createStore({
|
|
25
55
|
context: {
|
|
26
|
-
rowKeys: keys,
|
|
27
56
|
cursor: resolve(0, 1),
|
|
28
|
-
|
|
29
|
-
toggledKeys: new Set(),
|
|
57
|
+
rowKeys: keys,
|
|
30
58
|
search: {
|
|
31
|
-
status: "idle",
|
|
32
|
-
query: "",
|
|
33
59
|
committedQuery: "",
|
|
34
|
-
matches: [],
|
|
35
60
|
currentMatchIndex: 0,
|
|
61
|
+
matches: [],
|
|
36
62
|
preSearchMode: "cursor",
|
|
63
|
+
query: "",
|
|
64
|
+
status: "idle",
|
|
37
65
|
},
|
|
66
|
+
selectionAnchor: null,
|
|
67
|
+
toggledKeys: new Set(),
|
|
38
68
|
},
|
|
39
69
|
on: {
|
|
70
|
+
cancelSelect: (ctx) => ctx.selectionAnchor === null ? ctx : { ...ctx, selectionAnchor: null },
|
|
71
|
+
enterSelect: (ctx) => ({ ...ctx, selectionAnchor: ctx.cursor }),
|
|
72
|
+
jump: (ctx, event) => ({
|
|
73
|
+
...ctx,
|
|
74
|
+
cursor: resolveIndex(event.index, event.direction, ctx.rowKeys.length, deps.isSelectable),
|
|
75
|
+
}),
|
|
76
|
+
move: (ctx, event) => {
|
|
77
|
+
if (ctx.cursor === null) {
|
|
78
|
+
return ctx;
|
|
79
|
+
}
|
|
80
|
+
const direction = event.delta < 0 ? -1 : 1;
|
|
81
|
+
const cursor = resolveIndex(ctx.cursor + event.delta, direction, ctx.rowKeys.length, deps.isSelectable);
|
|
82
|
+
return cursor === null || cursor === ctx.cursor ? ctx : { ...ctx, cursor };
|
|
83
|
+
},
|
|
40
84
|
rowsChanged: (ctx, event) => {
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
85
|
+
const previousCursor = ctx.cursor;
|
|
86
|
+
const previousKey = previousCursor === null ? undefined : ctx.rowKeys[previousCursor];
|
|
87
|
+
let { cursor } = ctx;
|
|
88
|
+
if (event.keys.length === 0) {
|
|
44
89
|
cursor = null;
|
|
45
|
-
|
|
90
|
+
}
|
|
91
|
+
else if (event.preserveCursorByKey === true &&
|
|
92
|
+
previousCursor !== null &&
|
|
93
|
+
previousKey !== undefined) {
|
|
46
94
|
const preserved = event.keys.indexOf(previousKey);
|
|
47
95
|
cursor =
|
|
48
|
-
preserved
|
|
49
|
-
? resolveIndex(
|
|
50
|
-
: resolveIndex(
|
|
96
|
+
preserved === -1
|
|
97
|
+
? resolveIndex(Math.min(previousCursor, event.keys.length - 1), 1, event.keys.length, deps.isSelectable)
|
|
98
|
+
: resolveIndex(preserved, 1, event.keys.length, deps.isSelectable);
|
|
51
99
|
}
|
|
52
100
|
else if (cursor === null || cursor >= event.keys.length) {
|
|
53
101
|
cursor = resolveIndex(cursor === null ? 0 : event.keys.length - 1, cursor === null ? 1 : -1, event.keys.length, deps.isSelectable);
|
|
@@ -58,50 +106,27 @@ export function createNavSearchStore(options = {}) {
|
|
|
58
106
|
const available = new Set(event.keys);
|
|
59
107
|
const filtered = new Set([...ctx.toggledKeys].filter((key) => available.has(key)));
|
|
60
108
|
const toggledKeys = filtered.size === ctx.toggledKeys.size ? ctx.toggledKeys : filtered;
|
|
61
|
-
return { ...ctx, rowKeys: event.keys,
|
|
62
|
-
},
|
|
63
|
-
move: (ctx, event) => {
|
|
64
|
-
if (ctx.cursor === null)
|
|
65
|
-
return ctx;
|
|
66
|
-
const direction = event.delta < 0 ? -1 : 1;
|
|
67
|
-
const cursor = resolveIndex(ctx.cursor + event.delta, direction, ctx.rowKeys.length, deps.isSelectable);
|
|
68
|
-
return cursor === null || cursor === ctx.cursor ? ctx : { ...ctx, cursor };
|
|
109
|
+
return { ...ctx, cursor, rowKeys: event.keys, toggledKeys };
|
|
69
110
|
},
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const toggled = toggle(ctx);
|
|
84
|
-
if (toggled.cursor === null)
|
|
85
|
-
return toggled;
|
|
86
|
-
const direction = event.delta < 0 ? -1 : 1;
|
|
87
|
-
const cursor = resolveIndex(toggled.cursor + event.delta, direction, toggled.rowKeys.length, deps.isSelectable);
|
|
88
|
-
return cursor === null ? toggled : { ...toggled, cursor };
|
|
111
|
+
searchCancelled: (ctx, _event, enqueue) => {
|
|
112
|
+
enqueue.emit.restoreMode({ mode: ctx.search.preSearchMode });
|
|
113
|
+
return {
|
|
114
|
+
...ctx,
|
|
115
|
+
search: {
|
|
116
|
+
...ctx.search,
|
|
117
|
+
committedQuery: "",
|
|
118
|
+
currentMatchIndex: 0,
|
|
119
|
+
matches: [],
|
|
120
|
+
query: "",
|
|
121
|
+
status: "idle",
|
|
122
|
+
},
|
|
123
|
+
};
|
|
89
124
|
},
|
|
90
|
-
searchStarted: (ctx, event) => ({
|
|
91
|
-
...ctx,
|
|
92
|
-
search: {
|
|
93
|
-
...ctx.search,
|
|
94
|
-
status: "editing",
|
|
95
|
-
query: "",
|
|
96
|
-
matches: [],
|
|
97
|
-
currentMatchIndex: 0,
|
|
98
|
-
preSearchMode: event.mode,
|
|
99
|
-
},
|
|
100
|
-
}),
|
|
101
125
|
searchChanged: (ctx, event, enqueue) => {
|
|
102
|
-
const first = event.matches
|
|
103
|
-
if (first !== undefined)
|
|
126
|
+
const [first] = event.matches;
|
|
127
|
+
if (first !== undefined) {
|
|
104
128
|
enqueue.emit.jumped({ index: first });
|
|
129
|
+
}
|
|
105
130
|
return {
|
|
106
131
|
...ctx,
|
|
107
132
|
cursor: first === undefined
|
|
@@ -109,16 +134,30 @@ export function createNavSearchStore(options = {}) {
|
|
|
109
134
|
: resolveIndex(first, 1, ctx.rowKeys.length, deps.isSelectable),
|
|
110
135
|
search: {
|
|
111
136
|
...ctx.search,
|
|
112
|
-
query: event.query,
|
|
113
|
-
matches: event.matches,
|
|
114
137
|
currentMatchIndex: 0,
|
|
138
|
+
matches: event.matches,
|
|
139
|
+
query: event.query,
|
|
115
140
|
},
|
|
116
141
|
};
|
|
117
142
|
},
|
|
143
|
+
searchNext: (ctx, _event, enqueue) => searchStep(ctx, 1, enqueue),
|
|
144
|
+
searchPrevious: (ctx, _event, enqueue) => searchStep(ctx, -1, enqueue),
|
|
145
|
+
searchStarted: (ctx, event) => ({
|
|
146
|
+
...ctx,
|
|
147
|
+
search: {
|
|
148
|
+
...ctx.search,
|
|
149
|
+
currentMatchIndex: 0,
|
|
150
|
+
matches: [],
|
|
151
|
+
preSearchMode: event.mode,
|
|
152
|
+
query: "",
|
|
153
|
+
status: "editing",
|
|
154
|
+
},
|
|
155
|
+
}),
|
|
118
156
|
searchSubmitted: (ctx, _event, enqueue) => {
|
|
119
|
-
const first = ctx.search.matches
|
|
120
|
-
if (first !== undefined)
|
|
157
|
+
const [first] = ctx.search.matches;
|
|
158
|
+
if (first !== undefined) {
|
|
121
159
|
enqueue.emit.jumped({ index: first });
|
|
160
|
+
}
|
|
122
161
|
enqueue.emit.restoreMode({ mode: ctx.search.preSearchMode });
|
|
123
162
|
return {
|
|
124
163
|
...ctx,
|
|
@@ -127,52 +166,30 @@ export function createNavSearchStore(options = {}) {
|
|
|
127
166
|
: resolveIndex(first, 1, ctx.rowKeys.length, deps.isSelectable),
|
|
128
167
|
search: {
|
|
129
168
|
...ctx.search,
|
|
130
|
-
status: "committed",
|
|
131
169
|
committedQuery: ctx.search.query,
|
|
132
170
|
currentMatchIndex: 0,
|
|
171
|
+
status: "committed",
|
|
133
172
|
},
|
|
134
173
|
};
|
|
135
174
|
},
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
search: {
|
|
141
|
-
...ctx.search,
|
|
142
|
-
status: "idle",
|
|
143
|
-
query: "",
|
|
144
|
-
committedQuery: "",
|
|
145
|
-
matches: [],
|
|
146
|
-
currentMatchIndex: 0,
|
|
147
|
-
},
|
|
148
|
-
};
|
|
175
|
+
setCursor: (ctx, event) => {
|
|
176
|
+
const direction = ctx.cursor !== null && event.index < ctx.cursor ? -1 : 1;
|
|
177
|
+
const cursor = resolveIndex(event.index, direction, ctx.rowKeys.length, deps.isSelectable);
|
|
178
|
+
return cursor === null ? ctx : { ...ctx, cursor };
|
|
149
179
|
},
|
|
150
|
-
|
|
151
|
-
|
|
180
|
+
toggleAndMove: (ctx, event) => {
|
|
181
|
+
const toggled = toggle(ctx);
|
|
182
|
+
if (toggled.cursor === null) {
|
|
183
|
+
return toggled;
|
|
184
|
+
}
|
|
185
|
+
const direction = event.delta < 0 ? -1 : 1;
|
|
186
|
+
const cursor = resolveIndex(toggled.cursor + event.delta, direction, toggled.rowKeys.length, deps.isSelectable);
|
|
187
|
+
return cursor === null ? toggled : { ...toggled, cursor };
|
|
188
|
+
},
|
|
189
|
+
toggleCurrent: (ctx) => toggle(ctx),
|
|
152
190
|
},
|
|
153
191
|
});
|
|
154
|
-
}
|
|
155
|
-
function toggle(ctx) {
|
|
156
|
-
if (ctx.cursor === null)
|
|
157
|
-
return ctx;
|
|
158
|
-
const key = ctx.rowKeys[ctx.cursor];
|
|
159
|
-
if (key === undefined)
|
|
160
|
-
return ctx;
|
|
161
|
-
const toggledKeys = new Set(ctx.toggledKeys);
|
|
162
|
-
if (toggledKeys.has(key))
|
|
163
|
-
toggledKeys.delete(key);
|
|
164
|
-
else
|
|
165
|
-
toggledKeys.add(key);
|
|
166
|
-
return { ...ctx, toggledKeys };
|
|
167
|
-
}
|
|
168
|
-
function searchStep(ctx, delta, enqueue) {
|
|
169
|
-
if (ctx.search.matches.length === 0)
|
|
170
|
-
return ctx;
|
|
171
|
-
const currentMatchIndex = (ctx.search.currentMatchIndex + delta + ctx.search.matches.length) % ctx.search.matches.length;
|
|
172
|
-
const cursor = ctx.search.matches[currentMatchIndex];
|
|
173
|
-
enqueue.emit.jumped({ index: cursor });
|
|
174
|
-
return { ...ctx, cursor, search: { ...ctx.search, currentMatchIndex } };
|
|
175
|
-
}
|
|
192
|
+
};
|
|
176
193
|
export const selectCursor = (ctx) => ctx.cursor;
|
|
177
194
|
export const selectRowKeys = (ctx) => ctx.rowKeys;
|
|
178
195
|
export const selectSelectionAnchor = (ctx) => ctx.selectionAnchor;
|
|
@@ -182,12 +199,12 @@ export const selectSearchActive = (ctx) => ctx.search.status === "editing";
|
|
|
182
199
|
export const selectSearchQuery = (ctx) => ctx.search.status === "editing" ? ctx.search.query : ctx.search.committedQuery;
|
|
183
200
|
export const selectMatches = (ctx) => ctx.search.matches;
|
|
184
201
|
export const selectCurrentMatchIndex = (ctx) => ctx.search.currentMatchIndex;
|
|
185
|
-
export function deriveSelection(ctx, mode) {
|
|
202
|
+
export const deriveSelection = function deriveSelection(ctx, mode) {
|
|
186
203
|
return mode === "select" && ctx.selectionAnchor !== null && ctx.cursor !== null
|
|
187
204
|
? {
|
|
188
|
-
start: Math.min(ctx.selectionAnchor, ctx.cursor),
|
|
189
205
|
end: Math.max(ctx.selectionAnchor, ctx.cursor),
|
|
206
|
+
start: Math.min(ctx.selectionAnchor, ctx.cursor),
|
|
190
207
|
}
|
|
191
208
|
: null;
|
|
192
|
-
}
|
|
209
|
+
};
|
|
193
210
|
//# sourceMappingURL=nav-search-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-search-store.js","sourceRoot":"","sources":["../src/nav-search-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"nav-search-store.js","sourceRoot":"","sources":["../src/nav-search-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,5 +6,5 @@ export interface SearchBarProps {
|
|
|
6
6
|
matchCount?: number;
|
|
7
7
|
currentMatch?: number;
|
|
8
8
|
}
|
|
9
|
-
export declare
|
|
10
|
-
//# sourceMappingURL=
|
|
9
|
+
export declare const SearchBar: ({ query, onQueryChange, onSubmit, onCancel: _onCancel, matchCount, currentMatch, }: SearchBarProps) => React.ReactNode;
|
|
10
|
+
//# sourceMappingURL=search-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-bar.d.ts","sourceRoot":"","sources":["../src/search-bar.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,SAAS,GAAsB,oFAOzC,cAAc,KAAG,KAAK,CAAC,SAoCzB,CAAC"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
2
|
import { useTheme } from "@tooee/themes";
|
|
3
|
-
export function SearchBar({ query, onQueryChange, onSubmit, onCancel: _onCancel, matchCount, currentMatch, }) {
|
|
3
|
+
export const SearchBar = function SearchBar({ query, onQueryChange, onSubmit, onCancel: _onCancel, matchCount, currentMatch, }) {
|
|
4
4
|
const { theme } = useTheme();
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
let matchDisplay = "";
|
|
6
|
+
if (matchCount !== undefined && matchCount > 0) {
|
|
7
|
+
matchDisplay = `${(currentMatch ?? 0) + 1}/${matchCount}`;
|
|
8
|
+
}
|
|
9
|
+
else if (matchCount === 0 && query.length > 0) {
|
|
10
|
+
matchDisplay = "No matches";
|
|
11
|
+
}
|
|
10
12
|
return (_jsxs("box", { style: {
|
|
13
|
+
backgroundColor: theme.backgroundPanel,
|
|
11
14
|
flexDirection: "row",
|
|
12
15
|
flexShrink: 0,
|
|
13
|
-
backgroundColor: theme.backgroundPanel,
|
|
14
16
|
paddingLeft: 1,
|
|
15
17
|
paddingRight: 1,
|
|
16
|
-
}, children: [_jsx("text", { content: "/", style: { fg: theme.accent } }), _jsx("input", { value: query, focused: true, onInput: onQueryChange, onSubmit: onSubmit, backgroundColor: "transparent", focusedBackgroundColor: "transparent", textColor: theme.text, cursorColor: theme.accent, cursorStyle: { style: "line"
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
}, children: [_jsx("text", { content: "/", style: { fg: theme.accent } }), _jsx("input", { value: query, focused: true, onInput: onQueryChange, onSubmit: onSubmit, backgroundColor: "transparent", focusedBackgroundColor: "transparent", textColor: theme.text, cursorColor: theme.accent, cursorStyle: { blinking: true, style: "line" }, style: { flexGrow: 1 } }), matchDisplay ? _jsx("text", { content: ` ${matchDisplay}`, style: { fg: theme.textMuted } }) : null] }));
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=search-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-bar.js","sourceRoot":"","sources":["../src/search-bar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAWzC,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,SAAS,CAAC,EAC1C,KAAK,EACL,aAAa,EACb,QAAQ,EACR,QAAQ,EAAE,SAAS,EACnB,UAAU,EACV,YAAY,GACG;IACf,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE7B,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QAC/C,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC;IAC5D,CAAC;SAAM,IAAI,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,YAAY,GAAG,YAAY,CAAC;IAC9B,CAAC;IAED,OAAO,CACL,eACE,KAAK,EAAE;YACL,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;SAChB,aAED,eAAM,OAAO,EAAC,GAAG,EAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,GAAI,EACjD,gBACE,KAAK,EAAE,KAAK,EACZ,OAAO,QACP,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAC,aAAa,EAC7B,sBAAsB,EAAC,aAAa,EACpC,SAAS,EAAE,KAAK,CAAC,IAAI,EACrB,WAAW,EAAE,KAAK,CAAC,MAAM,EACzB,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAC9C,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GACtB,EACD,YAAY,CAAC,CAAC,CAAC,eAAM,OAAO,EAAE,IAAI,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE,GAAI,CAAC,CAAC,CAAC,IAAI,IACxF,CACP,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/search-hook.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { NavSearchStore, RowKey } from "./nav-search-store.js";
|
|
2
2
|
export interface UseSearchOptions {
|
|
3
3
|
match: (query: string) => number[];
|
|
4
4
|
onJump: (index: number) => void;
|
|
@@ -13,13 +13,13 @@ export interface SearchState {
|
|
|
13
13
|
currentMatchIndex: number;
|
|
14
14
|
submitSearch: () => void;
|
|
15
15
|
}
|
|
16
|
-
export declare
|
|
16
|
+
export declare const useNavSearchStore: (options: {
|
|
17
17
|
keys: readonly RowKey[];
|
|
18
18
|
isSelectable?: (index: number) => boolean;
|
|
19
19
|
preserveCursorByKey?: boolean;
|
|
20
|
-
})
|
|
21
|
-
export declare
|
|
20
|
+
}) => NavSearchStore;
|
|
21
|
+
export declare const useSearchBindings: (store: NavSearchStore, { match, onJump, enabled, deps, }: Omit<UseSearchOptions, "onJump"> & {
|
|
22
22
|
onJump?: (index: number) => void;
|
|
23
|
-
})
|
|
24
|
-
export declare
|
|
23
|
+
}) => SearchState;
|
|
24
|
+
export declare const useSearch: (options: UseSearchOptions) => SearchState;
|
|
25
25
|
//# sourceMappingURL=search-hook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-hook.d.ts","sourceRoot":"","sources":["../src/search-hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search-hook.d.ts","sourceRoot":"","sources":["../src/search-hook.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEnF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACnC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAKD,eAAO,MAAM,iBAAiB,GAA8B,SAAS;IACnE,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,KAAG,cAoBH,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,cAAc,EACrB,mCAKG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,KACzE,WA+GF,CAAC;AAEF,eAAO,MAAM,SAAS,GAAsB,SAAS,gBAAgB,KAAG,WAGvE,CAAC"}
|