cubing 0.24.2 → 0.24.6
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 +37 -7
- package/dist/esm/{2x2x2.sgs.json-5MCXGXA6.js → 2x2x2.sgs.json-KBCXHIZP.js} +3 -3
- package/dist/esm/{2x2x2.sgs.json-5MCXGXA6.js.map → 2x2x2.sgs.json-KBCXHIZP.js.map} +0 -0
- package/dist/esm/{3d-dynamic-inside-XYXXTULQ.js → 3d-dynamic-inside-IIG5EJZP.js} +4 -5
- package/dist/esm/{3d-dynamic-inside-XYXXTULQ.js.map → 3d-dynamic-inside-IIG5EJZP.js.map} +2 -2
- package/dist/esm/bluetooth/index.js +3 -3
- package/dist/esm/{chunk-UZTY6GHM.js → chunk-DMCRTYR4.js} +3 -3
- package/dist/esm/{chunk-UZTY6GHM.js.map → chunk-DMCRTYR4.js.map} +0 -0
- package/dist/esm/{chunk-ZDALYMGF.js → chunk-KRL5KQQK.js} +32 -3
- package/dist/esm/chunk-KRL5KQQK.js.map +7 -0
- package/dist/esm/{chunk-2CGRUO5X.js → chunk-MVJPIWT7.js} +3 -2
- package/dist/esm/chunk-MVJPIWT7.js.map +7 -0
- package/dist/esm/{chunk-TOPMNZ57.js → chunk-OOIEAACO.js} +2 -2
- package/dist/esm/{chunk-TOPMNZ57.js.map → chunk-OOIEAACO.js.map} +0 -0
- package/dist/esm/{chunk-BBEJTW6Z.js → chunk-QMZKTP7F.js} +3 -3
- package/dist/esm/{chunk-BBEJTW6Z.js.map → chunk-QMZKTP7F.js.map} +0 -0
- package/dist/esm/{chunk-LR6VCMD2.js → chunk-T5KQKRR3.js} +3 -3
- package/dist/esm/{chunk-LR6VCMD2.js.map → chunk-T5KQKRR3.js.map} +0 -0
- package/dist/esm/{chunk-GBIDMAJS.js → chunk-TXTMBIUR.js} +2 -2
- package/dist/esm/{chunk-GBIDMAJS.js.map → chunk-TXTMBIUR.js.map} +0 -0
- package/dist/esm/{chunk-2I3MTSRM.js → chunk-UOI5KUW4.js} +3 -3
- package/dist/esm/{chunk-2I3MTSRM.js.map → chunk-UOI5KUW4.js.map} +0 -0
- package/dist/esm/{chunk-HU55EGD6.js → chunk-V7BTHDW3.js} +2 -2
- package/dist/esm/{chunk-HU55EGD6.js.map → chunk-V7BTHDW3.js.map} +0 -0
- package/dist/esm/{chunk-B27E6KTE.js → chunk-Y32HHZUY.js} +1 -1
- package/dist/esm/{chunk-B27E6KTE.js.map → chunk-Y32HHZUY.js.map} +2 -2
- package/dist/esm/{entry-FOASJVBZ.js → entry-FHL2XSAP.js} +15 -15
- package/dist/esm/{entry-FOASJVBZ.js.map → entry-FHL2XSAP.js.map} +0 -0
- package/dist/esm/{fto.sgs.json-USK5JCKN.js → fto.sgs.json-USV4WNQJ.js} +3 -3
- package/dist/esm/{fto.sgs.json-USK5JCKN.js.map → fto.sgs.json-USV4WNQJ.js.map} +0 -0
- package/dist/esm/kpuzzle/index.js +1 -1
- package/dist/esm/{megaminx.sgs.json-3UELYHNZ.js → megaminx.sgs.json-KKR4VPHV.js} +4 -4
- package/dist/esm/{megaminx.sgs.json-3UELYHNZ.js.map → megaminx.sgs.json-KKR4VPHV.js.map} +0 -0
- package/dist/esm/{module-entry-DBPFVUZH.js → module-entry-TKJ6ZAZB.js} +2 -2
- package/dist/esm/{module-entry-DBPFVUZH.js.map → module-entry-TKJ6ZAZB.js.map} +0 -0
- package/dist/esm/protocol/index.js +2 -2
- package/dist/esm/puzzle-geometry/index.js +1 -1
- package/dist/esm/puzzles/index.js +2 -2
- package/dist/esm/{pyraminx.sgs.json-ARYGZ7E4.js → pyraminx.sgs.json-HMKDN3ZT.js} +4 -4
- package/dist/esm/{pyraminx.sgs.json-ARYGZ7E4.js.map → pyraminx.sgs.json-HMKDN3ZT.js.map} +0 -0
- package/dist/esm/scramble/index.js +4 -4
- package/dist/esm/{scramble_444-HZ7HJLTT.js → scramble_444-ZFKBLRUE.js} +4 -4
- package/dist/esm/{scramble_444-HZ7HJLTT.js.map → scramble_444-ZFKBLRUE.js.map} +0 -0
- package/dist/esm/search/index.js +4 -4
- package/dist/esm/{skewb.sgs.json-QVGBEYZV.js → skewb.sgs.json-MWONK6HT.js} +4 -4
- package/dist/esm/{skewb.sgs.json-QVGBEYZV.js.map → skewb.sgs.json-MWONK6HT.js.map} +0 -0
- package/dist/esm/twisty/index.js +88 -55
- package/dist/esm/twisty/index.js.map +3 -3
- package/dist/esm/{worker-inside-generated-string-OWBTRAXR.js → worker-inside-generated-string-XYHIVIPG.js} +23 -23
- package/dist/esm/worker-inside-generated-string-XYHIVIPG.js.map +7 -0
- package/dist/types/puzzle-geometry/FaceNameSwizzler.d.ts +1 -0
- package/dist/types/puzzle-geometry/PermOriSet.d.ts +2 -1
- package/dist/types/puzzle-geometry/PuzzleGeometry.d.ts +1 -0
- package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts +5 -4
- package/dist/types/twisty/model/TwistyPlayerModel.d.ts +2 -0
- package/dist/types/twisty/model/props/puzzle/state/AnchorTransformationProp.d.ts +2 -1
- package/dist/types/twisty/model/props/puzzle/state/SetupTransformationProp.d.ts +5 -0
- package/dist/types/twisty/model/props/timeline/CoarseTimelineInfoProp.d.ts +1 -1
- package/dist/types/twisty/model/props/viewer/ButtonAppearanceProp.d.ts +1 -1
- package/dist/types/twisty/views/3D/Twisty3DVantage.d.ts +1 -0
- package/dist/types/twisty/views/TwistyPlayer.d.ts +2 -2
- package/dist/types/twisty/views/control-panel/{TwistyButtonsV2.css.d.ts → TwistyButtons.css.d.ts} +0 -0
- package/dist/types/twisty/views/control-panel/{TwistyButtonsV2.d.ts → TwistyButtons.d.ts} +3 -3
- package/dist/types/twisty/views/control-panel/{TwistyScrubberV2.d.ts → TwistyScrubber.d.ts} +1 -1
- package/package.json +2 -2
- package/dist/esm/chunk-2CGRUO5X.js.map +0 -7
- package/dist/esm/chunk-ZDALYMGF.js.map +0 -7
- package/dist/esm/worker-inside-generated-string-OWBTRAXR.js.map +0 -7
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.d.ts +0 -22
package/dist/esm/twisty/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
TwistyPropDerived,
|
|
11
11
|
TwistyPropSource,
|
|
12
12
|
proxy3D
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-OOIEAACO.js";
|
|
14
14
|
import {
|
|
15
15
|
countAnimatedLeaves,
|
|
16
16
|
countMoves
|
|
@@ -20,8 +20,8 @@ import {
|
|
|
20
20
|
cubeAppearance,
|
|
21
21
|
customPGPuzzleLoader,
|
|
22
22
|
puzzles
|
|
23
|
-
} from "../chunk-
|
|
24
|
-
import "../chunk-
|
|
23
|
+
} from "../chunk-MVJPIWT7.js";
|
|
24
|
+
import "../chunk-Y32HHZUY.js";
|
|
25
25
|
import {
|
|
26
26
|
Alg,
|
|
27
27
|
AlgBuilder,
|
|
@@ -490,6 +490,15 @@ svg {
|
|
|
490
490
|
display: grid;
|
|
491
491
|
min-height: 0;
|
|
492
492
|
}
|
|
493
|
+
|
|
494
|
+
svg {
|
|
495
|
+
animation: fade-in 0.25s ease-in;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
@keyframes fade-in {
|
|
499
|
+
from { opacity: 0; }
|
|
500
|
+
to { opacity: 1; }
|
|
501
|
+
}
|
|
493
502
|
`);
|
|
494
503
|
|
|
495
504
|
// src/cubing/twisty/views/2D/KPuzzleSVGWrapper.ts
|
|
@@ -1106,12 +1115,45 @@ var twisty3DVantageCSS = new CSSSource(`
|
|
|
1106
1115
|
height: 100%;
|
|
1107
1116
|
display: grid;
|
|
1108
1117
|
overflow: hidden;
|
|
1118
|
+
place-content: center;
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
.loading {
|
|
1122
|
+
width: 4em;
|
|
1123
|
+
height: 4em;
|
|
1124
|
+
border-radius: 2.5em;
|
|
1125
|
+
border: 0.5em solid rgba(0, 0, 0, 0);
|
|
1126
|
+
border-top: 0.5em solid rgba(0, 0, 0, 0.7);
|
|
1127
|
+
border-right: 0.5em solid rgba(0, 0, 0, 0.7);
|
|
1128
|
+
animation: fade-in-delayed 4s, rotate 1s linear infinite;
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1131
|
+
@keyframes fade-in-delayed {
|
|
1132
|
+
0% { opacity: 0; }
|
|
1133
|
+
25% {opacity: 0; }
|
|
1134
|
+
100% { opacity: 1; }
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
@keyframes rotate {
|
|
1138
|
+
from { transform: rotate(0deg); }
|
|
1139
|
+
to { transform: rotate(360deg); }
|
|
1109
1140
|
}
|
|
1110
1141
|
|
|
1111
1142
|
/* TODO: This is due to stats hack. Replace with \`canvas\`. */
|
|
1112
1143
|
.wrapper > canvas {
|
|
1113
1144
|
max-width: 100%;
|
|
1114
1145
|
max-height: 100%;
|
|
1146
|
+
cursor: grab;
|
|
1147
|
+
animation: fade-in 0.25s ease-in;
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
@keyframes fade-in {
|
|
1151
|
+
from { opacity: 0; }
|
|
1152
|
+
to { opacity: 1; }
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
.wrapper > canvas:active {
|
|
1156
|
+
cursor: grabbing;
|
|
1115
1157
|
}
|
|
1116
1158
|
|
|
1117
1159
|
.wrapper.invisible {
|
|
@@ -1385,6 +1427,7 @@ var Twisty3DVantage = class extends ManagedCustomElement {
|
|
|
1385
1427
|
this.scene = null;
|
|
1386
1428
|
this.stats = null;
|
|
1387
1429
|
this.rendererIsShared = shareRenderer();
|
|
1430
|
+
this.loadingElement = null;
|
|
1388
1431
|
__privateAdd(this, _onResizeStaleDropper, new StaleDropper());
|
|
1389
1432
|
__privateAdd(this, _width, 0);
|
|
1390
1433
|
__privateAdd(this, _height, 0);
|
|
@@ -1396,6 +1439,8 @@ var Twisty3DVantage = class extends ManagedCustomElement {
|
|
|
1396
1439
|
__privateAdd(this, _disconnectionFunctions, []);
|
|
1397
1440
|
__privateAdd(this, _scheduler, new RenderScheduler(this.render.bind(this)));
|
|
1398
1441
|
this.scene = scene ?? null;
|
|
1442
|
+
this.loadingElement = this.addElement(document.createElement("div"));
|
|
1443
|
+
this.loadingElement.classList.add("loading");
|
|
1399
1444
|
if (SHOW_STATS) {
|
|
1400
1445
|
this.stats = new Stats();
|
|
1401
1446
|
this.stats.dom.style.position = "absolute";
|
|
@@ -1437,6 +1482,7 @@ var Twisty3DVantage = class extends ManagedCustomElement {
|
|
|
1437
1482
|
const renderer = await this.renderer();
|
|
1438
1483
|
canvas = this.addElement(renderer.domElement);
|
|
1439
1484
|
}
|
|
1485
|
+
this.loadingElement?.remove();
|
|
1440
1486
|
const context = canvas.getContext("2d");
|
|
1441
1487
|
return { canvas, context };
|
|
1442
1488
|
})());
|
|
@@ -1686,7 +1732,7 @@ _currentTwisty3DPuzzleWrapper = new WeakMap();
|
|
|
1686
1732
|
_twisty3DStaleDropper = new WeakMap();
|
|
1687
1733
|
customElementsShim.define("twisty-3d-scene-wrapper", Twisty3DSceneWrapper);
|
|
1688
1734
|
|
|
1689
|
-
// src/cubing/twisty/views/control-panel/
|
|
1735
|
+
// src/cubing/twisty/views/control-panel/TwistyButtons.css.ts
|
|
1690
1736
|
var buttonGridCSS = new CSSSource(`
|
|
1691
1737
|
:host {
|
|
1692
1738
|
width: 384px;
|
|
@@ -1711,7 +1757,7 @@ var buttonGridCSS = new CSSSource(`
|
|
|
1711
1757
|
display: none;
|
|
1712
1758
|
}
|
|
1713
1759
|
|
|
1714
|
-
.wrapper twisty-button
|
|
1760
|
+
.wrapper twisty-button,
|
|
1715
1761
|
.wrapper twisty-control-button {
|
|
1716
1762
|
width: inherit;
|
|
1717
1763
|
height: inherit;
|
|
@@ -1865,7 +1911,7 @@ var ButtonAppearanceProp = class extends TwistyPropDerived {
|
|
|
1865
1911
|
title: "Step backward"
|
|
1866
1912
|
},
|
|
1867
1913
|
"play-pause": {
|
|
1868
|
-
enabled:
|
|
1914
|
+
enabled: !(inputs.coarseTimelineInfo.atStart && inputs.coarseTimelineInfo.atEnd),
|
|
1869
1915
|
icon: inputs.coarseTimelineInfo.playing ? "pause" : "play",
|
|
1870
1916
|
title: inputs.coarseTimelineInfo.playing ? "Pause" : "Play"
|
|
1871
1917
|
},
|
|
@@ -1890,7 +1936,7 @@ var ButtonAppearanceProp = class extends TwistyPropDerived {
|
|
|
1890
1936
|
}
|
|
1891
1937
|
};
|
|
1892
1938
|
|
|
1893
|
-
// src/cubing/twisty/views/control-panel/
|
|
1939
|
+
// src/cubing/twisty/views/control-panel/TwistyButtons.ts
|
|
1894
1940
|
var buttonCommands = {
|
|
1895
1941
|
"fullscreen": true,
|
|
1896
1942
|
"jump-to-start": true,
|
|
@@ -1901,7 +1947,7 @@ var buttonCommands = {
|
|
|
1901
1947
|
"twizzle-link": true
|
|
1902
1948
|
};
|
|
1903
1949
|
var _onCommand, onCommand_fn;
|
|
1904
|
-
var
|
|
1950
|
+
var TwistyButtons = class extends ManagedCustomElement {
|
|
1905
1951
|
constructor(model, controller, fullscreenElement) {
|
|
1906
1952
|
super();
|
|
1907
1953
|
this.model = model;
|
|
@@ -1914,7 +1960,7 @@ var TwistyButtonsV2 = class extends ManagedCustomElement {
|
|
|
1914
1960
|
this.addCSS(buttonGridCSS);
|
|
1915
1961
|
const buttons = {};
|
|
1916
1962
|
for (const command in buttonCommands) {
|
|
1917
|
-
const button = new
|
|
1963
|
+
const button = new TwistyButton();
|
|
1918
1964
|
buttons[command] = button;
|
|
1919
1965
|
button.addEventListener("click", () => __privateMethod(this, _onCommand, onCommand_fn).call(this, command));
|
|
1920
1966
|
this.addElement(button);
|
|
@@ -1985,9 +2031,9 @@ onCommand_fn = function(command) {
|
|
|
1985
2031
|
throw new Error("Missing command");
|
|
1986
2032
|
}
|
|
1987
2033
|
};
|
|
1988
|
-
customElementsShim.define("twisty-buttons
|
|
2034
|
+
customElementsShim.define("twisty-buttons", TwistyButtons);
|
|
1989
2035
|
var _iconManager;
|
|
1990
|
-
var
|
|
2036
|
+
var TwistyButton = class extends ManagedCustomElement {
|
|
1991
2037
|
constructor() {
|
|
1992
2038
|
super(...arguments);
|
|
1993
2039
|
this.button = document.createElement("button");
|
|
@@ -2002,7 +2048,7 @@ var TwistyButtonV2 = class extends ManagedCustomElement {
|
|
|
2002
2048
|
}
|
|
2003
2049
|
};
|
|
2004
2050
|
_iconManager = new WeakMap();
|
|
2005
|
-
customElementsShim.define("twisty-button
|
|
2051
|
+
customElementsShim.define("twisty-button", TwistyButton);
|
|
2006
2052
|
|
|
2007
2053
|
// src/cubing/twisty/views/control-panel/TwistyScrubber.css.ts
|
|
2008
2054
|
var twistyScrubberCSS = new CSSSource(`
|
|
@@ -2019,40 +2065,15 @@ var twistyScrubberCSS = new CSSSource(`
|
|
|
2019
2065
|
overflow: hidden;
|
|
2020
2066
|
backdrop-filter: blur(4px);
|
|
2021
2067
|
-webkit-backdrop-filter: blur(4px);
|
|
2068
|
+
background: rgba(196, 196, 196, 0.75)
|
|
2022
2069
|
}
|
|
2023
2070
|
|
|
2024
|
-
input {
|
|
2025
|
-
|
|
2026
|
-
}
|
|
2027
|
-
|
|
2028
|
-
input {
|
|
2029
|
-
background: none;
|
|
2030
|
-
}
|
|
2031
|
-
|
|
2032
|
-
::-moz-range-track {
|
|
2033
|
-
background: rgba(0, 0, 0, 0.25);
|
|
2034
|
-
height: 50%;
|
|
2035
|
-
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
2036
|
-
}
|
|
2037
|
-
|
|
2038
|
-
::-webkit-slider-runnable-track {
|
|
2039
|
-
background: rgba(0, 0, 0, 0.05);
|
|
2040
|
-
}
|
|
2041
|
-
|
|
2042
|
-
::-moz-range-progress {
|
|
2043
|
-
background: #3273F6;
|
|
2044
|
-
height: 50%;
|
|
2045
|
-
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
2046
|
-
}
|
|
2047
|
-
|
|
2048
|
-
::-ms-fill-lower {
|
|
2049
|
-
background: #3273F6;
|
|
2050
|
-
height: 50%;
|
|
2051
|
-
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
2071
|
+
input:not(:disabled) {
|
|
2072
|
+
cursor: ew-resize;
|
|
2052
2073
|
}
|
|
2053
2074
|
`);
|
|
2054
2075
|
|
|
2055
|
-
// src/cubing/twisty/views/control-panel/
|
|
2076
|
+
// src/cubing/twisty/views/control-panel/TwistyScrubber.ts
|
|
2056
2077
|
var SLOW_DOWN_SCRUBBING = false;
|
|
2057
2078
|
var isMouseDown = false;
|
|
2058
2079
|
globalSafeDocument?.addEventListener("mousedown", function(event) {
|
|
@@ -2080,7 +2101,7 @@ var lastPreval = 0;
|
|
|
2080
2101
|
var scaling = false;
|
|
2081
2102
|
var currentClickNum = 0;
|
|
2082
2103
|
var _inputElem;
|
|
2083
|
-
var
|
|
2104
|
+
var TwistyScrubber = class extends ManagedCustomElement {
|
|
2084
2105
|
constructor(model) {
|
|
2085
2106
|
super();
|
|
2086
2107
|
this.model = model;
|
|
@@ -2150,7 +2171,7 @@ var TwistyScrubberV2 = class extends ManagedCustomElement {
|
|
|
2150
2171
|
}
|
|
2151
2172
|
};
|
|
2152
2173
|
_inputElem = new WeakMap();
|
|
2153
|
-
customElementsShim.define("twisty-scrubber
|
|
2174
|
+
customElementsShim.define("twisty-scrubber", TwistyScrubber);
|
|
2154
2175
|
|
|
2155
2176
|
// src/cubing/twisty/views/screenshot.ts
|
|
2156
2177
|
var cachedCamera = null;
|
|
@@ -2213,7 +2234,7 @@ var twistyPlayerCSS = new CSSSource(`
|
|
|
2213
2234
|
.wrapper {
|
|
2214
2235
|
display: grid;
|
|
2215
2236
|
overflow: hidden;
|
|
2216
|
-
grid-template-rows: 7fr
|
|
2237
|
+
grid-template-rows: 7fr minmax(1.5em, 0.5fr) minmax(2em, 1fr);
|
|
2217
2238
|
}
|
|
2218
2239
|
|
|
2219
2240
|
.wrapper > * {
|
|
@@ -2228,8 +2249,8 @@ var twistyPlayerCSS = new CSSSource(`
|
|
|
2228
2249
|
|
|
2229
2250
|
.wrapper.controls-none twisty-scrubber,
|
|
2230
2251
|
.wrapper.controls-none twisty-control-button-panel ,
|
|
2231
|
-
.wrapper.controls-none twisty-scrubber
|
|
2232
|
-
.wrapper.controls-none twisty-buttons
|
|
2252
|
+
.wrapper.controls-none twisty-scrubber,
|
|
2253
|
+
.wrapper.controls-none twisty-buttons {
|
|
2233
2254
|
display: none;
|
|
2234
2255
|
}
|
|
2235
2256
|
|
|
@@ -2883,7 +2904,7 @@ function simulMoves(a) {
|
|
|
2883
2904
|
return l;
|
|
2884
2905
|
}
|
|
2885
2906
|
|
|
2886
|
-
// src/cubing/twisty/controllers/indexer/simultaneous-moves/
|
|
2907
|
+
// src/cubing/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.ts
|
|
2887
2908
|
var demos = {
|
|
2888
2909
|
"y' y' U' E D R2 r2 F2 B2 U E D' R2 L2' z2 S2 U U D D S2 F2' B2": [
|
|
2889
2910
|
{ animLeaf: new Move("y", -1), start: 0, end: 1e3 },
|
|
@@ -2930,7 +2951,7 @@ var demos = {
|
|
|
2930
2951
|
{ animLeaf: new Move("E"), start: 7e3, end: 8e3 }
|
|
2931
2952
|
]
|
|
2932
2953
|
};
|
|
2933
|
-
var
|
|
2954
|
+
var SimultaneousMoveIndexer = class {
|
|
2934
2955
|
constructor(kpuzzle, alg) {
|
|
2935
2956
|
this.kpuzzle = kpuzzle;
|
|
2936
2957
|
this.animLeaves = demos[alg.toString()] ?? simulMoves(alg);
|
|
@@ -3424,7 +3445,7 @@ var IndexerConstructorProp = class extends TwistyPropDerived {
|
|
|
3424
3445
|
switch (inputs.indexerConstructorRequest) {
|
|
3425
3446
|
case "auto":
|
|
3426
3447
|
if (countMoves(inputs.alg.alg) < 100 && inputs.puzzle === "3x3x3" && inputs.visualizationStrategy === "Cube3D") {
|
|
3427
|
-
return
|
|
3448
|
+
return SimultaneousMoveIndexer;
|
|
3428
3449
|
} else {
|
|
3429
3450
|
return TreeAlgIndexer;
|
|
3430
3451
|
}
|
|
@@ -3433,7 +3454,7 @@ var IndexerConstructorProp = class extends TwistyPropDerived {
|
|
|
3433
3454
|
case "simple":
|
|
3434
3455
|
return SimpleAlgIndexer;
|
|
3435
3456
|
case "simultaneous":
|
|
3436
|
-
return
|
|
3457
|
+
return SimultaneousMoveIndexer;
|
|
3437
3458
|
default:
|
|
3438
3459
|
throw new Error("Invalid indexer request!");
|
|
3439
3460
|
}
|
|
@@ -3477,13 +3498,16 @@ var IndexerProp = class extends TwistyPropDerived {
|
|
|
3477
3498
|
// src/cubing/twisty/model/props/puzzle/state/AnchorTransformationProp.ts
|
|
3478
3499
|
var AnchorTransformationProp = class extends TwistyPropDerived {
|
|
3479
3500
|
derive(inputs) {
|
|
3501
|
+
if (inputs.setupTransformation) {
|
|
3502
|
+
return inputs.setupTransformation;
|
|
3503
|
+
}
|
|
3480
3504
|
switch (inputs.setupAnchor) {
|
|
3481
3505
|
case "start":
|
|
3482
|
-
return inputs.
|
|
3506
|
+
return inputs.setupAlgTransformation;
|
|
3483
3507
|
case "end": {
|
|
3484
3508
|
const algTransformation = inputs.indexer.transformationAtIndex(inputs.indexer.numAnimatedLeaves());
|
|
3485
3509
|
const inverseAlgTransformation = algTransformation.invert();
|
|
3486
|
-
return inputs.
|
|
3510
|
+
return inputs.setupAlgTransformation.applyTransformation(inverseAlgTransformation);
|
|
3487
3511
|
}
|
|
3488
3512
|
default:
|
|
3489
3513
|
throw new Error("Unimplemented!");
|
|
@@ -3714,6 +3738,13 @@ var FoundationDisplayProp = class extends SimpleTwistyPropSource {
|
|
|
3714
3738
|
}
|
|
3715
3739
|
};
|
|
3716
3740
|
|
|
3741
|
+
// src/cubing/twisty/model/props/puzzle/state/SetupTransformationProp.ts
|
|
3742
|
+
var SetupTransformationProp = class extends SimpleTwistyPropSource {
|
|
3743
|
+
getDefaultValue() {
|
|
3744
|
+
return null;
|
|
3745
|
+
}
|
|
3746
|
+
};
|
|
3747
|
+
|
|
3717
3748
|
// src/cubing/twisty/model/TwistyPlayerModel.ts
|
|
3718
3749
|
var TwistyPlayerModel = class {
|
|
3719
3750
|
constructor() {
|
|
@@ -3736,6 +3767,7 @@ var TwistyPlayerModel = class {
|
|
|
3736
3767
|
this.puzzleIDRequest = new PuzzleIDRequestProp();
|
|
3737
3768
|
this.setupAnchor = new SetupAnchorProp();
|
|
3738
3769
|
this.setupAlg = new AlgProp();
|
|
3770
|
+
this.setupTransformation = new SetupTransformationProp();
|
|
3739
3771
|
this.stickering = new StickeringProp();
|
|
3740
3772
|
this.tempoScale = new TempoScaleProp();
|
|
3741
3773
|
this.timestampRequest = new TimestampRequestProp();
|
|
@@ -3788,8 +3820,9 @@ var TwistyPlayerModel = class {
|
|
|
3788
3820
|
kpuzzle: this.kpuzzle
|
|
3789
3821
|
});
|
|
3790
3822
|
this.anchorTransformation = new AnchorTransformationProp({
|
|
3823
|
+
setupTransformation: this.setupTransformation,
|
|
3791
3824
|
setupAnchor: this.setupAnchor,
|
|
3792
|
-
|
|
3825
|
+
setupAlgTransformation: this.setupAlgTransformation,
|
|
3793
3826
|
indexer: this.indexer
|
|
3794
3827
|
});
|
|
3795
3828
|
this.timeRange = new TimeRangeProp({
|
|
@@ -4111,9 +4144,9 @@ var TwistyPlayer = class extends TwistyPlayerSettable {
|
|
|
4111
4144
|
__privateGet(this, _errorElem).textContent = errorString;
|
|
4112
4145
|
}
|
|
4113
4146
|
});
|
|
4114
|
-
const scrubber = new
|
|
4147
|
+
const scrubber = new TwistyScrubber(this.experimentalModel);
|
|
4115
4148
|
this.contentWrapper.appendChild(scrubber);
|
|
4116
|
-
this.buttons = new
|
|
4149
|
+
this.buttons = new TwistyButtons(this.experimentalModel, this.controller, this);
|
|
4117
4150
|
this.contentWrapper.appendChild(this.buttons);
|
|
4118
4151
|
this.experimentalModel.background.addFreshListener((backgroundTheme) => {
|
|
4119
4152
|
this.contentWrapper.classList.toggle("checkered", backgroundTheme !== "none");
|