cubing 0.24.0-pre2 → 0.24.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/dist/esm/{2x2x2.kpuzzle.json-U5KOZCMU.js → 2x2x2.kpuzzle.json-RUB44MJV.js} +2 -2
- package/dist/esm/2x2x2.kpuzzle.json-RUB44MJV.js.map +7 -0
- package/dist/esm/{2x2x2.sgs.json-UAYPCQVL.js → 2x2x2.sgs.json-TASFAQNY.js} +3 -3
- package/dist/esm/{2x2x2.sgs.json-UAYPCQVL.js.map → 2x2x2.sgs.json-TASFAQNY.js.map} +0 -0
- package/dist/esm/{chunk-REMJV2GO.js → 3d-dynamic-inside-RSDMFS4G.js} +23 -420
- package/dist/esm/3d-dynamic-inside-RSDMFS4G.js.map +7 -0
- package/dist/esm/bluetooth/index.js +3 -3
- package/dist/esm/chunk-27MCV5LC.js +423 -0
- package/dist/esm/chunk-27MCV5LC.js.map +7 -0
- package/dist/esm/{chunk-NPK6Z4AU.js → chunk-3SURT6S2.js} +2 -2
- package/dist/esm/{chunk-NPK6Z4AU.js.map → chunk-3SURT6S2.js.map} +0 -0
- package/dist/esm/{chunk-ZLIK3DZT.js → chunk-54HT7B4M.js} +118 -92
- package/dist/esm/chunk-54HT7B4M.js.map +7 -0
- package/dist/esm/{chunk-TNRZDNGH.js → chunk-B27E6KTE.js} +121 -115
- package/dist/esm/chunk-B27E6KTE.js.map +7 -0
- package/dist/esm/{chunk-KCRFOAR4.js → chunk-BBEJTW6Z.js} +3 -3
- package/dist/esm/{chunk-KCRFOAR4.js.map → chunk-BBEJTW6Z.js.map} +0 -0
- package/dist/esm/{chunk-TB4D4E2W.js → chunk-EA4KWT7Z.js} +3 -3
- package/dist/esm/chunk-EA4KWT7Z.js.map +7 -0
- package/dist/esm/{chunk-7OPCF2OL.js → chunk-GBIDMAJS.js} +2 -2
- package/dist/esm/{chunk-7OPCF2OL.js.map → chunk-GBIDMAJS.js.map} +0 -0
- package/dist/esm/{chunk-YN7E5RGM.js → chunk-LR6VCMD2.js} +3 -3
- package/dist/esm/{chunk-YN7E5RGM.js.map → chunk-LR6VCMD2.js.map} +0 -0
- package/dist/esm/{chunk-NV5ESXTN.js → chunk-SPTKCRT5.js} +3 -3
- package/dist/esm/{chunk-NV5ESXTN.js.map → chunk-SPTKCRT5.js.map} +0 -0
- package/dist/esm/{chunk-4IUYLRHT.js → chunk-U2TSTTDG.js} +12 -1
- package/dist/esm/chunk-U2TSTTDG.js.map +7 -0
- package/dist/esm/{chunk-J2U2GRS4.js → chunk-ZDALYMGF.js} +2 -2
- package/dist/esm/chunk-ZDALYMGF.js.map +7 -0
- package/dist/esm/{clock.kpuzzle.json-J3YBOI3G.js → clock.kpuzzle.json-BQKNKV3G.js} +4 -4
- package/dist/esm/clock.kpuzzle.json-BQKNKV3G.js.map +7 -0
- package/dist/esm/{entry-PHAJAE4E.js → entry-VNBE3GIX.js} +18 -18
- package/dist/esm/entry-VNBE3GIX.js.map +7 -0
- package/dist/esm/{fto.sgs.json-VO6HST2V.js → fto.sgs.json-RZ2BQGRG.js} +3 -3
- package/dist/esm/{fto.sgs.json-VO6HST2V.js.map → fto.sgs.json-RZ2BQGRG.js.map} +0 -0
- package/dist/esm/kpuzzle/index.js +3 -1
- package/dist/esm/{megaminx.sgs.json-R3MK4HXM.js → megaminx.sgs.json-3UELYHNZ.js} +4 -4
- package/dist/esm/{3d-NFF7OGTI.js.map → megaminx.sgs.json-3UELYHNZ.js.map} +0 -0
- package/dist/esm/{module-entry-UYTOFYBC.js → module-entry-MKJ6SWPL.js} +2 -2
- package/dist/esm/{module-entry-UYTOFYBC.js.map → module-entry-MKJ6SWPL.js.map} +0 -0
- package/dist/esm/notation/index.js +6 -4
- 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-R3J3JHMV.js → pyraminx.sgs.json-6KZV2YF7.js} +4 -4
- package/dist/esm/{megaminx.sgs.json-R3MK4HXM.js.map → pyraminx.sgs.json-6KZV2YF7.js.map} +0 -0
- package/dist/esm/scramble/index.js +4 -4
- package/dist/esm/{scramble_444-F3YANDPO.js → scramble_444-WHAZBEON.js} +6 -5
- package/dist/esm/scramble_444-WHAZBEON.js.map +7 -0
- package/dist/esm/search/index.js +4 -4
- package/dist/esm/{skewb.sgs.json-T6CO36WU.js → skewb.sgs.json-QVGBEYZV.js} +4 -4
- package/dist/esm/{pyraminx.sgs.json-R3J3JHMV.js.map → skewb.sgs.json-QVGBEYZV.js.map} +0 -0
- package/dist/esm/{sq1-hyperorbit.kpuzzle.json-AWDGN4ZW.js → sq1-hyperorbit.kpuzzle.json-4XS5YACO.js} +3 -3
- package/dist/esm/sq1-hyperorbit.kpuzzle.json-4XS5YACO.js.map +7 -0
- package/dist/esm/twisty/index.js +267 -139
- package/dist/esm/twisty/index.js.map +3 -3
- package/dist/esm/{worker-inside-generated-string-6YDSDSRJ.js → worker-inside-generated-string-K4NE6VX5.js} +24 -24
- package/dist/esm/worker-inside-generated-string-K4NE6VX5.js.map +7 -0
- package/dist/types/kpuzzle/KPuzzle.d.ts +5 -0
- package/dist/types/kpuzzle/KPuzzleDefinition.d.ts +1 -1
- package/dist/types/kpuzzle/KState.d.ts +2 -0
- package/dist/types/kpuzzle/KTransformation.d.ts +3 -0
- package/dist/types/kpuzzle/calculate.d.ts +1 -1
- package/dist/types/kpuzzle/index.d.ts +2 -2
- package/dist/types/notation/CountMoves.d.ts +1 -0
- package/dist/types/notation/index.d.ts +2 -2
- package/dist/types/puzzles/PuzzleLoader.d.ts +1 -0
- package/dist/types/puzzles/async/async-pg3d.d.ts +23 -6
- package/dist/types/puzzles/async/lazy-cached.d.ts +1 -0
- package/dist/types/puzzles/implementations/fto/index.d.ts +11 -2
- package/dist/types/puzzles/implementations/megaminx/index.d.ts +11 -2
- package/dist/types/puzzles/implementations/pyraminx/index.d.ts +7 -2
- package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
- package/dist/types/twisty/heavy-code-imports/3d.d.ts +1 -1
- package/dist/types/twisty/heavy-code-imports/dynamic-entries/{3d.d.ts → 3d-dynamic-inside.d.ts} +0 -0
- package/dist/types/twisty/index.d.ts +1 -2
- package/dist/types/twisty/model/props/puzzle/state/PuzzleAlgProp.d.ts +1 -0
- package/dist/types/twisty/views/3D/Twisty3DScene.d.ts +6 -5
- package/dist/types/twisty/views/3D/Twisty3DSceneWrapper.d.ts +2 -2
- package/dist/types/twisty/views/3D/TwistyOrbitControls.d.ts +2 -2
- package/dist/types/twisty/views/3D/puzzles/PG3D.d.ts +1 -0
- package/dist/types/twisty/views/TwistyPlayer.d.ts +2 -1
- package/dist/types/twisty/views/twizzle/TwizzleLink.css.d.ts +2 -0
- package/dist/types/twisty/views/twizzle/TwizzleLink.d.ts +9 -0
- package/dist/types/twisty/views/twizzle/url-params.d.ts +18 -0
- package/package.json +2 -1
- package/dist/esm/2x2x2.kpuzzle.json-U5KOZCMU.js.map +0 -7
- package/dist/esm/3d-NFF7OGTI.js +0 -21
- package/dist/esm/chunk-4IUYLRHT.js.map +0 -7
- package/dist/esm/chunk-J2U2GRS4.js.map +0 -7
- package/dist/esm/chunk-REMJV2GO.js.map +0 -7
- package/dist/esm/chunk-TB4D4E2W.js.map +0 -7
- package/dist/esm/chunk-TNRZDNGH.js.map +0 -7
- package/dist/esm/chunk-ZLIK3DZT.js.map +0 -7
- package/dist/esm/clock.kpuzzle.json-J3YBOI3G.js.map +0 -7
- package/dist/esm/entry-PHAJAE4E.js.map +0 -7
- package/dist/esm/scramble_444-F3YANDPO.js.map +0 -7
- package/dist/esm/skewb.sgs.json-T6CO36WU.js.map +0 -7
- package/dist/esm/sq1-hyperorbit.kpuzzle.json-AWDGN4ZW.js.map +0 -7
- package/dist/esm/worker-inside-generated-string-6YDSDSRJ.js.map +0 -7
- package/dist/types/.DS_Store +0 -0
- package/dist/types/puzzles/async/lazy-cached-kpuzzle.d.ts +0 -2
package/dist/esm/twisty/index.js
CHANGED
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Cube3D,
|
|
3
2
|
DEGREES_PER_RADIAN,
|
|
4
3
|
FreshListenerManager,
|
|
5
4
|
HintFaceletProp,
|
|
6
5
|
NO_VALUE,
|
|
7
|
-
PG3D,
|
|
8
6
|
SimpleTwistyPropSource,
|
|
9
7
|
StaleDropper,
|
|
10
8
|
StickeringProp,
|
|
9
|
+
THREEJS,
|
|
11
10
|
TwistyPropDerived,
|
|
12
11
|
TwistyPropSource,
|
|
13
|
-
|
|
14
|
-
} from "../chunk-
|
|
12
|
+
proxy3D
|
|
13
|
+
} from "../chunk-27MCV5LC.js";
|
|
15
14
|
import {
|
|
16
15
|
countAnimatedLeaves,
|
|
17
16
|
countMoves
|
|
18
|
-
} from "../chunk-
|
|
17
|
+
} from "../chunk-U2TSTTDG.js";
|
|
19
18
|
import {
|
|
20
19
|
cube3x3x3,
|
|
21
20
|
cubeAppearance,
|
|
22
21
|
customPGPuzzleLoader,
|
|
23
22
|
puzzles
|
|
24
|
-
} from "../chunk-
|
|
25
|
-
import "../chunk-
|
|
23
|
+
} from "../chunk-54HT7B4M.js";
|
|
24
|
+
import "../chunk-B27E6KTE.js";
|
|
26
25
|
import {
|
|
27
26
|
Alg,
|
|
28
27
|
AlgBuilder,
|
|
@@ -356,37 +355,6 @@ var ControlPanelProp = class extends SimpleTwistyPropSource {
|
|
|
356
355
|
}
|
|
357
356
|
};
|
|
358
357
|
|
|
359
|
-
// src/cubing/twisty/views/ClassListManager.ts
|
|
360
|
-
var _currentClassName;
|
|
361
|
-
var ClassListManager = class {
|
|
362
|
-
constructor(elem, prefix, validSuffixes) {
|
|
363
|
-
this.elem = elem;
|
|
364
|
-
this.prefix = prefix;
|
|
365
|
-
this.validSuffixes = validSuffixes;
|
|
366
|
-
__privateAdd(this, _currentClassName, null);
|
|
367
|
-
}
|
|
368
|
-
clearValue() {
|
|
369
|
-
if (__privateGet(this, _currentClassName)) {
|
|
370
|
-
this.elem.contentWrapper.classList.remove(__privateGet(this, _currentClassName));
|
|
371
|
-
}
|
|
372
|
-
__privateSet(this, _currentClassName, null);
|
|
373
|
-
}
|
|
374
|
-
setValue(suffix) {
|
|
375
|
-
if (!this.validSuffixes.includes(suffix)) {
|
|
376
|
-
throw new Error(`Invalid suffix: ${suffix}`);
|
|
377
|
-
}
|
|
378
|
-
const newClassName = `${this.prefix}${suffix}`;
|
|
379
|
-
const changed = __privateGet(this, _currentClassName) !== newClassName;
|
|
380
|
-
if (changed) {
|
|
381
|
-
this.clearValue();
|
|
382
|
-
this.elem.contentWrapper.classList.add(newClassName);
|
|
383
|
-
__privateSet(this, _currentClassName, newClassName);
|
|
384
|
-
}
|
|
385
|
-
return changed;
|
|
386
|
-
}
|
|
387
|
-
};
|
|
388
|
-
_currentClassName = new WeakMap();
|
|
389
|
-
|
|
390
358
|
// src/cubing/twisty/views/node-custom-element-shims.ts
|
|
391
359
|
var HTMLElementStub = class {
|
|
392
360
|
};
|
|
@@ -456,85 +424,6 @@ var ManagedCustomElement = class extends HTMLElementShim {
|
|
|
456
424
|
_cssSourceMap = new WeakMap();
|
|
457
425
|
customElementsShim.define("twisty-managed-custom-element", ManagedCustomElement);
|
|
458
426
|
|
|
459
|
-
// src/cubing/twisty/views/TwistyPlayer.css.ts
|
|
460
|
-
var twistyPlayerCSS = new CSSSource(`
|
|
461
|
-
:host {
|
|
462
|
-
width: 384px;
|
|
463
|
-
height: 256px;
|
|
464
|
-
display: grid;
|
|
465
|
-
|
|
466
|
-
-webkit-user-select: none;
|
|
467
|
-
user-select: none;
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
.wrapper {
|
|
471
|
-
display: grid;
|
|
472
|
-
overflow: hidden;
|
|
473
|
-
grid-template-rows: 7fr 1em 1fr;
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
.wrapper > * {
|
|
477
|
-
width: inherit;
|
|
478
|
-
height: inherit;
|
|
479
|
-
overflow: hidden;
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
.wrapper.controls-none {
|
|
483
|
-
grid-template-rows: 7fr;
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
.wrapper.controls-none twisty-scrubber,
|
|
487
|
-
.wrapper.controls-none twisty-control-button-panel ,
|
|
488
|
-
.wrapper.controls-none twisty-scrubber-v2,
|
|
489
|
-
.wrapper.controls-none twisty-buttons-v2 {
|
|
490
|
-
display: none;
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
twisty-scrubber {
|
|
494
|
-
background: rgba(196, 196, 196, 0.5);
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
.wrapper.checkered {
|
|
498
|
-
background-color: #EAEAEA;
|
|
499
|
-
background-image: linear-gradient(45deg, #DDD 25%, transparent 25%, transparent 75%, #DDD 75%, #DDD),
|
|
500
|
-
linear-gradient(45deg, #DDD 25%, transparent 25%, transparent 75%, #DDD 75%, #DDD);
|
|
501
|
-
background-size: 32px 32px;
|
|
502
|
-
background-position: 0 0, 16px 16px;
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
.visualization-wrapper > * {
|
|
506
|
-
width: 100%;
|
|
507
|
-
height: 100%;
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
.error-elem {
|
|
511
|
-
width: 100%;
|
|
512
|
-
height: 100%;
|
|
513
|
-
display: none;
|
|
514
|
-
place-content: center;
|
|
515
|
-
font-family: sans-serif;
|
|
516
|
-
box-shadow: inset 0 0 2em rgb(255, 0, 0);
|
|
517
|
-
color: red;
|
|
518
|
-
text-shadow: 0 0 0.2em white;
|
|
519
|
-
background: rgba(255, 255, 255, 0.25);
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
.wrapper.error .visualization-wrapper {
|
|
523
|
-
display: none;
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
.wrapper.error .error-elem {
|
|
527
|
-
display: grid;
|
|
528
|
-
}
|
|
529
|
-
`);
|
|
530
|
-
|
|
531
|
-
// src/cubing/twisty/heavy-code-imports/3d.ts
|
|
532
|
-
var cachedConstructorProxy = null;
|
|
533
|
-
async function proxy3D() {
|
|
534
|
-
return cachedConstructorProxy ?? (cachedConstructorProxy = import("../3d-NFF7OGTI.js"));
|
|
535
|
-
}
|
|
536
|
-
var THREEJS = from(async () => (await proxy3D()).T3I);
|
|
537
|
-
|
|
538
427
|
// src/cubing/twisty/views/TwistyViewerWrapper.css.ts
|
|
539
428
|
var twistyViewerWrapperCSS = new CSSSource(`
|
|
540
429
|
:host {
|
|
@@ -668,7 +557,7 @@ var KPuzzleSVGWrapper = class {
|
|
|
668
557
|
for (const orbitName in kpuzzle.definition.orbits) {
|
|
669
558
|
const orbitDefinition = kpuzzle.definition.orbits[orbitName];
|
|
670
559
|
for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {
|
|
671
|
-
for (let orientation = 0; orientation < orbitDefinition.
|
|
560
|
+
for (let orientation = 0; orientation < orbitDefinition.numOrientations; orientation++) {
|
|
672
561
|
const id = this.elementID(orbitName, idx, orientation);
|
|
673
562
|
const elem = this.elementByID(id);
|
|
674
563
|
let originalColor = elem.style.fill;
|
|
@@ -721,12 +610,12 @@ var KPuzzleSVGWrapper = class {
|
|
|
721
610
|
const curTransformationOrbit = transformation.transformationData[orbitName];
|
|
722
611
|
const nextTransformationOrbit = nextTransformation ? nextTransformation.transformationData[orbitName] : null;
|
|
723
612
|
for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {
|
|
724
|
-
for (let orientation = 0; orientation < orbitDefinition.
|
|
613
|
+
for (let orientation = 0; orientation < orbitDefinition.numOrientations; orientation++) {
|
|
725
614
|
const id = this.elementID(orbitName, idx, orientation);
|
|
726
|
-
const fromCur = this.elementID(orbitName, curTransformationOrbit.permutation[idx], (orbitDefinition.
|
|
615
|
+
const fromCur = this.elementID(orbitName, curTransformationOrbit.permutation[idx], (orbitDefinition.numOrientations - curTransformationOrbit.orientation[idx] + orientation) % orbitDefinition.numOrientations);
|
|
727
616
|
let singleColor = false;
|
|
728
617
|
if (nextTransformationOrbit) {
|
|
729
|
-
const fromNext = this.elementID(orbitName, nextTransformationOrbit.permutation[idx], (orbitDefinition.
|
|
618
|
+
const fromNext = this.elementID(orbitName, nextTransformationOrbit.permutation[idx], (orbitDefinition.numOrientations - nextTransformationOrbit.orientation[idx] + orientation) % orbitDefinition.numOrientations);
|
|
730
619
|
if (fromCur === fromNext) {
|
|
731
620
|
singleColor = true;
|
|
732
621
|
}
|
|
@@ -941,8 +830,36 @@ _cachedScene = new WeakMap();
|
|
|
941
830
|
_currentTwisty2DPuzzleWrapper = new WeakMap();
|
|
942
831
|
customElementsShim.define("twisty-2d-scene-wrapper", Twisty2DSceneWrapper);
|
|
943
832
|
|
|
944
|
-
// src/cubing/twisty/views/
|
|
945
|
-
|
|
833
|
+
// src/cubing/twisty/views/ClassListManager.ts
|
|
834
|
+
var _currentClassName;
|
|
835
|
+
var ClassListManager = class {
|
|
836
|
+
constructor(elem, prefix, validSuffixes) {
|
|
837
|
+
this.elem = elem;
|
|
838
|
+
this.prefix = prefix;
|
|
839
|
+
this.validSuffixes = validSuffixes;
|
|
840
|
+
__privateAdd(this, _currentClassName, null);
|
|
841
|
+
}
|
|
842
|
+
clearValue() {
|
|
843
|
+
if (__privateGet(this, _currentClassName)) {
|
|
844
|
+
this.elem.contentWrapper.classList.remove(__privateGet(this, _currentClassName));
|
|
845
|
+
}
|
|
846
|
+
__privateSet(this, _currentClassName, null);
|
|
847
|
+
}
|
|
848
|
+
setValue(suffix) {
|
|
849
|
+
if (!this.validSuffixes.includes(suffix)) {
|
|
850
|
+
throw new Error(`Invalid suffix: ${suffix}`);
|
|
851
|
+
}
|
|
852
|
+
const newClassName = `${this.prefix}${suffix}`;
|
|
853
|
+
const changed = __privateGet(this, _currentClassName) !== newClassName;
|
|
854
|
+
if (changed) {
|
|
855
|
+
this.clearValue();
|
|
856
|
+
this.elem.contentWrapper.classList.add(newClassName);
|
|
857
|
+
__privateSet(this, _currentClassName, newClassName);
|
|
858
|
+
}
|
|
859
|
+
return changed;
|
|
860
|
+
}
|
|
861
|
+
};
|
|
862
|
+
_currentClassName = new WeakMap();
|
|
946
863
|
|
|
947
864
|
// src/cubing/twisty/views/3D/Twisty3DPuzzleWrapper.ts
|
|
948
865
|
var _freshListenerManager4, _cachedTwisty3DPuzzle;
|
|
@@ -1045,7 +962,7 @@ var Twisty3DPuzzleWrapper = class {
|
|
|
1045
962
|
}
|
|
1046
963
|
async raycastMove(raycasterPromise, transformations) {
|
|
1047
964
|
const puzzle = await this.twisty3DPuzzle();
|
|
1048
|
-
if (!(
|
|
965
|
+
if (!("experimentalGetControlTargets" in puzzle)) {
|
|
1049
966
|
console.info("not PG3D! skipping raycast");
|
|
1050
967
|
return;
|
|
1051
968
|
}
|
|
@@ -1345,7 +1262,6 @@ async function newRenderer() {
|
|
|
1345
1262
|
}
|
|
1346
1263
|
|
|
1347
1264
|
// src/cubing/twisty/views/3D/TwistyOrbitControls.ts
|
|
1348
|
-
import { Spherical } from "three";
|
|
1349
1265
|
var INERTIA_DEFAULT = true;
|
|
1350
1266
|
var INERTIA_DURATION_MS = 500;
|
|
1351
1267
|
var INERTIA_TIMEOUT_MS = 50;
|
|
@@ -1707,7 +1623,7 @@ var Twisty3DSceneWrapper = class extends ManagedCustomElement {
|
|
|
1707
1623
|
THREEJS
|
|
1708
1624
|
]);
|
|
1709
1625
|
const raycaster = new three.Raycaster();
|
|
1710
|
-
const mouse = new Vector2(e.detail.pressInfo.normalizedX, e.detail.pressInfo.normalizedY);
|
|
1626
|
+
const mouse = new (await THREEJS).Vector2(e.detail.pressInfo.normalizedX, e.detail.pressInfo.normalizedY);
|
|
1711
1627
|
raycaster.setFromCamera(mouse, camera);
|
|
1712
1628
|
return raycaster;
|
|
1713
1629
|
})();
|
|
@@ -1740,11 +1656,14 @@ var Twisty3DSceneWrapper = class extends ManagedCustomElement {
|
|
|
1740
1656
|
}
|
|
1741
1657
|
async setCurrentTwisty3DPuzzleWrapper(scene, twisty3DPuzzleWrapper) {
|
|
1742
1658
|
const old = __privateGet(this, _currentTwisty3DPuzzleWrapper);
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1659
|
+
try {
|
|
1660
|
+
__privateSet(this, _currentTwisty3DPuzzleWrapper, twisty3DPuzzleWrapper);
|
|
1661
|
+
old?.disconnect();
|
|
1662
|
+
scene.add(await twisty3DPuzzleWrapper.twisty3DPuzzle());
|
|
1663
|
+
} finally {
|
|
1664
|
+
if (old) {
|
|
1665
|
+
scene.remove(await old.twisty3DPuzzle());
|
|
1666
|
+
}
|
|
1748
1667
|
}
|
|
1749
1668
|
}
|
|
1750
1669
|
async onPuzzle(inputs) {
|
|
@@ -2135,12 +2054,14 @@ input {
|
|
|
2135
2054
|
var SLOW_DOWN_SCRUBBING = false;
|
|
2136
2055
|
var isMouseDown = false;
|
|
2137
2056
|
globalSafeDocument?.addEventListener("mousedown", function(event) {
|
|
2138
|
-
if (event.which)
|
|
2057
|
+
if (event.which) {
|
|
2139
2058
|
isMouseDown = true;
|
|
2059
|
+
}
|
|
2140
2060
|
}, true);
|
|
2141
2061
|
globalSafeDocument?.addEventListener("mouseup", function(event) {
|
|
2142
|
-
if (event.which)
|
|
2062
|
+
if (event.which) {
|
|
2143
2063
|
isMouseDown = false;
|
|
2064
|
+
}
|
|
2144
2065
|
}, true);
|
|
2145
2066
|
var y = 0;
|
|
2146
2067
|
var clickNum = 0;
|
|
@@ -2230,7 +2151,6 @@ _inputElem = new WeakMap();
|
|
|
2230
2151
|
customElementsShim.define("twisty-scrubber-v2", TwistyScrubberV2);
|
|
2231
2152
|
|
|
2232
2153
|
// src/cubing/twisty/views/screenshot.ts
|
|
2233
|
-
import { WebGLRenderer } from "three";
|
|
2234
2154
|
var cachedCamera = null;
|
|
2235
2155
|
async function screenshot(model, options) {
|
|
2236
2156
|
const width = options?.width ?? 2048;
|
|
@@ -2248,7 +2168,7 @@ async function screenshot(model, options) {
|
|
|
2248
2168
|
scene.add(await twisty3DWrapper.twisty3DPuzzle());
|
|
2249
2169
|
const orbitCoordinates = await model.orbitCoordinatesProp.get();
|
|
2250
2170
|
await setCameraFromOrbitCoordinates(camera, orbitCoordinates);
|
|
2251
|
-
const renderer = new WebGLRenderer({
|
|
2171
|
+
const renderer = new (await THREEJS).WebGLRenderer({
|
|
2252
2172
|
antialias: true,
|
|
2253
2173
|
alpha: true
|
|
2254
2174
|
});
|
|
@@ -2277,6 +2197,78 @@ function downloadURL(url, name, extension = "png") {
|
|
|
2277
2197
|
a.click();
|
|
2278
2198
|
}
|
|
2279
2199
|
|
|
2200
|
+
// src/cubing/twisty/views/TwistyPlayer.css.ts
|
|
2201
|
+
var twistyPlayerCSS = new CSSSource(`
|
|
2202
|
+
:host {
|
|
2203
|
+
width: 384px;
|
|
2204
|
+
height: 256px;
|
|
2205
|
+
display: grid;
|
|
2206
|
+
|
|
2207
|
+
-webkit-user-select: none;
|
|
2208
|
+
user-select: none;
|
|
2209
|
+
}
|
|
2210
|
+
|
|
2211
|
+
.wrapper {
|
|
2212
|
+
display: grid;
|
|
2213
|
+
overflow: hidden;
|
|
2214
|
+
grid-template-rows: 7fr 1em 1fr;
|
|
2215
|
+
}
|
|
2216
|
+
|
|
2217
|
+
.wrapper > * {
|
|
2218
|
+
width: inherit;
|
|
2219
|
+
height: inherit;
|
|
2220
|
+
overflow: hidden;
|
|
2221
|
+
}
|
|
2222
|
+
|
|
2223
|
+
.wrapper.controls-none {
|
|
2224
|
+
grid-template-rows: 7fr;
|
|
2225
|
+
}
|
|
2226
|
+
|
|
2227
|
+
.wrapper.controls-none twisty-scrubber,
|
|
2228
|
+
.wrapper.controls-none twisty-control-button-panel ,
|
|
2229
|
+
.wrapper.controls-none twisty-scrubber-v2,
|
|
2230
|
+
.wrapper.controls-none twisty-buttons-v2 {
|
|
2231
|
+
display: none;
|
|
2232
|
+
}
|
|
2233
|
+
|
|
2234
|
+
twisty-scrubber {
|
|
2235
|
+
background: rgba(196, 196, 196, 0.5);
|
|
2236
|
+
}
|
|
2237
|
+
|
|
2238
|
+
.wrapper.checkered {
|
|
2239
|
+
background-color: #EAEAEA;
|
|
2240
|
+
background-image: linear-gradient(45deg, #DDD 25%, transparent 25%, transparent 75%, #DDD 75%, #DDD),
|
|
2241
|
+
linear-gradient(45deg, #DDD 25%, transparent 25%, transparent 75%, #DDD 75%, #DDD);
|
|
2242
|
+
background-size: 32px 32px;
|
|
2243
|
+
background-position: 0 0, 16px 16px;
|
|
2244
|
+
}
|
|
2245
|
+
|
|
2246
|
+
.visualization-wrapper > * {
|
|
2247
|
+
width: 100%;
|
|
2248
|
+
height: 100%;
|
|
2249
|
+
}
|
|
2250
|
+
|
|
2251
|
+
.error-elem {
|
|
2252
|
+
width: 100%;
|
|
2253
|
+
height: 100%;
|
|
2254
|
+
display: none;
|
|
2255
|
+
place-content: center;
|
|
2256
|
+
font-family: sans-serif;
|
|
2257
|
+
box-shadow: inset 0 0 2em rgb(255, 0, 0);
|
|
2258
|
+
color: red;
|
|
2259
|
+
text-shadow: 0 0 0.2em white;
|
|
2260
|
+
background: rgba(255, 255, 255, 0.25);
|
|
2261
|
+
}
|
|
2262
|
+
|
|
2263
|
+
.wrapper.error .visualization-wrapper {
|
|
2264
|
+
display: none;
|
|
2265
|
+
}
|
|
2266
|
+
|
|
2267
|
+
.wrapper.error .error-elem {
|
|
2268
|
+
display: grid;
|
|
2269
|
+
}
|
|
2270
|
+
`);
|
|
2271
|
+
|
|
2280
2272
|
// src/cubing/twisty/model/props/puzzle/state/AlgProp.ts
|
|
2281
2273
|
var AlgIssues = class {
|
|
2282
2274
|
constructor(issues) {
|
|
@@ -2789,8 +2781,9 @@ var LocalSimulMoves = class extends TraversalUp {
|
|
|
2789
2781
|
return [];
|
|
2790
2782
|
}
|
|
2791
2783
|
for (const unit of alg.units()) {
|
|
2792
|
-
if (!unit.is(Move))
|
|
2784
|
+
if (!unit.is(Move)) {
|
|
2793
2785
|
return this.traverseAlg(alg);
|
|
2786
|
+
}
|
|
2794
2787
|
}
|
|
2795
2788
|
const moves = Array.from(alg.units());
|
|
2796
2789
|
let maxSimulDur = defaultDurationForAmount(moves[0].amount);
|
|
@@ -3446,10 +3439,13 @@ var IndexerConstructorProp = class extends TwistyPropDerived {
|
|
|
3446
3439
|
};
|
|
3447
3440
|
|
|
3448
3441
|
// src/cubing/twisty/model/props/puzzle/state/PuzzleAlgProp.ts
|
|
3442
|
+
var validate = true;
|
|
3449
3443
|
var PuzzleAlgProp = class extends TwistyPropDerived {
|
|
3450
3444
|
async derive(inputs) {
|
|
3451
3445
|
try {
|
|
3452
|
-
|
|
3446
|
+
if (validate) {
|
|
3447
|
+
inputs.kpuzzle.algToTransformation(inputs.algWithIssues.alg);
|
|
3448
|
+
}
|
|
3453
3449
|
return inputs.algWithIssues;
|
|
3454
3450
|
} catch (e) {
|
|
3455
3451
|
return {
|
|
@@ -5022,16 +5018,148 @@ padSuffix_fn = function(s) {
|
|
|
5022
5018
|
};
|
|
5023
5019
|
_highlightedLeaf = new WeakMap();
|
|
5024
5020
|
customElementsShim.define("twisty-alg-editor", TwistyAlgEditor);
|
|
5021
|
+
|
|
5022
|
+
// src/cubing/twisty/views/twizzle/TwizzleLink.css.ts
|
|
5023
|
+
var twizzleLinkCSS = new CSSSource(`
|
|
5024
|
+
.wrapper {
|
|
5025
|
+
background: rgb(255, 245, 235);
|
|
5026
|
+
display: grid;
|
|
5027
|
+
grid-template-columns: 1fr;
|
|
5028
|
+
border: 1px solid rgba(0, 0, 0, 0.25);
|
|
5029
|
+
}
|
|
5030
|
+
|
|
5031
|
+
.setup-alg, twisty-alg-viewer {
|
|
5032
|
+
padding: 0.5em 1em;
|
|
5033
|
+
}
|
|
5034
|
+
|
|
5035
|
+
.heading {
|
|
5036
|
+
background: rgba(255, 230, 210, 1);
|
|
5037
|
+
font-weight: bold;
|
|
5038
|
+
padding: 0.25em 0.5em;
|
|
5039
|
+
}
|
|
5040
|
+
|
|
5041
|
+
twisty-player {
|
|
5042
|
+
width: 100%;
|
|
5043
|
+
}
|
|
5044
|
+
|
|
5045
|
+
twisty-player + .heading {
|
|
5046
|
+
padding-top: 0.5em;
|
|
5047
|
+
}
|
|
5048
|
+
`);
|
|
5049
|
+
|
|
5050
|
+
// src/cubing/twisty/views/twizzle/url-params.ts
|
|
5051
|
+
function updateURL(url) {
|
|
5052
|
+
window.history.replaceState("", "", url.toString());
|
|
5053
|
+
}
|
|
5054
|
+
var _prefix;
|
|
5055
|
+
var URLParamUpdater = class {
|
|
5056
|
+
constructor(model, options) {
|
|
5057
|
+
__privateAdd(this, _prefix, void 0);
|
|
5058
|
+
__privateSet(this, _prefix, options?.prefix ?? "");
|
|
5059
|
+
this.listenToAlgProp(model.algProp, "alg");
|
|
5060
|
+
this.listenToAlgProp(model.setupProp, "setup-alg");
|
|
5061
|
+
this.listenToStringSourceProp(model.stickeringProp, "stickering");
|
|
5062
|
+
this.listenToStringSourceProp(model.setupAnchorProp, "setup-anchor");
|
|
5063
|
+
this.listenToStringOrNoValueProp(model.puzzleIDRequestProp, "puzzle", NO_VALUE);
|
|
5064
|
+
this.listenToStringOrNoValueProp(model.puzzleDescriptionRequestProp, "puzzle-description", NO_VALUE);
|
|
5065
|
+
}
|
|
5066
|
+
setURLParam(unprefixedKey, value, defaultString) {
|
|
5067
|
+
const prefixedKey = __privateGet(this, _prefix) + unprefixedKey;
|
|
5068
|
+
const url = new URL(location.href);
|
|
5069
|
+
if (value === defaultString) {
|
|
5070
|
+
url.searchParams.delete(prefixedKey);
|
|
5071
|
+
} else {
|
|
5072
|
+
url.searchParams.set(prefixedKey, value);
|
|
5073
|
+
}
|
|
5074
|
+
updateURL(url);
|
|
5075
|
+
}
|
|
5076
|
+
async listenToStringSourceProp(prop, key, defaultString) {
|
|
5077
|
+
const actualDefaultString = defaultString ?? await prop.getDefaultValue();
|
|
5078
|
+
prop.addFreshListener((s) => {
|
|
5079
|
+
this.setURLParam(key, s, actualDefaultString);
|
|
5080
|
+
});
|
|
5081
|
+
}
|
|
5082
|
+
async listenToStringOrNoValueProp(prop, key, defaultString) {
|
|
5083
|
+
prop.addFreshListener((s) => {
|
|
5084
|
+
if (s === NO_VALUE) {
|
|
5085
|
+
s = defaultString;
|
|
5086
|
+
}
|
|
5087
|
+
if (s === NO_VALUE) {
|
|
5088
|
+
this.setURLParam(key, "", "");
|
|
5089
|
+
} else {
|
|
5090
|
+
this.setURLParam(key, s, "");
|
|
5091
|
+
}
|
|
5092
|
+
});
|
|
5093
|
+
}
|
|
5094
|
+
listenToAlgProp(prop, key) {
|
|
5095
|
+
prop.addFreshListener((algWithIssues) => {
|
|
5096
|
+
this.setURLParam(key, algWithIssues.alg.toString(), "");
|
|
5097
|
+
});
|
|
5098
|
+
}
|
|
5099
|
+
};
|
|
5100
|
+
_prefix = new WeakMap();
|
|
5101
|
+
function getConfigFromURL(prefix = "", url = location.href) {
|
|
5102
|
+
const paramMapping = {
|
|
5103
|
+
"alg": "alg",
|
|
5104
|
+
"setup-alg": "experimental-setup-alg",
|
|
5105
|
+
"setup-anchor": "experimental-setup-anchor",
|
|
5106
|
+
"puzzle": "puzzle",
|
|
5107
|
+
"stickering": "experimental-stickering",
|
|
5108
|
+
"puzzle-description": "experimental-puzzle-description"
|
|
5109
|
+
};
|
|
5110
|
+
const params = new URL(url).searchParams;
|
|
5111
|
+
const config = {};
|
|
5112
|
+
console.log(paramMapping);
|
|
5113
|
+
for (const [ourParam, twistyPlayerParam] of Object.entries(paramMapping)) {
|
|
5114
|
+
const paramValue = params.get(prefix + ourParam);
|
|
5115
|
+
if (paramValue !== null) {
|
|
5116
|
+
const configKey = twistyPlayerAttributeMap[twistyPlayerParam];
|
|
5117
|
+
config[configKey] = paramValue;
|
|
5118
|
+
}
|
|
5119
|
+
}
|
|
5120
|
+
return config;
|
|
5121
|
+
}
|
|
5122
|
+
|
|
5123
|
+
// src/cubing/twisty/views/twizzle/TwizzleLink.ts
|
|
5124
|
+
var TwizzleLink = class extends ManagedCustomElement {
|
|
5125
|
+
constructor() {
|
|
5126
|
+
super({ mode: "open" });
|
|
5127
|
+
this.twistyPlayer = null;
|
|
5128
|
+
this.a = null;
|
|
5129
|
+
}
|
|
5130
|
+
connectedCallback() {
|
|
5131
|
+
this.addCSS(twizzleLinkCSS);
|
|
5132
|
+
this.a = this.querySelector("a");
|
|
5133
|
+
if (this.a) {
|
|
5134
|
+
const config = getConfigFromURL("", this.a.href);
|
|
5135
|
+
this.twistyPlayer = this.addElement(new TwistyPlayer(config));
|
|
5136
|
+
if (config.experimentalSetupAlg) {
|
|
5137
|
+
this.addHeading("Setup");
|
|
5138
|
+
const setupAlgDiv = this.addElement(document.createElement("div"));
|
|
5139
|
+
setupAlgDiv.classList.add("setup-alg");
|
|
5140
|
+
setupAlgDiv.textContent = new Alg(config.experimentalSetupAlg).toString();
|
|
5141
|
+
}
|
|
5142
|
+
this.addHeading("Moves");
|
|
5143
|
+
const twistyAlgViewer = this.addElement(new TwistyAlgViewer({ twistyPlayer: this.twistyPlayer }));
|
|
5144
|
+
twistyAlgViewer.part.add("twisty-alg-viewer");
|
|
5145
|
+
}
|
|
5146
|
+
}
|
|
5147
|
+
addHeading(text) {
|
|
5148
|
+
const headingDiv = this.addElement(document.createElement("div"));
|
|
5149
|
+
headingDiv.classList.add("heading");
|
|
5150
|
+
headingDiv.textContent = text;
|
|
5151
|
+
}
|
|
5152
|
+
};
|
|
5153
|
+
customElementsShim.define("twizzle-link", TwizzleLink);
|
|
5025
5154
|
export {
|
|
5026
|
-
Cube3D,
|
|
5027
5155
|
NO_VALUE as EXPERIMENTAL_PROP_NO_VALUE,
|
|
5028
5156
|
KPuzzleSVGWrapper as ExperimentalKPuzzleSVGWrapper,
|
|
5029
|
-
PG3D,
|
|
5030
5157
|
SimpleAlgIndexer,
|
|
5031
5158
|
TreeAlgIndexer,
|
|
5032
5159
|
TwistyAlgEditor,
|
|
5033
5160
|
TwistyAlgViewer,
|
|
5034
5161
|
TwistyPlayer,
|
|
5162
|
+
TwizzleLink,
|
|
5035
5163
|
backViewLayouts,
|
|
5036
5164
|
debugShowRenderStats as experimentalDebugShowRenderStats,
|
|
5037
5165
|
experimentalForceNewRendererSharing
|