cubing 0.47.1 → 0.48.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.
Files changed (41) hide show
  1. package/dist/lib/cubing/{TwizzleLink.d-Xe45r92P.d.ts → TwizzleLink.d-97ef04xr.d.ts} +1 -0
  2. package/dist/lib/cubing/bluetooth/index.js +3 -3
  3. package/dist/lib/cubing/chunks/{chunk-ZQ3THAI5.js → chunk-6P7J74PX.js} +8 -8
  4. package/dist/lib/cubing/chunks/{chunk-TQNDCG5W.js → chunk-GZV6D4HL.js} +2 -2
  5. package/dist/lib/cubing/chunks/{chunk-OJEAX4NL.js → chunk-JISTVUPJ.js} +3 -3
  6. package/dist/lib/cubing/chunks/{chunk-N6THLDFR.js → chunk-K7335MAG.js} +2 -2
  7. package/dist/lib/cubing/chunks/{chunk-OGQNFZM2.js → chunk-M52K5JNF.js} +90 -72
  8. package/dist/lib/cubing/chunks/{chunk-OGQNFZM2.js.map → chunk-M52K5JNF.js.map} +3 -3
  9. package/dist/lib/cubing/chunks/{chunk-44CBFEXI.js → chunk-S3SMCJ2Q.js} +1 -1
  10. package/dist/lib/cubing/chunks/{chunk-DEKQBOQ7.js → chunk-U4JLWFNS.js} +19 -1
  11. package/dist/lib/cubing/chunks/chunk-U4JLWFNS.js.map +7 -0
  12. package/dist/lib/cubing/chunks/{inside-KOB7JHHP.js → inside-EKCXLHV5.js} +5 -5
  13. package/dist/lib/cubing/chunks/{puzzles-dynamic-side-events-FJHPJOLC.js → puzzles-dynamic-side-events-QIADTLKJ.js} +586 -46
  14. package/dist/lib/cubing/chunks/{puzzles-dynamic-side-events-FJHPJOLC.js.map → puzzles-dynamic-side-events-QIADTLKJ.js.map} +3 -3
  15. package/dist/lib/cubing/chunks/{search-dynamic-sgs-side-events-PAMLOZFW.js → search-dynamic-sgs-side-events-TV6HT26E.js} +3 -3
  16. package/dist/lib/cubing/chunks/{search-dynamic-sgs-unofficial-3Q5EC27G.js → search-dynamic-sgs-unofficial-HAXSGKV7.js} +3 -3
  17. package/dist/lib/cubing/chunks/{search-dynamic-solve-4x4x4-NLEVMG3O.js → search-dynamic-solve-4x4x4-4HG4AFW2.js} +6 -6
  18. package/dist/lib/cubing/chunks/search-worker-entry.js +1 -1
  19. package/dist/lib/cubing/chunks/{twisty-dynamic-3d-SX2VQRB5.js → twisty-dynamic-3d-A23ABL4R.js} +5 -5
  20. package/dist/lib/cubing/chunks/{twisty-dynamic-3d-SX2VQRB5.js.map → twisty-dynamic-3d-A23ABL4R.js.map} +2 -2
  21. package/dist/lib/cubing/notation/index.d.ts +1 -1
  22. package/dist/lib/cubing/notation/index.js +2 -2
  23. package/dist/lib/cubing/protocol/index.js +2 -2
  24. package/dist/lib/cubing/puzzles/index.d.ts +1 -1
  25. package/dist/lib/cubing/puzzles/index.js +2 -2
  26. package/dist/lib/cubing/scramble/index.js +5 -5
  27. package/dist/lib/cubing/search/index.js +5 -5
  28. package/dist/lib/cubing/twisty/index.d.ts +2 -2
  29. package/dist/lib/cubing/twisty/index.js +5 -4
  30. package/dist/lib/cubing/twisty/index.js.map +2 -2
  31. package/package.json +4 -6
  32. package/dist/lib/cubing/chunks/chunk-DEKQBOQ7.js.map +0 -7
  33. /package/dist/lib/cubing/chunks/{chunk-ZQ3THAI5.js.map → chunk-6P7J74PX.js.map} +0 -0
  34. /package/dist/lib/cubing/chunks/{chunk-TQNDCG5W.js.map → chunk-GZV6D4HL.js.map} +0 -0
  35. /package/dist/lib/cubing/chunks/{chunk-OJEAX4NL.js.map → chunk-JISTVUPJ.js.map} +0 -0
  36. /package/dist/lib/cubing/chunks/{chunk-N6THLDFR.js.map → chunk-K7335MAG.js.map} +0 -0
  37. /package/dist/lib/cubing/chunks/{chunk-44CBFEXI.js.map → chunk-S3SMCJ2Q.js.map} +0 -0
  38. /package/dist/lib/cubing/chunks/{inside-KOB7JHHP.js.map → inside-EKCXLHV5.js.map} +0 -0
  39. /package/dist/lib/cubing/chunks/{search-dynamic-sgs-side-events-PAMLOZFW.js.map → search-dynamic-sgs-side-events-TV6HT26E.js.map} +0 -0
  40. /package/dist/lib/cubing/chunks/{search-dynamic-sgs-unofficial-3Q5EC27G.js.map → search-dynamic-sgs-unofficial-HAXSGKV7.js.map} +0 -0
  41. /package/dist/lib/cubing/chunks/{search-dynamic-solve-4x4x4-NLEVMG3O.js.map → search-dynamic-solve-4x4x4-4HG4AFW2.js.map} +0 -0
@@ -347,6 +347,7 @@ declare const puzzleIDs: {
347
347
  kilominx: boolean;
348
348
  redi_cube: boolean;
349
349
  melindas2x2x2x2: boolean;
350
+ tri_quad: boolean;
350
351
  loopover: boolean;
351
352
  };
352
353
  type PuzzleID = keyof typeof puzzleIDs;
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  binaryComponentsToReid3x3x3,
3
3
  twizzleBinaryToBinaryComponents
4
- } from "../chunks/chunk-N6THLDFR.js";
4
+ } from "../chunks/chunk-K7335MAG.js";
5
5
  import {
6
6
  cube3x3x3,
7
7
  puzzles
8
- } from "../chunks/chunk-OGQNFZM2.js";
8
+ } from "../chunks/chunk-M52K5JNF.js";
9
9
  import {
10
10
  experimental3x3x3KPuzzle
11
- } from "../chunks/chunk-DEKQBOQ7.js";
11
+ } from "../chunks/chunk-U4JLWFNS.js";
12
12
  import {
13
13
  KPattern
14
14
  } from "../chunks/chunk-YB6VZREV.js";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  countMoves
