code-battles 1.5.6 → 1.5.8
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/dist/cjs/index.js +13 -20
- package/dist/esm/index.js +13 -20
- package/package.json +9 -8
- package/dist/code_battles/__init__.py +0 -31
- package/dist/code_battles/__pycache__/__init__.cpython-312.pyc +0 -0
- package/dist/code_battles/__pycache__/battles.cpython-312.pyc +0 -0
- package/dist/code_battles/__pycache__/utilities.cpython-312.pyc +0 -0
- package/dist/code_battles/battles.py +0 -970
- package/dist/code_battles/js.pyi +0 -136
- package/dist/code_battles/pyodide/ffi/__init__.pyi +0 -2
- package/dist/code_battles/pyscript/__init__.pyi +0 -4
- package/dist/code_battles/pyscript/ffi/__init__.pyi +0 -3
- package/dist/code_battles/utilities.py +0 -321
- package/dist/code_battles/worker.py +0 -6
- package/dist/pyscript/codemirror-BEtcgaoQ.js +0 -2
- package/dist/pyscript/codemirror-BEtcgaoQ.js.map +0 -1
- package/dist/pyscript/codemirror_commands-DDxffOmd.js +0 -2
- package/dist/pyscript/codemirror_commands-DDxffOmd.js.map +0 -1
- package/dist/pyscript/codemirror_lang-python-CnWnFqxD.js +0 -2
- package/dist/pyscript/codemirror_lang-python-CnWnFqxD.js.map +0 -1
- package/dist/pyscript/codemirror_language-CjmvX4ix.js +0 -2
- package/dist/pyscript/codemirror_language-CjmvX4ix.js.map +0 -1
- package/dist/pyscript/codemirror_state-D1qTXrff.js +0 -2
- package/dist/pyscript/codemirror_state-D1qTXrff.js.map +0 -1
- package/dist/pyscript/codemirror_view-DVb8uYMr.js +0 -2
- package/dist/pyscript/codemirror_view-DVb8uYMr.js.map +0 -1
- package/dist/pyscript/core-CjO3FOKB.js +0 -2
- package/dist/pyscript/core-CjO3FOKB.js.map +0 -1
- package/dist/pyscript/core.css +0 -1
- package/dist/pyscript/core.js +0 -2
- package/dist/pyscript/core.js.map +0 -1
- package/dist/pyscript/deprecations-manager-pFtn19mE.js +0 -2
- package/dist/pyscript/deprecations-manager-pFtn19mE.js.map +0 -1
- package/dist/pyscript/error-tq-z48YI.js +0 -2
- package/dist/pyscript/error-tq-z48YI.js.map +0 -1
- package/dist/pyscript/index-S1Do43bx.js +0 -2
- package/dist/pyscript/index-S1Do43bx.js.map +0 -1
- package/dist/pyscript/mpy-DovD7Qjy.js +0 -2
- package/dist/pyscript/mpy-DovD7Qjy.js.map +0 -1
- package/dist/pyscript/py-BUsUWVJg.js +0 -2
- package/dist/pyscript/py-BUsUWVJg.js.map +0 -1
- package/dist/pyscript/py-editor-CeySmmer.js +0 -2
- package/dist/pyscript/py-editor-CeySmmer.js.map +0 -1
- package/dist/pyscript/py-terminal-CH_wV7wQ.js +0 -2
- package/dist/pyscript/py-terminal-CH_wV7wQ.js.map +0 -1
- package/dist/pyscript/storage.js +0 -2
- package/dist/pyscript/storage.js.map +0 -1
- package/dist/pyscript/toml-CvAfdf9_.js +0 -3
- package/dist/pyscript/toml-CvAfdf9_.js.map +0 -1
- package/dist/pyscript/toml-DiUM0_qs.js +0 -3
- package/dist/pyscript/toml-DiUM0_qs.js.map +0 -1
- package/dist/pyscript/xterm-BY7uk_OU.js +0 -2
- package/dist/pyscript/xterm-BY7uk_OU.js.map +0 -1
- package/dist/pyscript/xterm-readline-CZfBw7ic.js +0 -2
- package/dist/pyscript/xterm-readline-CZfBw7ic.js.map +0 -1
- package/dist/pyscript/xterm.css +0 -7
- package/dist/pyscript/xterm_addon-fit--gyF3PcZ.js +0 -2
- package/dist/pyscript/xterm_addon-fit--gyF3PcZ.js.map +0 -1
- package/dist/pyscript/xterm_addon-web-links-Cnej-nJ6.js +0 -2
- package/dist/pyscript/xterm_addon-web-links-Cnej-nJ6.js.map +0 -1
- package/dist/pyscript/zip-DrwYHuF9.js +0 -2
- package/dist/pyscript/zip-DrwYHuF9.js.map +0 -1
package/dist/cjs/index.js
CHANGED
|
@@ -8,6 +8,7 @@ var core = require('@mantine/core');
|
|
|
8
8
|
var dates = require('@mantine/dates');
|
|
9
9
|
var hooks = require('@mantine/hooks');
|
|
10
10
|
var notifications = require('@mantine/notifications');
|
|
11
|
+
require('dayjs/locale/en');
|
|
11
12
|
var app = require('firebase/app');
|
|
12
13
|
var auth = require('firebase/auth');
|
|
13
14
|
var firestore = require('firebase/firestore');
|
|
@@ -16,14 +17,6 @@ var reactRouterDom = require('react-router-dom');
|
|
|
16
17
|
var dropzone = require('@mantine/dropzone');
|
|
17
18
|
var jsxRuntime = require('react/jsx-runtime');
|
|
18
19
|
|
|
19
|
-
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
20
|
-
|
|
21
|
-
var en = {exports: {}};
|
|
22
|
-
|
|
23
|
-
(function (module, exports) {
|
|
24
|
-
!function(e,n){module.exports=n();}(commonjsGlobal,(function(){return {name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var n=["th","st","nd","rd"],t=e%100;return "["+e+(n[(t-20)%10]||n[t]||n[0])+"]"}}}));
|
|
25
|
-
} (en));
|
|
26
|
-
|
|
27
20
|
/*! *****************************************************************************
|
|
28
21
|
Copyright (c) Microsoft Corporation.
|
|
29
22
|
|
|
@@ -458,9 +451,9 @@ const useLocalStorage = ({ key, defaultValue, }) => {
|
|
|
458
451
|
const userSetValue = (newValue) => {
|
|
459
452
|
setValue(newValue);
|
|
460
453
|
if (typeof newValue === "function") {
|
|
461
|
-
newValue = newValue(
|
|
454
|
+
newValue = newValue(getLocalStorage(key, defaultValue !== null && defaultValue !== void 0 ? defaultValue : null));
|
|
462
455
|
}
|
|
463
|
-
if (newValue) {
|
|
456
|
+
if (newValue !== undefined) {
|
|
464
457
|
localStorage.setItem(key, JSON.stringify(newValue));
|
|
465
458
|
window.dispatchEvent(new StorageEvent("storage", {
|
|
466
459
|
key,
|
|
@@ -515,6 +508,8 @@ const useAdmin = () => {
|
|
|
515
508
|
return (((_a = authentication.currentUser) === null || _a === void 0 ? void 0 : _a.email) === `${configuration.admin}@gmail.com`);
|
|
516
509
|
};
|
|
517
510
|
|
|
511
|
+
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
512
|
+
|
|
518
513
|
var propTypes = {exports: {}};
|
|
519
514
|
|
|
520
515
|
var reactIs = {exports: {}};
|
|
@@ -2521,7 +2516,7 @@ const RunSimulationBlock = () => {
|
|
|
2521
2516
|
const run = () => {
|
|
2522
2517
|
// @ts-ignore
|
|
2523
2518
|
window._isSimulationFromFile = false;
|
|
2524
|
-
navigate(`/simulation/${map.replaceAll(" ", "-")}/${playerBots.join("-")}?seed=${seed}`);
|
|
2519
|
+
navigate(`/simulation/${map.replaceAll(" ", "-")}/${playerBots.join("-")}?seed=${seed === "-" ? "" : seed}`);
|
|
2525
2520
|
};
|
|
2526
2521
|
const startRunNoUI = () => {
|
|
2527
2522
|
setRunningNoUI(true);
|
|
@@ -15857,10 +15852,6 @@ const AutoScrollButton = () => {
|
|
|
15857
15852
|
key: "Auto Scroll",
|
|
15858
15853
|
defaultValue: true,
|
|
15859
15854
|
});
|
|
15860
|
-
React.useEffect(() => {
|
|
15861
|
-
// @ts-ignore
|
|
15862
|
-
window.autoScroll = autoScroll;
|
|
15863
|
-
}, [autoScroll]);
|
|
15864
15855
|
return (React.createElement(core.Button, { color: autoScroll ? "green" : "yellow", fullWidth: true, mb: "xs", leftSection: React.createElement("i", { className: "fa-solid fa-angles-down" }), onClick: () => setAutoScroll((s) => !s) },
|
|
15865
15856
|
"Auto Scroll ",
|
|
15866
15857
|
autoScroll ? "Enabled" : "Disabled"));
|
|
@@ -15883,7 +15874,6 @@ const LogViewer = ({ playerNames }) => {
|
|
|
15883
15874
|
defaultValue: [],
|
|
15884
15875
|
});
|
|
15885
15876
|
React.useEffect(() => {
|
|
15886
|
-
setLogs([]);
|
|
15887
15877
|
setShowLogs(playerNames.map(() => true));
|
|
15888
15878
|
}, [playerNames]);
|
|
15889
15879
|
React.useEffect(() => {
|
|
@@ -15893,13 +15883,15 @@ const LogViewer = ({ playerNames }) => {
|
|
|
15893
15883
|
const con = document.getElementById("console");
|
|
15894
15884
|
if (con) {
|
|
15895
15885
|
setLogs((l) => [...l, { playerIndex, text, color }]);
|
|
15896
|
-
// @ts-ignore
|
|
15897
|
-
if (window.autoScroll) {
|
|
15898
|
-
con.scrollTop = con.scrollHeight;
|
|
15899
|
-
}
|
|
15900
15886
|
}
|
|
15901
15887
|
};
|
|
15902
15888
|
}, []);
|
|
15889
|
+
React.useEffect(() => {
|
|
15890
|
+
const con = document.getElementById("console");
|
|
15891
|
+
if (con && getLocalStorage("Auto Scroll", true)) {
|
|
15892
|
+
con.scrollTop = con.scrollHeight;
|
|
15893
|
+
}
|
|
15894
|
+
}, [logs]);
|
|
15903
15895
|
return (React.createElement(React.Fragment, null,
|
|
15904
15896
|
React.createElement("h1", { style: { color: "white", textAlign: "center", margin: 0 } }, "Console"),
|
|
15905
15897
|
React.createElement(AutoScrollButton, null),
|
|
@@ -15963,6 +15955,7 @@ const Simulation = () => {
|
|
|
15963
15955
|
const colorScheme = hooks.useColorScheme();
|
|
15964
15956
|
const showcaseMode = location.search.includes("showcase=true");
|
|
15965
15957
|
React.useEffect(() => {
|
|
15958
|
+
setLocalStorage("Logs", []);
|
|
15966
15959
|
n((engine) => __awaiter(void 0, void 0, void 0, function* () { return yield loadFull(engine); }));
|
|
15967
15960
|
// @ts-ignore
|
|
15968
15961
|
window.showDownload = () => {
|
package/dist/esm/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { TextInput, Button, Alert, Slider, Box, Select, NumberInput, Table, Badg
|
|
|
6
6
|
import { TimeInput, DatesProvider } from '@mantine/dates';
|
|
7
7
|
import { useColorScheme, useViewportSize } from '@mantine/hooks';
|
|
8
8
|
import { notifications, Notifications } from '@mantine/notifications';
|
|
9
|
+
import 'dayjs/locale/en';
|
|
9
10
|
import { initializeApp } from 'firebase/app';
|
|
10
11
|
import { onAuthStateChanged, signInWithEmailAndPassword, signOut, getAuth } from 'firebase/auth';
|
|
11
12
|
import { onSnapshot, refEqual, doc, getDoc, setDoc, Timestamp, getFirestore } from 'firebase/firestore';
|
|
@@ -14,14 +15,6 @@ import { useNavigate, useLocation, useParams, useSearchParams, Routes, Route, Br
|
|
|
14
15
|
import { Dropzone } from '@mantine/dropzone';
|
|
15
16
|
import { jsx } from 'react/jsx-runtime';
|
|
16
17
|
|
|
17
|
-
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
18
|
-
|
|
19
|
-
var en = {exports: {}};
|
|
20
|
-
|
|
21
|
-
(function (module, exports) {
|
|
22
|
-
!function(e,n){module.exports=n();}(commonjsGlobal,(function(){return {name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var n=["th","st","nd","rd"],t=e%100;return "["+e+(n[(t-20)%10]||n[t]||n[0])+"]"}}}));
|
|
23
|
-
} (en));
|
|
24
|
-
|
|
25
18
|
/*! *****************************************************************************
|
|
26
19
|
Copyright (c) Microsoft Corporation.
|
|
27
20
|
|
|
@@ -456,9 +449,9 @@ const useLocalStorage = ({ key, defaultValue, }) => {
|
|
|
456
449
|
const userSetValue = (newValue) => {
|
|
457
450
|
setValue(newValue);
|
|
458
451
|
if (typeof newValue === "function") {
|
|
459
|
-
newValue = newValue(
|
|
452
|
+
newValue = newValue(getLocalStorage(key, defaultValue !== null && defaultValue !== void 0 ? defaultValue : null));
|
|
460
453
|
}
|
|
461
|
-
if (newValue) {
|
|
454
|
+
if (newValue !== undefined) {
|
|
462
455
|
localStorage.setItem(key, JSON.stringify(newValue));
|
|
463
456
|
window.dispatchEvent(new StorageEvent("storage", {
|
|
464
457
|
key,
|
|
@@ -513,6 +506,8 @@ const useAdmin = () => {
|
|
|
513
506
|
return (((_a = authentication.currentUser) === null || _a === void 0 ? void 0 : _a.email) === `${configuration.admin}@gmail.com`);
|
|
514
507
|
};
|
|
515
508
|
|
|
509
|
+
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
510
|
+
|
|
516
511
|
var propTypes = {exports: {}};
|
|
517
512
|
|
|
518
513
|
var reactIs = {exports: {}};
|
|
@@ -2519,7 +2514,7 @@ const RunSimulationBlock = () => {
|
|
|
2519
2514
|
const run = () => {
|
|
2520
2515
|
// @ts-ignore
|
|
2521
2516
|
window._isSimulationFromFile = false;
|
|
2522
|
-
navigate(`/simulation/${map.replaceAll(" ", "-")}/${playerBots.join("-")}?seed=${seed}`);
|
|
2517
|
+
navigate(`/simulation/${map.replaceAll(" ", "-")}/${playerBots.join("-")}?seed=${seed === "-" ? "" : seed}`);
|
|
2523
2518
|
};
|
|
2524
2519
|
const startRunNoUI = () => {
|
|
2525
2520
|
setRunningNoUI(true);
|
|
@@ -15855,10 +15850,6 @@ const AutoScrollButton = () => {
|
|
|
15855
15850
|
key: "Auto Scroll",
|
|
15856
15851
|
defaultValue: true,
|
|
15857
15852
|
});
|
|
15858
|
-
useEffect(() => {
|
|
15859
|
-
// @ts-ignore
|
|
15860
|
-
window.autoScroll = autoScroll;
|
|
15861
|
-
}, [autoScroll]);
|
|
15862
15853
|
return (React.createElement(Button, { color: autoScroll ? "green" : "yellow", fullWidth: true, mb: "xs", leftSection: React.createElement("i", { className: "fa-solid fa-angles-down" }), onClick: () => setAutoScroll((s) => !s) },
|
|
15863
15854
|
"Auto Scroll ",
|
|
15864
15855
|
autoScroll ? "Enabled" : "Disabled"));
|
|
@@ -15881,7 +15872,6 @@ const LogViewer = ({ playerNames }) => {
|
|
|
15881
15872
|
defaultValue: [],
|
|
15882
15873
|
});
|
|
15883
15874
|
useEffect(() => {
|
|
15884
|
-
setLogs([]);
|
|
15885
15875
|
setShowLogs(playerNames.map(() => true));
|
|
15886
15876
|
}, [playerNames]);
|
|
15887
15877
|
useEffect(() => {
|
|
@@ -15891,13 +15881,15 @@ const LogViewer = ({ playerNames }) => {
|
|
|
15891
15881
|
const con = document.getElementById("console");
|
|
15892
15882
|
if (con) {
|
|
15893
15883
|
setLogs((l) => [...l, { playerIndex, text, color }]);
|
|
15894
|
-
// @ts-ignore
|
|
15895
|
-
if (window.autoScroll) {
|
|
15896
|
-
con.scrollTop = con.scrollHeight;
|
|
15897
|
-
}
|
|
15898
15884
|
}
|
|
15899
15885
|
};
|
|
15900
15886
|
}, []);
|
|
15887
|
+
useEffect(() => {
|
|
15888
|
+
const con = document.getElementById("console");
|
|
15889
|
+
if (con && getLocalStorage("Auto Scroll", true)) {
|
|
15890
|
+
con.scrollTop = con.scrollHeight;
|
|
15891
|
+
}
|
|
15892
|
+
}, [logs]);
|
|
15901
15893
|
return (React.createElement(React.Fragment, null,
|
|
15902
15894
|
React.createElement("h1", { style: { color: "white", textAlign: "center", margin: 0 } }, "Console"),
|
|
15903
15895
|
React.createElement(AutoScrollButton, null),
|
|
@@ -15961,6 +15953,7 @@ const Simulation = () => {
|
|
|
15961
15953
|
const colorScheme = useColorScheme();
|
|
15962
15954
|
const showcaseMode = location.search.includes("showcase=true");
|
|
15963
15955
|
useEffect(() => {
|
|
15956
|
+
setLocalStorage("Logs", []);
|
|
15964
15957
|
n((engine) => __awaiter(void 0, void 0, void 0, function* () { return yield loadFull(engine); }));
|
|
15965
15958
|
// @ts-ignore
|
|
15966
15959
|
window.showDownload = () => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "code-battles",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.8",
|
|
4
4
|
"description": "A library for building interactive competitive coding battles",
|
|
5
5
|
"repository": "https://github.com/noamzaks/code-battles",
|
|
6
6
|
"homepage": "https://code-battles.readthedocs.org",
|
|
@@ -38,12 +38,13 @@
|
|
|
38
38
|
"tsparticles": "^3.5.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@mantine/core": "^7.
|
|
42
|
-
"@mantine/dates": "^7.
|
|
43
|
-
"@mantine/dropzone": "^7.
|
|
44
|
-
"@mantine/hooks": "^7.
|
|
45
|
-
"@mantine/notifications": "^7.
|
|
46
|
-
"
|
|
41
|
+
"@mantine/core": "^7.14.0",
|
|
42
|
+
"@mantine/dates": "^7.14.0",
|
|
43
|
+
"@mantine/dropzone": "^7.14.0",
|
|
44
|
+
"@mantine/hooks": "^7.14.0",
|
|
45
|
+
"@mantine/notifications": "^7.14.0",
|
|
46
|
+
"dayjs": "^1.11.13",
|
|
47
|
+
"firebase": "^11.0.2",
|
|
47
48
|
"react": "^18.3.1",
|
|
48
49
|
"react-dom": "^18.3.1",
|
|
49
50
|
"react-router-dom": "^6.28.0"
|
|
@@ -57,7 +58,7 @@
|
|
|
57
58
|
"@types/react": "^18.3.12",
|
|
58
59
|
"@types/react-dom": "^18.3.1",
|
|
59
60
|
"chokidar-cli": "^3.0.0",
|
|
60
|
-
"rollup": "^4.
|
|
61
|
+
"rollup": "^4.26.0",
|
|
61
62
|
"rollup-plugin-copy": "^3.5.0",
|
|
62
63
|
"rollup-plugin-dts": "^6.1.1",
|
|
63
64
|
"rollup-plugin-import-css": "^3.5.6",
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
|
|
3
|
-
from code_battles.utilities import GameCanvas, Alignment, is_web, is_worker
|
|
4
|
-
from code_battles.battles import CodeBattles
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def run_game(battles: CodeBattles):
|
|
8
|
-
"""
|
|
9
|
-
Binds the given code battles instance to the React code to enable all simulations.
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
if is_web():
|
|
13
|
-
from js import window
|
|
14
|
-
from pyscript.ffi import create_proxy
|
|
15
|
-
|
|
16
|
-
window._startSimulation = create_proxy(battles._start_simulation)
|
|
17
|
-
window._startSimulationFromFile = create_proxy(
|
|
18
|
-
battles._start_simulation_from_file
|
|
19
|
-
)
|
|
20
|
-
elif is_worker():
|
|
21
|
-
setattr(
|
|
22
|
-
sys.modules["__main__"],
|
|
23
|
-
"_run_webworker_simulation",
|
|
24
|
-
battles._run_webworker_simulation,
|
|
25
|
-
)
|
|
26
|
-
setattr(sys.modules["__main__"], "__export__", ["_run_webworker_simulation"])
|
|
27
|
-
else:
|
|
28
|
-
battles._run_local_simulation()
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
__all__ = ["CodeBattles", "GameCanvas", "Alignment", "run_game"]
|
|
Binary file
|
|
Binary file
|
|
Binary file
|