Skip to content

Commit 8255d7d

Browse files
committed
Fix js
1 parent c3afa5e commit 8255d7d

File tree

20 files changed

+168
-139
lines changed

20 files changed

+168
-139
lines changed

services/app/apps/codebattle/assets/js/app.js

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,25 @@
1313
//
1414
// If you no longer want to use a dependency, remember
1515
// to also remove its path from "config.paths.watched".
16-
import "core-js/stable";
16+
import 'core-js/stable';
1717
// eslint-disable-next-line import/no-extraneous-dependencies
18-
import "regenerator-runtime/runtime";
19-
import "phoenix_html";
20-
import "@fortawesome/fontawesome-free/js/all";
18+
import 'regenerator-runtime/runtime';
19+
import 'phoenix_html';
20+
import '@fortawesome/fontawesome-free/js/all';
2121
// import '../css/style.scss';
22-
import "bootstrap";
22+
import 'bootstrap';
2323

24-
import { inspect } from "@xstate/inspect";
25-
import NProgress from "nprogress";
26-
import { Socket } from "phoenix";
27-
import { LiveSocket } from "phoenix_live_view";
24+
import { inspect } from '@xstate/inspect';
25+
import NProgress from 'nprogress';
26+
import { Socket } from 'phoenix';
27+
import { LiveSocket } from 'phoenix_live_view';
2828

2929
// Import local files
3030
//
3131
// Local files can be imported directly using relative
3232
// paths "./socket" or full ones "web/static/js/socket".
3333

34-
import "./widgets/lib/sentry";
34+
import './widgets/lib/sentry';
3535
import {
3636
renderBuilderWidget,
3737
renderEventPage,
@@ -51,11 +51,11 @@ import {
5151
renderTournamentsSchedule,
5252
renderUserPage,
5353
renderUsersRating,
54-
} from "./widgets";
54+
} from './widgets';
5555

