cubing 0.27.0 → 0.28.2

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 (112) hide show
  1. package/README.md +3 -1
  2. package/dist/esm/.DS_Store +0 -0
  3. package/dist/esm/alg/index.js +4 -4
  4. package/dist/esm/bluetooth/index.js +228 -92
  5. package/dist/esm/bluetooth/index.js.map +3 -3
  6. package/dist/esm/{chunk-WQK6XWML.js → chunk-2IZUSAXQ.js} +2 -2
  7. package/dist/esm/{chunk-WQK6XWML.js.map → chunk-2IZUSAXQ.js.map} +1 -1
  8. package/dist/esm/{chunk-VY7VF4MA.js → chunk-5744RHHG.js} +145 -58
  9. package/dist/esm/chunk-5744RHHG.js.map +7 -0
  10. package/dist/esm/{chunk-KJYODR27.js → chunk-76H7SSCY.js} +28 -12
  11. package/dist/esm/{chunk-KJYODR27.js.map → chunk-76H7SSCY.js.map} +1 -1
  12. package/dist/esm/chunk-76UZ2QTB.js +1137 -0
  13. package/dist/esm/chunk-76UZ2QTB.js.map +7 -0
  14. package/dist/esm/{chunk-LNUPGLIU.js → chunk-D4YYXJDB.js} +175 -72
  15. package/dist/esm/{chunk-LNUPGLIU.js.map → chunk-D4YYXJDB.js.map} +3 -3
  16. package/dist/esm/{chunk-3Y4PK4XI.js → chunk-FEIKQ7FV.js} +6 -6
  17. package/dist/esm/chunk-FEIKQ7FV.js.map +7 -0
  18. package/dist/esm/{chunk-HIMSRIID.js → chunk-LOTZ7ZO7.js} +8 -4
  19. package/dist/esm/{chunk-HIMSRIID.js.map → chunk-LOTZ7ZO7.js.map} +1 -1
  20. package/dist/esm/{chunk-YBDBUTYE.js → chunk-OX6O2ZO5.js} +1 -1
  21. package/dist/esm/{chunk-YBDBUTYE.js.map → chunk-OX6O2ZO5.js.map} +1 -1
  22. package/dist/esm/{chunk-NQORDEXF.js → chunk-PCR6JT2W.js} +466 -322
  23. package/dist/esm/chunk-PCR6JT2W.js.map +7 -0
  24. package/dist/esm/{chunk-AU3UW5N4.js → chunk-PTUPP5AW.js} +22 -8
  25. package/dist/esm/{chunk-AU3UW5N4.js.map → chunk-PTUPP5AW.js.map} +1 -1
  26. package/dist/esm/{chunk-BEXHMXCT.js → chunk-RHC3DIN3.js} +1 -1
  27. package/dist/esm/{chunk-BEXHMXCT.js.map → chunk-RHC3DIN3.js.map} +1 -1
  28. package/dist/esm/{chunk-DSAZCGT2.js → chunk-RTFKKZPH.js} +22 -13
  29. package/dist/esm/{chunk-DSAZCGT2.js.map → chunk-RTFKKZPH.js.map} +2 -2
  30. package/dist/esm/{chunk-MGJA5U5O.js → chunk-SBZRVSPK.js} +1 -12
  31. package/dist/esm/{chunk-MGJA5U5O.js.map → chunk-SBZRVSPK.js.map} +0 -0
  32. package/dist/esm/{chunk-VYMKSHDI.js → chunk-TX2AQ4XW.js} +35 -13
  33. package/dist/esm/{chunk-VYMKSHDI.js.map → chunk-TX2AQ4XW.js.map} +2 -2
  34. package/dist/esm/{chunk-NYAPGKCW.js → chunk-WXCNEGW3.js} +10 -4
  35. package/dist/esm/{chunk-NYAPGKCW.js.map → chunk-WXCNEGW3.js.map} +1 -1
  36. package/dist/esm/{chunk-GBMX6FHY.js → chunk-ZB3P5AZN.js} +1 -1
  37. package/dist/esm/{chunk-GBMX6FHY.js.map → chunk-ZB3P5AZN.js.map} +1 -1
  38. package/dist/esm/kpuzzle/index.js +3 -3
  39. package/dist/esm/notation/index.js +3 -3
  40. package/dist/esm/protocol/index.js +5 -5
  41. package/dist/esm/puzzle-geometry/index.js +4570 -15
  42. package/dist/esm/puzzle-geometry/index.js.map +4 -4
  43. package/dist/esm/puzzles/index.js +5 -5
  44. package/dist/esm/{puzzles-dynamic-3x3x3-NB2PEZTV.js → puzzles-dynamic-3x3x3-KIG5A6QR.js} +2 -2
  45. package/dist/esm/{puzzles-dynamic-3x3x3-NB2PEZTV.js.map → puzzles-dynamic-3x3x3-KIG5A6QR.js.map} +0 -0
  46. package/dist/esm/puzzles-dynamic-4x4x4-PEDAPUZK.js +126 -0
  47. package/dist/esm/puzzles-dynamic-4x4x4-PEDAPUZK.js.map +7 -0
  48. package/dist/esm/{puzzles-dynamic-side-events-HOXBZYWI.js → puzzles-dynamic-side-events-5C7LMBWX.js} +2 -2
  49. package/dist/esm/{puzzles-dynamic-side-events-HOXBZYWI.js.map → puzzles-dynamic-side-events-5C7LMBWX.js.map} +1 -1
  50. package/dist/esm/{puzzles-dynamic-unofficial-MGVOFUDR.js → puzzles-dynamic-unofficial-WWJ4NJMX.js} +2 -2
  51. package/dist/esm/{puzzles-dynamic-unofficial-MGVOFUDR.js.map → puzzles-dynamic-unofficial-WWJ4NJMX.js.map} +1 -1
  52. package/dist/esm/scramble/index.js +6 -6
  53. package/dist/esm/search/index.js +11 -11
  54. package/dist/esm/{search-dynamic-sgs-side-events-4UF3XJRB.js → search-dynamic-sgs-side-events-X62KI7ZV.js} +37 -21
  55. package/dist/esm/search-dynamic-sgs-side-events-X62KI7ZV.js.map +7 -0
  56. package/dist/esm/{search-dynamic-sgs-unofficial-ZEUVDMBT.js → search-dynamic-sgs-unofficial-YAPJYTMF.js} +35 -14
  57. package/dist/esm/{search-dynamic-sgs-unofficial-ZEUVDMBT.js.map → search-dynamic-sgs-unofficial-YAPJYTMF.js.map} +2 -2
  58. package/dist/esm/{search-dynamic-solve-3x3x3-K4TG7P3X.js → search-dynamic-solve-3x3x3-7XZTYQMO.js} +795 -142
  59. package/dist/esm/{search-dynamic-solve-3x3x3-K4TG7P3X.js.map → search-dynamic-solve-3x3x3-7XZTYQMO.js.map} +1 -1
  60. package/dist/esm/{search-dynamic-solve-4x4x4-FKEWH5MW.js → search-dynamic-solve-4x4x4-5HST67LZ.js} +135 -29
  61. package/dist/esm/{search-dynamic-solve-4x4x4-FKEWH5MW.js.map → search-dynamic-solve-4x4x4-5HST67LZ.js.map} +1 -1
  62. package/dist/esm/{search-dynamic-solve-fto-WROONLZS.js → search-dynamic-solve-fto-4LI23P6K.js} +253 -69
  63. package/dist/esm/{search-dynamic-solve-fto-WROONLZS.js.map → search-dynamic-solve-fto-4LI23P6K.js.map} +2 -2
  64. package/dist/esm/{search-dynamic-solve-kilominx-JVBOIWI2.js → search-dynamic-solve-kilominx-PIS3T2P4.js} +32 -8
  65. package/dist/esm/{search-dynamic-solve-kilominx-JVBOIWI2.js.map → search-dynamic-solve-kilominx-PIS3T2P4.js.map} +2 -2
  66. package/dist/esm/{search-dynamic-solve-master_tetraminx-3R2CJUKW.js → search-dynamic-solve-master_tetraminx-UB32C7MM.js} +111 -42
  67. package/dist/esm/{search-dynamic-solve-master_tetraminx-3R2CJUKW.js.map → search-dynamic-solve-master_tetraminx-UB32C7MM.js.map} +2 -2
  68. package/dist/esm/{search-dynamic-solve-sq1-RS5HN6AH.js → search-dynamic-solve-sq1-HA72TYF2.js} +54 -9
  69. package/dist/esm/{search-dynamic-solve-sq1-RS5HN6AH.js.map → search-dynamic-solve-sq1-HA72TYF2.js.map} +2 -2
  70. package/dist/esm/search-worker-inside-generated-string-HMA547DJ.js +3886 -0
  71. package/dist/esm/search-worker-inside-generated-string-HMA547DJ.js.map +7 -0
  72. package/dist/esm/{search-worker-js-entry-NTV7KFZ5.js → search-worker-js-entry-3QMPUE4B.js} +149 -55
  73. package/dist/esm/search-worker-js-entry-3QMPUE4B.js.map +7 -0
  74. package/dist/esm/{search-worker-ts-entry-EUKJTYA6.js → search-worker-ts-entry-3RHWJNVQ.js} +6 -6
  75. package/dist/esm/{search-worker-ts-entry-EUKJTYA6.js.map → search-worker-ts-entry-3RHWJNVQ.js.map} +1 -1
  76. package/dist/esm/stream/index.js +12 -8
  77. package/dist/esm/stream/index.js.map +1 -1
  78. package/dist/esm/twisty/index.js +1186 -1533
  79. package/dist/esm/twisty/index.js.map +4 -4
  80. package/dist/esm/{twisty-dynamic-3d-UJR5FP6R.js → twisty-dynamic-3d-2KRJEHAN.js} +358 -146
  81. package/dist/esm/twisty-dynamic-3d-2KRJEHAN.js.map +7 -0
  82. package/dist/types/{Alg-1b229e63.d.ts → Alg-137fb0d5.d.ts} +53 -46
  83. package/dist/types/{KState-7a536c23.d.ts → KState-d5f04c9a.d.ts} +1 -1
  84. package/dist/types/{TwizzleLink-0fbaf9bd.d.ts → TwizzleLink-43d94aca.d.ts} +57 -21
  85. package/dist/types/alg/index.d.ts +12 -8
  86. package/dist/types/bluetooth/index.d.ts +4 -4
  87. package/dist/types/{bluetooth-puzzle-7065b808.d.ts → bluetooth-puzzle-7e1a2576.d.ts} +9 -9
  88. package/dist/types/kpuzzle/index.d.ts +2 -2
  89. package/dist/types/notation/index.d.ts +1 -1
  90. package/dist/types/{outside-f12ca41a.d.ts → outside-f83e819a.d.ts} +2 -2
  91. package/dist/types/parseAlg-a28f7568.d.ts +9 -0
  92. package/dist/types/protocol/index.d.ts +2 -2
  93. package/dist/types/puzzle-geometry/index.d.ts +3 -3
  94. package/dist/types/puzzles/index.d.ts +5 -5
  95. package/dist/types/scramble/index.d.ts +3 -3
  96. package/dist/types/search/index.d.ts +3 -3
  97. package/dist/types/stream/index.d.ts +5 -5
  98. package/dist/types/twisty/index.d.ts +13 -6
  99. package/package.json +32 -28
  100. package/dist/esm/chunk-3Y4PK4XI.js.map +0 -7
  101. package/dist/esm/chunk-NQORDEXF.js.map +0 -7
  102. package/dist/esm/chunk-NS5XT5ZV.js +0 -4386
  103. package/dist/esm/chunk-NS5XT5ZV.js.map +0 -7
  104. package/dist/esm/chunk-RECTK3R2.js +0 -342
  105. package/dist/esm/chunk-RECTK3R2.js.map +0 -7
  106. package/dist/esm/chunk-VY7VF4MA.js.map +0 -7
  107. package/dist/esm/search-dynamic-sgs-side-events-4UF3XJRB.js.map +0 -7
  108. package/dist/esm/search-worker-inside-generated-string-KTF5N656.js +0 -3768
  109. package/dist/esm/search-worker-inside-generated-string-KTF5N656.js.map +0 -7
  110. package/dist/esm/search-worker-js-entry-NTV7KFZ5.js.map +0 -7
  111. package/dist/esm/twisty-dynamic-3d-UJR5FP6R.js.map +0 -7
  112. package/dist/types/parse-7cf1a92b.d.ts +0 -9
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/cubing/puzzles/events.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 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\n/** @category Event Info */\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\n/** @category Event Info */\nexport function eventInfo(event: string): EventInfo | null {\n return events[event] ?? null;\n}\n", "import type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport {\n PieceSet,\n PieceStickering,\n PuzzleAppearance,\n PuzzleStickering,\n StickeringManager,\n} from \"./appearance\";\nimport { experimentalStickerings } from \"./puzzle-stickerings\";\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 centerLL = (): PieceSet => m.and([LL(), m.orbits([\"CENTERS\"])]);\n\n const CENTERS = (): PieceSet => m.orbits([\"CENTERS\"]);\n const EDGES = (): PieceSet => m.orbits([\"EDGES\"]);\n const CORNERS = (): PieceSet => m.orbits([\"CORNERS\"]);\n const L6E = (): PieceSet => m.or([M(), m.and([LL(), EDGES()])]);\n\n const edgeFR = (): PieceSet => m.and([m.and(m.moves([\"F\", \"R\"])), EDGES()]);\n const cornerDFR = (): PieceSet =>\n m.and([m.and(m.moves([\"F\", \"R\"])), CORNERS(), m.not(LL())]);\n const slotFR = (): PieceSet => m.or([cornerDFR(), edgeFR()]);\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(centerLL(), PieceStickering.Dim); // For PG\n }\n\n function setOLL(): void {\n puzzleStickering.set(LL(), PieceStickering.IgnoreNonPrimary);\n puzzleStickering.set(centerLL(), PieceStickering.Regular); // For PG\n }\n\n function dimOLL(): void {\n puzzleStickering.set(LL(), PieceStickering.Ignoriented);\n puzzleStickering.set(centerLL(), PieceStickering.Dim); // For PG\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(cornerDFR(), PieceStickering.Regular);\n puzzleStickering.set(LL(), PieceStickering.Ignoriented);\n puzzleStickering.set(m.and([LL(), CENTERS()]), 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 puzzleStickering.set(m.and([LL(), EDGES()]), PieceStickering.Ignoriented);\n puzzleStickering.set(m.and([LL(), CENTERS()]), PieceStickering.Dim);\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(centerLL(), PieceStickering.Dim); // For PG\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 \"VLS\":\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n setOLL();\n break;\n case \"WVLS\":\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n puzzleStickering.set(m.and([LL(), EDGES()]), PieceStickering.Ignoriented);\n puzzleStickering.set(m.and([LL(), CENTERS()]), PieceStickering.Dim);\n puzzleStickering.set(\n m.and([LL(), CORNERS()]),\n PieceStickering.IgnoreNonPrimary,\n );\n break;\n case \"LS\":\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n puzzleStickering.set(LL(), PieceStickering.Ignored);\n puzzleStickering.set(centerLL(), 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 \"L10P\":\n puzzleStickering.set(m.not(L6E()), PieceStickering.Dim);\n puzzleStickering.set(m.and([CORNERS(), LL()]), 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 ); // For PG\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 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 const stickerings: ExperimentalStickering[] = [];\n for (const [name, info] of Object.entries(experimentalStickerings)) {\n if (info.groups && \"3x3x3\" in info.groups) {\n stickerings.push(name);\n }\n }\n return stickerings;\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\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 (\n await import(\"../dynamic/side-events/puzzles-dynamic-side-events\")\n ).cube2x2x2JSON,\n ),\n ),\n svg: async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .cube2x2x2SVG;\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 \"../../cubing-private\";\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\n/** @category Specific Puzzles */\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(\"../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 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 (\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 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 { getCached } from \"../../async/lazy-cached\";\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 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 { 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 case \"OLL\":\n case \"PLL\":\n case \"ELS\":\n case \"CLS\":\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\", \"OLL\", \"PLL\", \"ELS\", \"CLS\"];\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(\"../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 (\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 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(\"../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 (\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", "export { eventInfo, wcaEventInfo } 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\";\n\n/** @category All Puzzles */\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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",
3
+ "sources": ["../../src/cubing/puzzles/events.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/implementations/4x4x4/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\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\n/** @category Event Info */\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\n/** @category Event Info */\nexport function eventInfo(event: string): EventInfo | null {\n return events[event] ?? null;\n}\n", "import type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport {\n PieceSet,\n PieceStickering,\n PuzzleAppearance,\n PuzzleStickering,\n StickeringManager,\n} from \"./appearance\";\nimport { experimentalStickerings } from \"./puzzle-stickerings\";\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 centerLL = (): PieceSet => m.and([LL(), m.orbits([\"CENTERS\"])]);\n\n const CENTERS = (): PieceSet => m.orbits([\"CENTERS\"]);\n const EDGES = (): PieceSet => m.orbits([\"EDGES\"]);\n const CORNERS = (): PieceSet => m.orbits([\"CORNERS\"]);\n const L6E = (): PieceSet => m.or([M(), m.and([LL(), EDGES()])]);\n\n const edgeFR = (): PieceSet => m.and([m.and(m.moves([\"F\", \"R\"])), EDGES()]);\n const cornerDFR = (): PieceSet =>\n m.and([m.and(m.moves([\"F\", \"R\"])), CORNERS(), m.not(LL())]);\n const slotFR = (): PieceSet => m.or([cornerDFR(), edgeFR()]);\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(centerLL(), PieceStickering.Dim); // For PG\n }\n\n function setOLL(): void {\n puzzleStickering.set(LL(), PieceStickering.IgnoreNonPrimary);\n puzzleStickering.set(centerLL(), PieceStickering.Regular); // For PG\n }\n\n function dimOLL(): void {\n puzzleStickering.set(LL(), PieceStickering.Ignoriented);\n puzzleStickering.set(centerLL(), PieceStickering.Dim); // For PG\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(cornerDFR(), PieceStickering.Regular);\n puzzleStickering.set(LL(), PieceStickering.Ignoriented);\n puzzleStickering.set(m.and([LL(), CENTERS()]), 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 puzzleStickering.set(m.and([LL(), EDGES()]), PieceStickering.Ignoriented);\n puzzleStickering.set(m.and([LL(), CENTERS()]), PieceStickering.Dim);\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(centerLL(), PieceStickering.Dim); // For PG\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 \"VLS\":\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n setOLL();\n break;\n case \"WVLS\":\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n puzzleStickering.set(m.and([LL(), EDGES()]), PieceStickering.Ignoriented);\n puzzleStickering.set(m.and([LL(), CENTERS()]), PieceStickering.Dim);\n puzzleStickering.set(\n m.and([LL(), CORNERS()]),\n PieceStickering.IgnoreNonPrimary,\n );\n break;\n case \"LS\":\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n puzzleStickering.set(LL(), PieceStickering.Ignored);\n puzzleStickering.set(centerLL(), 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 \"L10P\":\n puzzleStickering.set(m.not(L6E()), PieceStickering.Dim);\n puzzleStickering.set(m.and([CORNERS(), LL()]), 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 ); // For PG\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 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 const stickerings: ExperimentalStickering[] = [];\n for (const [name, info] of Object.entries(experimentalStickerings)) {\n if (info.groups && \"3x3x3\" in info.groups) {\n stickerings.push(name);\n }\n }\n return stickerings;\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\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 (\n await import(\"../dynamic/side-events/puzzles-dynamic-side-events\")\n ).cube2x2x2JSON,\n ),\n ),\n svg: async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .cube2x2x2SVG;\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 \"../../cubing-private\";\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\n/** @category Specific Puzzles */\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(\"../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 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 (\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 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 { getCached } from \"../../async/lazy-cached\";\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 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 { 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 case \"OLL\":\n case \"PLL\":\n case \"ELS\":\n case \"CLS\":\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\", \"OLL\", \"PLL\", \"ELS\", \"CLS\"];\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(\"../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 (\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 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(\"../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 (\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", "export { eventInfo, wcaEventInfo } 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\";\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};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TraversalUp
3
- } from "./chunk-NQORDEXF.js";
3
+ } from "./chunk-PCR6JT2W.js";
4
4
 
