cubing 0.25.5 → 0.25.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/esm/{2x2x2.sgs.json-FBJ4RQ4C.js → 2x2x2.sgs.json-GQVTWF7L.js} +3 -3
  2. package/dist/esm/{2x2x2.sgs.json-FBJ4RQ4C.js.map → 2x2x2.sgs.json-GQVTWF7L.js.map} +0 -0
  3. package/dist/esm/{3d-dynamic-TNYERP4O.js → 3d-dynamic-DKWMBHRS.js} +4 -4
  4. package/dist/esm/{3d-dynamic-TNYERP4O.js.map → 3d-dynamic-DKWMBHRS.js.map} +0 -0
  5. package/dist/esm/{444-solver-YZ6PC54L.js → 444-solver-ZBJQH3QR.js} +4 -4
  6. package/dist/esm/{444-solver-YZ6PC54L.js.map → 444-solver-ZBJQH3QR.js.map} +0 -0
  7. package/dist/esm/bluetooth/index.js +3 -3
  8. package/dist/esm/{chunk-V5K5JN2N.js → chunk-BOKO2BWT.js} +20 -3
  9. package/dist/esm/chunk-BOKO2BWT.js.map +7 -0
  10. package/dist/esm/{chunk-Y32HHZUY.js → chunk-FE3HTWQK.js} +8 -2
  11. package/dist/esm/chunk-FE3HTWQK.js.map +7 -0
  12. package/dist/esm/{chunk-RJSX2HO4.js → chunk-HTPDDD3Q.js} +2 -2
  13. package/dist/esm/{chunk-RJSX2HO4.js.map → chunk-HTPDDD3Q.js.map} +0 -0
  14. package/dist/esm/{chunk-QEDC2QTN.js → chunk-L73RWUDG.js} +2 -2
  15. package/dist/esm/{chunk-QEDC2QTN.js.map → chunk-L73RWUDG.js.map} +0 -0
  16. package/dist/esm/{chunk-TXTMBIUR.js → chunk-L7AOT5LY.js} +2 -2
  17. package/dist/esm/{chunk-TXTMBIUR.js.map → chunk-L7AOT5LY.js.map} +0 -0
  18. package/dist/esm/{chunk-KJZNEDOV.js → chunk-LZGPOT2V.js} +2 -2
  19. package/dist/esm/{chunk-KJZNEDOV.js.map → chunk-LZGPOT2V.js.map} +0 -0
  20. package/dist/esm/{chunk-LGM2HUUG.js → chunk-ME2QTCHN.js} +3 -3
  21. package/dist/esm/{chunk-LGM2HUUG.js.map → chunk-ME2QTCHN.js.map} +0 -0
  22. package/dist/esm/{chunk-JLNFWJIT.js → chunk-T2BDGTK3.js} +3 -3
  23. package/dist/esm/{chunk-JLNFWJIT.js.map → chunk-T2BDGTK3.js.map} +0 -0
  24. package/dist/esm/{chunk-4VNM5SER.js → chunk-TG5KP5IL.js} +2 -2
  25. package/dist/esm/{chunk-4VNM5SER.js.map → chunk-TG5KP5IL.js.map} +0 -0
  26. package/dist/esm/{fto.dynamic-RAXDXLKL.js → fto.dynamic-ZH5IVUKX.js} +3 -3
  27. package/dist/esm/{fto.dynamic-RAXDXLKL.js.map → fto.dynamic-ZH5IVUKX.js.map} +0 -0
  28. package/dist/esm/kpuzzle/index.js +1 -1
  29. package/dist/esm/{megaminx.sgs.json-3ZEDZMWF.js → megaminx.sgs.json-JXXOXGQE.js} +3 -3
  30. package/dist/esm/{megaminx.sgs.json-3ZEDZMWF.js.map → megaminx.sgs.json-JXXOXGQE.js.map} +0 -0
  31. package/dist/esm/protocol/index.js +2 -2
  32. package/dist/esm/puzzles/index.js +2 -2
  33. package/dist/esm/{pyraminx.sgs.json-AUUH6ELM.js → pyraminx.sgs.json-EHYGSC7B.js} +4 -4
  34. package/dist/esm/{pyraminx.sgs.json-AUUH6ELM.js.map → pyraminx.sgs.json-EHYGSC7B.js.map} +0 -0
  35. package/dist/esm/redi_cube-E5F64NIQ.js +564 -0
  36. package/dist/esm/redi_cube-E5F64NIQ.js.map +7 -0
  37. package/dist/esm/redi_cube.kpuzzle.json-EPBKWOMV.js +66 -0
  38. package/dist/esm/redi_cube.kpuzzle.json-EPBKWOMV.js.map +7 -0
  39. package/dist/esm/redi_cube.kpuzzle.svg-BSHCMC2Z.js +160 -0
  40. package/dist/esm/redi_cube.kpuzzle.svg-BSHCMC2Z.js.map +7 -0
  41. package/dist/esm/scramble/index.js +4 -4
  42. package/dist/esm/search/index.js +4 -4
  43. package/dist/esm/{search-worker-js-entry-B76LGKC2.js → search-worker-js-entry-BDMABBZV.js} +26 -17
  44. package/dist/esm/{search-worker-js-entry-B76LGKC2.js.map → search-worker-js-entry-BDMABBZV.js.map} +3 -3
  45. package/dist/esm/{search-worker-ts-entry-JZTMF3AC.js → search-worker-ts-entry-3B5U6XER.js} +2 -2
  46. package/dist/esm/{search-worker-ts-entry-JZTMF3AC.js.map → search-worker-ts-entry-3B5U6XER.js.map} +0 -0
  47. package/dist/esm/{skewb.sgs.json-6NDFH63U.js → skewb.sgs.json-F5FL7533.js} +3 -3
  48. package/dist/esm/{skewb.sgs.json-6NDFH63U.js.map → skewb.sgs.json-F5FL7533.js.map} +0 -0
  49. package/dist/esm/twisty/index.js +4 -3
  50. package/dist/esm/twisty/index.js.map +2 -2
  51. package/dist/esm/worker-inside-generated-string-AHMSHHSF.js +3674 -0
  52. package/dist/esm/worker-inside-generated-string-AHMSHHSF.js.map +7 -0
  53. package/dist/types/kpuzzle/KPuzzleDefinition.d.ts +1 -0
  54. package/dist/types/puzzles/implementations/redi-cube/index.d.ts +2 -0
  55. package/dist/types/puzzles/implementations/redi-cube/redi_cube.kpuzzle.json.d.ts +2 -0
  56. package/dist/types/puzzles/implementations/redi-cube/redi_cube.kpuzzle.svg.d.ts +1 -0
  57. package/dist/types/search/inside/solve/puzzles/redi_cube.d.ts +2 -0
  58. package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
  59. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts +1 -0
  60. package/dist/types/vendor/xyzzy/fto-solver-original.d.ts +1 -30
  61. package/dist/types/vendor/xyzzy/redi_cube.d.ts +2 -0
  62. package/package.json +1 -1
  63. package/dist/esm/chunk-V5K5JN2N.js.map +0 -7
  64. package/dist/esm/chunk-Y32HHZUY.js.map +0 -7
  65. package/dist/esm/worker-inside-generated-string-QVH4RRM7.js +0 -3522
  66. package/dist/esm/worker-inside-generated-string-QVH4RRM7.js.map +0 -7
  67. package/dist/types/vendor/xyzzy/rediscrambler.d.ts +0 -72
@@ -3,8 +3,8 @@ import {
3
3
  } from "./chunk-27KJGD3S.js";
4
4
  import {
5
5
  cube2x2x2
6
- } from "./chunk-V5K5JN2N.js";
7
- import "./chunk-Y32HHZUY.js";
6
+ } from "./chunk-BOKO2BWT.js";
7
+ import "./chunk-FE3HTWQK.js";
8
8
  import "./chunk-EWRBHQFX.js";
9
9
  import "./chunk-WO2AXYFE.js";
10
10
 
@@ -119,4 +119,4 @@ export {
119
119
  cachedData222,
120
120
  data222
121
121
  };
122
- //# sourceMappingURL=2x2x2.sgs.json-FBJ4RQ4C.js.map
122
+ //# sourceMappingURL=2x2x2.sgs.json-GQVTWF7L.js.map
@@ -3,13 +3,13 @@ import {
3
3
  THREEJS,
4
4
  experimentalStickerings,
5
5
  hintFaceletStyles
6
- } from "./chunk-4VNM5SER.js";
6
+ } from "./chunk-TG5KP5IL.js";
7
7
  import {
8
8
  cube3x3x3,
9
9
  getFaceletAppearance,
10
10
  puzzles
11
- } from "./chunk-V5K5JN2N.js";
12
- import "./chunk-Y32HHZUY.js";
11
+ } from "./chunk-BOKO2BWT.js";
12
+ import "./chunk-FE3HTWQK.js";
13
13
  import {
14
14
  Move
15
15
  } from "./chunk-EWRBHQFX.js";
@@ -1496,4 +1496,4 @@ export {
1496
1496
  cube3DShim,
1497
1497
  pg3dShim
1498
1498
  };
1499
- //# sourceMappingURL=3d-dynamic-TNYERP4O.js.map
1499
+ //# sourceMappingURL=3d-dynamic-DKWMBHRS.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  mustBeInsideWorker,
3
3
  random333Scramble
4
- } from "./chunk-LGM2HUUG.js";
4
+ } from "./chunk-ME2QTCHN.js";
5
5
  import {
6
6
  randomUIntBelowFactory
7
7
  } from "./chunk-RENZB7QN.js";
8
- import "./chunk-V5K5JN2N.js";
9
- import "./chunk-Y32HHZUY.js";
8
+ import "./chunk-BOKO2BWT.js";
9
+ import "./chunk-FE3HTWQK.js";
10
10
  import {
11
11
  Alg
12
12
  } from "./chunk-EWRBHQFX.js";
@@ -2570,4 +2570,4 @@ export {
2570
2570
  initialize,
2571
2571
  random444Scramble
2572
2572
  };
2573
- //# sourceMappingURL=444-solver-YZ6PC54L.js.map
2573
+ //# sourceMappingURL=444-solver-ZBJQH3QR.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  binaryComponentsToReid3x3x3,
3
3
  twizzleBinaryToBinaryComponents
4
- } from "../chunk-TXTMBIUR.js";
4
+ } from "../chunk-L7AOT5LY.js";
5
5
  import {
6
6
  puzzles
7
- } from "../chunk-V5K5JN2N.js";
7
+ } from "../chunk-BOKO2BWT.js";
8
8
  import {
9
9
  KState,
10
10
  experimental3x3x3KPuzzle
11
- } from "../chunk-Y32HHZUY.js";
11
+ } from "../chunk-FE3HTWQK.js";
12
12
  import {
13
13
  Alg,
14
14
  Move,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  KPuzzle,
3
3
  experimental3x3x3KPuzzle
4
- } from "./chunk-Y32HHZUY.js";
4
+ } from "./chunk-FE3HTWQK.js";
5
5
  import {
6
6
  __privateAdd,
7
7
  __privateGet,
@@ -87,6 +87,10 @@ var events = {
87
87
  kilominx: {
88
88
  puzzleID: "kilominx",
89
89
  eventName: "Kilominx"
90
+ },
91
+ redi_cube: {
92
+ puzzleID: "redi_cube",
93
+ eventName: "Redi Cube"
90
94
  }
91
95
  };
92
96
  function eventInfo(event) {
@@ -817,6 +821,18 @@ var kilominx = {
817
821
  })
818
822
  };
819
823
 
