ts-spatial-navigation 1.0.0-beta.1
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/LICENSE +362 -0
- package/README.md +284 -0
- package/dist/constants.d.ts +101 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +98 -0
- package/dist/constants.js.map +1 -0
- package/dist/core.d.ts +40 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +245 -0
- package/dist/core.js.map +1 -0
- package/dist/factory.d.ts +87 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +44 -0
- package/dist/factory.js.map +1 -0
- package/dist/geometry.d.ts +43 -0
- package/dist/geometry.d.ts.map +1 -0
- package/dist/geometry.js +161 -0
- package/dist/geometry.js.map +1 -0
- package/dist/spatial-navigation.d.ts +84 -0
- package/dist/spatial-navigation.d.ts.map +1 -0
- package/dist/spatial-navigation.js +683 -0
- package/dist/spatial-navigation.js.map +1 -0
- package/dist/state.d.ts +82 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +179 -0
- package/dist/state.js.map +1 -0
- package/dist/strategies.d.ts +70 -0
- package/dist/strategies.d.ts.map +1 -0
- package/dist/strategies.js +147 -0
- package/dist/strategies.js.map +1 -0
- package/dist/types.d.ts +298 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spatial-navigation.js","sourceRoot":"","sources":["../src/spatial-navigation.ts"],"names":[],"mappings":"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"}
|
package/dist/state.d.ts
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Management Module
|
|
3
|
+
* Encapsulates navigation state with type-safe access.
|
|
4
|
+
*/
|
|
5
|
+
import type { GlobalConfig, SectionConfig, NavigationState, SectionStore } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Creates initial global configuration with default values.
|
|
8
|
+
*/
|
|
9
|
+
export declare const createDefaultGlobalConfig: () => GlobalConfig;
|
|
10
|
+
/**
|
|
11
|
+
* Creates initial navigation state.
|
|
12
|
+
*/
|
|
13
|
+
export declare const createInitialState: () => NavigationState;
|
|
14
|
+
/**
|
|
15
|
+
* State Manager class for encapsulating navigation state.
|
|
16
|
+
* Provides type-safe access to state with controlled mutations.
|
|
17
|
+
*/
|
|
18
|
+
export declare class StateManager {
|
|
19
|
+
private _state;
|
|
20
|
+
private _globalConfig;
|
|
21
|
+
constructor();
|
|
22
|
+
get globalConfig(): GlobalConfig;
|
|
23
|
+
setGlobalConfig(config: Partial<GlobalConfig>): void;
|
|
24
|
+
get ready(): boolean;
|
|
25
|
+
setReady(value: boolean): void;
|
|
26
|
+
get paused(): boolean;
|
|
27
|
+
setPaused(value: boolean): void;
|
|
28
|
+
get duringFocusChange(): boolean;
|
|
29
|
+
setDuringFocusChange(value: boolean): void;
|
|
30
|
+
get defaultSectionId(): string;
|
|
31
|
+
setDefaultSectionId(value: string): void;
|
|
32
|
+
get lastSectionId(): string;
|
|
33
|
+
setLastSectionId(value: string): void;
|
|
34
|
+
get sectionCount(): number;
|
|
35
|
+
get sections(): SectionStore;
|
|
36
|
+
/**
|
|
37
|
+
* Generates a unique section ID.
|
|
38
|
+
*/
|
|
39
|
+
generateSectionId(): string;
|
|
40
|
+
/**
|
|
41
|
+
* Checks if a section exists.
|
|
42
|
+
*/
|
|
43
|
+
hasSection(id: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Gets a section configuration.
|
|
46
|
+
*/
|
|
47
|
+
getSection(id: string): SectionConfig | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Adds or updates a section.
|
|
50
|
+
*/
|
|
51
|
+
setSection(id: string, config: SectionConfig): void;
|
|
52
|
+
/**
|
|
53
|
+
* Removes a section.
|
|
54
|
+
*/
|
|
55
|
+
removeSection(id: string): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Gets all section IDs.
|
|
58
|
+
*/
|
|
59
|
+
getSectionIds(): string[];
|
|
60
|
+
/**
|
|
61
|
+
* Clears all sections.
|
|
62
|
+
*/
|
|
63
|
+
clearSections(): void;
|
|
64
|
+
/**
|
|
65
|
+
* Resets state to initial values.
|
|
66
|
+
*/
|
|
67
|
+
reset(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Resets global config to defaults.
|
|
70
|
+
*/
|
|
71
|
+
resetGlobalConfig(): void;
|
|
72
|
+
/**
|
|
73
|
+
* Full reset of both state and config.
|
|
74
|
+
*/
|
|
75
|
+
fullReset(): void;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Default singleton instance for backwards compatibility.
|
|
79
|
+
* New code should prefer creating instances via createSpatialNavigation().
|
|
80
|
+
*/
|
|
81
|
+
export declare const defaultStateManager: StateManager;
|
|
82
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG1F;;GAEG;AACH,eAAO,MAAM,yBAAyB,QAAO,YAa3C,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,eASpC,CAAC;AAEH;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,aAAa,CAAe;;IAWpC,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAQpD,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9B,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI/B,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI1C,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIxC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQrC,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAM3B;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIjD;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAQnD;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAQlC;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,aAAa,IAAI,IAAI;IAWrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,SAAS,IAAI,IAAI;CAIlB;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,cAAqB,CAAC"}
|
package/dist/state.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Management Module
|
|
3
|
+
* Encapsulates navigation state with type-safe access.
|
|
4
|
+
*/
|
|
5
|
+
import { Defaults } from './constants';
|
|
6
|
+
/**
|
|
7
|
+
* Creates initial global configuration with default values.
|
|
8
|
+
*/
|
|
9
|
+
export const createDefaultGlobalConfig = () => ({
|
|
10
|
+
selector: '',
|
|
11
|
+
straightOnly: false,
|
|
12
|
+
straightOverlapThreshold: Defaults.STRAIGHT_OVERLAP_THRESHOLD,
|
|
13
|
+
rememberSource: false,
|
|
14
|
+
disabled: false,
|
|
15
|
+
defaultElement: '',
|
|
16
|
+
enterTo: '',
|
|
17
|
+
leaveFor: null,
|
|
18
|
+
restrict: Defaults.RESTRICT_MODE,
|
|
19
|
+
tabIndexIgnoreList: Defaults.TAB_INDEX_IGNORE_LIST,
|
|
20
|
+
sectionPrefix: Defaults.SECTION_PREFIX,
|
|
21
|
+
eventPrefix: Defaults.EVENT_PREFIX,
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* Creates initial navigation state.
|
|
25
|
+
*/
|
|
26
|
+
export const createInitialState = () => ({
|
|
27
|
+
ready: false,
|
|
28
|
+
paused: false,
|
|
29
|
+
duringFocusChange: false,
|
|
30
|
+
sections: new Map(),
|
|
31
|
+
sectionCount: 0,
|
|
32
|
+
defaultSectionId: '',
|
|
33
|
+
lastSectionId: '',
|
|
34
|
+
idPool: 0,
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* State Manager class for encapsulating navigation state.
|
|
38
|
+
* Provides type-safe access to state with controlled mutations.
|
|
39
|
+
*/
|
|
40
|
+
export class StateManager {
|
|
41
|
+
constructor() {
|
|
42
|
+
this._state = createInitialState();
|
|
43
|
+
this._globalConfig = createDefaultGlobalConfig();
|
|
44
|
+
}
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// Global Config Accessors
|
|
47
|
+
// ============================================================================
|
|
48
|
+
get globalConfig() {
|
|
49
|
+
return this._globalConfig;
|
|
50
|
+
}
|
|
51
|
+
setGlobalConfig(config) {
|
|
52
|
+
this._globalConfig = { ...this._globalConfig, ...config };
|
|
53
|
+
}
|
|
54
|
+
// ============================================================================
|
|
55
|
+
// State Accessors
|
|
56
|
+
// ============================================================================
|
|
57
|
+
get ready() {
|
|
58
|
+
return this._state.ready;
|
|
59
|
+
}
|
|
60
|
+
setReady(value) {
|
|
61
|
+
this._state.ready = value;
|
|
62
|
+
}
|
|
63
|
+
get paused() {
|
|
64
|
+
return this._state.paused;
|
|
65
|
+
}
|
|
66
|
+
setPaused(value) {
|
|
67
|
+
this._state.paused = value;
|
|
68
|
+
}
|
|
69
|
+
get duringFocusChange() {
|
|
70
|
+
return this._state.duringFocusChange;
|
|
71
|
+
}
|
|
72
|
+
setDuringFocusChange(value) {
|
|
73
|
+
this._state.duringFocusChange = value;
|
|
74
|
+
}
|
|
75
|
+
get defaultSectionId() {
|
|
76
|
+
return this._state.defaultSectionId;
|
|
77
|
+
}
|
|
78
|
+
setDefaultSectionId(value) {
|
|
79
|
+
this._state.defaultSectionId = value;
|
|
80
|
+
}
|
|
81
|
+
get lastSectionId() {
|
|
82
|
+
return this._state.lastSectionId;
|
|
83
|
+
}
|
|
84
|
+
setLastSectionId(value) {
|
|
85
|
+
this._state.lastSectionId = value;
|
|
86
|
+
}
|
|
87
|
+
// ============================================================================
|
|
88
|
+
// Section Management
|
|
89
|
+
// ============================================================================
|
|
90
|
+
get sectionCount() {
|
|
91
|
+
return this._state.sectionCount;
|
|
92
|
+
}
|
|
93
|
+
get sections() {
|
|
94
|
+
return this._state.sections;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Generates a unique section ID.
|
|
98
|
+
*/
|
|
99
|
+
generateSectionId() {
|
|
100
|
+
const prefix = this._globalConfig.sectionPrefix || Defaults.SECTION_PREFIX;
|
|
101
|
+
const id = `${prefix}${++this._state.idPool}`;
|
|
102
|
+
return id;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Checks if a section exists.
|
|
106
|
+
*/
|
|
107
|
+
hasSection(id) {
|
|
108
|
+
return this._state.sections.has(id);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Gets a section configuration.
|
|
112
|
+
*/
|
|
113
|
+
getSection(id) {
|
|
114
|
+
return this._state.sections.get(id);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Adds or updates a section.
|
|
118
|
+
*/
|
|
119
|
+
setSection(id, config) {
|
|
120
|
+
const isNew = !this._state.sections.has(id);
|
|
121
|
+
this._state.sections.set(id, config);
|
|
122
|
+
if (isNew) {
|
|
123
|
+
this._state.sectionCount++;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Removes a section.
|
|
128
|
+
*/
|
|
129
|
+
removeSection(id) {
|
|
130
|
+
const existed = this._state.sections.delete(id);
|
|
131
|
+
if (existed) {
|
|
132
|
+
this._state.sectionCount--;
|
|
133
|
+
}
|
|
134
|
+
return existed;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Gets all section IDs.
|
|
138
|
+
*/
|
|
139
|
+
getSectionIds() {
|
|
140
|
+
return Array.from(this._state.sections.keys());
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Clears all sections.
|
|
144
|
+
*/
|
|
145
|
+
clearSections() {
|
|
146
|
+
this._state.sections.clear();
|
|
147
|
+
this._state.sectionCount = 0;
|
|
148
|
+
this._state.defaultSectionId = '';
|
|
149
|
+
this._state.lastSectionId = '';
|
|
150
|
+
}
|
|
151
|
+
// ============================================================================
|
|
152
|
+
// State Reset
|
|
153
|
+
// ============================================================================
|
|
154
|
+
/**
|
|
155
|
+
* Resets state to initial values.
|
|
156
|
+
*/
|
|
157
|
+
reset() {
|
|
158
|
+
this._state = createInitialState();
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Resets global config to defaults.
|
|
162
|
+
*/
|
|
163
|
+
resetGlobalConfig() {
|
|
164
|
+
this._globalConfig = createDefaultGlobalConfig();
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Full reset of both state and config.
|
|
168
|
+
*/
|
|
169
|
+
fullReset() {
|
|
170
|
+
this.reset();
|
|
171
|
+
this.resetGlobalConfig();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Default singleton instance for backwards compatibility.
|
|
176
|
+
* New code should prefer creating instances via createSpatialNavigation().
|
|
177
|
+
*/
|
|
178
|
+
export const defaultStateManager = new StateManager();
|
|
179
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Navigation Strategy Module
|
|
3
|
+
* Implements Strategy Pattern for directional navigation.
|
|
4
|
+
*
|
|
5
|
+
* Each direction has its own strategy for determining navigation priorities
|
|
6
|
+
* based on spatial relationships between elements.
|
|
7
|
+
*/
|
|
8
|
+
import type { Direction, DistanceFunctions, Priority, Rect } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* Strategy interface for navigation direction.
|
|
11
|
+
* Each direction implements this interface to define its priority rules.
|
|
12
|
+
*/
|
|
13
|
+
export interface NavigationStrategy {
|
|
14
|
+
/**
|
|
15
|
+
* The direction this strategy handles.
|
|
16
|
+
*/
|
|
17
|
+
readonly direction: Direction;
|
|
18
|
+
/**
|
|
19
|
+
* Builds priority groups for candidate selection.
|
|
20
|
+
*
|
|
21
|
+
* @param groups - 9-element array from partition() (external groups)
|
|
22
|
+
* @param internalGroups - 9-element array from partition() (internal groups for overlapping)
|
|
23
|
+
* @param distanceFunctions - Distance calculation functions
|
|
24
|
+
* @returns Array of priority groups, ordered by preference
|
|
25
|
+
*/
|
|
26
|
+
buildPriorities(groups: Rect[][], internalGroups: Rect[][], distanceFunctions: DistanceFunctions): Priority[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Strategy for navigating LEFT.
|
|
30
|
+
* Prioritizes elements to the left of the current focus.
|
|
31
|
+
*/
|
|
32
|
+
export declare const leftStrategy: NavigationStrategy;
|
|
33
|
+
/**
|
|
34
|
+
* Strategy for navigating RIGHT.
|
|
35
|
+
* Prioritizes elements to the right of the current focus.
|
|
36
|
+
*/
|
|
37
|
+
export declare const rightStrategy: NavigationStrategy;
|
|
38
|
+
/**
|
|
39
|
+
* Strategy for navigating UP.
|
|
40
|
+
* Prioritizes elements above the current focus.
|
|
41
|
+
*/
|
|
42
|
+
export declare const upStrategy: NavigationStrategy;
|
|
43
|
+
/**
|
|
44
|
+
* Strategy for navigating DOWN.
|
|
45
|
+
* Prioritizes elements below the current focus.
|
|
46
|
+
*/
|
|
47
|
+
export declare const downStrategy: NavigationStrategy;
|
|
48
|
+
/**
|
|
49
|
+
* Map of direction to strategy.
|
|
50
|
+
* Allows O(1) lookup of strategy by direction.
|
|
51
|
+
*/
|
|
52
|
+
export declare const navigationStrategies: Record<Direction, NavigationStrategy>;
|
|
53
|
+
/**
|
|
54
|
+
* Gets the navigation strategy for a direction.
|
|
55
|
+
*
|
|
56
|
+
* @param direction - Navigation direction
|
|
57
|
+
* @returns The strategy for that direction, or undefined if invalid
|
|
58
|
+
*/
|
|
59
|
+
export declare function getStrategy(direction: Direction): NavigationStrategy | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Builds priorities for a given direction using the Strategy pattern.
|
|
62
|
+
*
|
|
63
|
+
* @param direction - Navigation direction
|
|
64
|
+
* @param groups - External partition groups
|
|
65
|
+
* @param internalGroups - Internal partition groups
|
|
66
|
+
* @param distanceFunctions - Distance calculation functions
|
|
67
|
+
* @returns Priority array or null if direction is invalid
|
|
68
|
+
*/
|
|
69
|
+
export declare function buildPrioritiesForDirection(direction: Direction, groups: Rect[][], internalGroups: Rect[][], distanceFunctions: DistanceFunctions): Priority[] | null;
|
|
70
|
+
//# sourceMappingURL=strategies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategies.d.ts","sourceRoot":"","sources":["../src/strategies.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG5E;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B;;;;;;;OAOG;IACH,eAAe,CACb,MAAM,EAAE,IAAI,EAAE,EAAE,EAChB,cAAc,EAAE,IAAI,EAAE,EAAE,EACxB,iBAAiB,EAAE,iBAAiB,GACnC,QAAQ,EAAE,CAAC;CACf;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,kBAwB1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,kBAqB3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,kBAqBxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,kBAqB1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAKtE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAEhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,IAAI,EAAE,EAAE,EAChB,cAAc,EAAE,IAAI,EAAE,EAAE,EACxB,iBAAiB,EAAE,iBAAiB,GACnC,QAAQ,EAAE,GAAG,IAAI,CAMnB"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Navigation Strategy Module
|
|
3
|
+
* Implements Strategy Pattern for directional navigation.
|
|
4
|
+
*
|
|
5
|
+
* Each direction has its own strategy for determining navigation priorities
|
|
6
|
+
* based on spatial relationships between elements.
|
|
7
|
+
*/
|
|
8
|
+
import { Grid } from './constants';
|
|
9
|
+
/**
|
|
10
|
+
* Strategy for navigating LEFT.
|
|
11
|
+
* Prioritizes elements to the left of the current focus.
|
|
12
|
+
*/
|
|
13
|
+
export const leftStrategy = {
|
|
14
|
+
direction: 'left',
|
|
15
|
+
buildPriorities(groups, internalGroups, df) {
|
|
16
|
+
return [
|
|
17
|
+
{
|
|
18
|
+
// First priority: internal elements to the left (within overlapping zone)
|
|
19
|
+
group: internalGroups[Grid.TOP_LEFT]
|
|
20
|
+
.concat(internalGroups[Grid.MIDDLE_LEFT])
|
|
21
|
+
.concat(internalGroups[Grid.BOTTOM_LEFT]),
|
|
22
|
+
distance: [df.nearPlumbLineIsBetter, df.topIsBetter]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
// Second priority: external elements directly to the left
|
|
26
|
+
group: groups[Grid.MIDDLE_LEFT],
|
|
27
|
+
distance: [df.nearPlumbLineIsBetter, df.topIsBetter]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
// Third priority: corner elements (diagonal)
|
|
31
|
+
group: groups[Grid.TOP_LEFT].concat(groups[Grid.BOTTOM_LEFT]),
|
|
32
|
+
distance: [df.nearHorizonIsBetter, df.rightIsBetter, df.nearTargetTopIsBetter]
|
|
33
|
+
}
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Strategy for navigating RIGHT.
|
|
39
|
+
* Prioritizes elements to the right of the current focus.
|
|
40
|
+
*/
|
|
41
|
+
export const rightStrategy = {
|
|
42
|
+
direction: 'right',
|
|
43
|
+
buildPriorities(groups, internalGroups, df) {
|
|
44
|
+
return [
|
|
45
|
+
{
|
|
46
|
+
group: internalGroups[Grid.TOP_RIGHT]
|
|
47
|
+
.concat(internalGroups[Grid.MIDDLE_RIGHT])
|
|
48
|
+
.concat(internalGroups[Grid.BOTTOM_RIGHT]),
|
|
49
|
+
distance: [df.nearPlumbLineIsBetter, df.topIsBetter]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
group: groups[Grid.MIDDLE_RIGHT],
|
|
53
|
+
distance: [df.nearPlumbLineIsBetter, df.topIsBetter]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
group: groups[Grid.TOP_RIGHT].concat(groups[Grid.BOTTOM_RIGHT]),
|
|
57
|
+
distance: [df.nearHorizonIsBetter, df.leftIsBetter, df.nearTargetTopIsBetter]
|
|
58
|
+
}
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Strategy for navigating UP.
|
|
64
|
+
* Prioritizes elements above the current focus.
|
|
65
|
+
*/
|
|
66
|
+
export const upStrategy = {
|
|
67
|
+
direction: 'up',
|
|
68
|
+
buildPriorities(groups, internalGroups, df) {
|
|
69
|
+
return [
|
|
70
|
+
{
|
|
71
|
+
group: internalGroups[Grid.TOP_LEFT]
|
|
72
|
+
.concat(internalGroups[Grid.TOP_CENTER])
|
|
73
|
+
.concat(internalGroups[Grid.TOP_RIGHT]),
|
|
74
|
+
distance: [df.nearHorizonIsBetter, df.leftIsBetter]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
group: groups[Grid.TOP_CENTER],
|
|
78
|
+
distance: [df.nearHorizonIsBetter, df.leftIsBetter]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
group: groups[Grid.TOP_LEFT].concat(groups[Grid.TOP_RIGHT]),
|
|
82
|
+
distance: [df.nearPlumbLineIsBetter, df.bottomIsBetter, df.nearTargetLeftIsBetter]
|
|
83
|
+
}
|
|
84
|
+
];
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Strategy for navigating DOWN.
|
|
89
|
+
* Prioritizes elements below the current focus.
|
|
90
|
+
*/
|
|
91
|
+
export const downStrategy = {
|
|
92
|
+
direction: 'down',
|
|
93
|
+
buildPriorities(groups, internalGroups, df) {
|
|
94
|
+
return [
|
|
95
|
+
{
|
|
96
|
+
group: internalGroups[Grid.BOTTOM_LEFT]
|
|
97
|
+
.concat(internalGroups[Grid.BOTTOM_CENTER])
|
|
98
|
+
.concat(internalGroups[Grid.BOTTOM_RIGHT]),
|
|
99
|
+
distance: [df.nearHorizonIsBetter, df.leftIsBetter]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
group: groups[Grid.BOTTOM_CENTER],
|
|
103
|
+
distance: [df.nearHorizonIsBetter, df.leftIsBetter]
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
group: groups[Grid.BOTTOM_LEFT].concat(groups[Grid.BOTTOM_RIGHT]),
|
|
107
|
+
distance: [df.nearPlumbLineIsBetter, df.topIsBetter, df.nearTargetLeftIsBetter]
|
|
108
|
+
}
|
|
109
|
+
];
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Map of direction to strategy.
|
|
114
|
+
* Allows O(1) lookup of strategy by direction.
|
|
115
|
+
*/
|
|
116
|
+
export const navigationStrategies = {
|
|
117
|
+
left: leftStrategy,
|
|
118
|
+
right: rightStrategy,
|
|
119
|
+
up: upStrategy,
|
|
120
|
+
down: downStrategy
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Gets the navigation strategy for a direction.
|
|
124
|
+
*
|
|
125
|
+
* @param direction - Navigation direction
|
|
126
|
+
* @returns The strategy for that direction, or undefined if invalid
|
|
127
|
+
*/
|
|
128
|
+
export function getStrategy(direction) {
|
|
129
|
+
return navigationStrategies[direction];
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Builds priorities for a given direction using the Strategy pattern.
|
|
133
|
+
*
|
|
134
|
+
* @param direction - Navigation direction
|
|
135
|
+
* @param groups - External partition groups
|
|
136
|
+
* @param internalGroups - Internal partition groups
|
|
137
|
+
* @param distanceFunctions - Distance calculation functions
|
|
138
|
+
* @returns Priority array or null if direction is invalid
|
|
139
|
+
*/
|
|
140
|
+
export function buildPrioritiesForDirection(direction, groups, internalGroups, distanceFunctions) {
|
|
141
|
+
const strategy = getStrategy(direction);
|
|
142
|
+
if (!strategy) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
return strategy.buildPriorities(groups, internalGroups, distanceFunctions);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=strategies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategies.js","sourceRoot":"","sources":["../src/strategies.ts"],"names":[],"mappings":"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"}
|