56-
if (process.env.NODE_ENV === "development") {
56+
if (process.env.NODE_ENV === 'development') {
5757
inspect({
58-
iframe: () => document.querySelector(".xstate"),
58+
iframe: () => document.querySelector('.xstate'),
5959
});
6060
}
6161

@@ -70,16 +70,16 @@ const Hooks = {
7070
},
7171
TournamentChatInput: {
7272
mounted() {
73-
this.handleEvent("clear", ({ value }) => {
73+
this.handleEvent('clear', ({ value }) => {
7474
this.el.value = value;
7575
});
7676
},
7777
},
7878
};
7979
const csrfToken = document
8080
.querySelector("meta[name='csrf-token']")
81-
.getAttribute("content");
82-
const liveSocket = new LiveSocket("/live", Socket, {
81+
.getAttribute('content');
82+
const liveSocket = new LiveSocket('/live', Socket, {
8383
hooks: Hooks,
8484
params: {
8585
_csrf_token: csrfToken,
@@ -88,31 +88,31 @@ const liveSocket = new LiveSocket("/live", Socket, {
8888
},
8989
});
9090

91-
window.addEventListener("phx:page-loading-start", (_info) => NProgress.start());
92-
window.addEventListener("phx:page-loading-stop", (_info) => NProgress.done());
91+
window.addEventListener('phx:page-loading-start', _info => NProgress.start());
92+
window.addEventListener('phx:page-loading-stop', _info => NProgress.done());
9393

9494
liveSocket.connect();
9595

96-
const builderWidgetRoot = document.getElementById("builder-widget-root");
97-
const gameWidgetRoot = document.getElementById("game-widget-root");
98-
const heatmapRoot = document.getElementById("heatmap-root");
99-
const onlineRoot = document.getElementById("online-root");
100-
const invitesRoot = document.getElementById("invites-root");
101-
const streamRoot = document.getElementById("stream-classic-root");
102-
const lobbyRoot = document.getElementById("lobby-root");
103-
const ratingList = document.getElementById("rating-list");
104-
const registrationRoot = document.getElementById("registration");
105-
const settingsRoot = document.getElementById("settings");
106-
const stairwayGameRoot = document.getElementById("stairway-game-root");
107-
const tournamentPlayerRoot = document.getElementById("tournament-player-root");
108-
const tournamentRoot = document.getElementById("tournament-root");
109-
const adminTournamentRoot = document.getElementById("tournament-admin-root");
110-
const eventWidgetRoot = document.getElementById("event-widget");
111-
const userPageRoot = document.getElementById("user-page-root");
96+
const builderWidgetRoot = document.getElementById('builder-widget-root');
97+
const gameWidgetRoot = document.getElementById('game-widget-root');
98+
const heatmapRoot = document.getElementById('heatmap-root');
99+
const onlineRoot = document.getElementById('online-root');
100+
const invitesRoot = document.getElementById('invites-root');
101+
const streamRoot = document.getElementById('stream-classic-root');
102+
const lobbyRoot = document.getElementById('lobby-root');
103+
const ratingList = document.getElementById('rating-list');
104+
const registrationRoot = document.getElementById('registration');
105+
const settingsRoot = document.getElementById('settings');
106+
const stairwayGameRoot = document.getElementById('stairway-game-root');
107+
const tournamentPlayerRoot = document.getElementById('tournament-player-root');
108+
const tournamentRoot = document.getElementById('tournament-root');
109+
const adminTournamentRoot = document.getElementById('tournament-admin-root');
110+
const eventWidgetRoot = document.getElementById('event-widget');
111+
const userPageRoot = document.getElementById('user-page-root');
112112
const tournamentsScheduleRoot = document.getElementById(
113-
"tournaments-schedule-root",
113+
'tournaments-schedule-root',
114114
);
115-
const hallOfFameRoot = document.getElementById("hall-of-fame-root");
115+
const hallOfFameRoot = document.getElementById('hall-of-fame-root');
116116

117117
if (gameWidgetRoot) {
118118
renderGameWidget(gameWidgetRoot);
Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
// assets/js/monaco.setup.js
22
import 'monaco-editor/min/vs/editor/editor.main.css';
33

4-
import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
5-
import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker';
6-
import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker';
7-
import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker';
8-
import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker';
4+
import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
5+
import CssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker';
6+
import HtmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker';
7+
import JsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker';
8+
import TsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker';
99

10+
// eslint-disable-next-line no-restricted-globals
1011
self.MonacoEnvironment = {
1112
getWorker(_, label) {
1213
switch (label) {
1314
case 'json':
14-
return new jsonWorker();
15+
return new JsonWorker();
1516
case 'css':
16-
return new cssWorker();
17+
return new CssWorker();
1718
case 'html':
18-
return new htmlWorker();
19+
return new HtmlWorker();
1920
case 'typescript':
2021
case 'javascript':
21-
return new tsWorker();
22+
return new TsWorker();
2223
default:
23-
return new editorWorker();
24+
return new EditorWorker();
2425
}
2526
},
2627
};

services/app/apps/codebattle/assets/js/shims/gon.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// assets/js/shims/gon.js
2+
/* global globalThis */
23
const Gon = (globalThis && (globalThis.Gon || globalThis.gon)) || null;
34

45
if (!Gon) {

services/app/apps/codebattle/assets/js/widgets/components/ChatInput.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ export default function ChatInput({ inputRef, disabled = false }) {
202202
type="button"
203203
className={emojiBtnClassName}
204204
onClick={togglePickerVisibility}
205+
aria-label="Open emoji picker"
205206
>
206207
<em-emoji id="grinning" size={20} />
207208
</button>

services/app/apps/codebattle/assets/js/widgets/components/Editor.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ function Editor(props) {
3434
const vimModeRef = useRef(null);
3535

3636
// Wrap your existing "didMount" to store editor and call original if needed
37-
function handleEditorDidMount(editor, monaco) {
37+
const handleEditorDidMount = React.useCallback((editor, monaco) => {
3838
editorRef.current = editor;
3939

4040
if (typeof originalEditorDidMount === 'function') {
4141
originalEditorDidMount(editor, monaco);
4242
}
43-
}
43+
}, [originalEditorDidMount]);
4444
// Whenever `mode` changes, enable or disable vimMode
4545
useEffect(() => {
4646
// If we haven't mounted the editor yet, exit

services/app/apps/codebattle/assets/js/widgets/components/InvitesContainer.jsx

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,31 @@
1-
import React, { useEffect, useCallback } from "react";
1+
import React, { useEffect, useCallback } from 'react';
22

3-
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
4-
import Button from "react-bootstrap/Button";
5-
import OverlayTrigger from "react-bootstrap/OverlayTrigger";
6-
import Popover from "react-bootstrap/Popover";
7-
import { useDispatch, useSelector } from "react-redux";
3+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4+
import Button from 'react-bootstrap/Button';
5+
import OverlayTrigger from 'react-bootstrap/OverlayTrigger';
6+
import Popover from 'react-bootstrap/Popover';
7+
import { useDispatch, useSelector } from 'react-redux';
88

9-
import { unfollowUser, followUser } from "@/middlewares/Main";
9+
import { unfollowUser, followUser } from '@/middlewares/Main';
1010

11-
import i18n from "../../i18n";
12-
import { initInvites } from "../middlewares/Invite";
13-
import initPresence from "../middlewares/Main";
14-
import * as selectors from "../selectors";
15-
import { actions } from "../slices";
16-
import { selectors as invitesSelectors } from "../slices/invites";
17-
import { isSafari } from "../utils/browser";
11+
import i18n from '../../i18n';
12+
import { initInvites } from '../middlewares/Invite';
13+
import initPresence from '../middlewares/Main';
14+
import * as selectors from '../selectors';
15+
import { actions } from '../slices';
16+
import { selectors as invitesSelectors } from '../slices/invites';
17+
import { isSafari } from '../utils/browser';
1818

19-
import InvitesList from "./InvitesList";
19+
import InvitesList from './InvitesList';
2020

2121
function InvitesContainer() {
2222
const dispatch = useDispatch();
2323

24-
const followId = useSelector((state) => state.gameUI.followId);
25-
const followPaused = useSelector((state) => state.gameUI.followPaused);
24+
const followId = useSelector(state => state.gameUI.followId);
25+
const followPaused = useSelector(state => state.gameUI.followPaused);
2626
const currentUserId = useSelector(selectors.currentUserIdSelector);
27-
const checkInvitePlayers = ({ creatorId, recipientId }) =>
28-
creatorId === currentUserId || recipientId === currentUserId;
29-
const filterInvites = (invite) =>
30-
invite.state === "pending" && checkInvitePlayers(invite);
27+
const checkInvitePlayers = ({ creatorId, recipientId }) => creatorId === currentUserId || recipientId === currentUserId;
28+
const filterInvites = invite => invite.state === 'pending' && checkInvitePlayers(invite);
3129
const invites = useSelector(invitesSelectors.selectAll).filter(filterInvites);
3230

3331
const handleUnfollowClick = useCallback(() => {
@@ -70,36 +68,36 @@ function InvitesContainer() {
7068
return (
7169
<>
7270
<OverlayTrigger
73-
trigger={isSafari() ? "click" : "focus"}
71+
trigger={isSafari() ? 'click' : 'focus'}
7472
key="codebattle-invites"
75-
placement={invites.length === 0 ? "bottom-end" : "bottom"}
73+
placement={invites.length === 0 ? 'bottom-end' : 'bottom'}
7674
show={defaultShow}
77-
overlay={
75+
overlay={(
7876
<Popover
7977
id="popover-invites"
8078
className="cb-bg-panel cb-border-color cb-text cb-rounded"
8179
>
8280
{followId && (
8381
<div className="d-flex justify-content-center align-items-center p-2">
84-
{i18n.t("You are following ID: %{followId}", { followId })}
82+
{i18n.t('You are following ID: %{followId}', { followId })}
8583
<button
8684
type="button"
8785
className="btn btn-sm btn-outline-secondary cb-btn-outline-secondary cb-rounded mx-1"
8886
onClick={togglePausedfollowClick}
8987
>
9088
<FontAwesomeIcon
91-
icon={followPaused ? "play" : "pause"}
89+
icon={followPaused ? 'play' : 'pause'}
9290
className="mr-1"
9391
/>
94-
{followPaused ? i18n.t("Unpause") : i18n.t("Pause")}
92+
{followPaused ? i18n.t('Unpause') : i18n.t('Pause')}
9593
</button>
9694
<button
9795
type="button"
9896
className="btn btn-sm btn-outline-danger cb-rounded mx-1"
9997
onClick={handleUnfollowClick}
10098
>
10199
<FontAwesomeIcon icon="binoculars" className="mr-1" />
102-
{i18n.t("Unfollow")}
100+
{i18n.t('Unfollow')}
103101
</button>
104102
</div>
105103
)}
@@ -109,7 +107,7 @@ function InvitesContainer() {
109107
currentUserId={currentUserId}
110108
/>
111109
</Popover>
112-
}
110+
)}
113111
>
114112
{({ ref, ...triggerHandler }) => (
115113
<Button
@@ -120,14 +118,14 @@ function InvitesContainer() {
120118
ref={ref}
121119
alt="invites"
122120
src="/assets/images/fight.svg"
123-
style={{ width: "46px", height: "46px" }}
121+
style={{ width: '46px', height: '46px' }}
124122
/>
125123
{followId && (
126124
<span
127125
className="position-absolute badge badge-danger"
128-
style={{ top: "74%" }}
126+
style={{ top: '74%' }}
129127
>
130-
<FontAwesomeIcon icon={followPaused ? "pause" : "binoculars"} />
128+
<FontAwesomeIcon icon={followPaused ? 'pause' : 'binoculars'} />
131129
</span>
132130
)}
133131
{invites.length !== 0 ? (

services/app/apps/codebattle/assets/js/widgets/components/icons/RustOriginalIcon.jsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,15 @@ const RustOriginalIcon = ({ className = '', size = '120' }) => (
3333
strokeLinejoin="round"
3434
points="46,3 51,0 46,-3"
3535
/>
36+
{/* eslint-disable react/no-array-index-key */}
3637
{[...Array(31)].map((_, i) => (
3738
<use
38-
key={i}
39+
key={`cog-${i}`}
3940
xlinkHref="#cog"
4041
transform={`rotate(${11.25 * (i + 1)})`}
4142
/>
4243
))}
44+
{/* eslint-enable react/no-array-index-key */}
4345
</g>
4446
<g id="mounts">
4547
<polygon
@@ -49,25 +51,29 @@ const RustOriginalIcon = ({ className = '', size = '120' }) => (
4951
strokeLinejoin="round"
5052
points="-7,-42 0,-35 7,-42"
5153
/>
54+
{/* eslint-disable react/no-array-index-key */}
5255
{[...Array(4)].map((_, i) => (
5356
<use
54-
key={i}
57+
key={`mount-${i}`}
5558
xlinkHref="#mount"
5659
transform={`rotate(${72 * (i + 1)})`}
5760
/>
5861
))}
62+
{/* eslint-enable react/no-array-index-key */}
5963
</g>
6064
</g>
6165
<mask id="holes">
6266
<rect x="-60" y="-60" width="120" height="120" fill="white" />
6367
<circle id="hole" cy="-40" r="3" />
68+
{/* eslint-disable react/no-array-index-key */}
6469
{[...Array(4)].map((_, i) => (
6570
<use
66-
key={i}
71+
key={`hole-${i}`}
6772
xlinkHref="#hole"
6873
transform={`rotate(${72 * (i + 1)})`}
6974
/>
7075
))}
76+
{/* eslint-enable react/no-array-index-key */}
7177
</mask>
7278
</g>
7379
</svg>

services/app/apps/codebattle/assets/js/widgets/config/editor/zig.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ export const language = {
163163
comment: [
164164
[/[^/*]+/, 'comment'],
165165
[/\*\//, 'comment', '@pop'],
166-
[/[\/*]/, 'comment'],
166+
[/[/*]/, 'comment'],
167167
],
168168

169169
whitespace: [

services/app/apps/codebattle/assets/js/widgets/pages/builder/AssertsOutput.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const AssertsOutput = memo(({ asserts, status, output }) => {
1818
asserts
1919
&& asserts.map((assert, index) => (
2020
<AccordeonBox.SubMenu
21-
key={index.toString()}
21+
key={assert.id || `assert-${index}`}
2222
statusColor={color[assert.status]}
2323
executionTime={assert.executionTime || 0}
2424
assert={{

services/app/apps/codebattle/assets/js/widgets/pages/event/EventRatingPanel.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ const PersonalEventTable = ({
146146
user.userId === currentUserId,
147147
)}
148148
>
149-
<td className={tableDataCellClassNamePersonal(true)} />
149+
<td className={tableDataCellClassNamePersonal(true)} aria-label="User row" />
150150
<td className={tableDataCellClassNamePersonal()}>
151151
<div style={{ maxWidth: 200 }} className="cb-custom-event-name mr-1">
152152
{user.userName}

0 commit comments

Comments
 (0)