824
+ // src/cubing/puzzles/implementations/redi-cube/index.ts
825
+ var rediCube = {
826
+ id: "redi_cube",
827
+ fullName: "Redi Cube",
828
+ inventedBy: ["Oskar van Deventer"],
829
+ inventionYear: 2009,
830
+ kpuzzle: getCached(async () => new KPuzzle((await import("./redi_cube.kpuzzle.json-EPBKWOMV.js")).rediCubeKPuzzleDefinition)),
831
+ svg: async () => {
832
+ return (await import("./redi_cube.kpuzzle.svg-BSHCMC2Z.js")).rediCubeSVG;
833
+ }
834
+ };
835
+
820
836
  // src/cubing/puzzles/index.ts
821
837
  var puzzles = {
822
838
  "3x3x3": cube3x3x3,
@@ -852,7 +868,8 @@ var puzzles = {
852
868
  inventedBy: ["Katsuhiko Okamoto"],
853
869
  inventionYear: 2002
854
870
  }),
855
- kilominx
871
+ kilominx,
872
+ "redi_cube": rediCube
856
873
  };
857
874
 
858
875
  export {
@@ -865,4 +882,4 @@ export {
865
882
  cube3x3x3,
866
883
  puzzles
867
884
  };
868
- //# sourceMappingURL=chunk-V5K5JN2N.js.map
885
+ //# sourceMappingURL=chunk-BOKO2BWT.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/cubing/puzzles/customPGPuzzleLoader.ts", "../../src/cubing/puzzles/events.ts", "../../src/cubing/puzzles/stickerings/appearance.ts", "../../src/cubing/puzzles/stickerings/global-custom-stickering-hack.ts", "../../src/cubing/puzzles/stickerings/cube-stickerings.ts", "../../src/cubing/puzzles/async/lazy-cached.ts", "../../src/cubing/puzzles/async/async-pg3d.ts", "../../src/cubing/puzzles/implementations/2x2x2/index.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/index.ts"],
4
+ "sourcesContent": ["import { KPuzzle, KPuzzleDefinition } from \"../kpuzzle\";\nimport type { PuzzleGeometry } from \"../puzzle-geometry\";\nimport type { PuzzleDescriptionString } from \"../puzzle-geometry/PGPuzzles\";\nimport type { PuzzleLoader } from \"./PuzzleLoader\";\n\n// TODO: modify this to handle TwistyPlayer options\nexport async function descAsyncGetPuzzleGeometry(\n desc: PuzzleDescriptionString,\n): Promise<PuzzleGeometry> {\n const puzzleGeometry = await import(\"../puzzle-geometry\");\n return puzzleGeometry.getPuzzleGeometryByDesc(desc, {\n allMoves: true,\n orientCenters: true,\n addRotations: true,\n });\n}\n\n// TODO: dedup with `cubing/puzzles`\nexport async function asyncGetKPuzzle(\n desc: PuzzleDescriptionString,\n): Promise<KPuzzle> {\n const pg = await descAsyncGetPuzzleGeometry(desc);\n const kpuzzleDefinition: KPuzzleDefinition = pg.getKPuzzleDefinition(true);\n kpuzzleDefinition.name = `description: ${desc}`;\n const puzzleGeometry = await import(\"../puzzle-geometry\");\n const pgNotation = new puzzleGeometry.ExperimentalPGNotation(\n pg,\n pg.getOrbitsDef(true),\n );\n return new KPuzzle(kpuzzleDefinition, {\n experimentalPGNotation: pgNotation,\n });\n}\n\n// TODO: Can we avoid relying on IDs to deduplicate work at higher levels?\nlet nextCustomID = 1;\n\nexport function customPGPuzzleLoader(\n desc: PuzzleDescriptionString,\n info?: {\n fullName?: string;\n inventedBy?: string[];\n inventionYear?: number;\n },\n): PuzzleLoader {\n const customID = nextCustomID++;\n let cachedKPuzzle: Promise<KPuzzle> | null = null;\n const puzzleLoader: PuzzleLoader = {\n id: `custom-${customID}`,\n fullName: info?.fullName ?? `Custom Puzzle (instance #${customID})`,\n kpuzzle: async () => {\n return (cachedKPuzzle ??= asyncGetKPuzzle(desc));\n },\n svg: async () => {\n const pg = await descAsyncGetPuzzleGeometry(desc);\n return pg.generatesvg();\n },\n pg: async () => {\n return descAsyncGetPuzzleGeometry(desc);\n },\n };\n if (info?.inventedBy) {\n puzzleLoader.inventedBy = info.inventedBy;\n }\n if (info?.inventionYear) {\n puzzleLoader.inventionYear = info.inventionYear;\n }\n return puzzleLoader;\n}\n", "import type { PuzzleID } from \"../twisty\";\n\ninterface EventInfo {\n puzzleID: PuzzleID;\n eventName: string;\n}\n\nconst 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 \"333mb\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Multi-Blind\" },\n};\n\nexport function wcaEventInfo(event: string): EventInfo | null {\n return wcaEvents[event] ?? null;\n}\n\nconst events: 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};\n\nexport function eventInfo(event: string): EventInfo | null {\n return events[event] ?? null;\n}\n", "// TODO: figure out where to house this permanently.\n\nimport type { Move } from \"../../alg\";\nimport type { KPuzzle } from \"../../kpuzzle\";\n\nexport type FaceletMeshAppearance =\n | \"regular\"\n | \"dim\"\n | \"oriented\"\n | \"ignored\"\n | \"invisible\";\n\nexport type FaceletAppearance = {\n appearance: FaceletMeshAppearance;\n hintAppearance?: FaceletMeshAppearance;\n};\n\nexport type PieceAppearance = {\n // TODO: foundation?\n facelets: (FaceletMeshAppearance | FaceletAppearance | null)[];\n};\n\nexport type OrbitAppearance = {\n pieces: (PieceAppearance | null)[];\n};\n\nexport type PuzzleAppearance = {\n name?: string; // TODO\n orbits: Record<string, OrbitAppearance>;\n};\n\nexport function getFaceletAppearance(\n appearance: PuzzleAppearance,\n orbitName: string,\n pieceIdx: number,\n faceletIdx: number,\n hint: boolean,\n): FaceletMeshAppearance {\n const orbitAppearance = appearance.orbits[orbitName];\n const pieceAppearance: PieceAppearance | null =\n orbitAppearance.pieces[pieceIdx];\n if (pieceAppearance === null) {\n return regular;\n }\n const faceletAppearance: FaceletMeshAppearance | FaceletAppearance | null =\n pieceAppearance.facelets[faceletIdx];\n if (faceletAppearance === null) {\n return regular;\n }\n if (typeof faceletAppearance === \"string\") {\n return faceletAppearance;\n }\n if (hint) {\n return faceletAppearance.hintAppearance ?? faceletAppearance.appearance;\n }\n return faceletAppearance.appearance;\n}\n\n// TODO: Revert this to a normal enum, or write a standard to codify the names?\nexport enum PieceStickering {\n Regular = \"Regular\",\n Dim = \"Dim\",\n Ignored = \"Ignored\",\n OrientationStickers = \"OrientationStickers\",\n Invisible = \"Invisible\",\n Ignoriented = \"Ignoriented\",\n IgnoreNonPrimary = \"IgnoreNonPrimary\",\n PermuteNonPrimary = \"PermuteNonPrimary\",\n OrientationWithoutPermutation = \"OrientationWithoutPermutation\",\n}\n\nexport class PieceAnnotation<T> {\n stickerings: Map<string, T[]> = new Map();\n constructor(kpuzzle: KPuzzle, defaultValue: T) {\n for (const [orbitName, orbitDef] of Object.entries(\n kpuzzle.definition.orbits,\n )) {\n this.stickerings.set(\n orbitName,\n new Array(orbitDef.numPieces).fill(defaultValue),\n );\n }\n }\n}\n\nconst regular = \"regular\";\nconst ignored = \"ignored\";\nconst oriented = \"oriented\";\nconst invisible = \"invisible\";\nconst dim = \"dim\";\n\n// regular\nconst r: PieceAppearance = {\n facelets: [regular, regular, regular, regular, regular],\n};\n\n// ignored\nconst i: PieceAppearance = {\n facelets: [ignored, ignored, ignored, ignored, ignored],\n};\n\n// oriented stickers\nconst o: PieceAppearance = {\n facelets: [oriented, oriented, oriented, oriented, oriented],\n};\n\n// invisible\nconst invisiblePiece: PieceAppearance = {\n facelets: [invisible, invisible, invisible, invisible], // TODO: 4th entry is for void cube. Should be handled properly for all stickerings.\n};\n\n// \"OLL\"\nconst riiii: PieceAppearance = {\n facelets: [regular, ignored, ignored, ignored, ignored],\n};\n\n// \"PLL\"\nconst drrrr: PieceAppearance = {\n facelets: [dim, regular, regular, regular, regular],\n};\n\n// ignored\nconst d: PieceAppearance = {\n facelets: [dim, dim, dim, dim, dim],\n};\n\n// \"OLL\"\nconst diiii: PieceAppearance = {\n facelets: [dim, ignored, ignored, ignored, ignored],\n};\n\n// oriented\nconst oiiii: PieceAppearance = {\n facelets: [oriented, ignored, ignored, ignored, ignored],\n};\n\nexport function getPieceAppearance(\n pieceStickering: PieceStickering,\n): PieceAppearance {\n switch (pieceStickering) {\n case PieceStickering.Regular:\n return r;\n case PieceStickering.Dim:\n return d;\n case PieceStickering.Ignored:\n return i;\n case PieceStickering.OrientationStickers: // TODO: Hack for centers. This shouldn't be needed.\n return o;\n case PieceStickering.Invisible: // TODO: Hack for centers. This shouldn't be needed.\n return invisiblePiece;\n case PieceStickering.IgnoreNonPrimary:\n return riiii;\n case PieceStickering.PermuteNonPrimary:\n return drrrr;\n case PieceStickering.Ignoriented:\n return diiii;\n case PieceStickering.OrientationWithoutPermutation:\n return oiiii;\n }\n}\n\nexport class PuzzleStickering extends PieceAnnotation<PieceStickering> {\n constructor(kpuzzle: KPuzzle) {\n super(kpuzzle, PieceStickering.Regular);\n }\n\n set(pieceSet: PieceSet, pieceStickering: PieceStickering): PuzzleStickering {\n for (const [orbitName, pieces] of this.stickerings.entries()) {\n for (let i = 0; i < pieces.length; i++) {\n if (pieceSet.stickerings.get(orbitName)![i]) {\n pieces[i] = pieceStickering;\n }\n }\n }\n return this;\n }\n\n toAppearance(): PuzzleAppearance {\n const appearance: PuzzleAppearance = { orbits: {} };\n for (const [orbitName, pieceStickerings] of this.stickerings.entries()) {\n const pieces: PieceAppearance[] = [];\n const orbitAppearance: OrbitAppearance = {\n pieces,\n };\n appearance.orbits[orbitName] = orbitAppearance;\n for (const pieceStickering of pieceStickerings) {\n pieces.push(getPieceAppearance(pieceStickering));\n }\n }\n return appearance;\n }\n}\n\nexport type PieceSet = PieceAnnotation<boolean>;\n\nexport class StickeringManager {\n constructor(private kpuzzle: KPuzzle) {}\n\n and(pieceSets: PieceSet[]): PieceSet {\n const newPieceSet = new PieceAnnotation<boolean>(this.kpuzzle, false);\n for (const [orbitName, orbitDef] of Object.entries(\n this.kpuzzle.definition.orbits,\n )) {\n pieceLoop: for (let i = 0; i < orbitDef.numPieces; i++) {\n newPieceSet.stickerings.get(orbitName)![i] = true;\n for (const pieceSet of pieceSets) {\n if (!pieceSet.stickerings.get(orbitName)![i]) {\n newPieceSet.stickerings.get(orbitName)![i] = false;\n continue pieceLoop;\n }\n }\n }\n }\n return newPieceSet;\n }\n\n or(pieceSets: PieceSet[]): PieceSet {\n // TODO: unify impl with and?\n const newPieceSet = new PieceAnnotation<boolean>(this.kpuzzle, false);\n for (const [orbitName, orbitDef] of Object.entries(\n this.kpuzzle.definition.orbits,\n )) {\n pieceLoop: for (let i = 0; i < orbitDef.numPieces; i++) {\n newPieceSet.stickerings.get(orbitName)![i] = false;\n for (const pieceSet of pieceSets) {\n if (pieceSet.stickerings.get(orbitName)![i]) {\n newPieceSet.stickerings.get(orbitName)![i] = true;\n continue pieceLoop;\n }\n }\n }\n }\n return newPieceSet;\n }\n\n not(pieceSet: PieceSet): PieceSet {\n const newPieceSet = new PieceAnnotation<boolean>(this.kpuzzle, false);\n for (const [orbitName, orbitDef] of Object.entries(\n this.kpuzzle.definition.orbits,\n )) {\n for (let i = 0; i < orbitDef.numPieces; i++) {\n newPieceSet.stickerings.get(orbitName)![i] =\n !pieceSet.stickerings.get(orbitName)![i];\n }\n }\n return newPieceSet;\n }\n\n all(): PieceSet {\n return this.and(this.moves([])); // TODO: are the degenerate cases for and/or the wrong way around\n }\n\n move(moveSource: Move | string): PieceSet {\n const transformation = this.kpuzzle.moveToTransformation(moveSource);\n const newPieceSet = new PieceAnnotation<boolean>(this.kpuzzle, false);\n for (const [orbitName, orbitDef] of Object.entries(\n this.kpuzzle.definition.orbits,\n )) {\n for (let i = 0; i < orbitDef.numPieces; i++) {\n if (\n transformation.transformationData[orbitName].permutation[i] !== i ||\n transformation.transformationData[orbitName].orientation[i] !== 0\n ) {\n newPieceSet.stickerings.get(orbitName)![i] = true;\n }\n }\n }\n return newPieceSet;\n }\n\n moves(moveSources: (Move | string)[]): PieceSet[] {\n return moveSources.map((moveSource) => this.move(moveSource));\n }\n\n // orbits(orbitNames: string[]): PieceSet {\n // const pieceSet = new PieceAnnotation<boolean>(this.def, false);\n // for (const orbitName of orbitNames) {\n // pieceSet.stickerings.get(orbitName)!.fill(true);\n // }\n // return pieceSet;\n // }\n\n // trueCounts(pieceSet: PieceSet): Record<string, number> {\n // const counts: Record<string, number> = {};\n // for (const [orbitName, orbitDef] of Object.entries(this.def.orbits)) {\n // let count = 0;\n // for (let i = 0; i < orbitDef.numPieces; i++) {\n // if (pieceSet.stickerings.get(orbitName)![i]) {\n // count++;\n // }\n // }\n // counts[orbitName] = count;\n // }\n // return counts;\n // }\n}\n", "import type { TwistyPlayer } from \"../../twisty\";\nimport {\n PieceStickering,\n PuzzleStickering,\n StickeringManager,\n} from \"./appearance\";\n\ntype Stickerer = (\n puzzleStickering: PuzzleStickering,\n m: StickeringManager,\n) => void;\n\nlet globalCustomStickerer: Stickerer = () => {};\n\nfunction setGlobalCustomStickerer(stickerer: Stickerer): void {\n (async () => {\n globalCustomStickerer = stickerer;\n\n const players: TwistyPlayer[] = Array.from(\n document.body.querySelectorAll(\"twisty-player\"),\n );\n console.log(`Setting the custom stickering for ${players.length} players!`);\n const successPromises = [];\n for (const player of players) {\n successPromises.push(\n (async () => {\n const stickering = await player.experimentalModel.stickering.get();\n player.experimentalStickering =\n stickering === \"experimental-global-custom-1\"\n ? \"experimental-global-custom-2\"\n : \"experimental-global-custom-1\";\n })(),\n );\n }\n await Promise.all(successPromises);\n console.log(\"Success!\");\n })();\n}\n\nexport function useGlobalCustomStickerer(\n puzzleStickering: PuzzleStickering,\n m: StickeringManager,\n): void {\n globalCustomStickerer(puzzleStickering, m);\n}\n\nif (\n globalThis.location &&\n new URL(location.href).searchParams.get(\"global-custom-stickerer\") === \"true\"\n) {\n (window as any).setGlobalCustomStickerer = setGlobalCustomStickerer;\n (window as any).PieceStickering = PieceStickering;\n console.log(\n \"Global custom stickerer enabled! (using: global-custom-stickerer=true)\",\n );\n console.log(\n \"Look here for inspiration:\",\n \"https://github.com/cubing/cubing.js/blob/81b5cab3e27d8defb39dd1e0a10bc9e8ba894d26/src/cubing/puzzles/stickerings/cube-stickerings.ts#L67\",\n );\n}\n", "import type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport {\n PuzzleAppearance,\n PuzzleStickering,\n StickeringManager,\n PieceSet,\n PieceStickering,\n} from \"./appearance\";\nimport { useGlobalCustomStickerer } from \"./global-custom-stickering-hack\";\n\n// TODO: cache calculations?\nexport async function cubeAppearance(\n puzzleLoader: PuzzleLoader,\n stickering: ExperimentalStickering,\n): Promise<PuzzleAppearance> {\n const kpuzzle = await puzzleLoader.kpuzzle();\n const puzzleStickering = new PuzzleStickering(kpuzzle);\n const m = new StickeringManager(kpuzzle);\n\n const LL = (): PieceSet => m.move(\"U\");\n const orUD = (): PieceSet => m.or(m.moves([\"U\", \"D\"]));\n const E = (): PieceSet => m.not(orUD());\n const orLR = (): PieceSet => m.or(m.moves([\"L\", \"R\"]));\n const M = (): PieceSet => m.not(orLR());\n const orFB = (): PieceSet => m.or(m.moves([\"F\", \"B\"]));\n const S = (): PieceSet => m.not(orFB());\n\n const F2L = (): PieceSet => m.not(LL());\n\n const centerU = (): PieceSet => m.and([LL(), M(), S()]);\n\n const edgeFR = (): PieceSet =>\n m.and([m.and(m.moves([\"F\", \"R\"])), m.not(orUD())]);\n const cornerDFR = (): PieceSet => m.and(m.moves([\"D\", \"R\", \"F\"]));\n const slotFR = (): PieceSet => m.or([cornerDFR(), edgeFR()]);\n\n const CENTERS = (): PieceSet =>\n m.or([m.and([M(), E()]), m.and([M(), S()]), m.and([E(), S()])]);\n const EDGES = (): PieceSet =>\n m.or([\n m.and([M(), orUD(), orFB()]),\n m.and([E(), orLR(), orFB()]),\n m.and([S(), orUD(), orLR()]),\n ]);\n const CORNERS = (): PieceSet => m.not(m.or([CENTERS(), EDGES()]));\n const L6E = (): PieceSet => m.or([M(), m.and([LL(), EDGES()])]);\n\n function dimF2L(): void {\n puzzleStickering.set(F2L(), PieceStickering.Dim);\n }\n\n function setPLL(): void {\n puzzleStickering.set(LL(), PieceStickering.PermuteNonPrimary);\n puzzleStickering.set(centerU(), PieceStickering.Dim); // TODO: why is this needed?\n }\n\n function setOLL(): void {\n puzzleStickering.set(LL(), PieceStickering.IgnoreNonPrimary);\n puzzleStickering.set(centerU(), PieceStickering.Regular); // TODO: why is this needed?\n }\n\n function dimOLL(): void {\n puzzleStickering.set(LL(), PieceStickering.Ignoriented);\n puzzleStickering.set(centerU(), PieceStickering.Dim); // TODO: why is this needed?\n }\n\n switch (stickering) {\n case \"full\":\n break;\n case \"PLL\":\n dimF2L();\n setPLL();\n break;\n case \"CLS\":\n dimF2L();\n puzzleStickering.set(\n m.and(m.moves([\"D\", \"R\", \"F\"])),\n PieceStickering.Regular,\n );\n puzzleStickering.set(LL(), PieceStickering.Ignoriented);\n puzzleStickering.set(m.and([LL(), M(), S()]), PieceStickering.Dim);\n puzzleStickering.set(\n m.and([LL(), CORNERS()]),\n PieceStickering.IgnoreNonPrimary,\n );\n break;\n case \"OLL\":\n dimF2L();\n setOLL();\n break;\n case \"COLL\":\n dimF2L();\n setPLL();\n puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Regular);\n break;\n case \"OCLL\":\n dimF2L();\n dimOLL();\n puzzleStickering.set(\n m.and([LL(), CORNERS()]),\n PieceStickering.IgnoreNonPrimary,\n );\n break;\n case \"CLL\":\n dimF2L();\n puzzleStickering.set(\n m.not(m.and([CORNERS(), LL()])),\n PieceStickering.Dim,\n );\n break;\n case \"ELL\":\n dimF2L();\n puzzleStickering.set(LL(), PieceStickering.Dim);\n puzzleStickering.set(m.and([LL(), EDGES()]), PieceStickering.Regular);\n break;\n case \"ELS\":\n dimF2L();\n setOLL();\n puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Ignored);\n puzzleStickering.set(edgeFR(), PieceStickering.Regular);\n puzzleStickering.set(cornerDFR(), PieceStickering.Ignored);\n break;\n case \"LL\":\n dimF2L();\n break;\n case \"F2L\":\n puzzleStickering.set(LL(), PieceStickering.Ignored);\n break;\n case \"ZBLL\":\n dimF2L();\n puzzleStickering.set(LL(), PieceStickering.PermuteNonPrimary);\n puzzleStickering.set(centerU(), PieceStickering.Dim); // why is this needed?\n puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Regular);\n break;\n case \"ZBLS\":\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n setOLL();\n puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Ignored);\n break;\n case \"WVLS\":\n // fallthrough\n case \"VLS\":\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n setOLL();\n break;\n case \"LS\":\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n puzzleStickering.set(LL(), PieceStickering.Ignored);\n puzzleStickering.set(centerU(), PieceStickering.Dim);\n break;\n case \"EO\":\n puzzleStickering.set(CORNERS(), PieceStickering.Ignored);\n puzzleStickering.set(\n EDGES(),\n PieceStickering.OrientationWithoutPermutation,\n );\n break;\n case \"EOline\":\n puzzleStickering.set(CORNERS(), PieceStickering.Ignored);\n puzzleStickering.set(\n EDGES(),\n PieceStickering.OrientationWithoutPermutation,\n );\n puzzleStickering.set(m.and(m.moves([\"D\", \"M\"])), PieceStickering.Regular);\n break;\n case \"EOcross\":\n puzzleStickering.set(\n EDGES(),\n PieceStickering.OrientationWithoutPermutation,\n );\n puzzleStickering.set(m.move(\"D\"), PieceStickering.Regular);\n puzzleStickering.set(CORNERS(), PieceStickering.Ignored);\n break;\n case \"CMLL\":\n puzzleStickering.set(F2L(), PieceStickering.Dim);\n puzzleStickering.set(L6E(), PieceStickering.Ignored);\n puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Regular);\n break;\n case \"L6E\":\n puzzleStickering.set(m.not(L6E()), PieceStickering.Dim);\n break;\n case \"L6EO\":\n puzzleStickering.set(m.not(L6E()), PieceStickering.Dim);\n puzzleStickering.set(\n L6E(),\n PieceStickering.OrientationWithoutPermutation,\n );\n puzzleStickering.set(\n m.and([CENTERS(), orUD()]),\n PieceStickering.OrientationStickers,\n ); // TODO: why is this needed?\n break;\n case \"Daisy\":\n puzzleStickering.set(m.all(), PieceStickering.Ignored);\n puzzleStickering.set(CENTERS(), PieceStickering.Dim);\n puzzleStickering.set(\n m.and([m.move(\"D\"), CENTERS()]),\n PieceStickering.Regular,\n );\n puzzleStickering.set(\n m.and([m.move(\"U\"), EDGES()]),\n PieceStickering.IgnoreNonPrimary,\n );\n break;\n case \"Cross\":\n puzzleStickering.set(m.all(), PieceStickering.Ignored);\n puzzleStickering.set(CENTERS(), PieceStickering.Dim);\n puzzleStickering.set(\n m.and([m.move(\"D\"), CENTERS()]),\n PieceStickering.Regular,\n );\n puzzleStickering.set(\n m.and([m.move(\"D\"), EDGES()]),\n PieceStickering.Regular,\n );\n break;\n case \"2x2x2\":\n puzzleStickering.set(\n m.or(m.moves([\"U\", \"F\", \"R\"])),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(\n m.and([m.or(m.moves([\"U\", \"F\", \"R\"])), CENTERS()]),\n PieceStickering.Dim,\n );\n break;\n case \"2x2x3\":\n puzzleStickering.set(m.all(), PieceStickering.Dim);\n puzzleStickering.set(\n m.or(m.moves([\"U\", \"F\", \"R\"])),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(\n m.and([m.or(m.moves([\"U\", \"F\", \"R\"])), CENTERS()]),\n PieceStickering.Dim,\n );\n puzzleStickering.set(\n m.and([m.move(\"F\"), m.not(m.or(m.moves([\"U\", \"R\"])))]),\n PieceStickering.Regular,\n );\n break;\n case \"Void Cube\":\n puzzleStickering.set(CENTERS(), PieceStickering.Invisible);\n break;\n case \"picture\":\n // fallthrough\n case \"invisible\":\n puzzleStickering.set(m.all(), PieceStickering.Invisible);\n break;\n case \"centers-only\":\n puzzleStickering.set(m.not(CENTERS()), PieceStickering.Ignored);\n break;\n case \"experimental-global-custom-1\":\n // fallthrough\n case \"experimental-global-custom-2\":\n useGlobalCustomStickerer(puzzleStickering, m);\n break;\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.toAppearance();\n}\n\nexport async function cubeStickerings(): Promise<ExperimentalStickering[]> {\n return [\n \"full\",\n \"PLL\",\n \"CLS\",\n \"OLL\",\n \"COLL\",\n \"OCLL\",\n \"ELL\",\n \"ELS\",\n \"LL\",\n \"F2L\",\n \"ZBLL\",\n \"ZBLS\",\n \"WVLS\",\n \"VLS\",\n \"LS\",\n \"EO\",\n \"EOline\",\n \"EOcross\",\n \"CMLL\",\n \"L6E\",\n \"L6EO\",\n \"Daisy\",\n \"Cross\",\n \"2x2x2\",\n \"2x2x3\",\n \"Void Cube\",\n \"picture\",\n \"invisible\",\n \"centers-only\",\n ];\n}\n", "export function getCached<T>(getValue: () => Promise<T>): () => Promise<T> {\n let cachedPromise: Promise<T> | null = null;\n return (): Promise<T> => {\n return (cachedPromise ??= getValue());\n };\n}\n", "import { KPuzzle, KPuzzleDefinition } from \"../../kpuzzle\";\nimport type { PuzzleGeometry } from \"../../puzzle-geometry\";\nimport type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport type { PuzzleAppearance } from \"../stickerings/appearance\";\nimport {\n cubeAppearance,\n cubeStickerings,\n} from \"../stickerings/cube-stickerings\";\nimport { getCached } from \"./lazy-cached\";\n\n// TODO: modify this to handle TwistyPlayer options\nexport async function asyncGetPuzzleGeometry(\n puzzleName: string,\n): Promise<PuzzleGeometry> {\n const puzzleGeometry = await import(\"../../puzzle-geometry\");\n return puzzleGeometry.getPuzzleGeometryByName(puzzleName, {\n allMoves: true,\n orientCenters: true,\n addRotations: true,\n });\n}\n\n// TODO: can we cache the puzzleGeometry to avoid duplicate calls, without\n// wasting memory? Maybe just save the latest one for successive calls about the\n// same puzzle?\nexport async function asyncGetKPuzzle(\n pgPromise: Promise<PuzzleGeometry>,\n puzzleName: string,\n): Promise<KPuzzle> {\n const pg = await pgPromise;\n const kpuzzleDefinition: KPuzzleDefinition = pg.getKPuzzleDefinition(true);\n kpuzzleDefinition.name = puzzleName;\n const puzzleGeometry = await import(\"../../puzzle-geometry\");\n const pgNotation = new puzzleGeometry.ExperimentalPGNotation(\n pg,\n pg.getOrbitsDef(true),\n );\n return new KPuzzle(kpuzzleDefinition, {\n experimentalPGNotation: pgNotation,\n });\n}\n\nexport function asyncLazyKPuzzleGetter(\n pgPromise: Promise<PuzzleGeometry>,\n puzzleName: string,\n): () => Promise<KPuzzle> {\n return getCached(() => asyncGetKPuzzle(pgPromise, puzzleName));\n}\n\ntype PuzzleLoaderConstructorArgs = {\n pgID?: string;\n id: string;\n fullName: string;\n inventedBy?: string[];\n inventionYear?: number;\n};\n\nexport class PGPuzzleLoader implements PuzzleLoader {\n pgId?: string;\n id: string;\n fullName: string;\n inventedBy?: string[];\n inventionYear?: number;\n constructor(info: PuzzleLoaderConstructorArgs) {\n this.pgId = info.pgID;\n this.id = info.id;\n this.fullName = info.fullName;\n this.inventedBy = info.inventedBy;\n this.inventionYear = info.inventionYear;\n }\n\n #cachedPG: Promise<PuzzleGeometry> | undefined;\n pg(): Promise<PuzzleGeometry> {\n return (this.#cachedPG ??= asyncGetPuzzleGeometry(this.pgId ?? this.id));\n }\n\n #cachedKPuzzle: Promise<KPuzzle> | undefined;\n kpuzzle(): Promise<KPuzzle> {\n return (this.#cachedKPuzzle ??= asyncGetKPuzzle(this.pg(), this.id));\n }\n\n #cachedSVG: Promise<string> | undefined;\n svg(): Promise<string> {\n return (this.#cachedSVG ??= (async () =>\n (await this.pg()).generatesvg())());\n }\n}\n\nexport class CubePGPuzzleLoader extends PGPuzzleLoader {\n appearance(stickering: ExperimentalStickering): Promise<PuzzleAppearance> {\n return cubeAppearance(this, stickering);\n }\n stickerings = cubeStickerings;\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 { PuzzleAppearance } from \"../../stickerings/appearance\";\nimport {\n cubeAppearance,\n cubeStickerings,\n} from \"../../stickerings/cube-stickerings\";\n\nexport const cube2x2x2: PuzzleLoader = {\n id: \"2x2x2\",\n fullName: \"2\u00D72\u00D72 Cube\",\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"./2x2x2.kpuzzle.json\")).cube2x2x2KPuzzleDefinition,\n ),\n ),\n svg: async () => {\n return (await import(\"./2x2x2.kpuzzle.svg\")).default;\n },\n pg: getCached(async () => {\n return asyncGetPuzzleGeometry(\"2x2x2\");\n }),\n appearance: (stickering: ExperimentalStickering): Promise<PuzzleAppearance> =>\n cubeAppearance(cube2x2x2, stickering),\n stickerings: cubeStickerings,\n};\n", "// Include 3x3x3 in the main bundle for better performance.\nimport { experimental3x3x3KPuzzle } 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 { PuzzleAppearance } from \"../../stickerings/appearance\";\nimport {\n cubeAppearance,\n cubeStickerings,\n} from \"../../stickerings/cube-stickerings\";\n\nexport const cube3x3x3: PuzzleLoader = {\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(\"./3x3x3.kpuzzle.svg\")).default;\n }),\n llSVG: getCached(async () => {\n return (await import(\"./3x3x3-ll.kpuzzle.svg\")).default;\n }),\n pg: getCached(async () => {\n return asyncGetPuzzleGeometry(\"3x3x3\");\n }),\n appearance: (stickering: ExperimentalStickering): Promise<PuzzleAppearance> =>\n cubeAppearance(cube3x3x3, stickering),\n stickerings: cubeStickerings,\n};\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(\"./clock.kpuzzle.json\")).clockKPuzzleDefinition,\n ),\n ),\n svg: getCached(async () => {\n return (await import(\"./clock.kpuzzle.svg\")).default;\n }),\n};\n", "import type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport {\n PuzzleAppearance,\n PuzzleStickering,\n StickeringManager,\n PieceSet,\n PieceStickering,\n} from \"./appearance\";\n\nexport async function ftoStickering(\n puzzleLoader: PuzzleLoader,\n stickering: ExperimentalStickering,\n): Promise<PuzzleAppearance> {\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 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 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 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 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 case \"experimental-fto-l3t\":\n puzzleStickering.set(experimentalFTO_LBT(), PieceStickering.Dim);\n break;\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.toAppearance();\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 type { PuzzleAppearance } from \"../../stickerings/appearance\";\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 appearance(stickering: ExperimentalStickering): Promise<PuzzleAppearance> {\n return ftoStickering(this, stickering);\n }\n stickerings = ftoStickerings;\n}\n\nexport const fto = new FTOPuzzleLoader();\n", "import type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport type { PuzzleAppearance } from \"./appearance\";\nimport { cubeAppearance } from \"./cube-stickerings\";\n\n// TODO: cache calculations?\nexport async function megaminxAppearance(\n puzzleLoader: PuzzleLoader,\n stickering: ExperimentalStickering,\n): Promise<PuzzleAppearance> {\n switch (stickering) {\n case \"full\":\n case \"F2L\":\n case \"LL\":\n return cubeAppearance(puzzleLoader, stickering);\n default:\n console.warn(\n `Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`,\n );\n }\n return cubeAppearance(puzzleLoader, \"full\");\n}\n\nexport async function megaminxStickerings(): Promise<ExperimentalStickering[]> {\n return [\"full\", \"F2L\", \"LL\"];\n}\n", "import type { ExperimentalStickering } from \"../../../twisty\";\nimport { PGPuzzleLoader } from \"../../async/async-pg3d\";\nimport type { PuzzleAppearance } from \"../../stickerings/appearance\";\nimport {\n megaminxAppearance,\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 appearance(stickering: ExperimentalStickering): Promise<PuzzleAppearance> {\n return megaminxAppearance(this, stickering);\n }\n stickerings = megaminxStickerings;\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 svg = getCached(async () => {\n return (await import(\"./pyraminx.kpuzzle.svg\")).default;\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 (\n await import(\"./sq1-hyperorbit.kpuzzle.json\")\n ).sq1HyperOrbitKPuzzleDefinition,\n ),\n ),\n svg: getCached(async () => {\n return (await import(\"./sq1-hyperorbit.kpuzzle.svg\")).default;\n }),\n};\n", "import type { PuzzleLoader } from \"../..\";\nimport type { Move } from \"../../../alg\";\nimport { KPuzzle, KTransformationData } from \"../../../kpuzzle\";\nimport type { ExperimentalPGNotation } from \"../../../puzzle-geometry\";\nimport { asyncGetPuzzleGeometry } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\n\n// TODO: Make this consistent with Megaminx corners\nexport const kilominx: PuzzleLoader = {\n id: \"kilominx\",\n fullName: \"Kilominx\",\n kpuzzle: getCached(async () => {\n const pg = await asyncGetPuzzleGeometry(\"megaminx + chopasaurus\");\n const kpuzzleDefinition = JSON.parse(\n JSON.stringify(pg.getKPuzzleDefinition(true)),\n );\n delete kpuzzleDefinition.orbits.CENTERS;\n delete kpuzzleDefinition.orbits.CENTERS2;\n delete kpuzzleDefinition.startStateData.CENTERS;\n delete kpuzzleDefinition.startStateData.CENTERS2;\n for (const moveDefinition of Object.values(kpuzzleDefinition.moves)) {\n delete (moveDefinition as any).CENTERS;\n delete (moveDefinition as any).CENTERS2;\n }\n kpuzzleDefinition.name = \"kilominx\";\n delete kpuzzleDefinition.experimentalPuzzleDescription;\n const puzzleGeometry = await import(\"../../../puzzle-geometry\");\n const pgNotation = new puzzleGeometry.ExperimentalPGNotation(\n pg,\n pg.getOrbitsDef(true),\n );\n const kpuzzle = new KPuzzle(kpuzzleDefinition, {\n experimentalPGNotation: {\n lookupMove: (move: Move): KTransformationData | null => {\n if (move.toString() === \"x2\" || move.toString() === \"x2'\") {\n return x2Transformation.transformationData;\n }\n return pgNotation.lookupMove(move);\n },\n } as ExperimentalPGNotation,\n });\n const x2Transformation = kpuzzle.algToTransformation(\"Rv2 Fv Uv'\");\n kpuzzleDefinition.moves[\"x2\"] = x2Transformation;\n return kpuzzle;\n }),\n svg: getCached(async () => {\n return (await import(\"./kilominx.kpuzzle.svg\")).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(\"./redi_cube.kpuzzle.json\")).rediCubeKPuzzleDefinition,\n ),\n ),\n svg: async () => {\n return (await import(\"./redi_cube.kpuzzle.svg\")).rediCubeSVG;\n },\n};\n", "export { experimental3x3x3KPuzzle } from \"../kpuzzle\";\nexport { customPGPuzzleLoader as experimentalCustomPGPuzzleLoader } from \"./customPGPuzzleLoader\";\nexport { eventInfo, wcaEventInfo } from \"./events\";\nexport { getFaceletAppearance as experimentalGetFaceletAppearance } from \"./stickerings/appearance\";\nexport type {\n FaceletMeshAppearance as ExperimentalFaceletMeshAppearance,\n PuzzleAppearance as ExperimentalPuzzleAppearance,\n} from \"./stickerings/appearance\";\nexport { cubeAppearance as experimentalCubeAppearance } from \"./stickerings/cube-stickerings\";\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\";\n\nexport const puzzles: Record<string, PuzzleLoader> = {\n /******** Start of WCA Puzzles *******/\n \"3x3x3\": cube3x3x3,\n \"2x2x2\": cube2x2x2,\n \"4x4x4\": new CubePGPuzzleLoader({ id: \"4x4x4\", fullName: \"4\u00D74\u00D74 Cube\" }),\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};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -117,7 +117,13 @@ function constructIdentityTransformationDataUncached(definition) {
117
117
  }
118
118
  function moveToTransformationUncached(kpuzzle, move) {
119
119
  const quantumKey = move.quantum.toString();
120
- const quantumMoveDefinition = kpuzzle.definition.moves[quantumKey];
120
+ let quantumMoveDefinition = kpuzzle.definition.moves[quantumKey];
121
+ if (!quantumMoveDefinition) {
122
+ const derivedFrom = kpuzzle.definition.experimentalDerivedMoves?.[quantumKey];
123
+ if (derivedFrom) {
124
+ quantumMoveDefinition = kpuzzle.algToTransformation(derivedFrom).transformationData;
125
+ }
126
+ }
121
127
  if (quantumMoveDefinition) {
122
128
  return repeatTransformationUncached(kpuzzle, quantumMoveDefinition, move.amount);
123
129
  }
@@ -825,4 +831,4 @@ export {
825
831
  KPuzzle,
826
832
  experimental3x3x3KPuzzle
827
833
  };
828
- //# sourceMappingURL=chunk-Y32HHZUY.js.map
834
+ //# sourceMappingURL=chunk-FE3HTWQK.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/cubing/kpuzzle/combine.ts", "../../src/cubing/kpuzzle/construct.ts", "../../src/cubing/kpuzzle/KState.ts", "../../src/cubing/kpuzzle/KTransformation.ts", "../../src/cubing/kpuzzle/calculate.ts", "../../src/cubing/kpuzzle/KPuzzle.ts", "../../src/cubing/kpuzzle/3x3x3/3x3x3.kpuzzle.json.ts", "../../src/cubing/kpuzzle/index.ts"],
4
+ "sourcesContent": ["import { isOrbitTransformationDataIdentityUncached } from \"./calculate\";\nimport type {\n KPuzzleDefinition,\n KStateData,\n KTransformationData,\n} from \"./KPuzzleDefinition\";\n\nexport function combineTransformationData(\n definition: KPuzzleDefinition,\n transformationData1: KTransformationData,\n transformationData2: KTransformationData,\n): KTransformationData {\n const newTransformationData = {} as KTransformationData;\n for (const orbitName in definition.orbits) {\n const orbitDefinition = definition.orbits[orbitName];\n const orbit1 = transformationData1[orbitName];\n const orbit2 = transformationData2[orbitName];\n if (\n isOrbitTransformationDataIdentityUncached(\n orbitDefinition.numOrientations,\n orbit2,\n )\n ) {\n // common case for big cubes\n newTransformationData[orbitName] = orbit1;\n } else if (\n isOrbitTransformationDataIdentityUncached(\n orbitDefinition.numOrientations,\n orbit1,\n )\n ) {\n newTransformationData[orbitName] = orbit2;\n } else {\n const newPerm = new Array(orbitDefinition.numPieces);\n if (orbitDefinition.numOrientations === 1) {\n for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {\n newPerm[idx] = orbit1.permutation[orbit2.permutation[idx]];\n }\n newTransformationData[orbitName] = {\n permutation: newPerm,\n orientation: orbit1.orientation,\n };\n } else {\n const newOri = new Array(orbitDefinition.numPieces);\n for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {\n newOri[idx] =\n (orbit1.orientation[orbit2.permutation[idx]] +\n orbit2.orientation[idx]) %\n orbitDefinition.numOrientations;\n newPerm[idx] = orbit1.permutation[orbit2.permutation[idx]];\n }\n newTransformationData[orbitName] = {\n permutation: newPerm,\n orientation: newOri,\n };\n }\n }\n }\n return newTransformationData;\n}\n\nexport function applyTransformationDataToStateData(\n definition: KPuzzleDefinition,\n stateData: KStateData,\n transformationData: KTransformationData,\n): KStateData {\n const newStateData = {} as KStateData;\n for (const orbitName in definition.orbits) {\n const orbitDefinition = definition.orbits[orbitName];\n const orbit1 = stateData[orbitName];\n const orbit2 = transformationData[orbitName];\n if (\n isOrbitTransformationDataIdentityUncached(\n orbitDefinition.numOrientations,\n orbit2,\n )\n ) {\n // common case for big cubes\n newStateData[orbitName] = orbit1;\n } else {\n const newPieces = new Array(orbitDefinition.numPieces);\n if (orbitDefinition.numOrientations === 1) {\n for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {\n newPieces[idx] = orbit1.pieces[orbit2.permutation[idx]];\n }\n newStateData[orbitName] = {\n pieces: newPieces,\n orientation: orbit1.orientation,\n };\n } else {\n const newOri = new Array(orbitDefinition.numPieces);\n for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {\n newOri[idx] =\n (orbit1.orientation[orbit2.permutation[idx]] +\n orbit2.orientation[idx]) %\n orbitDefinition.numOrientations;\n newPieces[idx] = orbit1.pieces[orbit2.permutation[idx]];\n }\n newStateData[orbitName] = {\n pieces: newPieces,\n orientation: newOri,\n };\n }\n }\n }\n return newStateData;\n}\n", "import type { Move } from \"../alg\";\nimport { repeatTransformationUncached } from \"./calculate\";\nimport type { KPuzzle } from \"./KPuzzle\";\nimport type {\n KPuzzleDefinition,\n KTransformationData,\n KTransformationOrbitData,\n} from \"./KPuzzleDefinition\";\n\nconst FREEZE: boolean = false;\n\nconst identityOrbitCache = new Map<number, KTransformationOrbitData>();\nfunction constructIdentityOrbitTransformation(\n numPieces: number,\n): KTransformationOrbitData {\n const cached = identityOrbitCache.get(numPieces);\n if (cached) {\n return cached;\n }\n\n const newPermutation = new Array(numPieces);\n const newOrientation = new Array(numPieces);\n for (let i = 0; i < numPieces; i++) {\n newPermutation[i] = i;\n newOrientation[i] = 0;\n }\n const orbitTransformation = {\n permutation: newPermutation,\n orientation: newOrientation,\n };\n if (FREEZE) {\n Object.freeze(newPermutation); // TODO\n Object.freeze(newOrientation); // TODO\n Object.freeze(orbitTransformation); // TODO\n }\n identityOrbitCache.set(numPieces, orbitTransformation);\n return orbitTransformation;\n}\n\nexport function constructIdentityTransformationDataUncached(\n definition: KPuzzleDefinition,\n): KTransformationData {\n const transformation = {} as KTransformationData;\n for (const [orbitName, orbitDefinition] of Object.entries(\n definition.orbits,\n )) {\n transformation[orbitName] = constructIdentityOrbitTransformation(\n orbitDefinition.numPieces,\n );\n }\n if (FREEZE) {\n Object.freeze(transformation); // TODO\n }\n return transformation;\n}\n\nexport function moveToTransformationUncached(\n kpuzzle: KPuzzle,\n move: Move,\n): KTransformationData {\n const quantumKey = move.quantum.toString();\n let quantumMoveDefinition = kpuzzle.definition.moves[quantumKey] as\n | KTransformationData\n | undefined;\n\n if (!quantumMoveDefinition) {\n const derivedFrom =\n kpuzzle.definition.experimentalDerivedMoves?.[quantumKey];\n\n if (derivedFrom) {\n // TODO: avoid the round trip?\n quantumMoveDefinition =\n kpuzzle.algToTransformation(derivedFrom).transformationData;\n }\n }\n\n if (quantumMoveDefinition) {\n return repeatTransformationUncached(\n kpuzzle,\n quantumMoveDefinition,\n move.amount,\n );\n }\n\n // Handle e.g. `y2` if `y2` is defined.\n // Note: this doesn't handle multiples.\n const moveDefinition = kpuzzle.definition.moves[move.toString()];\n if (moveDefinition) {\n return moveDefinition;\n }\n\n // Handle e.g. `y2'` if `y2` is defined.\n // Note: this doesn't handle multiples.\n const inverseMoveDefinition =\n kpuzzle.definition.moves[move.invert().toString()];\n if (inverseMoveDefinition) {\n return repeatTransformationUncached(kpuzzle, inverseMoveDefinition, -1);\n }\n\n throw new Error(`Invalid move for KPuzzle (${kpuzzle.name()}): ${move}`);\n}\n", "import type { KPuzzle, KTransformationData } from \".\";\nimport type { Alg, Move } from \"../alg\";\nimport { applyTransformationDataToStateData } from \"./combine\";\nimport type { KTransformationSource } from \"./KPuzzle\";\nimport type { KStateData, KTransformationOrbitData } from \"./KPuzzleDefinition\";\nimport { KTransformation } from \"./KTransformation\";\n\nexport class KState {\n constructor(\n public readonly kpuzzle: KPuzzle,\n public readonly stateData: KStateData,\n ) {}\n\n static fromTransformation(transformation: KTransformation): KState {\n const newStateData = applyTransformationDataToStateData(\n transformation.kpuzzle.definition,\n transformation.kpuzzle.definition.startStateData,\n transformation.transformationData,\n );\n return new KState(transformation.kpuzzle, newStateData);\n }\n\n // Convenience function\n /** @deprecated */\n apply(source: KTransformationSource): KState {\n return this.applyTransformation(this.kpuzzle.toTransformation(source));\n }\n\n applyTransformation(transformation: KTransformation): KState {\n if (transformation.isIdentityTransformation()) {\n return new KState(this.kpuzzle, this.stateData);\n }\n const newStateData = applyTransformationDataToStateData(\n this.kpuzzle.definition,\n this.stateData,\n transformation.transformationData,\n );\n return new KState(this.kpuzzle, newStateData);\n }\n\n applyMove(move: Move | string): KState {\n return this.applyTransformation(this.kpuzzle.moveToTransformation(move));\n }\n\n applyAlg(alg: Alg | string): KState {\n return this.applyTransformation(this.kpuzzle.algToTransformation(alg));\n }\n\n /** @deprecated */\n experimentalToTransformation(): KTransformation | null {\n if (!this.kpuzzle.canConvertStateToUniqueTransformation()) {\n return null;\n }\n const transformationData: KTransformationData = {};\n for (const [orbitName, stateOrbitData] of Object.entries(this.stateData)) {\n const transformationOrbit: KTransformationOrbitData = {\n permutation: stateOrbitData.pieces,\n orientation: stateOrbitData.orientation,\n };\n transformationData[orbitName] = transformationOrbit;\n }\n return new KTransformation(this.kpuzzle, transformationData);\n }\n}\n", "import type { Alg, Move } from \"../alg\";\nimport {\n invertTransformation,\n isTransformationDataIdentical,\n repeatTransformationUncached,\n transformationRepetitionOrder,\n} from \"./calculate\";\nimport { combineTransformationData } from \"./combine\";\nimport { constructIdentityTransformationDataUncached } from \"./construct\";\nimport type { KPuzzle, KTransformationSource } from \"./KPuzzle\";\nimport type { KTransformationData } from \"./KPuzzleDefinition\";\nimport { KState } from \"./KState\";\n\nexport class KTransformation {\n constructor(\n public readonly kpuzzle: KPuzzle,\n public readonly transformationData: KTransformationData,\n ) {}\n\n invert(): KTransformation {\n return new KTransformation(\n this.kpuzzle,\n invertTransformation(this.kpuzzle, this.transformationData),\n );\n }\n\n // For optimizations, we want to make it cheap to rely on optimizations when a\n // transformation is an identity. Here, we try to make it cheaper by:\n // - only calculating when needed, and\n // - caching the result.\n #cachedIsIdentity: boolean | undefined; // TODO: is `null` worse here?\n isIdentityTransformation(): boolean {\n return (this.#cachedIsIdentity ??= this.isIdentical(\n this.kpuzzle.identityTransformation(),\n ));\n }\n\n /** @deprecated */\n static experimentalConstructIdentity(kpuzzle: KPuzzle) {\n const transformation = new KTransformation(\n kpuzzle,\n constructIdentityTransformationDataUncached(kpuzzle.definition),\n );\n transformation.#cachedIsIdentity = true;\n return transformation;\n }\n\n isIdentical(t2: KTransformation): boolean {\n return isTransformationDataIdentical(\n this.kpuzzle,\n this.transformationData,\n t2.transformationData,\n );\n }\n\n // Convenience function\n /** @deprecated */\n apply(source: KTransformationSource): KTransformation {\n return this.applyTransformation(this.kpuzzle.toTransformation(source));\n }\n\n applyTransformation(t2: KTransformation): KTransformation {\n if (this.kpuzzle !== t2.kpuzzle) {\n throw new Error(\n `Tried to apply a transformation for a KPuzzle (${t2.kpuzzle.name()}) to a different KPuzzle (${this.kpuzzle.name()}).`,\n );\n }\n\n if (this.#cachedIsIdentity) {\n return new KTransformation(this.kpuzzle, t2.transformationData);\n }\n if (t2.#cachedIsIdentity) {\n return new KTransformation(this.kpuzzle, this.transformationData);\n }\n\n return new KTransformation(\n this.kpuzzle,\n combineTransformationData(\n this.kpuzzle.definition,\n this.transformationData,\n t2.transformationData,\n ),\n );\n }\n\n applyMove(move: Move | string): KTransformation {\n return this.applyTransformation(this.kpuzzle.moveToTransformation(move));\n }\n\n applyAlg(alg: Alg | string): KTransformation {\n return this.applyTransformation(this.kpuzzle.algToTransformation(alg));\n }\n\n // Convenience. Useful for chaining.\n toKState(): KState {\n return KState.fromTransformation(this);\n }\n\n repetitionOrder(): number {\n return transformationRepetitionOrder(this.kpuzzle.definition, this);\n }\n\n selfMultiply(amount: number): KTransformation {\n return new KTransformation(\n this.kpuzzle,\n repeatTransformationUncached(\n this.kpuzzle,\n this.transformationData,\n amount,\n ),\n );\n }\n}\n", "import type { KPuzzleDefinition } from \".\";\nimport {\n Alg,\n Commutator,\n Conjugate,\n Grouping,\n LineComment,\n Move,\n Newline,\n Pause,\n TraversalDownUp,\n} from \"../alg\";\nimport { combineTransformationData } from \"./combine\";\nimport type { KPuzzle } from \"./KPuzzle\";\nimport type {\n KOrbitDefinition,\n KTransformationOrbitData,\n KTransformationData,\n} from \"./KPuzzleDefinition\";\nimport { KTransformation } from \"./KTransformation\";\n\nexport function isOrbitTransformationDataIdentityUncached(\n numOrientations: number,\n orbitTransformationData: KTransformationOrbitData,\n): boolean {\n // TODO\n // if (o === lasto) {\n // return true;\n // }\n const { permutation } = orbitTransformationData;\n const numPieces = permutation.length;\n for (let idx = 0; idx < numPieces; idx++) {\n if (permutation[idx] !== idx) {\n return false;\n }\n }\n if (numOrientations > 1) {\n const { orientation } = orbitTransformationData;\n for (let idx = 0; idx < numPieces; idx++) {\n if (orientation[idx] !== 0) {\n return false;\n }\n }\n }\n // lasto = o; // TODO\n return true;\n}\n\nexport function isOrbitTransformationDataIdentical(\n orbitDefinition: KOrbitDefinition,\n orbitTransformationData1: KTransformationOrbitData,\n orbitTransformationData2: KTransformationOrbitData,\n options: {\n ignoreOrientation?: boolean;\n ignorePermutation?: boolean;\n } = {},\n): boolean {\n for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {\n if (\n !options?.ignoreOrientation &&\n orbitTransformationData1.orientation[idx] !==\n orbitTransformationData2.orientation[idx]\n ) {\n return false;\n }\n if (\n !options?.ignorePermutation &&\n orbitTransformationData1.permutation[idx] !==\n orbitTransformationData2.permutation[idx]\n ) {\n return false;\n }\n }\n return true;\n}\n\nexport function isTransformationDataIdentical(\n kpuzzle: KPuzzle,\n transformationData1: KTransformationData,\n transformationData2: KTransformationData,\n): boolean {\n for (const [orbitName, orbitDefinition] of Object.entries(\n kpuzzle.definition.orbits,\n )) {\n if (\n !isOrbitTransformationDataIdentical(\n orbitDefinition,\n transformationData1[orbitName],\n transformationData2[orbitName],\n )\n ) {\n return false;\n }\n }\n return true;\n}\n\nexport function invertTransformation(\n kpuzzle: KPuzzle,\n transformationData: KTransformationData,\n): KTransformationData {\n const newTransformationData: KTransformationData = {};\n for (const orbitName in kpuzzle.definition.orbits) {\n const orbitDefinition: KOrbitDefinition =\n kpuzzle.definition.orbits[orbitName];\n const orbitTransformationData = transformationData[orbitName];\n if (\n isOrbitTransformationDataIdentityUncached(\n orbitDefinition.numOrientations,\n orbitTransformationData,\n )\n ) {\n newTransformationData[orbitName] = orbitTransformationData;\n } else if (orbitDefinition.numOrientations === 1) {\n const newPerm = new Array(orbitDefinition.numPieces);\n for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {\n newPerm[orbitTransformationData.permutation[idx]] = idx;\n }\n newTransformationData[orbitName] = {\n permutation: newPerm,\n orientation: orbitTransformationData.orientation,\n };\n } else {\n const newPerm = new Array(orbitDefinition.numPieces);\n const newOri = new Array(orbitDefinition.numPieces);\n for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {\n const fromIdx = orbitTransformationData.permutation[idx];\n newPerm[fromIdx] = idx;\n newOri[fromIdx] =\n (orbitDefinition.numOrientations -\n orbitTransformationData.orientation[idx] +\n orbitDefinition.numOrientations) %\n orbitDefinition.numOrientations;\n }\n newTransformationData[orbitName] = {\n permutation: newPerm,\n orientation: newOri,\n };\n }\n }\n return newTransformationData;\n}\n\nexport function repeatTransformationUncached(\n kpuzzle: KPuzzle,\n transformationData: KTransformationData,\n amount: number,\n): KTransformationData {\n // This is used for move construction, so we optimize for the quantum move case.\n if (amount === 1) {\n return transformationData;\n }\n if (amount < 0) {\n return repeatTransformationUncached(\n kpuzzle,\n invertTransformation(kpuzzle, transformationData),\n -amount,\n );\n }\n if (amount === 0) {\n // TODO\n const { transformationData } = kpuzzle.identityTransformation();\n return transformationData;\n }\n let halfish = transformationData;\n if (amount !== 2) {\n halfish = repeatTransformationUncached(\n kpuzzle,\n transformationData,\n Math.floor(amount / 2),\n );\n }\n const twiceHalfish = combineTransformationData(\n kpuzzle.definition,\n halfish,\n halfish,\n );\n if (amount % 2 === 0) {\n return twiceHalfish;\n } else {\n return combineTransformationData(\n kpuzzle.definition,\n transformationData,\n twiceHalfish,\n );\n }\n}\n\nclass AlgToTransformationTraversal extends TraversalDownUp<\n KPuzzle,\n KTransformation\n> {\n traverseAlg(alg: Alg, kpuzzle: KPuzzle): KTransformation {\n let transformation: KTransformation | null = null;\n for (const unit of alg.units()) {\n if (transformation) {\n transformation = transformation.applyTransformation(\n this.traverseUnit(unit, kpuzzle),\n );\n } else {\n transformation = this.traverseUnit(unit, kpuzzle);\n }\n }\n return transformation ?? kpuzzle.identityTransformation();\n }\n traverseGrouping(grouping: Grouping, kpuzzle: KPuzzle): KTransformation {\n const algTransformation = this.traverseAlg(grouping.alg, kpuzzle);\n return new KTransformation(\n kpuzzle,\n repeatTransformationUncached(\n kpuzzle,\n algTransformation.transformationData,\n grouping.amount,\n ),\n );\n }\n traverseMove(move: Move, kpuzzle: KPuzzle): KTransformation {\n return kpuzzle.moveToTransformation(move);\n }\n traverseCommutator(\n commutator: Commutator,\n kpuzzle: KPuzzle,\n ): KTransformation {\n const aTransformation = this.traverseAlg(commutator.A, kpuzzle);\n const bTransformation = this.traverseAlg(commutator.B, kpuzzle);\n return aTransformation\n .applyTransformation(bTransformation)\n .applyTransformation(aTransformation.invert())\n .applyTransformation(bTransformation.invert());\n }\n traverseConjugate(conjugate: Conjugate, kpuzzle: KPuzzle): KTransformation {\n const aTransformation = this.traverseAlg(conjugate.A, kpuzzle);\n const bTransformation = this.traverseAlg(conjugate.B, kpuzzle);\n return aTransformation\n .applyTransformation(bTransformation)\n .applyTransformation(aTransformation.invert());\n }\n traversePause(_: Pause, kpuzzle: KPuzzle): KTransformation {\n return kpuzzle.identityTransformation();\n }\n traverseNewline(_: Newline, kpuzzle: KPuzzle): KTransformation {\n return kpuzzle.identityTransformation();\n }\n traverseLineComment(_: LineComment, kpuzzle: KPuzzle): KTransformation {\n return kpuzzle.identityTransformation();\n }\n}\n\nconst algToTransformationInstance = new AlgToTransformationTraversal();\nexport const algToTransformation = algToTransformationInstance.traverseAlg.bind(\n algToTransformationInstance,\n) as (alg: Alg, kpuzzle: KPuzzle) => KTransformation;\n\nexport function canConvertStateToUniqueTransformationUncached(\n definition: KPuzzleDefinition,\n): boolean {\n for (const [orbitName, orbitDefinition] of Object.entries(definition)) {\n const pieces = new Array(orbitDefinition.numPieces).fill(false);\n for (const piece of this.definition.startStateData[orbitName].pieces) {\n pieces[piece] = true;\n }\n for (const piece of pieces) {\n if (!piece) {\n return false;\n }\n }\n }\n return true;\n}\n\nfunction gcd(a: number, b: number): number {\n if (b) {\n return gcd(b, a % b);\n }\n return a;\n}\n\n/* calculate the order of a particular transformation. */\nexport function transformationRepetitionOrder(\n definition: KPuzzleDefinition,\n transformation: KTransformation,\n): number {\n let order: number = 1;\n for (const orbitName in definition.orbits) {\n const orbitDefinition = definition.orbits[orbitName];\n const transformationOrbit = transformation.transformationData[orbitName];\n const orbitPieces = new Array(orbitDefinition.numPieces);\n for (let startIdx = 0; startIdx < orbitDefinition.numPieces; startIdx++) {\n if (!orbitPieces[startIdx]) {\n let currentIdx = startIdx;\n let orientationSum = 0;\n let cycleLength = 0;\n for (;;) {\n orbitPieces[currentIdx] = true;\n orientationSum =\n orientationSum + transformationOrbit.orientation[currentIdx];\n cycleLength = cycleLength + 1;\n currentIdx = transformationOrbit.permutation[currentIdx];\n if (currentIdx === startIdx) {\n break;\n }\n }\n if (orientationSum !== 0) {\n cycleLength =\n (cycleLength * orbitDefinition.numOrientations) /\n gcd(orbitDefinition.numOrientations, orientationSum);\n }\n order = (order * cycleLength) / gcd(order, cycleLength);\n }\n }\n }\n return order;\n}\n", "import { Alg, Move } from \"../alg\";\nimport type { PGNotation } from \"../puzzle-geometry/PuzzleGeometry\";\nimport { algToTransformation } from \"./calculate\";\nimport { moveToTransformationUncached } from \"./construct\";\nimport type {\n KPuzzleDefinition,\n KTransformationData,\n} from \"./KPuzzleDefinition\";\nimport { KState } from \"./KState\";\nimport { KTransformation } from \"./KTransformation\";\n\nexport type KTransformationSource = Alg | Move | string | KTransformation;\n\nexport class KPuzzle {\n private experimentalPGNotation: PGNotation | undefined;\n constructor(\n public readonly definition: KPuzzleDefinition,\n options?: {\n experimentalPGNotation?: PGNotation;\n },\n ) {\n this.experimentalPGNotation = options?.experimentalPGNotation;\n }\n\n name(): string {\n return this.definition.name; // TODO\n }\n\n identityTransformation(): KTransformation {\n return KTransformation.experimentalConstructIdentity(this);\n }\n\n #moveToTransformationDataCache = new Map<string, KTransformationData>();\n moveToTransformation(move: Move | string): KTransformation {\n if (typeof move === \"string\") {\n move = new Move(move);\n }\n const cacheKey = move.toString();\n const cachedTransformationData: KTransformationData | undefined =\n this.#moveToTransformationDataCache.get(cacheKey);\n if (cachedTransformationData) {\n return new KTransformation(this, cachedTransformationData);\n }\n\n if (this.experimentalPGNotation) {\n const transformationData = this.experimentalPGNotation.lookupMove(move);\n if (!transformationData) {\n throw new Error(`could not map to internal move: ${move}`);\n }\n this.#moveToTransformationDataCache.set(cacheKey, transformationData);\n return new KTransformation(this, transformationData);\n }\n\n const transformationData = moveToTransformationUncached(this, move);\n this.#moveToTransformationDataCache.set(cacheKey, transformationData);\n return new KTransformation(this, transformationData);\n }\n\n algToTransformation(alg: Alg | string): KTransformation {\n if (typeof alg === \"string\") {\n alg = new Alg(alg);\n }\n return algToTransformation(alg, this);\n }\n\n /** @deprecated */\n toTransformation(source: KTransformationSource): KTransformation {\n if (typeof source === \"string\") {\n return this.algToTransformation(source);\n } else if ((source as Alg | null)?.is?.(Alg)) {\n return this.algToTransformation(source as Alg);\n } else if ((source as Move | null)?.is?.(Move)) {\n return this.moveToTransformation(source as Move);\n } else {\n return source as KTransformation;\n }\n }\n\n startState(): KState {\n return new KState(this, this.definition.startStateData);\n }\n\n #cachedCanConvertStateToUniqueTransformation: boolean | undefined;\n // TODO: Handle incomplete start state data\n canConvertStateToUniqueTransformation(): boolean {\n return (this.#cachedCanConvertStateToUniqueTransformation ??=\n ((): boolean => {\n for (const [orbitName, orbitDefinition] of Object.entries(\n this.definition.orbits,\n )) {\n const pieces = new Array(orbitDefinition.numPieces).fill(false);\n for (const piece of this.definition.startStateData[orbitName]\n .pieces) {\n pieces[piece] = true;\n }\n for (const piece of pieces) {\n if (!piece) {\n return false;\n }\n }\n }\n return true;\n })());\n }\n\n // TODO: Remove completely with v0.25\n /** @deprecated */\n get state(): never {\n throw new Error(\"KPuzzle is now a different (stateless) class.\");\n }\n\n // TODO: Remove completely with v0.25\n /** @deprecated */\n reset(): never {\n throw new Error(\"KPuzzle is now a different (stateless) class.\");\n }\n\n // TODO: Remove completely with v0.25\n /** @deprecated */\n applyMove(_move: Move): never {\n throw new Error(\n \"KPuzzle is now a different class. Try `.moveToTransformation()` to get the transformation for a move.\",\n );\n }\n\n // TODO: Remove completely with v0.25\n /** @deprecated */\n applyAlg(_alg: Alg): never {\n throw new Error(\n \"KPuzzle is now a different class. Try `.algToTransformation()` to get the transformation for an alg.\",\n );\n }\n}\n", "// TODO: This file is here to avoid dependency loops, but it should eventually\n// move back into `cubing/puzzles`. We currently have a few functions that are\n// hardcoded to require synchronous access to this definition, and we need to\n// find a better way to do that.\n\nimport type { KPuzzleDefinition } from \"../KPuzzleDefinition\";\n\nexport const cube3x3x3KPuzzleDefinition: KPuzzleDefinition = {\n name: \"3x3x3\",\n orbits: {\n EDGES: { numPieces: 12, numOrientations: 2 },\n CORNERS: { numPieces: 8, numOrientations: 3 },\n CENTERS: { numPieces: 6, numOrientations: 4 },\n },\n startStateData: {\n EDGES: {\n pieces: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n pieces: [0, 1, 2, 3, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n pieces: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 0, 0, 0, 0],\n },\n },\n moves: {\n U: {\n EDGES: {\n permutation: [1, 2, 3, 0, 4, 5, 6, 7, 8, 9, 10, 11],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [1, 2, 3, 0, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [1, 0, 0, 0, 0, 0],\n },\n },\n y: {\n EDGES: {\n permutation: [1, 2, 3, 0, 5, 6, 7, 4, 10, 8, 11, 9],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [1, 2, 3, 0, 7, 4, 5, 6],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 2, 3, 4, 1, 5],\n orientation: [1, 0, 0, 0, 0, 3],\n },\n },\n x: {\n EDGES: {\n permutation: [4, 8, 0, 9, 6, 10, 2, 11, 5, 7, 1, 3],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [4, 0, 3, 5, 7, 6, 2, 1],\n orientation: [2, 1, 2, 1, 1, 2, 1, 2],\n },\n CENTERS: {\n permutation: [2, 1, 5, 3, 0, 4],\n orientation: [0, 3, 0, 1, 2, 2],\n },\n },\n L: {\n EDGES: {\n permutation: [0, 1, 2, 11, 4, 5, 6, 9, 8, 3, 10, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 6, 2, 4, 3, 5, 7],\n orientation: [0, 0, 2, 1, 0, 2, 1, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 1, 0, 0, 0, 0],\n },\n },\n F: {\n EDGES: {\n permutation: [9, 1, 2, 3, 8, 5, 6, 7, 0, 4, 10, 11],\n orientation: [1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0],\n },\n CORNERS: {\n permutation: [3, 1, 2, 5, 0, 4, 6, 7],\n orientation: [1, 0, 0, 2, 2, 1, 0, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 1, 0, 0, 0],\n },\n },\n R: {\n EDGES: {\n permutation: [0, 8, 2, 3, 4, 10, 6, 7, 5, 9, 1, 11],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [4, 0, 2, 3, 7, 5, 6, 1],\n orientation: [2, 1, 0, 0, 1, 0, 0, 2],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 0, 1, 0, 0],\n },\n },\n B: {\n EDGES: {\n permutation: [0, 1, 10, 3, 4, 5, 11, 7, 8, 9, 6, 2],\n orientation: [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1],\n },\n CORNERS: {\n permutation: [0, 7, 1, 3, 4, 5, 2, 6],\n orientation: [0, 2, 1, 0, 0, 0, 2, 1],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 0, 0, 1, 0],\n },\n },\n D: {\n EDGES: {\n permutation: [0, 1, 2, 3, 7, 4, 5, 6, 8, 9, 10, 11],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 5, 6, 7, 4],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 0, 0, 0, 1],\n },\n },\n z: {\n EDGES: {\n permutation: [9, 3, 11, 7, 8, 1, 10, 5, 0, 4, 2, 6],\n orientation: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [3, 2, 6, 5, 0, 4, 7, 1],\n orientation: [1, 2, 1, 2, 2, 1, 2, 1],\n },\n CENTERS: {\n permutation: [1, 5, 2, 0, 4, 3],\n orientation: [1, 1, 1, 1, 3, 1],\n },\n },\n M: {\n EDGES: {\n permutation: [2, 1, 6, 3, 0, 5, 4, 7, 8, 9, 10, 11],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [4, 1, 0, 3, 5, 2],\n orientation: [2, 0, 0, 0, 2, 0],\n },\n },\n E: {\n EDGES: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 8, 10],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 4, 1, 2, 3, 5],\n orientation: [0, 0, 0, 0, 0, 0],\n },\n },\n S: {\n EDGES: {\n permutation: [0, 3, 2, 7, 4, 1, 6, 5, 8, 9, 10, 11],\n orientation: [0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [1, 5, 2, 0, 4, 3],\n orientation: [1, 1, 0, 1, 0, 1],\n },\n },\n u: {\n EDGES: {\n permutation: [1, 2, 3, 0, 4, 5, 6, 7, 10, 8, 11, 9],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [1, 2, 3, 0, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 2, 3, 4, 1, 5],\n orientation: [1, 0, 0, 0, 0, 0],\n },\n },\n l: {\n EDGES: {\n permutation: [2, 1, 6, 11, 0, 5, 4, 9, 8, 3, 10, 7],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 6, 2, 4, 3, 5, 7],\n orientation: [0, 0, 2, 1, 0, 2, 1, 0],\n },\n CENTERS: {\n permutation: [4, 1, 0, 3, 5, 2],\n orientation: [2, 1, 0, 0, 2, 0],\n },\n },\n f: {\n EDGES: {\n permutation: [9, 3, 2, 7, 8, 1, 6, 5, 0, 4, 10, 11],\n orientation: [1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0],\n },\n CORNERS: {\n permutation: [3, 1, 2, 5, 0, 4, 6, 7],\n orientation: [1, 0, 0, 2, 2, 1, 0, 0],\n },\n CENTERS: {\n permutation: [1, 5, 2, 0, 4, 3],\n orientation: [1, 1, 1, 1, 0, 1],\n },\n },\n r: {\n EDGES: {\n permutation: [4, 8, 0, 3, 6, 10, 2, 7, 5, 9, 1, 11],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [4, 0, 2, 3, 7, 5, 6, 1],\n orientation: [2, 1, 0, 0, 1, 0, 0, 2],\n },\n CENTERS: {\n permutation: [2, 1, 5, 3, 0, 4],\n orientation: [0, 0, 0, 1, 2, 2],\n },\n },\n b: {\n EDGES: {\n permutation: [0, 5, 10, 1, 4, 7, 11, 3, 8, 9, 6, 2],\n orientation: [0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1],\n },\n CORNERS: {\n permutation: [0, 7, 1, 3, 4, 5, 2, 6],\n orientation: [0, 2, 1, 0, 0, 0, 2, 1],\n },\n CENTERS: {\n permutation: [3, 0, 2, 5, 4, 1],\n orientation: [3, 3, 0, 3, 1, 3],\n },\n },\n d: {\n EDGES: {\n permutation: [0, 1, 2, 3, 7, 4, 5, 6, 9, 11, 8, 10],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 5, 6, 7, 4],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 4, 1, 2, 3, 5],\n orientation: [0, 0, 0, 0, 0, 1],\n },\n },\n },\n};\n\ncube3x3x3KPuzzleDefinition.moves[\"Uw\"] = cube3x3x3KPuzzleDefinition.moves[\"u\"];\ncube3x3x3KPuzzleDefinition.moves[\"Lw\"] = cube3x3x3KPuzzleDefinition.moves[\"l\"];\ncube3x3x3KPuzzleDefinition.moves[\"Fw\"] = cube3x3x3KPuzzleDefinition.moves[\"f\"];\ncube3x3x3KPuzzleDefinition.moves[\"Rw\"] = cube3x3x3KPuzzleDefinition.moves[\"r\"];\ncube3x3x3KPuzzleDefinition.moves[\"Bw\"] = cube3x3x3KPuzzleDefinition.moves[\"b\"];\ncube3x3x3KPuzzleDefinition.moves[\"Dw\"] = cube3x3x3KPuzzleDefinition.moves[\"d\"];\n\ncube3x3x3KPuzzleDefinition.moves[\"Rv\"] = cube3x3x3KPuzzleDefinition.moves[\"x\"];\ncube3x3x3KPuzzleDefinition.moves[\"Uv\"] = cube3x3x3KPuzzleDefinition.moves[\"y\"];\ncube3x3x3KPuzzleDefinition.moves[\"Fv\"] = cube3x3x3KPuzzleDefinition.moves[\"z\"];\ncube3x3x3KPuzzleDefinition.moves[\"Lv\"] = {\n EDGES: {\n permutation: [2, 10, 6, 11, 0, 8, 4, 9, 1, 3, 5, 7],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [1, 7, 6, 2, 0, 3, 5, 4],\n orientation: [2, 1, 2, 1, 1, 2, 1, 2],\n },\n CENTERS: {\n permutation: [4, 1, 0, 3, 5, 2],\n orientation: [2, 1, 0, 3, 2, 0],\n },\n};\ncube3x3x3KPuzzleDefinition.moves[\"Dv\"] = {\n EDGES: {\n permutation: [3, 0, 1, 2, 7, 4, 5, 6, 9, 11, 8, 10],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [3, 0, 1, 2, 5, 6, 7, 4],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 4, 1, 2, 3, 5],\n orientation: [3, 0, 0, 0, 0, 1],\n },\n};\ncube3x3x3KPuzzleDefinition.moves[\"Bv\"] = {\n EDGES: {\n permutation: [8, 5, 10, 1, 9, 7, 11, 3, 4, 0, 6, 2],\n orientation: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [4, 7, 1, 0, 5, 3, 2, 6],\n orientation: [1, 2, 1, 2, 2, 1, 2, 1],\n },\n CENTERS: {\n permutation: [3, 0, 2, 5, 4, 1],\n orientation: [3, 3, 3, 3, 1, 3],\n },\n};\n", "export { KPuzzle } from \"./KPuzzle\";\nexport type {\n KPuzzleDefinition,\n KStateData,\n KTransformationData,\n} from \"./KPuzzleDefinition\";\nexport { KState } from \"./KState\";\nexport { KTransformation } from \"./KTransformation\";\n\nimport { cube3x3x3KPuzzleDefinition } from \"./3x3x3/3x3x3.kpuzzle.json\";\nimport { KPuzzle } from \"./KPuzzle\";\nexport const experimental3x3x3KPuzzle = new KPuzzle(cube3x3x3KPuzzleDefinition);\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-27KJGD3S.js";
4
4
  import {
5
5
  puzzles
6
- } from "./chunk-V5K5JN2N.js";
6
+ } from "./chunk-BOKO2BWT.js";
7
7
 
8
8
  // src/cubing/search/inside/solve/puzzles/pyraminx.sgs.json.ts
9
9
  var cachedData = null;
@@ -100,4 +100,4 @@ export {
100
100
  sgsDataPyraminx,
101
101
  sgsDataPyraminxFixedOrientation
102
102
  };
103
- //# sourceMappingURL=chunk-RJSX2HO4.js.map
103
+ //# sourceMappingURL=chunk-HTPDDD3Q.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-F5WNHV7V.js";
8
8
  import {
9
9
  KPuzzle
10
- } from "./chunk-Y32HHZUY.js";
10
+ } from "./chunk-FE3HTWQK.js";
11
11
 
12
12
  // src/cubing/search/inside/solve/puzzles/skewb.sgs.json.ts
13
13
  async function skewbKPuzzleWithoutMO() {
@@ -119,4 +119,4 @@ export {
119
119
  sgsDataSkewb,
120
120
  sgsDataSkewbFixedCorner
121
121
  };
122
- //# sourceMappingURL=chunk-QEDC2QTN.js.map
122
+ //# sourceMappingURL=chunk-L73RWUDG.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  KState,
3
3
  experimental3x3x3KPuzzle
4
- } from "./chunk-Y32HHZUY.js";
4
+ } from "./chunk-FE3HTWQK.js";
5
5
  import {
6
6
  Alg
7
7
  } from "./chunk-EWRBHQFX.js";
