arrowtab 0.0.5 → 0.1.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/README.md +120 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/caret.d.ts +5 -0
- package/dist/lib/caret.js +136 -0
- package/dist/lib/caret.js.map +1 -0
- package/dist/lib/changesValueOnArrowKeys.d.ts +3 -0
- package/dist/lib/changesValueOnArrowKeys.js +15 -0
- package/dist/lib/changesValueOnArrowKeys.js.map +1 -0
- package/dist/lib/debugMode.d.ts +5 -5
- package/dist/lib/debugMode.js +28 -32
- package/dist/lib/debugMode.js.map +1 -1
- package/dist/lib/directions.d.ts +13 -0
- package/dist/lib/directions.js +17 -0
- package/dist/lib/directions.js.map +1 -0
- package/dist/lib/dom.d.ts +16 -0
- package/dist/lib/dom.js +62 -0
- package/dist/lib/dom.js.map +1 -0
- package/dist/lib/focusHistory.d.ts +7 -6
- package/dist/lib/focusHistory.js +52 -40
- package/dist/lib/focusHistory.js.map +1 -1
- package/dist/lib/focusTracker.d.ts +12 -0
- package/dist/lib/focusTracker.js +43 -0
- package/dist/lib/focusTracker.js.map +1 -0
- package/dist/lib/focusable.d.ts +8 -0
- package/dist/lib/focusable.js +135 -0
- package/dist/lib/focusable.js.map +1 -0
- package/dist/lib/geometry.d.ts +35 -0
- package/dist/lib/geometry.js +70 -0
- package/dist/lib/geometry.js.map +1 -0
- package/dist/lib/hasDisabledKeys.d.ts +4 -3
- package/dist/lib/hasDisabledKeys.js +5 -25
- package/dist/lib/hasDisabledKeys.js.map +1 -1
- package/dist/lib/initArrowTab.d.ts +11 -2
- package/dist/lib/initArrowTab.js +129 -72
- package/dist/lib/initArrowTab.js.map +1 -1
- package/dist/lib/initArrowTab.test.d.ts +1 -0
- package/dist/lib/initArrowTab.test.js +689 -0
- package/dist/lib/initArrowTab.test.js.map +1 -0
- package/dist/lib/navigateEvent.d.ts +16 -0
- package/dist/lib/navigateEvent.js +9 -0
- package/dist/lib/navigateEvent.js.map +1 -0
- package/dist/lib/rankCandidates.d.ts +11 -0
- package/dist/lib/rankCandidates.js +31 -0
- package/dist/lib/rankCandidates.js.map +1 -0
- package/dist/lib/scope.d.ts +11 -0
- package/dist/lib/scope.js +60 -0
- package/dist/lib/scope.js.map +1 -0
- package/dist/lib/strategies.d.ts +21 -10
- package/dist/lib/strategies.js +63 -106
- package/dist/lib/strategies.js.map +1 -1
- package/dist/lib/strategies.test.d.ts +1 -0
- package/dist/lib/strategies.test.js +88 -0
- package/dist/lib/strategies.test.js.map +1 -0
- package/dist/lib/widgets.d.ts +5 -0
- package/dist/lib/widgets.js +50 -0
- package/dist/lib/widgets.js.map +1 -0
- package/dist/lib/wrap.d.ts +12 -0
- package/dist/lib/wrap.js +21 -0
- package/dist/lib/wrap.js.map +1 -0
- package/package.json +2 -1
- package/dist/lib/distances.d.ts +0 -13
- package/dist/lib/distances.js +0 -15
- package/dist/lib/distances.js.map +0 -1
- package/dist/lib/getAngle.d.ts +0 -4
- package/dist/lib/getAngle.js +0 -15
- package/dist/lib/getAngle.js.map +0 -1
- package/dist/lib/getFocusable.d.ts +0 -1
- package/dist/lib/getFocusable.js +0 -29
- package/dist/lib/getFocusable.js.map +0 -1
- package/dist/lib/getXyDistance.d.ts +0 -7
- package/dist/lib/getXyDistance.js +0 -12
- package/dist/lib/getXyDistance.js.map +0 -1
- package/dist/lib/hasTextSelection.d.ts +0 -4
- package/dist/lib/hasTextSelection.js +0 -53
- package/dist/lib/hasTextSelection.js.map +0 -1
- package/dist/lib/positions.d.ts +0 -8
- package/dist/lib/positions.js +0 -16
- package/dist/lib/positions.js.map +0 -1
- package/dist/lib/preventNativeArrowKeyPresses.d.ts +0 -4
- package/dist/lib/preventNativeArrowKeyPresses.js +0 -24
- package/dist/lib/preventNativeArrowKeyPresses.js.map +0 -1
- package/dist/lib/sumBy.d.ts +0 -1
- package/dist/lib/sumBy.js +0 -2
- package/dist/lib/sumBy.js.map +0 -1
package/dist/lib/initArrowTab.js
CHANGED
|
@@ -1,107 +1,164 @@
|
|
|
1
|
+
import { canMoveCaret } from './caret.js';
|
|
2
|
+
import { changesValueOnArrowKeys } from './changesValueOnArrowKeys.js';
|
|
1
3
|
import { activateDebugMode, deactivateDebugMode, isInDebugMode, } from './debugMode.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
+
import { getDirection, getOpposite } from './directions.js';
|
|
5
|
+
import { containsComposed, getDeepActiveElement } from './dom.js';
|
|
6
|
+
import { startAutoDetectHistory } from './focusHistory.js';
|
|
7
|
+
import { startFocusTracker } from './focusTracker.js';
|
|
8
|
+
import { createClipCheck, getFocusable } from './focusable.js';
|
|
9
|
+
import { getRect } from './geometry.js';
|
|
4
10
|
import { hasDisabledKeys } from './hasDisabledKeys.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export const initArrowTab = ({ debug = false, autoDetectHistory = false, } = {}) => {
|
|
11
|
+
import { dispatchNavigate } from './navigateEvent.js';
|
|
12
|
+
import { rankCandidates } from './rankCandidates.js';
|
|
13
|
+
import { getScope, wrapSelector } from './scope.js';
|
|
14
|
+
import { grid, spatial, } from './strategies.js';
|
|
15
|
+
import { isHandledByWidget } from './widgets.js';
|
|
16
|
+
import { getWrapOrigin } from './wrap.js';
|
|
17
|
+
const strategies = { spatial, grid };
|
|
18
|
+
const getActiveElement = () => {
|
|
19
|
+
const activeElement = getDeepActiveElement();
|
|
20
|
+
return activeElement instanceof HTMLElement && activeElement !== document.body
|
|
21
|
+
? activeElement
|
|
22
|
+
: null;
|
|
23
|
+
};
|
|
24
|
+
const initializedRoots = new Set();
|
|
25
|
+
const emptyRect = { top: 0, right: 0, bottom: 0, left: 0 };
|
|
26
|
+
export const initArrowTab = ({ debug = false, autoDetectHistory = false, strategy = 'spatial', root, } = {}) => {
|
|
27
|
+
const log = (...args) => {
|
|
28
|
+
if (debug)
|
|
29
|
+
console.log('[arrowtab]', ...args);
|
|
30
|
+
};
|
|
31
|
+
if (initializedRoots.has(root)) {
|
|
32
|
+
console.warn('[arrowtab] initArrowTab was called twice for the same root. Call cleanup() of the first instance before initializing it again.');
|
|
33
|
+
}
|
|
34
|
+
initializedRoots.add(root);
|
|
35
|
+
const rank = typeof strategy === 'function' ? strategy : strategies[strategy];
|
|
36
|
+
const focusTracker = startFocusTracker({ root });
|
|
37
|
+
// The last move, so the opposite direction can return to where focus came from
|
|
38
|
+
let lastMove;
|
|
21
39
|
const onKeyDown = (event) => {
|
|
22
40
|
if (event.key === 'Escape' && isInDebugMode()) {
|
|
23
41
|
deactivateDebugMode();
|
|
24
42
|
return;
|
|
25
43
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
event.key !== 'ArrowUp' &&
|
|
29
|
-
event.key !== 'ArrowDown') {
|
|
44
|
+
const direction = getDirection({ key: event.key });
|
|
45
|
+
if (!direction)
|
|
30
46
|
return;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
47
|
+
if (isInDebugMode())
|
|
48
|
+
deactivateDebugMode();
|
|
49
|
+
const showDebugMode = debug && event.ctrlKey;
|
|
50
|
+
// Shift falls back to the native behavior. Alt, Meta and Ctrl belong to the OS / browser (word jumps, history navigation, ...)
|
|
51
|
+
if (event.defaultPrevented ||
|
|
52
|
+
event.isComposing ||
|
|
53
|
+
event.shiftKey ||
|
|
54
|
+
event.altKey ||
|
|
55
|
+
event.metaKey ||
|
|
56
|
+
(event.ctrlKey && !showDebugMode)) {
|
|
34
57
|
return;
|
|
35
58
|
}
|
|
36
|
-
const activeElement =
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
59
|
+
const activeElement = getActiveElement();
|
|
60
|
+
const rootElement = root ?? document.body;
|
|
61
|
+
// Without focus, e.g. after the focused element was removed, it counts where focus was last
|
|
62
|
+
const isInRoot = activeElement
|
|
63
|
+
? containsComposed({ container: rootElement, element: activeElement })
|
|
64
|
+
: focusTracker.isLastInRoot() || !root;
|
|
65
|
+
if (!isInRoot)
|
|
41
66
|
return;
|
|
42
|
-
|
|
43
|
-
if (hasDisabledKeys({
|
|
44
|
-
|
|
45
|
-
console.log('arrow keys are disabled');
|
|
46
|
-
}
|
|
67
|
+
// Without focus, page level opt-outs (e.g. on <body>) still apply
|
|
68
|
+
if (hasDisabledKeys({ element: activeElement ?? rootElement, direction })) {
|
|
69
|
+
log('arrow keys are disabled');
|
|
47
70
|
return;
|
|
48
71
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
72
|
+
const scope = getScope({ activeElement, root: rootElement });
|
|
73
|
+
// Enter the scope if focus is outside of it: nothing is focused or focus is behind a modal
|
|
74
|
+
const isOutsideScope = !activeElement ||
|
|
75
|
+
!containsComposed({ container: scope, element: activeElement });
|
|
76
|
+
// Widgets and text fields behind a modal don't keep the arrow keys
|
|
77
|
+
if (activeElement && !isOutsideScope) {
|
|
78
|
+
if (isHandledByWidget({ activeElement, direction })) {
|
|
79
|
+
log('arrow key is handled by a widget');
|
|
80
|
+
return;
|
|
54
81
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
firstFocusable.focus();
|
|
82
|
+
if (!showDebugMode && canMoveCaret({ activeElement, direction })) {
|
|
83
|
+
log('caret can still move');
|
|
58
84
|
return;
|
|
59
85
|
}
|
|
60
86
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
87
|
+
const candidates = getFocusable({ root: scope }).filter(({ element }) => element !== activeElement);
|
|
88
|
+
// Without focus, navigate from the last focused position, e.g. after the focused element was removed
|
|
89
|
+
const origin = activeElement
|
|
90
|
+
? getRect({ element: activeElement })
|
|
91
|
+
: focusTracker.getLastRect();
|
|
92
|
+
const isClipped = createClipCheck();
|
|
93
|
+
const isTarget = (item) => item.withinReach && !isClipped(item);
|
|
94
|
+
const ranked = origin
|
|
95
|
+
? rankCandidates({
|
|
96
|
+
origin,
|
|
97
|
+
candidates,
|
|
98
|
+
direction,
|
|
99
|
+
strategy: rank,
|
|
100
|
+
activeElement,
|
|
101
|
+
preferred: lastMove?.to === activeElement &&
|
|
102
|
+
direction === getOpposite({ direction: lastMove.direction })
|
|
103
|
+
? lastMove.from
|
|
104
|
+
: undefined,
|
|
105
|
+
})
|
|
106
|
+
: [];
|
|
107
|
+
if (showDebugMode) {
|
|
108
|
+
event.preventDefault();
|
|
109
|
+
activateDebugMode({
|
|
110
|
+
origin,
|
|
111
|
+
items: ranked.map((item) => ({ ...item, withinReach: isTarget(item) })),
|
|
112
|
+
});
|
|
65
113
|
return;
|
|
66
114
|
}
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
115
|
+
// The first element in document order the strategy keeps
|
|
116
|
+
const getScopeEntry = () => {
|
|
117
|
+
const kept = new Set((origin
|
|
118
|
+
? ranked
|
|
119
|
+
: rank({ origin: emptyRect, candidates, direction })).map(({ element }) => element));
|
|
120
|
+
return candidates.find((item) => kept.has(item.element) && !isClipped(item));
|
|
121
|
+
};
|
|
122
|
+
const target = ranked.find(isTarget) ??
|
|
123
|
+
(isOutsideScope ? getScopeEntry() : undefined) ??
|
|
124
|
+
(origin && scope.matches(wrapSelector) && candidates.length > 0
|
|
125
|
+
? rank({
|
|
126
|
+
origin: getWrapOrigin({ origin, candidates, direction }),
|
|
127
|
+
candidates,
|
|
128
|
+
direction,
|
|
129
|
+
}).find(isTarget)
|
|
130
|
+
: undefined);
|
|
131
|
+
if (!target ||
|
|
132
|
+
!dispatchNavigate({ from: activeElement, to: target.element, direction })) {
|
|
133
|
+
log(target ? 'navigation was canceled' : 'nothing within reach');
|
|
134
|
+
if (activeElement &&
|
|
135
|
+
changesValueOnArrowKeys({ element: activeElement })) {
|
|
136
|
+
event.preventDefault();
|
|
78
137
|
}
|
|
79
|
-
activateDebugMode({ focusableElements: sorted });
|
|
80
138
|
return;
|
|
81
139
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
if (nearest.element instanceof HTMLElement) {
|
|
90
|
-
if (debug) {
|
|
91
|
-
console.log('focusing element', nearest);
|
|
92
|
-
}
|
|
93
|
-
nearest.element.focus();
|
|
94
|
-
setHistoryCandidate({ element: nearest.element });
|
|
140
|
+
log('focusing', target);
|
|
141
|
+
event.preventDefault();
|
|
142
|
+
// Scroll as little as possible. Sticky headers are respected via scroll-padding.
|
|
143
|
+
target.element.focus({ preventScroll: true });
|
|
144
|
+
target.element.scrollIntoView({ block: 'nearest', inline: 'nearest' });
|
|
145
|
+
if (activeElement) {
|
|
146
|
+
lastMove = { from: activeElement, to: target.element, direction };
|
|
95
147
|
}
|
|
96
148
|
};
|
|
97
149
|
document.addEventListener('keydown', onKeyDown, { capture: true });
|
|
98
150
|
const { cleanup: cleanupAutoDetectHistory } = startAutoDetectHistory({
|
|
99
151
|
active: autoDetectHistory,
|
|
152
|
+
focusTracker,
|
|
100
153
|
});
|
|
101
154
|
return {
|
|
102
155
|
cleanup: () => {
|
|
103
156
|
document.removeEventListener('keydown', onKeyDown, { capture: true });
|
|
104
157
|
cleanupAutoDetectHistory();
|
|
158
|
+
focusTracker.cleanup();
|
|
159
|
+
initializedRoots.delete(root);
|
|
160
|
+
if (isInDebugMode())
|
|
161
|
+
deactivateDebugMode();
|
|
105
162
|
},
|
|
106
163
|
};
|
|
107
164
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initArrowTab.js","sourceRoot":"","sources":["../../src/lib/initArrowTab.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,GACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"initArrowTab.js","sourceRoot":"","sources":["../../src/lib/initArrowTab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,GACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAkB,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAa,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EACL,IAAI,EACJ,OAAO,GAGR,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,UAAU,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAUpC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC5B,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAA;IAC5C,OAAO,aAAa,YAAY,WAAW,IAAI,aAAa,KAAK,QAAQ,CAAC,IAAI;QAC5E,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAuB,CAAA;AAEvD,MAAM,SAAS,GAAS,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;AAEhE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,KAAK,GAAG,KAAK,EACb,iBAAiB,GAAG,KAAK,EACzB,QAAQ,GAAG,SAAS,EACpB,IAAI,MACe,EAAE,EAAE,EAAE;IACzB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACjC,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAAA;IAC/C,CAAC,CAAA;IACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CACV,gIAAgI,CACjI,CAAA;IACH,CAAC;IACD,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAE1B,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC7E,MAAM,YAAY,GAAG,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAChD,+EAA+E;IAC/E,IAAI,QAES,CAAA;IAEb,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAE,EAAE;QACzC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,aAAa,EAAE,EAAE,CAAC;YAC9C,mBAAmB,EAAE,CAAA;YACrB,OAAM;QACR,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;QAClD,IAAI,CAAC,SAAS;YAAE,OAAM;QAEtB,IAAI,aAAa,EAAE;YAAE,mBAAmB,EAAE,CAAA;QAC1C,MAAM,aAAa,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAA;QAE5C,+HAA+H;QAC/H,IACE,KAAK,CAAC,gBAAgB;YACtB,KAAK,CAAC,WAAW;YACjB,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,MAAM;YACZ,KAAK,CAAC,OAAO;YACb,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,EACjC,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;QACxC,MAAM,WAAW,GAAG,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAA;QACzC,4FAA4F;QAC5F,MAAM,QAAQ,GAAG,aAAa;YAC5B,CAAC,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YACtE,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAA;QACxC,IAAI,CAAC,QAAQ;YAAE,OAAM;QAErB,kEAAkE;QAClE,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,aAAa,IAAI,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,yBAAyB,CAAC,CAAA;YAC9B,OAAM;QACR,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;QAC5D,2FAA2F;QAC3F,MAAM,cAAc,GAClB,CAAC,aAAa;YACd,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAA;QAEjE,mEAAmE;QACnE,IAAI,aAAa,IAAI,CAAC,cAAc,EAAE,CAAC;YACrC,IAAI,iBAAiB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,kCAAkC,CAAC,CAAA;gBACvC,OAAM;YACR,CAAC;YACD,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;gBACjE,GAAG,CAAC,sBAAsB,CAAC,CAAA;gBAC3B,OAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CACrD,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,aAAa,CAC3C,CAAA;QACD,qGAAqG;QACrG,MAAM,MAAM,GAAG,aAAa;YAC1B,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YACrC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,SAAS,GAAG,eAAe,EAAE,CAAA;QACnC,MAAM,QAAQ,GAAG,CAAC,IAAqB,EAAE,EAAE,CACzC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAEtC,MAAM,MAAM,GAAG,MAAM;YACnB,CAAC,CAAC,cAAc,CAAC;gBACb,MAAM;gBACN,UAAU;gBACV,SAAS;gBACT,QAAQ,EAAE,IAAI;gBACd,aAAa;gBACb,SAAS,EACP,QAAQ,EAAE,EAAE,KAAK,aAAa;oBAC9B,SAAS,KAAK,WAAW,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;oBAC1D,CAAC,CAAC,QAAQ,CAAC,IAAI;oBACf,CAAC,CAAC,SAAS;aAChB,CAAC;YACJ,CAAC,CAAC,EAAE,CAAA;QAEN,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,iBAAiB,CAAC;gBAChB,MAAM;gBACN,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACxE,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,yDAAyD;QACzD,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,CAAC,MAAM;gBACL,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CACrD,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAChC,CAAA;YACD,OAAO,UAAU,CAAC,IAAI,CACpB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CACrD,CAAA;QACH,CAAC,CAAA;QAED,MAAM,MAAM,GACV,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrB,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9C,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC7D,CAAC,CAAC,IAAI,CAAC;oBACH,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;oBACxD,UAAU;oBACV,SAAS;iBACV,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACnB,CAAC,CAAC,SAAS,CAAC,CAAA;QAEhB,IACE,CAAC,MAAM;YACP,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,EACzE,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAA;YAChE,IACE,aAAa;gBACb,uBAAuB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EACnD,CAAC;gBACD,KAAK,CAAC,cAAc,EAAE,CAAA;YACxB,CAAC;YACD,OAAM;QACR,CAAC;QAED,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACvB,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,iFAAiF;QACjF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7C,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QACtE,IAAI,aAAa,EAAE,CAAC;YAClB,QAAQ,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,CAAA;QACnE,CAAC;IACH,CAAC,CAAA;IAED,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAElE,MAAM,EAAE,OAAO,EAAE,wBAAwB,EAAE,GAAG,sBAAsB,CAAC;QACnE,MAAM,EAAE,iBAAiB;QACzB,YAAY;KACb,CAAC,CAAA;IAEF,OAAO;QACL,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YACrE,wBAAwB,EAAE,CAAA;YAC1B,YAAY,CAAC,OAAO,EAAE,CAAA;YACtB,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC7B,IAAI,aAAa,EAAE;gBAAE,mBAAmB,EAAE,CAAA;QAC5C,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|