3
- } from "./chunk-TQNDCG5W.js";
3
+ } from "./chunk-GZV6D4HL.js";
4
4
  import {
5
5
  cube2x2x2,
6
6
  puzzles
7
- } from "./chunk-OGQNFZM2.js";
7
+ } from "./chunk-M52K5JNF.js";
8
8
  import {
9
9
  from
10
- } from "./chunk-DEKQBOQ7.js";
10
+ } from "./chunk-U4JLWFNS.js";
11
11
  import {
12
12
  KPattern,
13
13
  KPuzzle
@@ -740,7 +740,7 @@ function randomPatternFromSGS(kpuzzle, sgs) {
740
740
  }
741
741
 
742
742
  // src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/index.ts
743
- var searchDynamicSideEvents = from(() => import("./search-dynamic-sgs-side-events-PAMLOZFW.js"));
743
+ var searchDynamicSideEvents = from(() => import("./search-dynamic-sgs-side-events-TV6HT26E.js"));
744
744
 
745
745
  // src/cubing/search/inside/solve/twsearch.ts
746
746
  var twsearchPromise = from(async () => import("./twsearch-QLSDT3QA.js"));
@@ -778,7 +778,7 @@ async function solve222HTMSubOptimal(pattern, maxDepth = 11) {
778
778
  }
779
779
 
780
780
  // src/cubing/search/inside/solve/puzzles/dynamic/4x4x4/index.ts
781
- var dynamic4x4x4Solver = from(() => import("./search-dynamic-solve-4x4x4-NLEVMG3O.js"));
781
+ var dynamic4x4x4Solver = from(() => import("./search-dynamic-solve-4x4x4-4HG4AFW2.js"));
782
782
 
783
783
  // src/cubing/search/inside/solve/puzzles/4x4x4.ts
784
784
  var randomSuffixes2 = [
@@ -800,7 +800,7 @@ async function random444OrientedScramble() {
800
800
  var dynamicFTOSolver = from(() => import("./search-dynamic-solve-fto-EY5ZVAGO.js"));
801
801
 
802
802
  // src/cubing/search/inside/solve/puzzles/fto.ts
803
- var dynamic = from(() => import("./search-dynamic-sgs-unofficial-3Q5EC27G.js"));
803
+ var dynamic = from(() => import("./search-dynamic-sgs-unofficial-HAXSGKV7.js"));
804
804
  async function randomFTOScramble() {
805
805
  mustBeInsideWorker();
806
806
  return new Alg(await (await dynamicFTOSolver).randomFTOScrambleString());
@@ -880,7 +880,7 @@ async function solvePyraminx(pattern) {
880
880
  }
881
881
 
882
882
  // src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/index.ts
883
- var searchDynamicUnofficial = from(() => import("./search-dynamic-sgs-unofficial-3Q5EC27G.js"));
883
+ var searchDynamicUnofficial = from(() => import("./search-dynamic-sgs-unofficial-HAXSGKV7.js"));
884
884
 
885
885
  // src/cubing/search/inside/solve/puzzles/redi_cube.ts
886
886
  async function randomRediCubeScramble() {
@@ -1131,4 +1131,4 @@ export {
1131
1131
  random333Scramble,
1132
1132
  insideAPI
1133
1133
  };
1134
- //# sourceMappingURL=chunk-ZQ3THAI5.js.map
1134
+ //# sourceMappingURL=chunk-6P7J74PX.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cube3x3x3KPuzzleDefinition
3
- } from "./chunk-DEKQBOQ7.js";
3
+ } from "./chunk-U4JLWFNS.js";
4
4
  import {
5
5
  TraversalUp,
6
6
  functionFromTraversal
@@ -232,4 +232,4 @@ export {
232
232
  countMetricMoves,
233
233
  countAnimatedLeaves
234
234
  };
235
- //# sourceMappingURL=chunk-TQNDCG5W.js.map
235
+ //# sourceMappingURL=chunk-GZV6D4HL.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  from
3
- } from "./chunk-DEKQBOQ7.js";
3
+ } from "./chunk-U4JLWFNS.js";
4
4
 
5
5
  // src/cubing/twisty/debug.ts
6
6
  var twistyDebugGlobals = {
@@ -527,7 +527,7 @@ var StatsPanel = class {
527
527
  // src/cubing/twisty/heavy-code-imports/3d.ts
528
528
  var cachedConstructorProxy = null;
529
529
  async function proxy3D() {
530
- return cachedConstructorProxy ??= import("./twisty-dynamic-3d-SX2VQRB5.js");
530
+ return cachedConstructorProxy ??= import("./twisty-dynamic-3d-A23ABL4R.js");
531
531
  }
532
532
  var THREEJS = from(
533
533
  async () => (await proxy3D()).T3I
@@ -1155,4 +1155,4 @@ export {
1155
1155
  proxy3D,
1156
1156
  THREEJS
1157
1157
  };
1158
- //# sourceMappingURL=chunk-OJEAX4NL.js.map
1158
+ //# sourceMappingURL=chunk-JISTVUPJ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  normalize3x3x3Orientation,
4
4
  puzzleOrientation3x3x3Cache,
5
5
  puzzleOrientation3x3x3Idx
6
- } from "./chunk-DEKQBOQ7.js";
6
+ } from "./chunk-U4JLWFNS.js";
7
7
  import {
8
8
  KPattern
9
9
  } from "./chunk-YB6VZREV.js";
@@ -262,4 +262,4 @@ export {
262
262
  bufferToSpacedHex,
263
263
  spacedHexToBuffer
264
264
  };
265
- //# sourceMappingURL=chunk-N6THLDFR.js.map
265
+ //# sourceMappingURL=chunk-K7335MAG.js.map
@@ -11,7 +11,7 @@ import {
11
11
  experimental3x3x3KPuzzle,
12
12
  from,
13
13
  getCached
14
- } from "./chunk-DEKQBOQ7.js";
14
+ } from "./chunk-U4JLWFNS.js";
15
15
  import {
16
16
  KPuzzle
17
17
  } from "./chunk-YB6VZREV.js";
@@ -73,12 +73,12 @@ var cube2x2x2 = {
73
73
  fullName: "2\xD72\xD72 Cube",
74
74
  kpuzzle: getCached(
75
75
  async () => new KPuzzle(
76
- (await import("./puzzles-dynamic-side-events-FJHPJOLC.js")).cube2x2x2JSON
76
+ (await import("./puzzles-dynamic-side-events-QIADTLKJ.js")).cube2x2x2JSON
77
77
  )
78
78
  ),
79
- svg: async () => (await import("./puzzles-dynamic-side-events-FJHPJOLC.js")).cube2x2x2SVG,
79
+ svg: async () => (await import("./puzzles-dynamic-side-events-QIADTLKJ.js")).cube2x2x2SVG,
80
80
  llSVG: getCached(
81
- async () => (await import("./puzzles-dynamic-side-events-FJHPJOLC.js")).cube2x2x2LLSVG
81
+ async () => (await import("./puzzles-dynamic-side-events-QIADTLKJ.js")).cube2x2x2LLSVG
82
82
  ),
83
83
  pg: getCached(async () => {
84
84
  return asyncGetPuzzleGeometry("2x2x2");
@@ -340,6 +340,15 @@ var cube3x3x3 = {
340
340
  puzzleSpecificSimplifyOptions: puzzleSpecificSimplifyOptions333
341
341
  };
342
342
 
343
+ // src/cubing/puzzles/implementations/4x4x4/index.ts
344
+ var cube4x4x4 = new CubePGPuzzleLoader({
345
+ id: "4x4x4",
346
+ fullName: "4\xD74\xD74 Cube"
347
+ });
348
+ cube4x4x4.llSVG = getCached(async () => {
349
+ return (await import("./puzzles-dynamic-4x4x4-REUXFQJ4.js")).cube4x4x4LLSVG;
350
+ });
351
+
343
352
  // src/cubing/puzzles/implementations/clock/index.ts
344
353
  var clock = {
345
354
  id: "clock",
@@ -349,11 +358,11 @@ var clock = {
349
358
  // Patent application year: https://www.jaapsch.net/puzzles/patents/us4869506.pdf
350
359
  kpuzzle: getCached(
351
360
  async () => new KPuzzle(
352
- (await import("./puzzles-dynamic-side-events-FJHPJOLC.js")).clockJSON
361
+ (await import("./puzzles-dynamic-side-events-QIADTLKJ.js")).clockJSON
353
362
  )
354
363
  ),
355
364
  svg: getCached(async () => {
356
- return (await import("./puzzles-dynamic-side-events-FJHPJOLC.js")).clockSVG;
365
+ return (await import("./puzzles-dynamic-side-events-QIADTLKJ.js")).clockSVG;
357
366
  })
358
367
  };
359
368
 
@@ -472,6 +481,42 @@ var FTOPuzzleLoader = class extends PGPuzzleLoader {
472
481
  };
473
482
  var fto = new FTOPuzzleLoader();
474
483
 
484
+ // src/cubing/puzzles/implementations/kilominx/index.ts
485
+ var KILOMINX_PUZZLE_DESCRIPTION = "d f 0.56";
486
+ var kilominx = {
487
+ id: "kilominx",
488
+ fullName: "Kilominx",
489
+ kpuzzle: getCached(
490
+ () => asyncGetKPuzzleByDesc(KILOMINX_PUZZLE_DESCRIPTION, {
491
+ includeCenterOrbits: false,
492
+ includeEdgeOrbits: false
493
+ })
494
+ ),
495
+ pg: () => descAsyncGetPuzzleGeometry(KILOMINX_PUZZLE_DESCRIPTION, {
496
+ includeCenterOrbits: false,
497
+ includeEdgeOrbits: false
498
+ }),
499
+ svg: getCached(async () => {
500
+ return (await import("./puzzles-dynamic-unofficial-EE5FDJ3S.js")).kilominxSVG;
501
+ })
502
+ };
503
+
504
+ // src/cubing/puzzles/implementations/loopover/index.ts
505
+ var loopover = {
506
+ id: "loopover",
507
+ fullName: "Loopover",
508
+ inventedBy: ["Cary Huang"],
509
+ inventionYear: 2018,
510
+ kpuzzle: getCached(
511
+ async () => new KPuzzle(
512
+ (await import("./puzzles-dynamic-unofficial-EE5FDJ3S.js")).loopoverJSON
513
+ )
514
+ ),
515
+ svg: async () => {
516
+ return (await import("./puzzles-dynamic-unofficial-EE5FDJ3S.js")).loopoverSVG;
517
+ }
518
+ };
519
+
475
520
  // src/cubing/puzzles/stickerings/megaminx-stickerings.ts
476
521
  async function megaminxStickeringMask(puzzleLoader, stickering) {
477
522
  if ((await megaminxStickerings()).includes(stickering)) {
@@ -510,6 +555,22 @@ var MegaminxPuzzleLoader = class extends PGPuzzleLoader {
510
555
  };
511
556
  var megaminx = new MegaminxPuzzleLoader();
512
557
 
558
+ // src/cubing/puzzles/implementations/melindas2x2x2x2/index.ts
559
+ var melindas2x2x2x2 = {
560
+ id: "melindas2x2x2x2",
561
+ fullName: "Melinda's 2\xD72\xD72\xD72",
562
+ inventedBy: ["Melinda Green"],
563
+ // inventionYear: 20__, // TODO
564
+ kpuzzle: getCached(
565
+ async () => new KPuzzle(
566
+ (await import("./puzzles-dynamic-side-events-QIADTLKJ.js")).melindas2x2x2x2OrbitJSON
567
+ )
568
+ ),
569
+ svg: getCached(async () => {
570
+ return (await import("./puzzles-dynamic-side-events-QIADTLKJ.js")).melindas2x2x2x2OrbitSVG;
571
+ })
572
+ };
573
+
513
574
  // src/cubing/puzzles/implementations/pyraminx/index.ts
514
575
  var PyraminxPuzzleLoader = class extends PGPuzzleLoader {
515
576
  constructor() {
@@ -520,48 +581,11 @@ var PyraminxPuzzleLoader = class extends PGPuzzleLoader {
520
581
  });
521
582
  }
522
583
  svg = getCached(async () => {
523
- return (await import("./puzzles-dynamic-side-events-FJHPJOLC.js")).pyraminxSVG;
584
+ return (await import("./puzzles-dynamic-side-events-QIADTLKJ.js")).pyraminxSVG;
524
585
  });
525
586
  };
526
587
  var pyraminx = new PyraminxPuzzleLoader();
527
588
 
528
- // src/cubing/puzzles/implementations/square1/index.ts
529
- var square1 = {
530
- id: "square1",
531
- fullName: "Square-1",
532
- inventedBy: ["Karel Hr\u0161el", "Vojtech Kopsk\xFD"],
533
- inventionYear: 1990,
534
- // Czech patent application year: http://spisy.upv.cz/Patents/FullDocuments/277/277266.pdf
535
- kpuzzle: getCached(
536
- async () => new KPuzzle(
537
- (await import("./puzzles-dynamic-side-events-FJHPJOLC.js")).sq1HyperOrbitJSON
538
- )
539
- ),
540
- svg: getCached(async () => {
541
- return (await import("./puzzles-dynamic-side-events-FJHPJOLC.js")).sq1HyperOrbitSVG;
542
- })
543
- };
544
-
545
- // src/cubing/puzzles/implementations/kilominx/index.ts
546
- var KILOMINX_PUZZLE_DESCRIPTION = "d f 0.56";
547
- var kilominx = {
548
- id: "kilominx",
549
- fullName: "Kilominx",
550
- kpuzzle: getCached(
551
- () => asyncGetKPuzzleByDesc(KILOMINX_PUZZLE_DESCRIPTION, {
552
- includeCenterOrbits: false,
553
- includeEdgeOrbits: false
554
- })
555
- ),
556
- pg: () => descAsyncGetPuzzleGeometry(KILOMINX_PUZZLE_DESCRIPTION, {
557
- includeCenterOrbits: false,
558
- includeEdgeOrbits: false
559
- }),
560
- svg: getCached(async () => {
561
- return (await import("./puzzles-dynamic-unofficial-EE5FDJ3S.js")).kilominxSVG;
562
- })
563
- };
564
-
565
589
  // src/cubing/puzzles/implementations/redi-cube/index.ts
566
590
  var rediCube = {
567
591
  id: "redi_cube",
@@ -580,45 +604,38 @@ var rediCube = {
580
604
  }
581
605
  };
582
606
 
583
- // src/cubing/puzzles/implementations/4x4x4/index.ts
584
- var cube4x4x4 = new CubePGPuzzleLoader({
585
- id: "4x4x4",
586
- fullName: "4\xD74\xD74 Cube"
587
- });
588
- cube4x4x4.llSVG = getCached(async () => {
589
- return (await import("./puzzles-dynamic-4x4x4-REUXFQJ4.js")).cube4x4x4LLSVG;
590
- });
591
-
592
- // src/cubing/puzzles/implementations/melindas2x2x2x2/index.ts
593
- var melindas2x2x2x2 = {
594
- id: "melindas2x2x2x2",
595
- fullName: "Melinda's 2\xD72\xD72\xD72",
596
- inventedBy: ["Melinda Green"],
597
- // inventionYear: 20__, // TODO
607
+ // src/cubing/puzzles/implementations/square1/index.ts
608
+ var square1 = {
609
+ id: "square1",
610
+ fullName: "Square-1",
611
+ inventedBy: ["Karel Hr\u0161el", "Vojtech Kopsk\xFD"],
612
+ inventionYear: 1990,
613
+ // Czech patent application year: http://spisy.upv.cz/Patents/FullDocuments/277/277266.pdf
598
614
  kpuzzle: getCached(
599
615
  async () => new KPuzzle(
600
- (await import("./puzzles-dynamic-side-events-FJHPJOLC.js")).melindas2x2x2x2OrbitJSON
616
+ (await import("./puzzles-dynamic-side-events-QIADTLKJ.js")).sq1HyperOrbitJSON
601
617
  )
602
618
  ),
603
619
  svg: getCached(async () => {
604
- return (await import("./puzzles-dynamic-side-events-FJHPJOLC.js")).melindas2x2x2x2OrbitSVG;
620
+ return (await import("./puzzles-dynamic-side-events-QIADTLKJ.js")).sq1HyperOrbitSVG;
605
621
  })
606
622
  };
607
623
 
608
- // src/cubing/puzzles/implementations/loopover/index.ts
609
- var loopover = {
610
- id: "loopover",
611
- fullName: "Loopover",
612
- inventedBy: ["Cary Huang"],
624
+ // src/cubing/puzzles/implementations/tri_quad/index.ts
625
+ var tri_quad = {
626
+ id: "tri_quad",
627
+ fullName: "TriQuad",
628
+ inventedBy: ["Bram Cohen", "Carl Hoff"],
613
629
  inventionYear: 2018,
630
+ // https://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=6809
614
631
  kpuzzle: getCached(
615
632
  async () => new KPuzzle(
616
- (await import("./puzzles-dynamic-unofficial-EE5FDJ3S.js")).loopoverJSON
633
+ (await import("./puzzles-dynamic-side-events-QIADTLKJ.js")).triQuadJSON
617
634
  )
618
635
  ),
619
- svg: async () => {
620
- return (await import("./puzzles-dynamic-unofficial-EE5FDJ3S.js")).loopoverSVG;
621
- }
636
+ svg: getCached(async () => {
637
+ return (await import("./puzzles-dynamic-side-events-QIADTLKJ.js")).triQuadSVG;
638
+ })
622
639
  };
623
640
 
624
641
  // src/cubing/puzzles/index.ts
@@ -671,7 +688,8 @@ var puzzles = {
671
688
  kilominx,
672
689
  redi_cube: rediCube,
673
690
  melindas2x2x2x2,
674
- loopover
691
+ loopover,
692
+ tri_quad
675
693
  };
676
694
 
677
695
  export {
@@ -683,4 +701,4 @@ export {
683
701
  cube3x3x3,
684
702
  puzzles
685
703
  };
686
- //# sourceMappingURL=chunk-OGQNFZM2.js.map
704
+ //# sourceMappingURL=chunk-M52K5JNF.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/cubing/puzzles/events.ts", "../../../../src/cubing/puzzles/implementations/2x2x2/index.ts", "../../../../src/cubing/puzzles/implementations/3x3x3/puzzle-specific-simplifications.ts", "../../../../src/cubing/puzzles/implementations/3x3x3/index.ts", "../../../../src/cubing/puzzles/implementations/clock/index.ts", "../../../../src/cubing/puzzles/stickerings/fto-stickerings.ts", "../../../../src/cubing/puzzles/implementations/fto/index.ts", "../../../../src/cubing/puzzles/stickerings/megaminx-stickerings.ts", "../../../../src/cubing/puzzles/implementations/megaminx/index.ts", "../../../../src/cubing/puzzles/implementations/pyraminx/index.ts", "../../../../src/cubing/puzzles/implementations/square1/index.ts", "../../../../src/cubing/puzzles/implementations/kilominx/index.ts", "../../../../src/cubing/puzzles/implementations/redi-cube/index.ts", "../../../../src/cubing/puzzles/implementations/4x4x4/index.ts", "../../../../src/cubing/puzzles/implementations/melindas2x2x2x2/index.ts", "../../../../src/cubing/puzzles/implementations/loopover/index.ts", "../../../../src/cubing/puzzles/index.ts"],
4
- "sourcesContent": ["import type { PuzzleID } from \"../twisty\";\n\ninterface EventInfo {\n puzzleID: PuzzleID;\n eventName: string;\n}\n\nexport const wcaEvents: Record<string, EventInfo> = {\n \"333\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Cube\" },\n \"222\": { puzzleID: \"2x2x2\", eventName: \"2x2x2 Cube\" },\n \"444\": { puzzleID: \"4x4x4\", eventName: \"4x4x4 Cube\" },\n \"555\": { puzzleID: \"5x5x5\", eventName: \"5x5x5 Cube\" },\n \"666\": { puzzleID: \"6x6x6\", eventName: \"6x6x6 Cube\" },\n \"777\": { puzzleID: \"7x7x7\", eventName: \"7x7x7 Cube\" },\n \"333bf\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Blindfolded\" },\n \"333fm\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Fewest Moves\" },\n \"333oh\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 One-Handed\" },\n clock: { puzzleID: \"clock\", eventName: \"Clock\" },\n minx: { puzzleID: \"megaminx\", eventName: \"Megaminx\" },\n pyram: { puzzleID: \"pyraminx\", eventName: \"Pyraminx\" },\n skewb: { puzzleID: \"skewb\", eventName: \"Skewb\" },\n sq1: { puzzleID: \"square1\", eventName: \"Square-1\" },\n \"444bf\": { puzzleID: \"4x4x4\", eventName: \"4x4x4 Blindfolded\" },\n \"555bf\": { puzzleID: \"5x5x5\", eventName: \"5x5x5 Blindfolded\" },\n \"333mbf\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Multi-Blind\" },\n};\n\n/** @category Event Info */\nexport function wcaEventInfo(event: string): EventInfo | null {\n return wcaEvents[event] ?? null;\n}\n\nexport const twizzleEvents: Record<string, EventInfo> = {\n ...wcaEvents,\n fto: { puzzleID: \"fto\", eventName: \"Face-Turning Octahedron\" },\n master_tetraminx: {\n puzzleID: \"master_tetraminx\",\n eventName: \"Master Tetraminx\",\n },\n kilominx: {\n puzzleID: \"kilominx\",\n eventName: \"Kilominx\",\n },\n redi_cube: {\n puzzleID: \"redi_cube\",\n eventName: \"Redi Cube\",\n },\n loopover: {\n puzzleID: \"loopover\",\n eventName: \"Loopover\",\n },\n};\n\n/** @category Event Info */\nexport function eventInfo(event: string): EventInfo | null {\n return twizzleEvents[event] ?? null;\n}\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport type { ExperimentalStickering } from \"../../../twisty\";\nimport { asyncGetPuzzleGeometry } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\nimport type { StickeringMask } from \"../../stickerings/mask\";\nimport {\n cubeLikeStickeringList,\n cubeLikeStickeringMask,\n} from \"../../stickerings/cube-like-stickerings\";\n\n/** @category Specific Puzzles */\nexport const cube2x2x2: PuzzleLoader = {\n id: \"2x2x2\",\n fullName: \"2\u00D72\u00D72 Cube\",\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .cube2x2x2JSON,\n ),\n ),\n svg: async () =>\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .cube2x2x2SVG,\n llSVG: getCached(\n async () =>\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .cube2x2x2LLSVG,\n ),\n pg: getCached(async () => {\n return asyncGetPuzzleGeometry(\"2x2x2\");\n }),\n stickeringMask: (\n stickering: ExperimentalStickering,\n ): Promise<StickeringMask> => cubeLikeStickeringMask(cube2x2x2, stickering),\n stickerings: () =>\n cubeLikeStickeringList(\"2x2x2\", { use3x3x3Fallbacks: true }),\n};\n", "import type { PuzzleSpecificSimplifyOptions } from \"../../../alg\";\nimport { Move, QuantumMove } from \"../../../alg\";\n\nenum Axis {\n X = \"x axis\",\n Y = \"y axis\",\n Z = \"z axis\",\n}\n\nenum MoveSourceType {\n INDEXABLE_SLICE_NEAR,\n INDEXABLE_SLICE_FAR,\n INDEXABLE_WIDE_NEAR,\n INDEXABLE_WIDE_FAR,\n SPECIFIC_SLICE,\n ROTATION,\n}\n\ninterface MoveSourceInfo {\n family: string;\n direction: -1 | 1;\n type: MoveSourceType;\n from: number;\n to: number;\n}\n\nfunction makeSourceInfo(\n moveStrings: string[],\n type: MoveSourceType,\n from: number,\n to: number,\n): MoveSourceInfo[] {\n const output: MoveSourceInfo[] = [];\n for (const moveString of moveStrings) {\n const move = Move.fromString(moveString);\n const { family, amount: direction } = move;\n if (![-1, 1].includes(direction)) {\n // TODO: test iner/outer\n // TODO: Can we move this to a test file?\n throw new Error(\"Invalid config move\");\n }\n output.push({ family, direction: direction as -1 | 1, type, from, to });\n }\n return output;\n}\n\ninterface AxisInfo {\n sliceDiameter: number;\n extendsThroughEntirePuzzle: boolean;\n moveSourceInfos: MoveSourceInfo[];\n}\n\n// TODO: wide slices\nconst axisInfos: Record<Axis, AxisInfo> = {\n [Axis.X]: {\n sliceDiameter: 3,\n extendsThroughEntirePuzzle: true,\n moveSourceInfos: [\n ...makeSourceInfo([\"R\"], MoveSourceType.INDEXABLE_SLICE_NEAR, 0, 3),\n ...makeSourceInfo([\"L'\"], MoveSourceType.INDEXABLE_SLICE_FAR, 0, 3),\n ...makeSourceInfo([\"r\", \"Rw\"], MoveSourceType.INDEXABLE_WIDE_NEAR, 0, 2),\n ...makeSourceInfo([\"l'\", \"Lw'\"], MoveSourceType.INDEXABLE_WIDE_FAR, 0, 2),\n ...makeSourceInfo([\"M'\"], MoveSourceType.SPECIFIC_SLICE, 1, 2), // TODO: remove some indices?\n ...makeSourceInfo([\"x\", \"Uv\", \"Dv'\"], MoveSourceType.ROTATION, 0, 3), // TODO: remove some indices?\n ],\n },\n [Axis.Y]: {\n sliceDiameter: 3,\n extendsThroughEntirePuzzle: true,\n moveSourceInfos: [\n ...makeSourceInfo([\"U\"], MoveSourceType.INDEXABLE_SLICE_NEAR, 0, 3),\n ...makeSourceInfo([\"D'\"], MoveSourceType.INDEXABLE_SLICE_FAR, 0, 3),\n ...makeSourceInfo([\"u\", \"Uw\"], MoveSourceType.INDEXABLE_WIDE_NEAR, 0, 2),\n ...makeSourceInfo([\"d'\", \"Dw'\"], MoveSourceType.INDEXABLE_WIDE_FAR, 0, 2),\n ...makeSourceInfo([\"E'\"], MoveSourceType.SPECIFIC_SLICE, 1, 2), // TODO: remove some indices?\n ...makeSourceInfo([\"y\", \"Uv\", \"Dv'\"], MoveSourceType.ROTATION, 0, 3), // TODO: remove some indices?\n ],\n },\n [Axis.Z]: {\n sliceDiameter: 3,\n extendsThroughEntirePuzzle: true,\n moveSourceInfos: [\n ...makeSourceInfo([\"F\"], MoveSourceType.INDEXABLE_SLICE_NEAR, 0, 3),\n ...makeSourceInfo([\"B'\"], MoveSourceType.INDEXABLE_SLICE_FAR, 0, 3),\n ...makeSourceInfo([\"f\", \"Fw\"], MoveSourceType.INDEXABLE_WIDE_NEAR, 0, 3),\n ...makeSourceInfo([\"b'\", \"Bw'\"], MoveSourceType.INDEXABLE_WIDE_FAR, 0, 3),\n ...makeSourceInfo([\"S\"], MoveSourceType.SPECIFIC_SLICE, 1, 2), // TODO: remove some indices?\n ...makeSourceInfo([\"z\", \"Fv\", \"Bv'\"], MoveSourceType.ROTATION, 0, 3), // TODO: remove some indices?\n ],\n },\n};\n\nconst byFamily: Record<string, { axis: Axis; moveSourceInfo: MoveSourceInfo }> =\n {};\nfor (const [axis, info] of Object.entries(axisInfos)) {\n for (const moveSourceInfo of info.moveSourceInfos) {\n byFamily[moveSourceInfo.family] = { axis: axis as Axis, moveSourceInfo };\n }\n}\n\n// TODO: lazy initialization?\nconst byAxisThenType: Record<\n Axis,\n Partial<Record<MoveSourceType, MoveSourceInfo[]>>\n> = {} as any; // TODO: avoid typecast (using `Object.fromEntries`?)\nfor (const axis of Object.keys(axisInfos) as Axis[]) {\n const entry: Partial<Record<MoveSourceType, MoveSourceInfo[]>> = {};\n byAxisThenType[axis] = entry;\n for (const moveSourceInfo of axisInfos[axis].moveSourceInfos) {\n (entry[moveSourceInfo.type] ??= []).push(moveSourceInfo);\n }\n}\n\n// TODO: consolidate lookup tables?\nconst byAxisThenSpecificSlices: Record<\n Axis,\n Map<number, MoveSourceInfo>\n> = {} as any; // TODO: avoid typecast (using `Object.fromEntries`?)\nfor (const axis of Object.keys(axisInfos) as Axis[]) {\n const entry: Map<number, MoveSourceInfo> = new Map();\n byAxisThenSpecificSlices[axis] = entry;\n for (const moveSourceInfo of axisInfos[axis].moveSourceInfos) {\n // We only want to use the first entry per slice index (in the unlikely case there are multiple).\n if (!entry.get(moveSourceInfo.from)) {\n entry.set(moveSourceInfo.from, moveSourceInfo);\n }\n }\n}\n\nfunction firstOfType(\n axis: Axis,\n moveSourceType: MoveSourceType,\n): MoveSourceInfo {\n const entry = byAxisThenType[axis][moveSourceType]?.[0];\n if (!entry) {\n throw new Error(\n `Could not find a reference move (axis: ${axis}, move source type: ${moveSourceType})`,\n );\n }\n return entry;\n}\n\nconst areQuantumMovesSameAxis = (\n quantumMove1: QuantumMove,\n quantumMove2: QuantumMove,\n) => {\n return (\n byFamily[quantumMove1.family].axis === byFamily[quantumMove2.family].axis\n );\n};\n\nfunction simplestMove(\n axis: Axis,\n from: number,\n to: number,\n directedAmount: number,\n): Move {\n if (from + 1 === to) {\n const sliceSpecificInfo = byAxisThenSpecificSlices[axis].get(from);\n if (sliceSpecificInfo) {\n return new Move(\n new QuantumMove(sliceSpecificInfo.family),\n directedAmount * sliceSpecificInfo.direction,\n );\n }\n }\n\n const axisInfo = axisInfos[axis];\n const { sliceDiameter } = axisInfo;\n if (from === 0 && to === sliceDiameter) {\n const moveSourceInfo = firstOfType(axis, MoveSourceType.ROTATION);\n return new Move(\n new QuantumMove(moveSourceInfo.family),\n directedAmount * moveSourceInfo.direction,\n );\n }\n\n // const specificSliceInfo = byAxisThenSpecificSlices[axis].get(from);\n const far = from + to > sliceDiameter; // (from + to) / 2 > sliceDiameter / 2\n if (far) {\n [from, to] = [sliceDiameter - to, sliceDiameter - from];\n }\n\n let outerLayer: number | null = from + 1; // change to 1-indexed\n let innerLayer: number | null = to; // already 1-indexed\n const slice = outerLayer === innerLayer;\n if (slice) {\n innerLayer = null;\n }\n\n if (outerLayer === 1) {\n outerLayer = null;\n }\n if (slice && outerLayer === 1) {\n innerLayer = null;\n }\n if (!slice && innerLayer === 2) {\n innerLayer = null;\n }\n\n const moveSourceType = slice\n ? far\n ? MoveSourceType.INDEXABLE_SLICE_FAR\n : MoveSourceType.INDEXABLE_SLICE_NEAR\n : far\n ? MoveSourceType.INDEXABLE_WIDE_FAR\n : MoveSourceType.INDEXABLE_WIDE_NEAR;\n const moveSourceInfo = firstOfType(axis, moveSourceType);\n return new Move(\n new QuantumMove(moveSourceInfo.family, innerLayer, outerLayer),\n directedAmount * moveSourceInfo.direction,\n );\n}\n\nfunction simplifySameAxisMoves(\n moves: Move[],\n quantumMod: boolean = true, // TODO\n): Move[] {\n if (moves.length === 0) {\n // TODO: can we use the type system to avoid this?\n return [];\n }\n\n const axis: Axis = byFamily[moves[0].family].axis;\n const axisInfo = axisInfos[axis];\n const { sliceDiameter } = axisInfo;\n const sliceDeltas = new Map<number, number>();\n let lastCandidateRange: {\n suffixLength: number;\n sliceDeltas: Map<number, number>;\n } | null = null;\n\n function adjustValue(idx: number, relativeDelta: number) {\n let newDelta = (sliceDeltas.get(idx) ?? 0) + relativeDelta;\n if (quantumMod) {\n newDelta = (newDelta % 4) + (5 % 4) - 1; // TODO: Use a passed-in `modMove`?\n }\n if (newDelta === 0) {\n sliceDeltas.delete(idx);\n } else {\n sliceDeltas.set(idx, newDelta);\n }\n }\n // TODO: go as far as possible instead of trying to take all moves, e.g. simplify U y y' to U.\n let suffixLength = 0;\n // TODO: Reverse iterator?\n for (const move of Array.from(moves).reverse()) {\n suffixLength++;\n const { moveSourceInfo } = byFamily[move.family];\n const directedAmount = move.amount * moveSourceInfo.direction;\n // console.log({ directedAmount });\n switch (moveSourceInfo.type) {\n case MoveSourceType.INDEXABLE_SLICE_NEAR: {\n // We convert to zero-indexing\n const idx = (move.innerLayer ?? 1) - 1;\n adjustValue(idx, directedAmount);\n adjustValue(idx + 1, -directedAmount);\n break;\n }\n case MoveSourceType.INDEXABLE_SLICE_FAR: {\n // We convert to zero-indexing (which cancels with the subtraction from the slice width)\n const idx = sliceDiameter - (move.innerLayer ?? 1);\n adjustValue(idx, directedAmount);\n adjustValue(idx + 1, -directedAmount);\n break;\n }\n case MoveSourceType.INDEXABLE_WIDE_NEAR: {\n adjustValue((move.outerLayer ?? 1) - 1, directedAmount);\n adjustValue(move.innerLayer ?? 2, -directedAmount);\n break;\n }\n case MoveSourceType.INDEXABLE_WIDE_FAR: {\n adjustValue(sliceDiameter - (move.innerLayer ?? 2), directedAmount);\n adjustValue(\n sliceDiameter - ((move.outerLayer ?? 1) - 1),\n -directedAmount,\n );\n break;\n }\n case MoveSourceType.SPECIFIC_SLICE: {\n // We convert to zero-indexing (which cancels with the subtraction from the slice width)\n adjustValue(moveSourceInfo.from, directedAmount);\n adjustValue(moveSourceInfo.to, -directedAmount);\n break;\n }\n case MoveSourceType.ROTATION: {\n adjustValue(0, directedAmount);\n adjustValue(sliceDiameter, -directedAmount);\n break;\n }\n }\n if ([0, 2].includes(sliceDeltas.size)) {\n lastCandidateRange = { suffixLength, sliceDeltas: new Map(sliceDeltas) };\n }\n }\n if (sliceDeltas.size === 0) {\n return [];\n }\n // TODO: handle this check in the destructuring assignment?\n if (!lastCandidateRange) {\n return moves;\n }\n let [from, to] = lastCandidateRange.sliceDeltas.keys();\n if (from > to) {\n [from, to] = [to, from];\n }\n const directedAmount = lastCandidateRange.sliceDeltas.get(from)!;\n // TODO: Handle empty move\n return [\n ...moves.slice(0, -lastCandidateRange.suffixLength),\n ...(directedAmount !== 0\n ? [simplestMove(axis, from, to, directedAmount)]\n : []),\n ];\n}\n\nexport const puzzleSpecificSimplifyOptions333: PuzzleSpecificSimplifyOptions = {\n quantumMoveOrder: () => 4,\n // doQuantumMovesCommute: areQuantumMovesSameAxis,\n axis: { areQuantumMovesSameAxis, simplifySameAxisMoves },\n};\n", "// Include 3x3x3 in the main bundle for better performance.\nimport type { ExperimentalStickering } from \"../../../twisty\";\nimport { asyncGetPuzzleGeometry } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport { experimental3x3x3KPuzzle } from \"../../cubing-private\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\nimport type { StickeringMask } from \"../../stickerings/mask\";\nimport {\n cubeLikeStickeringMask,\n cubeLikeStickeringList,\n} from \"../../stickerings/cube-like-stickerings\";\nimport { puzzleSpecificSimplifyOptions333 } from \"./puzzle-specific-simplifications\";\n\n/** @category Specific Puzzles */\nexport const cube3x3x3 = {\n id: \"3x3x3\",\n fullName: \"3\u00D73\u00D73 Cube\",\n inventedBy: [\"Ern\u0151 Rubik\"],\n inventionYear: 1974, // https://en.wikipedia.org/wiki/Rubik%27s_Cube#Conception_and_development\n kpuzzle: getCached(async () => {\n return experimental3x3x3KPuzzle;\n }),\n svg: getCached(async () => {\n return (await import(\"../dynamic/3x3x3/puzzles-dynamic-3x3x3\"))\n .cube3x3x3SVG;\n }),\n llSVG: getCached(async () => {\n return (await import(\"../dynamic/3x3x3/puzzles-dynamic-3x3x3\"))\n .cube3x3x3LLSVG;\n }),\n llFaceSVG: getCached(async () => {\n return (await import(\"../dynamic/3x3x3/puzzles-dynamic-3x3x3\"))\n .cube3x3x3LLFaceSVG;\n }),\n pg: getCached(async () => {\n return asyncGetPuzzleGeometry(\"3x3x3\");\n }),\n stickeringMask: (\n stickering: ExperimentalStickering,\n ): Promise<StickeringMask> => cubeLikeStickeringMask(cube3x3x3, stickering),\n stickerings: () => cubeLikeStickeringList(\"3x3x3\"),\n puzzleSpecificSimplifyOptions: puzzleSpecificSimplifyOptions333,\n} satisfies PuzzleLoader;\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const clock: PuzzleLoader = {\n id: \"clock\",\n fullName: \"Clock\",\n inventedBy: [\"Christopher C. Wiggs\", \"Christopher J. Taylor\"],\n inventionYear: 1988, // Patent application year: https://www.jaapsch.net/puzzles/patents/us4869506.pdf\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .clockJSON,\n ),\n ),\n svg: getCached(async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .clockSVG;\n }),\n};\n", "import type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport {\n type StickeringMask,\n PuzzleStickering,\n StickeringManager,\n type PieceSet,\n PieceStickering,\n} from \"./mask\";\n\nexport async function ftoStickering(\n puzzleLoader: PuzzleLoader,\n stickering: ExperimentalStickering,\n): Promise<StickeringMask> {\n const kpuzzle = await puzzleLoader.kpuzzle();\n const puzzleStickering = new PuzzleStickering(kpuzzle);\n const m = new StickeringManager(kpuzzle);\n\n const experimentalFTO_FC = (): PieceSet =>\n m.and([m.move(\"U\"), m.not(m.or(m.moves([\"F\", \"BL\", \"BR\"])))]);\n const experimentalFTO_F2T = (): PieceSet =>\n m.and([m.move(\"U\"), m.not(m.move(\"F\"))]);\n const experimentalFTO_SC = (): PieceSet =>\n m.or([\n experimentalFTO_F2T(),\n m.and([m.move(\"F\"), m.not(m.or(m.moves([\"U\", \"BL\", \"BR\"])))]),\n ]);\n const experimentalFTO_L2C = (): PieceSet =>\n m.not(\n m.or([\n m.and([m.move(\"U\"), m.move(\"F\")]),\n m.and([m.move(\"F\"), m.move(\"BL\")]),\n m.and([m.move(\"F\"), m.move(\"BR\")]),\n m.and([m.move(\"BL\"), m.move(\"BR\")]),\n ]),\n );\n const experimentalFTO_LBT = (): PieceSet =>\n m.not(\n m.or([\n m.and([m.move(\"F\"), m.move(\"BL\")]),\n m.and([m.move(\"F\"), m.move(\"BR\")]),\n m.and([m.move(\"BL\"), m.move(\"BR\")]),\n ]),\n );\n\n switch (stickering) {\n case \"full\":\n break;\n case \"experimental-fto-fc\": {\n puzzleStickering.set(\n m.not(experimentalFTO_FC()),\n PieceStickering.Ignored,\n );\n break;\n }\n case \"experimental-fto-f2t\": {\n puzzleStickering.set(\n m.not(experimentalFTO_F2T()),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(experimentalFTO_FC(), PieceStickering.Dim);\n break;\n }\n case \"experimental-fto-sc\": {\n puzzleStickering.set(\n m.not(experimentalFTO_SC()),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(experimentalFTO_F2T(), PieceStickering.Dim);\n break;\n }\n case \"experimental-fto-l2c\": {\n puzzleStickering.set(\n m.not(experimentalFTO_L2C()),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(experimentalFTO_SC(), PieceStickering.Dim);\n break;\n }\n case \"experimental-fto-lbt\": {\n puzzleStickering.set(\n m.not(experimentalFTO_LBT()),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(experimentalFTO_L2C(), PieceStickering.Dim);\n break;\n }\n case \"experimental-fto-l3t\": {\n puzzleStickering.set(experimentalFTO_LBT(), PieceStickering.Dim);\n break;\n }\n default:\n console.warn(\n `Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`,\n );\n puzzleStickering.set(m.and(m.moves([])), PieceStickering.Dim);\n }\n return puzzleStickering.toStickeringMask();\n}\n\nexport async function ftoStickerings(): Promise<ExperimentalStickering[]> {\n return [\n \"full\",\n \"experimental-fto-fc\",\n \"experimental-fto-f2t\",\n \"experimental-fto-sc\",\n \"experimental-fto-l2c\",\n \"experimental-fto-lbt\",\n \"experimental-fto-l3t\",\n ];\n}\n", "import type { ExperimentalStickering } from \"../../../twisty\";\nimport { PGPuzzleLoader } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { StickeringMask } from \"../../stickerings/mask\";\nimport {\n ftoStickering,\n ftoStickerings,\n} from \"../../stickerings/fto-stickerings\";\n\nclass FTOPuzzleLoader extends PGPuzzleLoader {\n constructor() {\n super({\n pgID: \"FTO\",\n id: \"fto\",\n fullName: \"Face-Turning Octahedron\",\n inventedBy: [\"Karl Rohrbach\", \"David Pitcher\"], // http://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1663\n inventionYear: 1983, // http://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1663\n });\n }\n stickeringMask(stickering: ExperimentalStickering): Promise<StickeringMask> {\n return ftoStickering(this, stickering);\n }\n stickerings = ftoStickerings;\n override svg = getCached(async () => {\n return (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .ftoSVG;\n });\n}\n\nexport const fto = new FTOPuzzleLoader();\n", "import type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport type { StickeringMask } from \"./mask\";\nimport {\n cubeLikeStickeringList,\n cubeLikeStickeringMask,\n} from \"./cube-like-stickerings\";\nimport { from } from \"../../vendor/mit/p-lazy/p-lazy\";\n\n// TODO: cache calculations?\nexport async function megaminxStickeringMask(\n puzzleLoader: PuzzleLoader,\n stickering: ExperimentalStickering,\n): Promise<StickeringMask> {\n // TODO: optimize lookup instead of looking through a list\n if ((await megaminxStickerings()).includes(stickering)) {\n return cubeLikeStickeringMask(puzzleLoader, stickering);\n }\n console.warn(\n `Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`,\n );\n return cubeLikeStickeringMask(puzzleLoader, \"full\");\n}\n\nconst megaminxStickeringListPromise: Promise<string[]> = from(() =>\n cubeLikeStickeringList(\"megaminx\"),\n);\nexport function megaminxStickerings(): Promise<string[]> {\n return megaminxStickeringListPromise;\n}\n", "import type { ExperimentalStickering } from \"../../../twisty\";\nimport { PGPuzzleLoader } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { StickeringMask } from \"../../stickerings/mask\";\nimport {\n megaminxStickeringMask,\n megaminxStickerings,\n} from \"../../stickerings/megaminx-stickerings\";\n\nclass MegaminxPuzzleLoader extends PGPuzzleLoader {\n constructor() {\n super({\n id: \"megaminx\",\n fullName: \"Megaminx\",\n // Too many simultaneous inventors to name.\n inventionYear: 1981, // Earliest date from https://www.jaapsch.net/puzzles/megaminx.htm\n });\n }\n stickeringMask(stickering: ExperimentalStickering): Promise<StickeringMask> {\n return megaminxStickeringMask(this, stickering);\n }\n stickerings = megaminxStickerings;\n\n llSVG = getCached(async () => {\n return (await import(\"../dynamic/megaminx/puzzles-dynamic-megaminx\"))\n .megaminxLLSVG;\n });\n}\n\nexport const megaminx = new MegaminxPuzzleLoader();\n", "import { PGPuzzleLoader } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\n\nclass PyraminxPuzzleLoader extends PGPuzzleLoader {\n constructor() {\n super({\n id: \"pyraminx\",\n fullName: \"Pyraminx\",\n inventedBy: [\"Uwe Meffert\"],\n });\n }\n override svg = getCached(async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .pyraminxSVG;\n });\n}\n\nexport const pyraminx = new PyraminxPuzzleLoader();\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const square1: PuzzleLoader = {\n id: \"square1\",\n fullName: \"Square-1\",\n inventedBy: [\"Karel Hr\u0161el\", \"Vojtech Kopsk\u00FD\"],\n inventionYear: 1990, // Czech patent application year: http://spisy.upv.cz/Patents/FullDocuments/277/277266.pdf\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .sq1HyperOrbitJSON,\n ),\n ),\n svg: getCached(async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .sq1HyperOrbitSVG;\n }),\n};\n", "import type { PuzzleLoader } from \"../..\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport {\n asyncGetKPuzzleByDesc,\n descAsyncGetPuzzleGeometry,\n} from \"../../customPGPuzzleLoader\";\n\nconst KILOMINX_PUZZLE_DESCRIPTION = \"d f 0.56\";\n\n// TODO: Make this consistent with Megaminx corners\nexport const kilominx: PuzzleLoader = {\n id: \"kilominx\",\n fullName: \"Kilominx\",\n kpuzzle: getCached(() =>\n asyncGetKPuzzleByDesc(KILOMINX_PUZZLE_DESCRIPTION, {\n includeCenterOrbits: false,\n includeEdgeOrbits: false,\n }),\n ),\n pg: () =>\n descAsyncGetPuzzleGeometry(KILOMINX_PUZZLE_DESCRIPTION, {\n includeCenterOrbits: false,\n includeEdgeOrbits: false,\n }),\n svg: getCached(async () => {\n return (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .kilominxSVG;\n }),\n};\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const rediCube: PuzzleLoader = {\n id: \"redi_cube\",\n fullName: \"Redi Cube\",\n // Announced 2009-07-21: https://www.youtube.com/watch?v=cjfMzA1u3vM\n // https://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1520\n inventedBy: [\"Oskar van Deventer\"],\n inventionYear: 2009,\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .rediCubeJSON,\n ),\n ),\n svg: async () => {\n return (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .rediCubeSVG;\n },\n};\n", "import { CubePGPuzzleLoader } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nconst cube4x4x4: PuzzleLoader = new CubePGPuzzleLoader({\n id: \"4x4x4\",\n fullName: \"4\u00D74\u00D74 Cube\",\n});\n\ncube4x4x4.llSVG = getCached(async () => {\n return (await import(\"../dynamic/4x4x4/puzzles-dynamic-4x4x4\"))\n .cube4x4x4LLSVG;\n});\n\nexport { cube4x4x4 };\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const melindas2x2x2x2: PuzzleLoader = {\n id: \"melindas2x2x2x2\",\n fullName: \"Melinda's 2\u00D72\u00D72\u00D72\",\n inventedBy: [\"Melinda Green\"],\n // inventionYear: 20__, // TODO\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .melindas2x2x2x2OrbitJSON,\n ),\n ),\n svg: getCached(async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .melindas2x2x2x2OrbitSVG;\n }),\n};\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const loopover: PuzzleLoader = {\n id: \"loopover\",\n fullName: \"Loopover\",\n inventedBy: [\"Cary Huang\"],\n inventionYear: 2018,\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .loopoverJSON,\n ),\n ),\n svg: async () => {\n return (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .loopoverSVG;\n },\n};\n", "export { eventInfo, wcaEventInfo, wcaEvents, twizzleEvents } from \"./events\";\nexport type { PuzzleLoader };\nexport { cube2x2x2, cube3x3x3 };\n\nimport { CubePGPuzzleLoader, PGPuzzleLoader } from \"./async/async-pg3d\";\nimport { cube2x2x2 } from \"./implementations/2x2x2\";\nimport { cube3x3x3 } from \"./implementations/3x3x3\";\nimport { clock } from \"./implementations/clock\";\nimport { fto } from \"./implementations/fto\";\nimport { megaminx } from \"./implementations/megaminx\";\nimport { pyraminx } from \"./implementations/pyraminx\";\nimport { square1 } from \"./implementations/square1\";\nimport { kilominx } from \"./implementations/kilominx\";\nimport type { PuzzleLoader } from \"./PuzzleLoader\";\nimport { rediCube } from \"./implementations/redi-cube\";\nimport { cube4x4x4 } from \"./implementations/4x4x4\";\nimport { melindas2x2x2x2 } from \"./implementations/melindas2x2x2x2\";\nimport { loopover } from \"./implementations/loopover\";\n\n/** @category All Puzzles */\nexport const puzzles: Record<string, PuzzleLoader> = {\n /******** Start of WCA Puzzles *******/\n \"3x3x3\": cube3x3x3,\n \"2x2x2\": cube2x2x2,\n \"4x4x4\": cube4x4x4,\n \"5x5x5\": new CubePGPuzzleLoader({ id: \"5x5x5\", fullName: \"5\u00D75\u00D75 Cube\" }),\n \"6x6x6\": new CubePGPuzzleLoader({ id: \"6x6x6\", fullName: \"6\u00D76\u00D76 Cube\" }),\n \"7x7x7\": new CubePGPuzzleLoader({ id: \"7x7x7\", fullName: \"7\u00D77\u00D77 Cube\" }),\n \"40x40x40\": new CubePGPuzzleLoader({\n id: \"40x40x40\",\n fullName: \"40\u00D740\u00D740 Cube\",\n }),\n // 3x3x3 Blindfolded\n // 3x3x3 Fewest Moves\n // 3x3x3 One-Handed\n clock,\n megaminx: megaminx,\n pyraminx,\n skewb: new PGPuzzleLoader({\n id: \"skewb\",\n fullName: \"Skewb\",\n inventedBy: [\"Tony Durham\"], // https://www.jaapsch.net/puzzles/skewb.htm\n // inventionYear: 1982, // 1982 is actually the year of Hofstadter's column.\n }),\n square1,\n // 4x4x4 Blindfolded\n // 5x5x5 Blindfolded\n /******** End of WCA puzzles ********/\n fto: fto,\n gigaminx: new PGPuzzleLoader({\n id: \"gigaminx\",\n fullName: \"Gigaminx\",\n inventedBy: [\"Tyler Fox\"],\n inventionYear: 2006, // Earliest date from https://www.twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1475\n }),\n master_tetraminx: new PGPuzzleLoader({\n pgID: \"master tetraminx\",\n id: \"master_tetraminx\",\n fullName: \"Master Tetraminx\",\n inventedBy: [\"Katsuhiko Okamoto\"], // Using master pyraminx: https://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1352\n inventionYear: 2002, // Using master pyraminx: https://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1352\n }),\n kilominx,\n redi_cube: rediCube,\n melindas2x2x2x2,\n loopover,\n};\n"],
5
- "mappings": "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",
3
+ "sources": ["../../../../src/cubing/puzzles/events.ts", "../../../../src/cubing/puzzles/implementations/2x2x2/index.ts", "../../../../src/cubing/puzzles/implementations/3x3x3/puzzle-specific-simplifications.ts", "../../../../src/cubing/puzzles/implementations/3x3x3/index.ts", "../../../../src/cubing/puzzles/implementations/4x4x4/index.ts", "../../../../src/cubing/puzzles/implementations/clock/index.ts", "../../../../src/cubing/puzzles/stickerings/fto-stickerings.ts", "../../../../src/cubing/puzzles/implementations/fto/index.ts", "../../../../src/cubing/puzzles/implementations/kilominx/index.ts", "../../../../src/cubing/puzzles/implementations/loopover/index.ts", "../../../../src/cubing/puzzles/stickerings/megaminx-stickerings.ts", "../../../../src/cubing/puzzles/implementations/megaminx/index.ts", "../../../../src/cubing/puzzles/implementations/melindas2x2x2x2/index.ts", "../../../../src/cubing/puzzles/implementations/pyraminx/index.ts", "../../../../src/cubing/puzzles/implementations/redi-cube/index.ts", "../../../../src/cubing/puzzles/implementations/square1/index.ts", "../../../../src/cubing/puzzles/implementations/tri_quad/index.ts", "../../../../src/cubing/puzzles/index.ts"],
4
+ "sourcesContent": ["import type { PuzzleID } from \"../twisty\";\n\ninterface EventInfo {\n puzzleID: PuzzleID;\n eventName: string;\n}\n\nexport const wcaEvents: Record<string, EventInfo> = {\n \"333\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Cube\" },\n \"222\": { puzzleID: \"2x2x2\", eventName: \"2x2x2 Cube\" },\n \"444\": { puzzleID: \"4x4x4\", eventName: \"4x4x4 Cube\" },\n \"555\": { puzzleID: \"5x5x5\", eventName: \"5x5x5 Cube\" },\n \"666\": { puzzleID: \"6x6x6\", eventName: \"6x6x6 Cube\" },\n \"777\": { puzzleID: \"7x7x7\", eventName: \"7x7x7 Cube\" },\n \"333bf\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Blindfolded\" },\n \"333fm\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Fewest Moves\" },\n \"333oh\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 One-Handed\" },\n clock: { puzzleID: \"clock\", eventName: \"Clock\" },\n minx: { puzzleID: \"megaminx\", eventName: \"Megaminx\" },\n pyram: { puzzleID: \"pyraminx\", eventName: \"Pyraminx\" },\n skewb: { puzzleID: \"skewb\", eventName: \"Skewb\" },\n sq1: { puzzleID: \"square1\", eventName: \"Square-1\" },\n \"444bf\": { puzzleID: \"4x4x4\", eventName: \"4x4x4 Blindfolded\" },\n \"555bf\": { puzzleID: \"5x5x5\", eventName: \"5x5x5 Blindfolded\" },\n \"333mbf\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Multi-Blind\" },\n};\n\n/** @category Event Info */\nexport function wcaEventInfo(event: string): EventInfo | null {\n return wcaEvents[event] ?? null;\n}\n\nexport const twizzleEvents: Record<string, EventInfo> = {\n ...wcaEvents,\n fto: { puzzleID: \"fto\", eventName: \"Face-Turning Octahedron\" },\n master_tetraminx: {\n puzzleID: \"master_tetraminx\",\n eventName: \"Master Tetraminx\",\n },\n kilominx: {\n puzzleID: \"kilominx\",\n eventName: \"Kilominx\",\n },\n redi_cube: {\n puzzleID: \"redi_cube\",\n eventName: \"Redi Cube\",\n },\n loopover: {\n puzzleID: \"loopover\",\n eventName: \"Loopover\",\n },\n};\n\n/** @category Event Info */\nexport function eventInfo(event: string): EventInfo | null {\n return twizzleEvents[event] ?? null;\n}\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport type { ExperimentalStickering } from \"../../../twisty\";\nimport { asyncGetPuzzleGeometry } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\nimport type { StickeringMask } from \"../../stickerings/mask\";\nimport {\n cubeLikeStickeringList,\n cubeLikeStickeringMask,\n} from \"../../stickerings/cube-like-stickerings\";\n\n/** @category Specific Puzzles */\nexport const cube2x2x2: PuzzleLoader = {\n id: \"2x2x2\",\n fullName: \"2\u00D72\u00D72 Cube\",\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .cube2x2x2JSON,\n ),\n ),\n svg: async () =>\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .cube2x2x2SVG,\n llSVG: getCached(\n async () =>\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .cube2x2x2LLSVG,\n ),\n pg: getCached(async () => {\n return asyncGetPuzzleGeometry(\"2x2x2\");\n }),\n stickeringMask: (\n stickering: ExperimentalStickering,\n ): Promise<StickeringMask> => cubeLikeStickeringMask(cube2x2x2, stickering),\n stickerings: () =>\n cubeLikeStickeringList(\"2x2x2\", { use3x3x3Fallbacks: true }),\n};\n", "import type { PuzzleSpecificSimplifyOptions } from \"../../../alg\";\nimport { Move, QuantumMove } from \"../../../alg\";\n\nenum Axis {\n X = \"x axis\",\n Y = \"y axis\",\n Z = \"z axis\",\n}\n\nenum MoveSourceType {\n INDEXABLE_SLICE_NEAR,\n INDEXABLE_SLICE_FAR,\n INDEXABLE_WIDE_NEAR,\n INDEXABLE_WIDE_FAR,\n SPECIFIC_SLICE,\n ROTATION,\n}\n\ninterface MoveSourceInfo {\n family: string;\n direction: -1 | 1;\n type: MoveSourceType;\n from: number;\n to: number;\n}\n\nfunction makeSourceInfo(\n moveStrings: string[],\n type: MoveSourceType,\n from: number,\n to: number,\n): MoveSourceInfo[] {\n const output: MoveSourceInfo[] = [];\n for (const moveString of moveStrings) {\n const move = Move.fromString(moveString);\n const { family, amount: direction } = move;\n if (![-1, 1].includes(direction)) {\n // TODO: test iner/outer\n // TODO: Can we move this to a test file?\n throw new Error(\"Invalid config move\");\n }\n output.push({ family, direction: direction as -1 | 1, type, from, to });\n }\n return output;\n}\n\ninterface AxisInfo {\n sliceDiameter: number;\n extendsThroughEntirePuzzle: boolean;\n moveSourceInfos: MoveSourceInfo[];\n}\n\n// TODO: wide slices\nconst axisInfos: Record<Axis, AxisInfo> = {\n [Axis.X]: {\n sliceDiameter: 3,\n extendsThroughEntirePuzzle: true,\n moveSourceInfos: [\n ...makeSourceInfo([\"R\"], MoveSourceType.INDEXABLE_SLICE_NEAR, 0, 3),\n ...makeSourceInfo([\"L'\"], MoveSourceType.INDEXABLE_SLICE_FAR, 0, 3),\n ...makeSourceInfo([\"r\", \"Rw\"], MoveSourceType.INDEXABLE_WIDE_NEAR, 0, 2),\n ...makeSourceInfo([\"l'\", \"Lw'\"], MoveSourceType.INDEXABLE_WIDE_FAR, 0, 2),\n ...makeSourceInfo([\"M'\"], MoveSourceType.SPECIFIC_SLICE, 1, 2), // TODO: remove some indices?\n ...makeSourceInfo([\"x\", \"Uv\", \"Dv'\"], MoveSourceType.ROTATION, 0, 3), // TODO: remove some indices?\n ],\n },\n [Axis.Y]: {\n sliceDiameter: 3,\n extendsThroughEntirePuzzle: true,\n moveSourceInfos: [\n ...makeSourceInfo([\"U\"], MoveSourceType.INDEXABLE_SLICE_NEAR, 0, 3),\n ...makeSourceInfo([\"D'\"], MoveSourceType.INDEXABLE_SLICE_FAR, 0, 3),\n ...makeSourceInfo([\"u\", \"Uw\"], MoveSourceType.INDEXABLE_WIDE_NEAR, 0, 2),\n ...makeSourceInfo([\"d'\", \"Dw'\"], MoveSourceType.INDEXABLE_WIDE_FAR, 0, 2),\n ...makeSourceInfo([\"E'\"], MoveSourceType.SPECIFIC_SLICE, 1, 2), // TODO: remove some indices?\n ...makeSourceInfo([\"y\", \"Uv\", \"Dv'\"], MoveSourceType.ROTATION, 0, 3), // TODO: remove some indices?\n ],\n },\n [Axis.Z]: {\n sliceDiameter: 3,\n extendsThroughEntirePuzzle: true,\n moveSourceInfos: [\n ...makeSourceInfo([\"F\"], MoveSourceType.INDEXABLE_SLICE_NEAR, 0, 3),\n ...makeSourceInfo([\"B'\"], MoveSourceType.INDEXABLE_SLICE_FAR, 0, 3),\n ...makeSourceInfo([\"f\", \"Fw\"], MoveSourceType.INDEXABLE_WIDE_NEAR, 0, 3),\n ...makeSourceInfo([\"b'\", \"Bw'\"], MoveSourceType.INDEXABLE_WIDE_FAR, 0, 3),\n ...makeSourceInfo([\"S\"], MoveSourceType.SPECIFIC_SLICE, 1, 2), // TODO: remove some indices?\n ...makeSourceInfo([\"z\", \"Fv\", \"Bv'\"], MoveSourceType.ROTATION, 0, 3), // TODO: remove some indices?\n ],\n },\n};\n\nconst byFamily: Record<string, { axis: Axis; moveSourceInfo: MoveSourceInfo }> =\n {};\nfor (const [axis, info] of Object.entries(axisInfos)) {\n for (const moveSourceInfo of info.moveSourceInfos) {\n byFamily[moveSourceInfo.family] = { axis: axis as Axis, moveSourceInfo };\n }\n}\n\n// TODO: lazy initialization?\nconst byAxisThenType: Record<\n Axis,\n Partial<Record<MoveSourceType, MoveSourceInfo[]>>\n> = {} as any; // TODO: avoid typecast (using `Object.fromEntries`?)\nfor (const axis of Object.keys(axisInfos) as Axis[]) {\n const entry: Partial<Record<MoveSourceType, MoveSourceInfo[]>> = {};\n byAxisThenType[axis] = entry;\n for (const moveSourceInfo of axisInfos[axis].moveSourceInfos) {\n (entry[moveSourceInfo.type] ??= []).push(moveSourceInfo);\n }\n}\n\n// TODO: consolidate lookup tables?\nconst byAxisThenSpecificSlices: Record<\n Axis,\n Map<number, MoveSourceInfo>\n> = {} as any; // TODO: avoid typecast (using `Object.fromEntries`?)\nfor (const axis of Object.keys(axisInfos) as Axis[]) {\n const entry: Map<number, MoveSourceInfo> = new Map();\n byAxisThenSpecificSlices[axis] = entry;\n for (const moveSourceInfo of axisInfos[axis].moveSourceInfos) {\n // We only want to use the first entry per slice index (in the unlikely case there are multiple).\n if (!entry.get(moveSourceInfo.from)) {\n entry.set(moveSourceInfo.from, moveSourceInfo);\n }\n }\n}\n\nfunction firstOfType(\n axis: Axis,\n moveSourceType: MoveSourceType,\n): MoveSourceInfo {\n const entry = byAxisThenType[axis][moveSourceType]?.[0];\n if (!entry) {\n throw new Error(\n `Could not find a reference move (axis: ${axis}, move source type: ${moveSourceType})`,\n );\n }\n return entry;\n}\n\nconst areQuantumMovesSameAxis = (\n quantumMove1: QuantumMove,\n quantumMove2: QuantumMove,\n) => {\n return (\n byFamily[quantumMove1.family].axis === byFamily[quantumMove2.family].axis\n );\n};\n\nfunction simplestMove(\n axis: Axis,\n from: number,\n to: number,\n directedAmount: number,\n): Move {\n if (from + 1 === to) {\n const sliceSpecificInfo = byAxisThenSpecificSlices[axis].get(from);\n if (sliceSpecificInfo) {\n return new Move(\n new QuantumMove(sliceSpecificInfo.family),\n directedAmount * sliceSpecificInfo.direction,\n );\n }\n }\n\n const axisInfo = axisInfos[axis];\n const { sliceDiameter } = axisInfo;\n if (from === 0 && to === sliceDiameter) {\n const moveSourceInfo = firstOfType(axis, MoveSourceType.ROTATION);\n return new Move(\n new QuantumMove(moveSourceInfo.family),\n directedAmount * moveSourceInfo.direction,\n );\n }\n\n // const specificSliceInfo = byAxisThenSpecificSlices[axis].get(from);\n const far = from + to > sliceDiameter; // (from + to) / 2 > sliceDiameter / 2\n if (far) {\n [from, to] = [sliceDiameter - to, sliceDiameter - from];\n }\n\n let outerLayer: number | null = from + 1; // change to 1-indexed\n let innerLayer: number | null = to; // already 1-indexed\n const slice = outerLayer === innerLayer;\n if (slice) {\n innerLayer = null;\n }\n\n if (outerLayer === 1) {\n outerLayer = null;\n }\n if (slice && outerLayer === 1) {\n innerLayer = null;\n }\n if (!slice && innerLayer === 2) {\n innerLayer = null;\n }\n\n const moveSourceType = slice\n ? far\n ? MoveSourceType.INDEXABLE_SLICE_FAR\n : MoveSourceType.INDEXABLE_SLICE_NEAR\n : far\n ? MoveSourceType.INDEXABLE_WIDE_FAR\n : MoveSourceType.INDEXABLE_WIDE_NEAR;\n const moveSourceInfo = firstOfType(axis, moveSourceType);\n return new Move(\n new QuantumMove(moveSourceInfo.family, innerLayer, outerLayer),\n directedAmount * moveSourceInfo.direction,\n );\n}\n\nfunction simplifySameAxisMoves(\n moves: Move[],\n quantumMod: boolean = true, // TODO\n): Move[] {\n if (moves.length === 0) {\n // TODO: can we use the type system to avoid this?\n return [];\n }\n\n const axis: Axis = byFamily[moves[0].family].axis;\n const axisInfo = axisInfos[axis];\n const { sliceDiameter } = axisInfo;\n const sliceDeltas = new Map<number, number>();\n let lastCandidateRange: {\n suffixLength: number;\n sliceDeltas: Map<number, number>;\n } | null = null;\n\n function adjustValue(idx: number, relativeDelta: number) {\n let newDelta = (sliceDeltas.get(idx) ?? 0) + relativeDelta;\n if (quantumMod) {\n newDelta = (newDelta % 4) + (5 % 4) - 1; // TODO: Use a passed-in `modMove`?\n }\n if (newDelta === 0) {\n sliceDeltas.delete(idx);\n } else {\n sliceDeltas.set(idx, newDelta);\n }\n }\n // TODO: go as far as possible instead of trying to take all moves, e.g. simplify U y y' to U.\n let suffixLength = 0;\n // TODO: Reverse iterator?\n for (const move of Array.from(moves).reverse()) {\n suffixLength++;\n const { moveSourceInfo } = byFamily[move.family];\n const directedAmount = move.amount * moveSourceInfo.direction;\n // console.log({ directedAmount });\n switch (moveSourceInfo.type) {\n case MoveSourceType.INDEXABLE_SLICE_NEAR: {\n // We convert to zero-indexing\n const idx = (move.innerLayer ?? 1) - 1;\n adjustValue(idx, directedAmount);\n adjustValue(idx + 1, -directedAmount);\n break;\n }\n case MoveSourceType.INDEXABLE_SLICE_FAR: {\n // We convert to zero-indexing (which cancels with the subtraction from the slice width)\n const idx = sliceDiameter - (move.innerLayer ?? 1);\n adjustValue(idx, directedAmount);\n adjustValue(idx + 1, -directedAmount);\n break;\n }\n case MoveSourceType.INDEXABLE_WIDE_NEAR: {\n adjustValue((move.outerLayer ?? 1) - 1, directedAmount);\n adjustValue(move.innerLayer ?? 2, -directedAmount);\n break;\n }\n case MoveSourceType.INDEXABLE_WIDE_FAR: {\n adjustValue(sliceDiameter - (move.innerLayer ?? 2), directedAmount);\n adjustValue(\n sliceDiameter - ((move.outerLayer ?? 1) - 1),\n -directedAmount,\n );\n break;\n }\n case MoveSourceType.SPECIFIC_SLICE: {\n // We convert to zero-indexing (which cancels with the subtraction from the slice width)\n adjustValue(moveSourceInfo.from, directedAmount);\n adjustValue(moveSourceInfo.to, -directedAmount);\n break;\n }\n case MoveSourceType.ROTATION: {\n adjustValue(0, directedAmount);\n adjustValue(sliceDiameter, -directedAmount);\n break;\n }\n }\n if ([0, 2].includes(sliceDeltas.size)) {\n lastCandidateRange = { suffixLength, sliceDeltas: new Map(sliceDeltas) };\n }\n }\n if (sliceDeltas.size === 0) {\n return [];\n }\n // TODO: handle this check in the destructuring assignment?\n if (!lastCandidateRange) {\n return moves;\n }\n let [from, to] = lastCandidateRange.sliceDeltas.keys();\n if (from > to) {\n [from, to] = [to, from];\n }\n const directedAmount = lastCandidateRange.sliceDeltas.get(from)!;\n // TODO: Handle empty move\n return [\n ...moves.slice(0, -lastCandidateRange.suffixLength),\n ...(directedAmount !== 0\n ? [simplestMove(axis, from, to, directedAmount)]\n : []),\n ];\n}\n\nexport const puzzleSpecificSimplifyOptions333: PuzzleSpecificSimplifyOptions = {\n quantumMoveOrder: () => 4,\n // doQuantumMovesCommute: areQuantumMovesSameAxis,\n axis: { areQuantumMovesSameAxis, simplifySameAxisMoves },\n};\n", "// Include 3x3x3 in the main bundle for better performance.\nimport type { ExperimentalStickering } from \"../../../twisty\";\nimport { asyncGetPuzzleGeometry } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport { experimental3x3x3KPuzzle } from \"../../cubing-private\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\nimport type { StickeringMask } from \"../../stickerings/mask\";\nimport {\n cubeLikeStickeringMask,\n cubeLikeStickeringList,\n} from \"../../stickerings/cube-like-stickerings\";\nimport { puzzleSpecificSimplifyOptions333 } from \"./puzzle-specific-simplifications\";\n\n/** @category Specific Puzzles */\nexport const cube3x3x3 = {\n id: \"3x3x3\",\n fullName: \"3\u00D73\u00D73 Cube\",\n inventedBy: [\"Ern\u0151 Rubik\"],\n inventionYear: 1974, // https://en.wikipedia.org/wiki/Rubik%27s_Cube#Conception_and_development\n kpuzzle: getCached(async () => {\n return experimental3x3x3KPuzzle;\n }),\n svg: getCached(async () => {\n return (await import(\"../dynamic/3x3x3/puzzles-dynamic-3x3x3\"))\n .cube3x3x3SVG;\n }),\n llSVG: getCached(async () => {\n return (await import(\"../dynamic/3x3x3/puzzles-dynamic-3x3x3\"))\n .cube3x3x3LLSVG;\n }),\n llFaceSVG: getCached(async () => {\n return (await import(\"../dynamic/3x3x3/puzzles-dynamic-3x3x3\"))\n .cube3x3x3LLFaceSVG;\n }),\n pg: getCached(async () => {\n return asyncGetPuzzleGeometry(\"3x3x3\");\n }),\n stickeringMask: (\n stickering: ExperimentalStickering,\n ): Promise<StickeringMask> => cubeLikeStickeringMask(cube3x3x3, stickering),\n stickerings: () => cubeLikeStickeringList(\"3x3x3\"),\n puzzleSpecificSimplifyOptions: puzzleSpecificSimplifyOptions333,\n} satisfies PuzzleLoader;\n", "import { CubePGPuzzleLoader } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nconst cube4x4x4: PuzzleLoader = new CubePGPuzzleLoader({\n id: \"4x4x4\",\n fullName: \"4\u00D74\u00D74 Cube\",\n});\n\ncube4x4x4.llSVG = getCached(async () => {\n return (await import(\"../dynamic/4x4x4/puzzles-dynamic-4x4x4\"))\n .cube4x4x4LLSVG;\n});\n\nexport { cube4x4x4 };\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const clock: PuzzleLoader = {\n id: \"clock\",\n fullName: \"Clock\",\n inventedBy: [\"Christopher C. Wiggs\", \"Christopher J. Taylor\"],\n inventionYear: 1988, // Patent application year: https://www.jaapsch.net/puzzles/patents/us4869506.pdf\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .clockJSON,\n ),\n ),\n svg: getCached(async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .clockSVG;\n }),\n};\n", "import type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport {\n type StickeringMask,\n PuzzleStickering,\n StickeringManager,\n type PieceSet,\n PieceStickering,\n} from \"./mask\";\n\nexport async function ftoStickering(\n puzzleLoader: PuzzleLoader,\n stickering: ExperimentalStickering,\n): Promise<StickeringMask> {\n const kpuzzle = await puzzleLoader.kpuzzle();\n const puzzleStickering = new PuzzleStickering(kpuzzle);\n const m = new StickeringManager(kpuzzle);\n\n const experimentalFTO_FC = (): PieceSet =>\n m.and([m.move(\"U\"), m.not(m.or(m.moves([\"F\", \"BL\", \"BR\"])))]);\n const experimentalFTO_F2T = (): PieceSet =>\n m.and([m.move(\"U\"), m.not(m.move(\"F\"))]);\n const experimentalFTO_SC = (): PieceSet =>\n m.or([\n experimentalFTO_F2T(),\n m.and([m.move(\"F\"), m.not(m.or(m.moves([\"U\", \"BL\", \"BR\"])))]),\n ]);\n const experimentalFTO_L2C = (): PieceSet =>\n m.not(\n m.or([\n m.and([m.move(\"U\"), m.move(\"F\")]),\n m.and([m.move(\"F\"), m.move(\"BL\")]),\n m.and([m.move(\"F\"), m.move(\"BR\")]),\n m.and([m.move(\"BL\"), m.move(\"BR\")]),\n ]),\n );\n const experimentalFTO_LBT = (): PieceSet =>\n m.not(\n m.or([\n m.and([m.move(\"F\"), m.move(\"BL\")]),\n m.and([m.move(\"F\"), m.move(\"BR\")]),\n m.and([m.move(\"BL\"), m.move(\"BR\")]),\n ]),\n );\n\n switch (stickering) {\n case \"full\":\n break;\n case \"experimental-fto-fc\": {\n puzzleStickering.set(\n m.not(experimentalFTO_FC()),\n PieceStickering.Ignored,\n );\n break;\n }\n case \"experimental-fto-f2t\": {\n puzzleStickering.set(\n m.not(experimentalFTO_F2T()),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(experimentalFTO_FC(), PieceStickering.Dim);\n break;\n }\n case \"experimental-fto-sc\": {\n puzzleStickering.set(\n m.not(experimentalFTO_SC()),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(experimentalFTO_F2T(), PieceStickering.Dim);\n break;\n }\n case \"experimental-fto-l2c\": {\n puzzleStickering.set(\n m.not(experimentalFTO_L2C()),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(experimentalFTO_SC(), PieceStickering.Dim);\n break;\n }\n case \"experimental-fto-lbt\": {\n puzzleStickering.set(\n m.not(experimentalFTO_LBT()),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(experimentalFTO_L2C(), PieceStickering.Dim);\n break;\n }\n case \"experimental-fto-l3t\": {\n puzzleStickering.set(experimentalFTO_LBT(), PieceStickering.Dim);\n break;\n }\n default:\n console.warn(\n `Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`,\n );\n puzzleStickering.set(m.and(m.moves([])), PieceStickering.Dim);\n }\n return puzzleStickering.toStickeringMask();\n}\n\nexport async function ftoStickerings(): Promise<ExperimentalStickering[]> {\n return [\n \"full\",\n \"experimental-fto-fc\",\n \"experimental-fto-f2t\",\n \"experimental-fto-sc\",\n \"experimental-fto-l2c\",\n \"experimental-fto-lbt\",\n \"experimental-fto-l3t\",\n ];\n}\n", "import type { ExperimentalStickering } from \"../../../twisty\";\nimport { PGPuzzleLoader } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { StickeringMask } from \"../../stickerings/mask\";\nimport {\n ftoStickering,\n ftoStickerings,\n} from \"../../stickerings/fto-stickerings\";\n\nclass FTOPuzzleLoader extends PGPuzzleLoader {\n constructor() {\n super({\n pgID: \"FTO\",\n id: \"fto\",\n fullName: \"Face-Turning Octahedron\",\n inventedBy: [\"Karl Rohrbach\", \"David Pitcher\"], // http://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1663\n inventionYear: 1983, // http://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1663\n });\n }\n stickeringMask(stickering: ExperimentalStickering): Promise<StickeringMask> {\n return ftoStickering(this, stickering);\n }\n stickerings = ftoStickerings;\n override svg = getCached(async () => {\n return (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .ftoSVG;\n });\n}\n\nexport const fto = new FTOPuzzleLoader();\n", "import type { PuzzleLoader } from \"../..\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport {\n asyncGetKPuzzleByDesc,\n descAsyncGetPuzzleGeometry,\n} from \"../../customPGPuzzleLoader\";\n\nconst KILOMINX_PUZZLE_DESCRIPTION = \"d f 0.56\";\n\n// TODO: Make this consistent with Megaminx corners\nexport const kilominx: PuzzleLoader = {\n id: \"kilominx\",\n fullName: \"Kilominx\",\n kpuzzle: getCached(() =>\n asyncGetKPuzzleByDesc(KILOMINX_PUZZLE_DESCRIPTION, {\n includeCenterOrbits: false,\n includeEdgeOrbits: false,\n }),\n ),\n pg: () =>\n descAsyncGetPuzzleGeometry(KILOMINX_PUZZLE_DESCRIPTION, {\n includeCenterOrbits: false,\n includeEdgeOrbits: false,\n }),\n svg: getCached(async () => {\n return (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .kilominxSVG;\n }),\n};\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const loopover: PuzzleLoader = {\n id: \"loopover\",\n fullName: \"Loopover\",\n inventedBy: [\"Cary Huang\"],\n inventionYear: 2018,\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .loopoverJSON,\n ),\n ),\n svg: async () => {\n return (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .loopoverSVG;\n },\n};\n", "import type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport type { StickeringMask } from \"./mask\";\nimport {\n cubeLikeStickeringList,\n cubeLikeStickeringMask,\n} from \"./cube-like-stickerings\";\nimport { from } from \"../../vendor/mit/p-lazy/p-lazy\";\n\n// TODO: cache calculations?\nexport async function megaminxStickeringMask(\n puzzleLoader: PuzzleLoader,\n stickering: ExperimentalStickering,\n): Promise<StickeringMask> {\n // TODO: optimize lookup instead of looking through a list\n if ((await megaminxStickerings()).includes(stickering)) {\n return cubeLikeStickeringMask(puzzleLoader, stickering);\n }\n console.warn(\n `Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`,\n );\n return cubeLikeStickeringMask(puzzleLoader, \"full\");\n}\n\nconst megaminxStickeringListPromise: Promise<string[]> = from(() =>\n cubeLikeStickeringList(\"megaminx\"),\n);\nexport function megaminxStickerings(): Promise<string[]> {\n return megaminxStickeringListPromise;\n}\n", "import type { ExperimentalStickering } from \"../../../twisty\";\nimport { PGPuzzleLoader } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { StickeringMask } from \"../../stickerings/mask\";\nimport {\n megaminxStickeringMask,\n megaminxStickerings,\n} from \"../../stickerings/megaminx-stickerings\";\n\nclass MegaminxPuzzleLoader extends PGPuzzleLoader {\n constructor() {\n super({\n id: \"megaminx\",\n fullName: \"Megaminx\",\n // Too many simultaneous inventors to name.\n inventionYear: 1981, // Earliest date from https://www.jaapsch.net/puzzles/megaminx.htm\n });\n }\n stickeringMask(stickering: ExperimentalStickering): Promise<StickeringMask> {\n return megaminxStickeringMask(this, stickering);\n }\n stickerings = megaminxStickerings;\n\n llSVG = getCached(async () => {\n return (await import(\"../dynamic/megaminx/puzzles-dynamic-megaminx\"))\n .megaminxLLSVG;\n });\n}\n\nexport const megaminx = new MegaminxPuzzleLoader();\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const melindas2x2x2x2: PuzzleLoader = {\n id: \"melindas2x2x2x2\",\n fullName: \"Melinda's 2\u00D72\u00D72\u00D72\",\n inventedBy: [\"Melinda Green\"],\n // inventionYear: 20__, // TODO\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .melindas2x2x2x2OrbitJSON,\n ),\n ),\n svg: getCached(async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .melindas2x2x2x2OrbitSVG;\n }),\n};\n", "import { PGPuzzleLoader } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\n\nclass PyraminxPuzzleLoader extends PGPuzzleLoader {\n constructor() {\n super({\n id: \"pyraminx\",\n fullName: \"Pyraminx\",\n inventedBy: [\"Uwe Meffert\"],\n });\n }\n override svg = getCached(async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .pyraminxSVG;\n });\n}\n\nexport const pyraminx = new PyraminxPuzzleLoader();\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const rediCube: PuzzleLoader = {\n id: \"redi_cube\",\n fullName: \"Redi Cube\",\n // Announced 2009-07-21: https://www.youtube.com/watch?v=cjfMzA1u3vM\n // https://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1520\n inventedBy: [\"Oskar van Deventer\"],\n inventionYear: 2009,\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .rediCubeJSON,\n ),\n ),\n svg: async () => {\n return (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .rediCubeSVG;\n },\n};\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const square1: PuzzleLoader = {\n id: \"square1\",\n fullName: \"Square-1\",\n inventedBy: [\"Karel Hr\u0161el\", \"Vojtech Kopsk\u00FD\"],\n inventionYear: 1990, // Czech patent application year: http://spisy.upv.cz/Patents/FullDocuments/277/277266.pdf\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .sq1HyperOrbitJSON,\n ),\n ),\n svg: getCached(async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .sq1HyperOrbitSVG;\n }),\n};\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const tri_quad: PuzzleLoader = {\n id: \"tri_quad\",\n fullName: \"TriQuad\",\n inventedBy: [\"Bram Cohen\", \"Carl Hoff\"],\n inventionYear: 2018, // https://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=6809\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .triQuadJSON,\n ),\n ),\n svg: getCached(async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .triQuadSVG;\n }),\n};\n", "export { eventInfo, twizzleEvents, wcaEventInfo, wcaEvents } from \"./events\";\nexport { cube2x2x2, cube3x3x3 };\nexport type { PuzzleLoader };\n\nimport type { PuzzleLoader } from \"./PuzzleLoader\";\nimport { CubePGPuzzleLoader, PGPuzzleLoader } from \"./async/async-pg3d\";\nimport { cube2x2x2 } from \"./implementations/2x2x2\";\nimport { cube3x3x3 } from \"./implementations/3x3x3\";\nimport { cube4x4x4 } from \"./implementations/4x4x4\";\nimport { clock } from \"./implementations/clock\";\nimport { fto } from \"./implementations/fto\";\nimport { kilominx } from \"./implementations/kilominx\";\nimport { loopover } from \"./implementations/loopover\";\nimport { megaminx } from \"./implementations/megaminx\";\nimport { melindas2x2x2x2 } from \"./implementations/melindas2x2x2x2\";\nimport { pyraminx } from \"./implementations/pyraminx\";\nimport { rediCube } from \"./implementations/redi-cube\";\nimport { square1 } from \"./implementations/square1\";\nimport { tri_quad } from \"./implementations/tri_quad\";\n\n/** @category All Puzzles */\nexport const puzzles: Record<string, PuzzleLoader> = {\n /******** Start of WCA Puzzles *******/\n \"3x3x3\": cube3x3x3,\n \"2x2x2\": cube2x2x2,\n \"4x4x4\": cube4x4x4,\n \"5x5x5\": new CubePGPuzzleLoader({ id: \"5x5x5\", fullName: \"5\u00D75\u00D75 Cube\" }),\n \"6x6x6\": new CubePGPuzzleLoader({ id: \"6x6x6\", fullName: \"6\u00D76\u00D76 Cube\" }),\n \"7x7x7\": new CubePGPuzzleLoader({ id: \"7x7x7\", fullName: \"7\u00D77\u00D77 Cube\" }),\n \"40x40x40\": new CubePGPuzzleLoader({\n id: \"40x40x40\",\n fullName: \"40\u00D740\u00D740 Cube\",\n }),\n // 3x3x3 Blindfolded\n // 3x3x3 Fewest Moves\n // 3x3x3 One-Handed\n clock,\n megaminx: megaminx,\n pyraminx,\n skewb: new PGPuzzleLoader({\n id: \"skewb\",\n fullName: \"Skewb\",\n inventedBy: [\"Tony Durham\"], // https://www.jaapsch.net/puzzles/skewb.htm\n // inventionYear: 1982, // 1982 is actually the year of Hofstadter's column.\n }),\n square1,\n // 4x4x4 Blindfolded\n // 5x5x5 Blindfolded\n /******** End of WCA puzzles ********/\n fto: fto,\n gigaminx: new PGPuzzleLoader({\n id: \"gigaminx\",\n fullName: \"Gigaminx\",\n inventedBy: [\"Tyler Fox\"],\n inventionYear: 2006, // Earliest date from https://www.twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1475\n }),\n master_tetraminx: new PGPuzzleLoader({\n pgID: \"master tetraminx\",\n id: \"master_tetraminx\",\n fullName: \"Master Tetraminx\",\n inventedBy: [\"Katsuhiko Okamoto\"], // Using master pyraminx: https://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1352\n inventionYear: 2002, // Using master pyraminx: https://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1352\n }),\n kilominx,\n redi_cube: rediCube,\n melindas2x2x2x2,\n loopover,\n tri_quad,\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["from", "moveSourceInfo", "directedAmount"]
7
7
  }