5
5
  // src/cubing/notation/CountMoves.ts
6
6
  var CountMoves = class extends TraversalUp {
@@ -10,8 +10,8 @@ var CountMoves = class extends TraversalUp {
10
10
  }
11
11
  traverseAlg(alg) {
12
12
  let r = 0;
13
- for (const unit of alg.units()) {
14
- r += this.traverseUnit(unit);
13
+ for (const algNode of alg.childAlgNodes()) {
14
+ r += this.traverseAlgNode(algNode);
15
15
  }
16
16
  return r;
17
17
  }
@@ -71,8 +71,8 @@ var countQuantumMoves = countQuantumMovesInstance.traverseAlg.bind(countQuantumM
71
71
  var CountAnimatedLeaves = class extends TraversalUp {
72
72
  traverseAlg(alg) {
73
73
  let total = 0;
74
- for (const part of alg.units()) {
75
- total += this.traverseUnit(part);
74
+ for (const part of alg.childAlgNodes()) {
75
+ total += this.traverseAlgNode(part);
76
76
  }
77
77
  return total;
78
78
  }
@@ -107,4 +107,4 @@ export {
107
107
  countQuantumMoves,
108
108
  countAnimatedLeaves
109
109
  };
110
- //# sourceMappingURL=chunk-3Y4PK4XI.js.map
110
+ //# sourceMappingURL=chunk-FEIKQ7FV.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/cubing/notation/CountMoves.ts", "../../src/cubing/notation/CountAnimatedLeaves.ts"],
4
+ "sourcesContent": ["// TODO: move this file somewhere permanent.\nimport {\n Alg,\n Grouping,\n LineComment,\n Commutator,\n Conjugate,\n Move,\n Newline,\n Pause,\n TraversalUp,\n} from \"../alg\";\n\n/*\n * For movecount, that understands puzzle rotations. This code\n * should be moved to the alg class, probably.\n */\nclass CountMoves extends TraversalUp<number> {\n constructor(private metric: (move: Move) => number) {\n super();\n }\n\n public traverseAlg(alg: Alg): number {\n let r = 0;\n for (const algNode of alg.childAlgNodes()) {\n r += this.traverseAlgNode(algNode);\n }\n return r;\n }\n\n public traverseGrouping(grouping: Grouping): number {\n const alg: Alg = grouping.alg;\n return this.traverseAlg(alg) * Math.abs(grouping.amount);\n }\n\n public traverseMove(move: Move): number {\n return this.metric(move);\n }\n\n public traverseCommutator(commutator: Commutator): number {\n return (\n 2 * (this.traverseAlg(commutator.A) + this.traverseAlg(commutator.B))\n );\n }\n\n public traverseConjugate(conjugate: Conjugate): number {\n return 2 * this.traverseAlg(conjugate.A) + this.traverseAlg(conjugate.B);\n }\n\n // TODO: Remove spaces between repeated pauses (in traverseSequence)\n public traversePause(_pause: Pause): number {\n return 0;\n }\n\n public traverseNewline(_newLine: Newline): number {\n return 0;\n }\n\n // TODO: Enforce being followed by a newline (or the end of the alg)?\n public traverseLineComment(_comment: LineComment): number {\n return 0;\n }\n}\n\nfunction isCharUppercase(c: string): boolean {\n return \"A\" <= c && c <= \"Z\";\n}\n\n// TODO: Implement a puzzle-specific way to calculate this.\nfunction baseMetric(move: Move): number {\n const fam = move.family;\n if (\n (isCharUppercase(fam[0]) && fam[fam.length - 1] === \"v\") ||\n fam === \"x\" ||\n fam === \"y\" ||\n fam === \"z\" ||\n fam === \"T\"\n ) {\n return 0;\n } else {\n return 1;\n }\n}\n\nfunction etmMetric(_move: Move): number {\n return 1;\n}\n\n// TODO: Implement a puzzle-specific way to calculate this.\nfunction quantumMetric(move: Move): number {\n const fam = move.family;\n if (\n (isCharUppercase(fam[0]) && fam[fam.length - 1] === \"v\") ||\n fam === \"x\" ||\n fam === \"y\" ||\n fam === \"z\" ||\n fam === \"T\"\n ) {\n return 0;\n } else {\n return Math.abs(move.amount);\n }\n}\n\nconst countMovesInstance = new CountMoves(baseMetric);\nexport const countMoves: (alg: Alg) => number =\n countMovesInstance.traverseAlg.bind(countMovesInstance);\n\nconst countMovesETMInstance = new CountMoves(etmMetric);\nexport const countMovesETM: (alg: Alg) => number =\n countMovesInstance.traverseAlg.bind(countMovesETMInstance);\n\nconst countQuantumMovesInstance = new CountMoves(quantumMetric);\nexport const countQuantumMoves: (alg: Alg) => number =\n countQuantumMovesInstance.traverseAlg.bind(countQuantumMovesInstance);\n", "import {\n Alg,\n Commutator,\n Conjugate,\n Grouping,\n LineComment,\n Move,\n Newline,\n Pause,\n TraversalUp,\n} from \"../alg\";\n\n// TODO: Include Pause, include amounts\nclass CountAnimatedLeaves extends TraversalUp<number, number> {\n public traverseAlg(alg: Alg): number {\n let total = 0;\n for (const part of alg.childAlgNodes()) {\n total += this.traverseAlgNode(part);\n }\n return total;\n }\n\n public traverseGrouping(grouping: Grouping): number {\n return this.traverseAlg(grouping.alg) * Math.abs(grouping.amount);\n }\n\n public traverseMove(_move: Move): number {\n return 1;\n }\n\n public traverseCommutator(commutator: Commutator): number {\n return (\n 2 * (this.traverseAlg(commutator.A) + this.traverseAlg(commutator.B))\n );\n }\n\n public traverseConjugate(conjugate: Conjugate): number {\n return 2 * this.traverseAlg(conjugate.A) + this.traverseAlg(conjugate.B);\n }\n\n public traversePause(_pause: Pause): number {\n return 1;\n }\n\n public traverseNewline(_newline: Newline): number {\n return 0;\n }\n\n public traverseLineComment(_comment: LineComment): number {\n return 0;\n }\n}\n\nconst countAnimatedLeavesInstance = new CountAnimatedLeaves();\nexport const countAnimatedLeaves: (alg: Alg) => number =\n countAnimatedLeavesInstance.traverseAlg.bind(countAnimatedLeavesInstance);\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Alg
3
- } from "./chunk-NQORDEXF.js";
3
+ } from "./chunk-PCR6JT2W.js";
4
4
 
5
5
  // src/cubing/search/inside/solve/parseSGS.ts
6
6
  function parseSGS(kpuzzle, sgs) {
@@ -35,12 +35,16 @@ function parseSGS(kpuzzle, sgs) {
35
35
  sgsActions.splice(sum - 1, 0, { alg: emptyAlg, transformation: identity });
36
36
  }
37
37
  if (sgsActions.length !== sum) {
38
- throw Error(`Bad sgs; expected ${sum - subgroupSizes.length} algs but saw ${sgsActions.length - subgroupSizes.length}`);
38
+ throw Error(
39
+ `Bad sgs; expected ${sum - subgroupSizes.length} algs but saw ${sgsActions.length - subgroupSizes.length}`
40
+ );
39
41
  }
40
42
  const processedPieces = {};
41
43
  for (const orbitName in kpuzzle.definition.orbits) {
42
44
  const orbitDefinition = kpuzzle.definition.orbits[orbitName];
43
- processedPieces[orbitName] = new Array(orbitDefinition.numPieces).fill(false);
45
+ processedPieces[orbitName] = new Array(orbitDefinition.numPieces).fill(
46
+ false
47
+ );
44
48
  }
45
49
  for (let i = subgroupSizes.length - 1; i >= 0; i--) {
46
50
  const pieceOrdering = [];
@@ -81,4 +85,4 @@ function parseSGS(kpuzzle, sgs) {
81
85
  export {
82
86
  parseSGS
83
87
  };
84
- //# sourceMappingURL=chunk-HIMSRIID.js.map
88
+ //# sourceMappingURL=chunk-LOTZ7ZO7.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/cubing/search/inside/solve/parseSGS.ts"],
4
4
  "sourcesContent": ["import { Alg } from \"../../../alg\";\nimport type { KPuzzle, KTransformation } from \"../../../kpuzzle\";\n\ninterface PieceReference {\n orbitName: string;\n permutationIdx: number;\n}\n\nexport interface SGSAction {\n alg: Alg;\n transformation: KTransformation;\n}\n\nexport interface SGSCachedData {\n ordering: {\n pieceOrdering: PieceReference[];\n lookup: Record<string, SGSAction>;\n }[];\n}\n\nexport function parseSGS(kpuzzle: KPuzzle, sgs: string): SGSCachedData {\n const subgroupSizes: number[] = [];\n const sgsActions: SGSAction[] = [];\n for (const line of sgs.split(\"\\n\")) {\n const lineTokens = line.split(\" \");\n if (line.startsWith(\"SetOrder \")) {\n // ignore\n } else if (line.startsWith(\"Alg \")) {\n const alg = Alg.fromString(line.substring(4));\n sgsActions.push({\n alg: alg,\n transformation: kpuzzle.algToTransformation(alg),\n });\n } else if (line.startsWith(\"SubgroupSizes \")) {\n for (let j = 1; j < lineTokens.length; j++) {\n subgroupSizes.push(parseInt(lineTokens[j]));\n }\n }\n }\n\n const sgsCachedData: SGSCachedData = {\n ordering: new Array(subgroupSizes.length),\n };\n const subgroupAlgOffsets: number[] = [];\n let sum = 0;\n subgroupAlgOffsets.push(0);\n const emptyAlg = Alg.fromString(\"\");\n const identity = kpuzzle.identityTransformation();\n for (let i = 0; i < subgroupSizes.length; i++) {\n sum += subgroupSizes[i];\n subgroupAlgOffsets.push(sum);\n sgsActions.splice(sum - 1, 0, { alg: emptyAlg, transformation: identity });\n }\n if (sgsActions.length !== sum) {\n throw Error(\n `Bad sgs; expected ${sum - subgroupSizes.length} algs but saw ${\n sgsActions.length - subgroupSizes.length\n }`,\n );\n }\n const processedPieces: Record<string, boolean[]> = {};\n for (const orbitName in kpuzzle.definition.orbits) {\n const orbitDefinition = kpuzzle.definition.orbits[orbitName];\n processedPieces[orbitName] = new Array(orbitDefinition.numPieces).fill(\n false,\n );\n }\n for (let i = subgroupSizes.length - 1; i >= 0; i--) {\n const pieceOrdering: PieceReference[] = [];\n for (let j = subgroupAlgOffsets[i]; j < subgroupAlgOffsets[i + 1]; j++) {\n const transformation = sgsActions[j].transformation;\n for (const orbitName in kpuzzle.definition.orbits) {\n const orbitDefinition = kpuzzle.definition.orbits[orbitName];\n for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {\n if (\n transformation.transformationData[orbitName].permutation[idx] !==\n idx ||\n transformation.transformationData[orbitName].orientation[idx] !== 0\n ) {\n if (!processedPieces[orbitName][idx]) {\n pieceOrdering.push({ orbitName: orbitName, permutationIdx: idx });\n processedPieces[orbitName][idx] = true;\n }\n }\n }\n }\n }\n const lookup: Record<string, SGSAction> = {};\n for (let j = subgroupAlgOffsets[i]; j < subgroupAlgOffsets[i + 1]; j++) {\n const transformation = sgsActions[j].transformation.invert();\n let key = \"\";\n for (let k = 0; k < pieceOrdering.length; k++) {\n const loc = pieceOrdering[k];\n key = `${key} ${\n transformation.transformationData[loc.orbitName].permutation[\n loc.permutationIdx\n ]\n } ${\n transformation.transformationData[loc.orbitName].orientation[\n loc.permutationIdx\n ]\n }`;\n }\n lookup[key] = sgsActions[j];\n sgsActions[j].alg = sgsActions[j].alg.invert();\n sgsActions[j].transformation = sgsActions[j].transformation.invert();\n }\n sgsCachedData.ordering[i] = {\n pieceOrdering: pieceOrdering,\n lookup: lookup,\n };\n }\n return sgsCachedData;\n}\n"],
5
- "mappings": ";;;;;AAoBO,kBAAkB,SAAkB,KAA4B;AACrE,QAAM,gBAA0B;AAChC,QAAM,aAA0B;AAChC,aAAW,QAAQ,IAAI,MAAM,OAAO;AAClC,UAAM,aAAa,KAAK,MAAM;AAC9B,QAAI,KAAK,WAAW,cAAc;AAAA,eAEvB,KAAK,WAAW,SAAS;AAClC,YAAM,MAAM,IAAI,WAAW,KAAK,UAAU;AAC1C,iBAAW,KAAK;AAAA,QACd;AAAA,QACA,gBAAgB,QAAQ,oBAAoB;AAAA;AAAA,eAErC,KAAK,WAAW,mBAAmB;AAC5C,eAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,sBAAc,KAAK,SAAS,WAAW;AAAA;AAAA;AAAA;AAK7C,QAAM,gBAA+B;AAAA,IACnC,UAAU,IAAI,MAAM,cAAc;AAAA;AAEpC,QAAM,qBAA+B;AACrC,MAAI,MAAM;AACV,qBAAmB,KAAK;AACxB,QAAM,WAAW,IAAI,WAAW;AAChC,QAAM,WAAW,QAAQ;AACzB,WAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,WAAO,cAAc;AACrB,uBAAmB,KAAK;AACxB,eAAW,OAAO,MAAM,GAAG,GAAG,EAAE,KAAK,UAAU,gBAAgB;AAAA;AAEjE,MAAI,WAAW,WAAW,KAAK;AAC7B,UAAM,MACJ,qBAAqB,MAAM,cAAc,uBACvC,WAAW,SAAS,cAAc;AAAA;AAIxC,QAAM,kBAA6C;AACnD,aAAW,aAAa,QAAQ,WAAW,QAAQ;AACjD,UAAM,kBAAkB,QAAQ,WAAW,OAAO;AAClD,oBAAgB,aAAa,IAAI,MAAM,gBAAgB,WAAW,KAChE;AAAA;AAGJ,WAAS,IAAI,cAAc,SAAS,GAAG,KAAK,GAAG,KAAK;AAClD,UAAM,gBAAkC;AACxC,aAAS,IAAI,mBAAmB,IAAI,IAAI,mBAAmB,IAAI,IAAI,KAAK;AACtE,YAAM,iBAAiB,WAAW,GAAG;AACrC,iBAAW,aAAa,QAAQ,WAAW,QAAQ;AACjD,cAAM,kBAAkB,QAAQ,WAAW,OAAO;AAClD,iBAAS,MAAM,GAAG,MAAM,gBAAgB,WAAW,OAAO;AACxD,cACE,eAAe,mBAAmB,WAAW,YAAY,SACvD,OACF,eAAe,mBAAmB,WAAW,YAAY,SAAS,GAClE;AACA,gBAAI,CAAC,gBAAgB,WAAW,MAAM;AACpC,4BAAc,KAAK,EAAE,WAAsB,gBAAgB;AAC3D,8BAAgB,WAAW,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAM5C,UAAM,SAAoC;AAC1C,aAAS,IAAI,mBAAmB,IAAI,IAAI,mBAAmB,IAAI,IAAI,KAAK;AACtE,YAAM,iBAAiB,WAAW,GAAG,eAAe;AACpD,UAAI,MAAM;AACV,eAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,cAAM,MAAM,cAAc;AAC1B,cAAM,GAAG,OACP,eAAe,mBAAmB,IAAI,WAAW,YAC/C,IAAI,mBAGN,eAAe,mBAAmB,IAAI,WAAW,YAC/C,IAAI;AAAA;AAIV,aAAO,OAAO,WAAW;AACzB,iBAAW,GAAG,MAAM,WAAW,GAAG,IAAI;AACtC,iBAAW,GAAG,iBAAiB,WAAW,GAAG,eAAe;AAAA;AAE9D,kBAAc,SAAS,KAAK;AAAA,MAC1B;AAAA,MACA;AAAA;AAAA;AAGJ,SAAO;AAAA;",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -39,4 +39,4 @@ function from(function_) {
39
39
  export {
40
40
  from
41
41
  };
42
- //# sourceMappingURL=chunk-YBDBUTYE.js.map
42
+ //# sourceMappingURL=chunk-OX6O2ZO5.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/cubing/vendor/p-lazy/p-lazy.ts"],
4
4
  "sourcesContent": ["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\n\n// TODO: Use private class fields when ESLint support it.\n\nexport class PLazy<T> extends Promise<T> {\n constructor(executor) {\n super((resolve) => {\n resolve();\n });\n\n this._executor = executor;\n }\n\n static from(function_) {\n return new PLazy((resolve) => {\n resolve(function_());\n });\n }\n\n static resolve(value) {\n return new PLazy((resolve) => {\n resolve(value);\n });\n }\n\n static reject(error) {\n return new PLazy((_resolve, reject) => {\n reject(error);\n });\n }\n\n then(onFulfilled, onRejected) {\n this._promise = this._promise || new Promise(this._executor);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this._promise.then(onFulfilled, onRejected);\n }\n\n catch(onRejected) {\n this._promise = this._promise || new Promise(this._executor);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this._promise.catch(onRejected);\n }\n}\n\nexport function from<T>(function_): Promise<T> {\n return new PLazy((resolve) => {\n resolve(function_());\n });\n}\n"],
5
- "mappings": ";AAKO,0BAAuB,QAAW;AAAA,EACvC,YAAY,UAAU;AACpB,UAAM,CAAC,YAAY;AACjB;AAAA;AAGF,SAAK,YAAY;AAAA;AAAA,SAGZ,KAAK,WAAW;AACrB,WAAO,IAAI,MAAM,CAAC,YAAY;AAC5B,cAAQ;AAAA;AAAA;AAAA,SAIL,QAAQ,OAAO;AACpB,WAAO,IAAI,MAAM,CAAC,YAAY;AAC5B,cAAQ;AAAA;AAAA;AAAA,SAIL,OAAO,OAAO;AACnB,WAAO,IAAI,MAAM,CAAC,UAAU,WAAW;AACrC,aAAO;AAAA;AAAA;AAAA,EAIX,KAAK,aAAa,YAAY;AAC5B,SAAK,WAAW,KAAK,YAAY,IAAI,QAAQ,KAAK;AAGlD,WAAO,KAAK,SAAS,KAAK,aAAa;AAAA;AAAA,EAGzC,MAAM,YAAY;AAChB,SAAK,WAAW,KAAK,YAAY,IAAI,QAAQ,KAAK;AAGlD,WAAO,KAAK,SAAS,MAAM;AAAA;AAAA;AAIxB,cAAiB,WAAuB;AAC7C,SAAO,IAAI,MAAM,CAAC,YAAY;AAC5B,YAAQ;AAAA;AAAA;",
5
+ "mappings": ";AAKO,IAAM,QAAN,cAAuB,QAAW;AAAA,EACvC,YAAY,UAAU;AACpB,UAAM,CAAC,YAAY;AACjB,cAAQ;AAAA,IACV,CAAC;AAED,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,OAAO,KAAK,WAAW;AACrB,WAAO,IAAI,MAAM,CAAC,YAAY;AAC5B,cAAQ,UAAU,CAAC;AAAA,IACrB,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,QAAQ,OAAO;AACpB,WAAO,IAAI,MAAM,CAAC,YAAY;AAC5B,cAAQ,KAAK;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,OAAO,OAAO;AACnB,WAAO,IAAI,MAAM,CAAC,UAAU,WAAW;AACrC,aAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAEA,KAAK,aAAa,YAAY;AAC5B,SAAK,WAAW,KAAK,YAAY,IAAI,QAAQ,KAAK,SAAS;AAG3D,WAAO,KAAK,SAAS,KAAK,aAAa,UAAU;AAAA,EACnD;AAAA,EAEA,MAAM,YAAY;AAChB,SAAK,WAAW,KAAK,YAAY,IAAI,QAAQ,KAAK,SAAS;AAG3D,WAAO,KAAK,SAAS,MAAM,UAAU;AAAA,EACvC;AACF;AAEO,SAAS,KAAQ,WAAuB;AAC7C,SAAO,IAAI,MAAM,CAAC,YAAY;AAC5B,YAAQ,UAAU,CAAC;AAAA,EACrB,CAAC;AACH;",
6
6
  "names": []
7
7
  }