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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgets.js","sourceRoot":"","sources":["../../src/lib/widgets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE1C,MAAM,UAAU,GAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACjD,MAAM,QAAQ,GAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAC5C,MAAM,GAAG,GAAgB,CAAC,GAAG,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAA;AAErD,4HAA4H;AAC5H,MAAM,gBAAgB,GAAgC;IACpD,IAAI,EAAE,GAAG;IACT,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,GAAG;IACf,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,UAAU;CACpB,CAAA;AAED,MAAM,uBAAuB,GAAgC;IAC3D,UAAU;IACV,QAAQ;CACT,CAAA;AAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;KACjD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,IAAI,CAAC;KACjC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEb,MAAM,oBAAoB,GACxB,6GAA6G,CAAA;AAE/G,MAAM,mBAAmB,GAAG,CAAC,EAAE,MAAM,EAAuB,EAAE,EAAE;IAC9D,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;IACxE,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,GAAG,CAAA;IAC9B,OAAO,CACL,uBAAuB,CAAC,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QACtE,MAAM,CACP,CAAA;AACH,CAAC,CAAA;AAED,8FAA8F;AAC9F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,aAAa,EACb,SAAS,GAIV,EAAE,EAAE;IACH,IACE,eAAe,CAAC;QACd,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,2BAA2B;KACtC,CAAC,EACF,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,aAAa,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAChD,OAAO,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,cAAc;KACzB,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AAC7E,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Direction } from './directions.js';
|
|
2
|
+
import type { Rect } from './geometry.js';
|
|
3
|
+
import type { Candidate } from './strategies.js';
|
|
4
|
+
/**
|
|
5
|
+
* Moves the origin in front of all candidates, so ranking from it in the same direction
|
|
6
|
+
* finds the element at the opposite edge, preferably in the same row / column.
|
|
7
|
+
*/
|
|
8
|
+
export declare const getWrapOrigin: ({ origin, candidates, direction, }: {
|
|
9
|
+
origin: Rect;
|
|
10
|
+
candidates: Candidate[];
|
|
11
|
+
direction: Direction;
|
|
12
|
+
}) => Rect;
|
package/dist/lib/wrap.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { isVertical } from './directions.js';
|
|
2
|
+
/**
|
|
3
|
+
* Moves the origin in front of all candidates, so ranking from it in the same direction
|
|
4
|
+
* finds the element at the opposite edge, preferably in the same row / column.
|
|
5
|
+
*/
|
|
6
|
+
export const getWrapOrigin = ({ origin, candidates, direction, }) => {
|
|
7
|
+
const height = origin.bottom - origin.top;
|
|
8
|
+
const width = origin.right - origin.left;
|
|
9
|
+
const rects = candidates.map(({ rect }) => rect);
|
|
10
|
+
if (isVertical({ direction })) {
|
|
11
|
+
const top = direction === 'down'
|
|
12
|
+
? Math.min(...rects.map((rect) => rect.top)) - height - 1
|
|
13
|
+
: Math.max(...rects.map((rect) => rect.bottom)) + 1;
|
|
14
|
+
return { ...origin, top, bottom: top + height };
|
|
15
|
+
}
|
|
16
|
+
const left = direction === 'right'
|
|
17
|
+
? Math.min(...rects.map((rect) => rect.left)) - width - 1
|
|
18
|
+
: Math.max(...rects.map((rect) => rect.right)) + 1;
|
|
19
|
+
return { ...origin, left, right: left + width };
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=wrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap.js","sourceRoot":"","sources":["../../src/lib/wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,iBAAiB,CAAA;AAI5D;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,MAAM,EACN,UAAU,EACV,SAAS,GAKV,EAAQ,EAAE;IACT,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAA;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAA;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;IAEhD,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GACP,SAAS,KAAK,MAAM;YAClB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;YACzD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAA;QACvD,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,CAAA;IACjD,CAAC;IAED,MAAM,IAAI,GACR,SAAS,KAAK,OAAO;QACnB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;QACzD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtD,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,CAAA;AACjD,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arrowtab",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Use arrow keys to \"tab\" between focusable elements",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"arrowkeys",
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"@arethetypeswrong/cli": "^0.15.4",
|
|
17
17
|
"@changesets/cli": "^2.27.7",
|
|
18
18
|
"concurrently": "^8.2.2",
|
|
19
|
+
"happy-dom": "^21.0.4",
|
|
19
20
|
"http-server": "^14.1.1",
|
|
20
21
|
"prettier": "^3.3.3",
|
|
21
22
|
"prettier-ignore": "^0.1.3",
|
package/dist/lib/distances.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export declare const getEuclideanDistance: ({ xDistance, yDistance, }: {
|
|
2
|
-
xDistance: number;
|
|
3
|
-
yDistance: number;
|
|
4
|
-
}) => number;
|
|
5
|
-
export declare const manhattan: ({ xDistance, yDistance, }: {
|
|
6
|
-
xDistance: number;
|
|
7
|
-
yDistance: number;
|
|
8
|
-
}) => number;
|
|
9
|
-
export declare const manhattanWeighted: ({ xDistance, yDistance, event, }: {
|
|
10
|
-
xDistance: number;
|
|
11
|
-
yDistance: number;
|
|
12
|
-
event: KeyboardEvent;
|
|
13
|
-
}) => number | undefined;
|
package/dist/lib/distances.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export const getEuclideanDistance = ({ xDistance, yDistance, }) => {
|
|
2
|
-
return Math.sqrt(xDistance ** 2 + yDistance ** 2);
|
|
3
|
-
};
|
|
4
|
-
export const manhattan = ({ xDistance, yDistance, }) => {
|
|
5
|
-
return Math.abs(xDistance) + Math.abs(yDistance);
|
|
6
|
-
};
|
|
7
|
-
export const manhattanWeighted = ({ xDistance, yDistance, event, }) => {
|
|
8
|
-
if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
|
|
9
|
-
return Math.abs(xDistance) + Math.abs(yDistance) * 0.1;
|
|
10
|
-
}
|
|
11
|
-
if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {
|
|
12
|
-
return Math.abs(xDistance) * 0.1 + Math.abs(yDistance);
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=distances.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"distances.js","sourceRoot":"","sources":["../../src/lib/distances.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,SAAS,EACT,SAAS,GAIV,EAAE,EAAE;IACH,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACxB,SAAS,EACT,SAAS,GAIV,EAAE,EAAE;IACH,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AAClD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,SAAS,EACT,SAAS,EACT,KAAK,GAKN,EAAE,EAAE;IACH,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAA;IACxD,CAAC;IACD,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACxD,CAAC;AACH,CAAC,CAAA"}
|
package/dist/lib/getAngle.d.ts
DELETED
package/dist/lib/getAngle.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { getXyDistance } from './getXyDistance.js';
|
|
2
|
-
export const getAngle = ({ activeElement, element, }) => {
|
|
3
|
-
const { xDistance, yDistance } = getXyDistance({
|
|
4
|
-
activeElement,
|
|
5
|
-
element,
|
|
6
|
-
});
|
|
7
|
-
let angle = Math.acos(yDistance / Math.sqrt(xDistance ** 2 + yDistance ** 2)) *
|
|
8
|
-
(180 / Math.PI);
|
|
9
|
-
const direction = xDistance > 0 ? 'right' : 'left';
|
|
10
|
-
if (direction === 'right') {
|
|
11
|
-
angle = 360 - angle;
|
|
12
|
-
}
|
|
13
|
-
return angle;
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=getAngle.js.map
|
package/dist/lib/getAngle.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getAngle.js","sourceRoot":"","sources":["../../src/lib/getAngle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,aAAa,EACb,OAAO,GAIR,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;QAC7C,aAAa;QACb,OAAO;KACR,CAAC,CAAA;IAEF,IAAI,KAAK,GACP,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;QACjE,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;IACjB,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;IAClD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,KAAK,GAAG,GAAG,GAAG,KAAK,CAAA;IACrB,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const getFocusable: () => Element[];
|
package/dist/lib/getFocusable.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export const getFocusable = () => {
|
|
2
|
-
// Selectors from https://zellwk.com/blog/keyboard-focusable-elements/
|
|
3
|
-
const allFocusable = document.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex^="-"])');
|
|
4
|
-
const focusable = Array.from(allFocusable).filter((element) => {
|
|
5
|
-
if ('disabled' in element && element.disabled)
|
|
6
|
-
return false;
|
|
7
|
-
let currentElement = element;
|
|
8
|
-
while (currentElement) {
|
|
9
|
-
if ('hidden' in currentElement && currentElement.hidden)
|
|
10
|
-
return false;
|
|
11
|
-
if (currentElement.getAttribute('aria-hidden') === 'true')
|
|
12
|
-
return false;
|
|
13
|
-
const style = window.getComputedStyle(currentElement);
|
|
14
|
-
if (style.display === 'none' ||
|
|
15
|
-
style.visibility === 'hidden' ||
|
|
16
|
-
style.opacity === '0') {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
const rect = currentElement.getBoundingClientRect();
|
|
20
|
-
if (rect.width === 0 && rect.height === 0) {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
currentElement = currentElement.parentElement;
|
|
24
|
-
}
|
|
25
|
-
return true;
|
|
26
|
-
});
|
|
27
|
-
return focusable;
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=getFocusable.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getFocusable.js","sourceRoot":"","sources":["../../src/lib/getFocusable.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,sEAAsE;IACtE,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAC5C,oFAAoF,CACrF,CAAA;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAC5D,IAAI,UAAU,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAA;QAE3D,IAAI,cAAc,GAAmB,OAAO,CAAA;QAC5C,OAAO,cAAc,EAAE,CAAC;YACtB,IAAI,QAAQ,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAA;YACrE,IAAI,cAAc,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM;gBAAE,OAAO,KAAK,CAAA;YAEvE,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;YACrD,IACE,KAAK,CAAC,OAAO,KAAK,MAAM;gBACxB,KAAK,CAAC,UAAU,KAAK,QAAQ;gBAC7B,KAAK,CAAC,OAAO,KAAK,GAAG,EACrB,CAAC;gBACD,OAAO,KAAK,CAAA;YACd,CAAC;YAED,MAAM,IAAI,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAA;YACnD,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1C,OAAO,KAAK,CAAA;YACd,CAAC;YACD,cAAc,GAAG,cAAc,CAAC,aAAa,CAAA;QAC/C,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;IACF,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { getMiddle } from './positions.js';
|
|
2
|
-
export const getXyDistance = ({ activeElement, element, }) => {
|
|
3
|
-
const activePosition = getMiddle(activeElement);
|
|
4
|
-
const position = getMiddle(element);
|
|
5
|
-
const xDistance = position.x - activePosition.x;
|
|
6
|
-
const yDistance = position.y - activePosition.y;
|
|
7
|
-
return {
|
|
8
|
-
xDistance,
|
|
9
|
-
yDistance,
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=getXyDistance.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getXyDistance.js","sourceRoot":"","sources":["../../src/lib/getXyDistance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,aAAa,EACb,OAAO,GAIR,EAAE,EAAE;IACH,MAAM,cAAc,GAAG,SAAS,CAAC,aAAa,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IAEnC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAA;IAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAA;IAE/C,OAAO;QACL,SAAS;QACT,SAAS;KACV,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { sumBy } from './sumBy.js';
|
|
2
|
-
export const hasTextSelection = ({ activeElement, event, }) => {
|
|
3
|
-
if (activeElement instanceof HTMLInputElement ||
|
|
4
|
-
activeElement instanceof HTMLTextAreaElement) {
|
|
5
|
-
const selectionStart = activeElement.selectionStart;
|
|
6
|
-
const selectionEnd = activeElement.selectionEnd;
|
|
7
|
-
if (event.key === 'ArrowLeft' &&
|
|
8
|
-
selectionStart !== undefined &&
|
|
9
|
-
selectionStart !== null &&
|
|
10
|
-
selectionStart !== 0) {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
if (event.key === 'ArrowRight' &&
|
|
14
|
-
selectionStart !== undefined &&
|
|
15
|
-
selectionStart !== null &&
|
|
16
|
-
selectionStart !== activeElement.value?.length) {
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
if ((event.key === 'ArrowLeft' || event.key === 'ArrowRight') &&
|
|
20
|
-
selectionStart !== undefined &&
|
|
21
|
-
selectionEnd !== undefined &&
|
|
22
|
-
selectionStart !== null &&
|
|
23
|
-
selectionEnd !== null &&
|
|
24
|
-
selectionStart !== selectionEnd) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
if (event.key === 'ArrowUp' &&
|
|
28
|
-
selectionStart !== undefined &&
|
|
29
|
-
selectionStart !== null &&
|
|
30
|
-
activeElement instanceof HTMLTextAreaElement) {
|
|
31
|
-
const rows = activeElement.value?.split('\n');
|
|
32
|
-
const start = selectionStart;
|
|
33
|
-
const firstRow = rows.at(0);
|
|
34
|
-
if (firstRow && start > firstRow.length) {
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
if (event.key === 'ArrowDown' &&
|
|
39
|
-
selectionStart !== undefined &&
|
|
40
|
-
selectionStart !== null &&
|
|
41
|
-
activeElement instanceof HTMLTextAreaElement) {
|
|
42
|
-
const rows = activeElement.value?.split('\n');
|
|
43
|
-
const withoutLastRow = rows.slice(0, -1);
|
|
44
|
-
const lengthUntilLastRow = sumBy(withoutLastRow, (row) => row.length);
|
|
45
|
-
const start = selectionStart;
|
|
46
|
-
if (start <= lengthUntilLastRow + 1) {
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return false;
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=hasTextSelection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hasTextSelection.js","sourceRoot":"","sources":["../../src/lib/hasTextSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,aAAa,EACb,KAAK,GAIN,EAAE,EAAE;IACH,IACE,aAAa,YAAY,gBAAgB;QACzC,aAAa,YAAY,mBAAmB,EAC5C,CAAC;QACD,MAAM,cAAc,GAAG,aAAa,CAAC,cAAc,CAAA;QACnD,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAA;QAE/C,IACE,KAAK,CAAC,GAAG,KAAK,WAAW;YACzB,cAAc,KAAK,SAAS;YAC5B,cAAc,KAAK,IAAI;YACvB,cAAc,KAAK,CAAC,EACpB,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IACE,KAAK,CAAC,GAAG,KAAK,YAAY;YAC1B,cAAc,KAAK,SAAS;YAC5B,cAAc,KAAK,IAAI;YACvB,cAAc,KAAK,aAAa,CAAC,KAAK,EAAE,MAAM,EAC9C,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IACE,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC;YACzD,cAAc,KAAK,SAAS;YAC5B,YAAY,KAAK,SAAS;YAC1B,cAAc,KAAK,IAAI;YACvB,YAAY,KAAK,IAAI;YACrB,cAAc,KAAK,YAAY,EAC/B,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IACE,KAAK,CAAC,GAAG,KAAK,SAAS;YACvB,cAAc,KAAK,SAAS;YAC5B,cAAc,KAAK,IAAI;YACvB,aAAa,YAAY,mBAAmB,EAC5C,CAAC;YACD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAC7C,MAAM,KAAK,GAAG,cAAc,CAAA;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC3B,IAAI,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QAED,IACE,KAAK,CAAC,GAAG,KAAK,WAAW;YACzB,cAAc,KAAK,SAAS;YAC5B,cAAc,KAAK,IAAI;YACvB,aAAa,YAAY,mBAAmB,EAC5C,CAAC;YACD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACxC,MAAM,kBAAkB,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAErE,MAAM,KAAK,GAAG,cAAc,CAAA;YAC5B,IAAI,KAAK,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
|
package/dist/lib/positions.d.ts
DELETED
package/dist/lib/positions.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export const getMiddle = (element) => {
|
|
2
|
-
const { x, y, width, height } = element.getBoundingClientRect();
|
|
3
|
-
const scrollX = document.documentElement.scrollLeft;
|
|
4
|
-
const scrollY = document.documentElement.scrollTop;
|
|
5
|
-
return {
|
|
6
|
-
x: x + width / 2 + scrollX,
|
|
7
|
-
y: y + height / 2 + scrollY,
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
export const getTopLeft = (element) => {
|
|
11
|
-
const { x, y } = element.getBoundingClientRect();
|
|
12
|
-
const scrollX = document.documentElement.scrollLeft;
|
|
13
|
-
const scrollY = document.documentElement.scrollTop;
|
|
14
|
-
return { x: x + scrollX, y: y + scrollY };
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=positions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"positions.js","sourceRoot":"","sources":["../../src/lib/positions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC5C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAA;IAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAA;IACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAA;IAClD,OAAO;QACL,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,OAAO;QAC1B,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,OAAO;KAC5B,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC7C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAA;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAA;IACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAA;IAClD,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAA;AAC3C,CAAC,CAAA"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
const inputTypesWithAllowedNativeArrowKeyPresses = {
|
|
2
|
-
text: ['ArrowLeft', 'ArrowRight'],
|
|
3
|
-
date: ['ArrowLeft', 'ArrowRight'],
|
|
4
|
-
time: ['ArrowLeft', 'ArrowRight'],
|
|
5
|
-
datetime: ['ArrowLeft', 'ArrowRight'],
|
|
6
|
-
'datetime-local': ['ArrowLeft', 'ArrowRight'],
|
|
7
|
-
month: ['ArrowLeft', 'ArrowRight'],
|
|
8
|
-
week: ['ArrowLeft', 'ArrowRight'],
|
|
9
|
-
number: ['ArrowLeft', 'ArrowRight'],
|
|
10
|
-
};
|
|
11
|
-
export const preventNativeArrowKeyPresses = ({ event, activeElement, }) => {
|
|
12
|
-
if (activeElement instanceof HTMLInputElement) {
|
|
13
|
-
const inputType = activeElement.type;
|
|
14
|
-
const allowedKeys = inputTypesWithAllowedNativeArrowKeyPresses[inputType];
|
|
15
|
-
if (allowedKeys && allowedKeys.includes(event.key)) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
if (activeElement instanceof HTMLTextAreaElement) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
event.preventDefault();
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=preventNativeArrowKeyPresses.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preventNativeArrowKeyPresses.js","sourceRoot":"","sources":["../../src/lib/preventNativeArrowKeyPresses.ts"],"names":[],"mappings":"AAAA,MAAM,0CAA0C,GAA6B;IAC3E,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IACjC,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IACjC,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IACjC,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IACrC,gBAAgB,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IAC7C,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IAClC,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IACjC,MAAM,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;CACpC,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAC3C,KAAK,EACL,aAAa,GAId,EAAE,EAAE;IACH,IAAI,aAAa,YAAY,gBAAgB,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAA;QACpC,MAAM,WAAW,GAAG,0CAA0C,CAAC,SAAS,CAAC,CAAA;QACzE,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACnD,OAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,aAAa,YAAY,mBAAmB,EAAE,CAAC;QACjD,OAAM;IACR,CAAC;IAED,KAAK,CAAC,cAAc,EAAE,CAAA;AACxB,CAAC,CAAA"}
|
package/dist/lib/sumBy.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const sumBy: <T extends unknown>(arr: Array<T>, func: (item: T) => number) => number;
|
package/dist/lib/sumBy.js
DELETED
package/dist/lib/sumBy.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sumBy.js","sourceRoot":"","sources":["../../src/lib/sumBy.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,GAAa,EACb,IAAyB,EACzB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA"}
|