@@ -271,4 +271,4 @@ export {
271
271
  bufferToSpacedHex,
272
272
  spacedHexToBuffer
273
273
  };
274
- //# sourceMappingURL=chunk-TXTMBIUR.js.map
274
+ //# sourceMappingURL=chunk-L7AOT5LY.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-F5WNHV7V.js";
8
8
  import {
9
9
  KPuzzle
10
- } from "./chunk-Y32HHZUY.js";
10
+ } from "./chunk-FE3HTWQK.js";
11
11
 
12
12
  // src/cubing/search/inside/solve/puzzles/megaminx.sgs.json.ts
13
13
  async function megaminxKPuzzleWithoutMO() {
@@ -1558,4 +1558,4 @@ export {
1558
1558
  cachedSGSDataMegaminx,
1559
1559
  sgsDataMegaminx
1560
1560
  };
1561
- //# sourceMappingURL=chunk-KJZNEDOV.js.map
1561
+ //# sourceMappingURL=chunk-LZGPOT2V.js.map
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-RENZB7QN.js";
4
4
  import {
5
5
  puzzles
6
- } from "./chunk-V5K5JN2N.js";
6
+ } from "./chunk-BOKO2BWT.js";
7
7
  import {
8
8
  KState
9
- } from "./chunk-Y32HHZUY.js";
9
+ } from "./chunk-FE3HTWQK.js";
10
10
  import {
11
11
  Alg,
12
12
  AlgBuilder,
@@ -502,4 +502,4 @@ export {
502
502
  random333OrientedScramble,
503
503
  random333FewestMovesScramble
504
504
  };
505
- //# sourceMappingURL=chunk-LGM2HUUG.js.map
505
+ //# sourceMappingURL=chunk-ME2QTCHN.js.map
@@ -108,7 +108,7 @@ async function constructWorker(source, options) {
108
108
  // src/cubing/search/inside/search-worker-ts-entry-path-getter.ts
109
109
  exposeAPI.expose = false;
110
110
  async function getWorkerEntryFileURL() {
111
- return (await import("./search-worker-ts-entry-JZTMF3AC.js")).WORKER_ENTRY_FILE_URL;
111
+ return (await import("./search-worker-ts-entry-3B5U6XER.js")).WORKER_ENTRY_FILE_URL;
112
112
  }
113
113
 
114
114
  // src/cubing/search/instantiator.ts
@@ -169,7 +169,7 @@ async function instantiateWorker() {
169
169
  return await instantiateModuleWorker();
170
170
  } catch (e) {
171
171
  console.warn("Could not instantiate module worker (this is expected in Firefox and `bundle-global`). Falling back to string worker.", e);
172
- const { workerSource } = await import("./worker-inside-generated-string-QVH4RRM7.js");
172
+ const { workerSource } = await import("./worker-inside-generated-string-AHMSHHSF.js");
173
173
  const worker = await constructWorker(workerSource, { eval: true });
174
174
  return wrap(worker);
175
175
  }
@@ -231,4 +231,4 @@ export {
231
231
  solveMegaminx,
232
232
  setDebug
233
233
  };
234
- //# sourceMappingURL=chunk-JLNFWJIT.js.map
234
+ //# sourceMappingURL=chunk-T2BDGTK3.js.map
@@ -405,7 +405,7 @@ var DEGREES_PER_RADIAN = 360 / TAU;
405
405
  // src/cubing/twisty/heavy-code-imports/3d.ts
406
406
  var cachedConstructorProxy = null;
407
407
  async function proxy3D() {
408
- return cachedConstructorProxy ?? (cachedConstructorProxy = import("./3d-dynamic-TNYERP4O.js"));
408
+ return cachedConstructorProxy ?? (cachedConstructorProxy = import("./3d-dynamic-DKWMBHRS.js"));
409
409
  }
410
410
  var THREEJS = from(async () => (await proxy3D()).T3I);
411
411
 
@@ -425,4 +425,4 @@ export {
425
425
  proxy3D,
426
426
  THREEJS
427
427
  };
428
- //# sourceMappingURL=chunk-4VNM5SER.js.map
428
+ //# sourceMappingURL=chunk-TG5KP5IL.js.map