Skip to content

Commit 3f9cdc7

Browse files
committed
use overlay
1 parent dde1efb commit 3f9cdc7

3 files changed

Lines changed: 10 additions & 56 deletions

File tree

frontend/__tests__/test/funbox/funbox-validation.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ describe("funbox-validation", () => {
2323
"rAnDoMcAsE", //changesCapitalisation
2424
"nospace", //nospace
2525
"plus_one", //toPush:
26-
"read_ahead_easy", //changesWordVisibility
27-
"tunnel_vision", //changesWordVisibility
26+
"read_ahead_easy", //changesWordsVisibility
27+
"tunnel_vision", //changesWordsVisibility
2828
"tts", //speaks
2929
"layout_mirror", //changesLayout
3030
"zipf", //changesWordsFrequency

frontend/src/ts/test/funbox/funbox-functions.ts

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import { WordGenError } from "../../utils/word-gen-error";
2828
import { FunboxName, KeymapLayout, Layout } from "@monkeytype/schemas/configs";
2929
import { Language, LanguageObject } from "@monkeytype/schemas/languages";
3030
import { qs } from "../../utils/dom";
31-
import { convertRemToPixels } from "../../utils/numbers";
3231

3332
export type FunboxFunctions = {
3433
getWord?: (wordset?: Wordset, wordIndex?: number) => string;
@@ -169,12 +168,6 @@ export class PolyglotWordset extends Wordset {
169168

170169
let tunnelVisionAnimationFrame: number | null = null;
171170

172-
function getTunnelVisionRadiusPx(): number {
173-
const fontSizePx = convertRemToPixels(Config.fontSize);
174-
175-
return Math.max(48, Math.min(220, fontSizePx * 4.5));
176-
}
177-
178171
const list: Partial<Record<FunboxName, FunboxFunctions>> = {
179172
"58008": {
180173
getWord(): string {
@@ -690,28 +683,21 @@ const list: Partial<Record<FunboxName, FunboxFunctions>> = {
690683
},
691684
tunnel_vision: {
692685
applyGlobalCSS(): void {
693-
const words = qs("#words");
694686
const wordsWrapper = qs("#wordsWrapper");
695-
if (!words || !wordsWrapper) return;
687+
if (!wordsWrapper) return;
688+
const getTunnelVisionRadiusRem = (): number =>
689+
Math.max(3, Math.min(13.75, Config.fontSize * 4.5));
696690

697691
const updateCaretPos = (): void => {
698692
const caretElem = qs("#caret");
699693
if (caretElem !== null) {
700-
const wordsRect = words.native.getBoundingClientRect();
701694
const wordsWrapperRect = wordsWrapper.native.getBoundingClientRect();
702695
const caretRect = caretElem.native.getBoundingClientRect();
703-
const caretLeft =
704-
caretRect.left - wordsRect.left + caretRect.width / 2;
705-
const caretTop = caretRect.top - wordsRect.top + caretRect.height / 2;
706696
const wrapperCaretLeft =
707697
caretRect.left - wordsWrapperRect.left + caretRect.width / 2;
708698
const wrapperCaretTop =
709699
caretRect.top - wordsWrapperRect.top + caretRect.height / 2;
710-
const radius = `${getTunnelVisionRadiusPx()}px`;
711-
712-
words.native.style.setProperty("--caret-left", `${caretLeft}px`);
713-
words.native.style.setProperty("--caret-top", `${caretTop}px`);
714-
words.native.style.setProperty("--tunnel-radius", radius);
700+
const radius = `${getTunnelVisionRadiusRem()}rem`;
715701

716702
wordsWrapper.native.style.setProperty(
717703
"--caret-left",
@@ -736,13 +722,7 @@ const list: Partial<Record<FunboxName, FunboxFunctions>> = {
736722
cancelAnimationFrame(tunnelVisionAnimationFrame);
737723
tunnelVisionAnimationFrame = null;
738724
}
739-
const words = qs("#words");
740725
const wordsWrapper = qs("#wordsWrapper");
741-
if (words) {
742-
words.native.style.removeProperty("--caret-left");
743-
words.native.style.removeProperty("--caret-top");
744-
words.native.style.removeProperty("--tunnel-radius");
745-
}
746726
if (wordsWrapper) {
747727
wordsWrapper.native.style.removeProperty("--caret-left");
748728
wordsWrapper.native.style.removeProperty("--caret-top");
Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,18 @@
1-
#words {
2-
mask-image: radial-gradient(
3-
circle var(--tunnel-radius, 150px) at var(--caret-left) var(--caret-top),
4-
black 0%,
5-
black 50%,
6-
transparent 100%
7-
);
8-
-webkit-mask-image: radial-gradient(
9-
circle var(--tunnel-radius, 150px) at var(--caret-left) var(--caret-top),
10-
black 0%,
11-
black 50%,
12-
transparent 100%
13-
);
14-
mask-repeat: no-repeat;
15-
-webkit-mask-repeat: no-repeat;
16-
}
17-
18-
body.fb-tunnel-vision #wordsWrapper.tape {
1+
body.fb-tunnel-vision #wordsWrapper {
192
isolation: isolate;
203
}
214

22-
body.fb-tunnel-vision #wordsWrapper.tape #words {
23-
mask-image: none;
24-
-webkit-mask-image: none;
25-
}
26-
27-
body.fb-tunnel-vision #wordsWrapper.tape::after {
5+
body.fb-tunnel-vision #wordsWrapper::after {
286
content: "";
297
position: absolute;
308
inset: 0;
319
z-index: 1;
3210
pointer-events: none;
3311
background: radial-gradient(
34-
circle var(--tunnel-radius, 150px) at var(--caret-left) var(--caret-top),
12+
circle var(--tunnel-radius, 150px) at var(--caret-left, 50%)
13+
var(--caret-top, 50%),
3514
transparent 0%,
3615
transparent 50%,
3716
var(--bg-color) 100%
3817
);
3918
}
40-
41-
body.fb-tunnel-vision #wordsWrapper.tape #caret,
42-
body.fb-tunnel-vision #wordsWrapper.tape #paceCaret {
43-
z-index: 2;
44-
}

0 commit comments

Comments
 (0)