cubing 0.25.7 → 0.25.10

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 (121) hide show
  1. package/dist/esm/{2x2x2.kpuzzle.json-RUB44MJV.js → 2x2x2.kpuzzle.json-BHTFIME6.js} +2 -2
  2. package/dist/esm/{2x2x2.kpuzzle.json-RUB44MJV.js.map → 2x2x2.kpuzzle.json-BHTFIME6.js.map} +0 -0
  3. package/dist/esm/{2x2x2.kpuzzle.svg-CQF2FTV7.js → 2x2x2.kpuzzle.svg-CYX37VBY.js} +2 -2
  4. package/dist/esm/{2x2x2.kpuzzle.svg-CQF2FTV7.js.map → 2x2x2.kpuzzle.svg-CYX37VBY.js.map} +0 -0
  5. package/dist/esm/{2x2x2.sgs.json-3ZT7QXX6.js → 2x2x2.sgs.json-CLGNVWIM.js} +6 -6
  6. package/dist/esm/{2x2x2.sgs.json-3ZT7QXX6.js.map → 2x2x2.sgs.json-CLGNVWIM.js.map} +0 -0
  7. package/dist/esm/{3d-dynamic-PTVO24C3.js → 3d-dynamic-5LHE6HI6.js} +8 -8
  8. package/dist/esm/{3d-dynamic-PTVO24C3.js.map → 3d-dynamic-5LHE6HI6.js.map} +1 -1
  9. package/dist/esm/{3x3x3-ll.kpuzzle.svg-53CBPG5O.js → 3x3x3-ll.kpuzzle.svg-KZNSV76X.js} +2 -2
  10. package/dist/esm/{3x3x3-ll.kpuzzle.svg-53CBPG5O.js.map → 3x3x3-ll.kpuzzle.svg-KZNSV76X.js.map} +0 -0
  11. package/dist/esm/{3x3x3-min2phase-FPRJ5PCJ.js → 3x3x3-min2phase-UBW46KDU.js} +2 -2
  12. package/dist/esm/{3x3x3-min2phase-FPRJ5PCJ.js.map → 3x3x3-min2phase-UBW46KDU.js.map} +0 -0
  13. package/dist/esm/{3x3x3.kpuzzle.svg-ERSSH66P.js → 3x3x3.kpuzzle.svg-5U7LUACF.js} +2 -2
  14. package/dist/esm/{3x3x3.kpuzzle.svg-ERSSH66P.js.map → 3x3x3.kpuzzle.svg-5U7LUACF.js.map} +0 -0
  15. package/dist/esm/{444-solver-BYA4CXZO.js → 444-solver-SFZ7V6NL.js} +7 -7
  16. package/dist/esm/{444-solver-BYA4CXZO.js.map → 444-solver-SFZ7V6NL.js.map} +0 -0
  17. package/dist/esm/alg/index.js +2 -2
  18. package/dist/esm/bluetooth/index.js +5 -5
  19. package/dist/esm/{chunk-RENZB7QN.js → chunk-43SBQEWR.js} +5 -2
  20. package/dist/esm/chunk-43SBQEWR.js.map +7 -0
  21. package/dist/esm/{chunk-JGAZXWH2.js → chunk-4SXK3FSU.js} +6 -6
  22. package/dist/esm/{chunk-JGAZXWH2.js.map → chunk-4SXK3FSU.js.map} +1 -1
  23. package/dist/esm/{chunk-ANYSPBCR.js → chunk-6BUCXDZU.js} +3 -3
  24. package/dist/esm/{chunk-ANYSPBCR.js.map → chunk-6BUCXDZU.js.map} +0 -0
  25. package/dist/esm/{chunk-JW2JE4D3.js → chunk-C6I4KFI2.js} +4 -4
  26. package/dist/esm/{chunk-JW2JE4D3.js.map → chunk-C6I4KFI2.js.map} +0 -0
  27. package/dist/esm/{chunk-EWRBHQFX.js → chunk-DO7GZAW4.js} +35 -35
  28. package/dist/esm/{chunk-EWRBHQFX.js.map → chunk-DO7GZAW4.js.map} +1 -1
  29. package/dist/esm/{chunk-27KJGD3S.js → chunk-FB7SFELN.js} +2 -2
  30. package/dist/esm/{chunk-27KJGD3S.js.map → chunk-FB7SFELN.js.map} +0 -0
  31. package/dist/esm/{chunk-IVQ4ITE2.js → chunk-GBMX6FHY.js} +2 -2
  32. package/dist/esm/{chunk-IVQ4ITE2.js.map → chunk-GBMX6FHY.js.map} +1 -1
  33. package/dist/esm/{chunk-WO2AXYFE.js → chunk-MGJA5U5O.js} +1 -1
  34. package/dist/esm/{chunk-WO2AXYFE.js.map → chunk-MGJA5U5O.js.map} +0 -0
  35. package/dist/esm/{chunk-U2TSTTDG.js → chunk-NSLR2SC4.js} +2 -2
  36. package/dist/esm/{chunk-U2TSTTDG.js.map → chunk-NSLR2SC4.js.map} +0 -0
  37. package/dist/esm/{chunk-F5WNHV7V.js → chunk-ODQRVWJB.js} +3 -3
  38. package/dist/esm/{chunk-F5WNHV7V.js.map → chunk-ODQRVWJB.js.map} +1 -1
  39. package/dist/esm/{chunk-OAPHPP4R.js → chunk-OFGQQQBY.js} +4 -4
  40. package/dist/esm/{chunk-OAPHPP4R.js.map → chunk-OFGQQQBY.js.map} +0 -0
  41. package/dist/esm/{chunk-CNIY6YZL.js → chunk-QKEGKHT5.js} +106 -103
  42. package/dist/esm/chunk-QKEGKHT5.js.map +7 -0
  43. package/dist/esm/{chunk-ZIHFCBOI.js → chunk-RREJ3MSB.js} +3 -3
  44. package/dist/esm/{chunk-ZIHFCBOI.js.map → chunk-RREJ3MSB.js.map} +0 -0
  45. package/dist/esm/{chunk-HFQZM22L.js → chunk-XBH5IPB2.js} +14 -8
  46. package/dist/esm/chunk-XBH5IPB2.js.map +7 -0
  47. package/dist/esm/{chunk-MVKZPDII.js → chunk-YAOUFM4D.js} +5 -5
  48. package/dist/esm/{chunk-MVKZPDII.js.map → chunk-YAOUFM4D.js.map} +1 -1
  49. package/dist/esm/{chunk-NROLOGGL.js → chunk-Z35CBICW.js} +6 -6
  50. package/dist/esm/{chunk-NROLOGGL.js.map → chunk-Z35CBICW.js.map} +0 -0
  51. package/dist/esm/{chunk-WDJDRVZZ.js → chunk-ZPAGJE7S.js} +6 -3
  52. package/dist/esm/{chunk-WDJDRVZZ.js.map → chunk-ZPAGJE7S.js.map} +2 -2
  53. package/dist/esm/{clock.kpuzzle.json-BQKNKV3G.js → clock.kpuzzle.json-PYHONPBY.js} +2 -2
  54. package/dist/esm/{clock.kpuzzle.json-BQKNKV3G.js.map → clock.kpuzzle.json-PYHONPBY.js.map} +0 -0
  55. package/dist/esm/{clock.kpuzzle.svg-B7TMN3SY.js → clock.kpuzzle.svg-JSRDCSQF.js} +2 -2
  56. package/dist/esm/{clock.kpuzzle.svg-B7TMN3SY.js.map → clock.kpuzzle.svg-JSRDCSQF.js.map} +0 -0
  57. package/dist/esm/{fto-solver-HI6NIV74.js → fto-solver-TOOJNOZB.js} +3 -3
  58. package/dist/esm/{fto-solver-HI6NIV74.js.map → fto-solver-TOOJNOZB.js.map} +0 -0
  59. package/dist/esm/{fto.dynamic-FLX5JKRG.js → fto.dynamic-3MSUIE4Q.js} +7 -7
  60. package/dist/esm/{fto.dynamic-FLX5JKRG.js.map → fto.dynamic-3MSUIE4Q.js.map} +0 -0
  61. package/dist/esm/fto.kpuzzle.svg-H2RJX6UR.js +102 -0
  62. package/dist/esm/fto.kpuzzle.svg-H2RJX6UR.js.map +7 -0
  63. package/dist/esm/{kilominx.kpuzzle.svg-7XJBOKFU.js → kilominx.kpuzzle.svg-ZLRTRUTM.js} +2 -2
  64. package/dist/esm/{kilominx.kpuzzle.svg-7XJBOKFU.js.map → kilominx.kpuzzle.svg-ZLRTRUTM.js.map} +0 -0
  65. package/dist/esm/{kilosolver-N6JM5PUY.js → kilosolver-A3MNW2DJ.js} +6 -5
  66. package/dist/esm/{kilosolver-N6JM5PUY.js.map → kilosolver-A3MNW2DJ.js.map} +1 -1
  67. package/dist/esm/kpuzzle/index.js +3 -3
  68. package/dist/esm/{master_tetraminx-solver-KBQJGW4A.js → master_tetraminx-solver-QSJNGET5.js} +6 -5
  69. package/dist/esm/{master_tetraminx-solver-KBQJGW4A.js.map → master_tetraminx-solver-QSJNGET5.js.map} +1 -1
  70. package/dist/esm/megaminx.sgs.json-O2B5OU3T.js +16 -0
  71. package/dist/esm/{megaminx.sgs.json-CGIZZZMZ.js.map → megaminx.sgs.json-O2B5OU3T.js.map} +0 -0
  72. package/dist/esm/notation/index.js +3 -3
  73. package/dist/esm/protocol/index.js +4 -4
  74. package/dist/esm/puzzle-geometry/index.js +3 -3
  75. package/dist/esm/puzzles/index.js +4 -4
  76. package/dist/esm/{pyraminx.kpuzzle.svg-QBBMZVDY.js → pyraminx.kpuzzle.svg-UHDZCBET.js} +2 -2
  77. package/dist/esm/{pyraminx.kpuzzle.svg-QBBMZVDY.js.map → pyraminx.kpuzzle.svg-UHDZCBET.js.map} +0 -0
  78. package/dist/esm/pyraminx.sgs.json-NTELD4DU.js +14 -0
  79. package/dist/esm/{pyraminx.sgs.json-XGJQTHLV.js.map → pyraminx.sgs.json-NTELD4DU.js.map} +0 -0
  80. package/dist/esm/{redi_cube-E5F64NIQ.js → redi_cube-FYRLEZZH.js} +7 -6
  81. package/dist/esm/{redi_cube-E5F64NIQ.js.map → redi_cube-FYRLEZZH.js.map} +1 -1
  82. package/dist/esm/{redi_cube.kpuzzle.json-EPBKWOMV.js → redi_cube.kpuzzle.json-43CP47Z6.js} +2 -2
  83. package/dist/esm/{redi_cube.kpuzzle.json-EPBKWOMV.js.map → redi_cube.kpuzzle.json-43CP47Z6.js.map} +0 -0
  84. package/dist/esm/{redi_cube.kpuzzle.svg-BSHCMC2Z.js → redi_cube.kpuzzle.svg-3DWDYE3O.js} +2 -2
  85. package/dist/esm/{redi_cube.kpuzzle.svg-BSHCMC2Z.js.map → redi_cube.kpuzzle.svg-3DWDYE3O.js.map} +0 -0
  86. package/dist/esm/scramble/index.js +8 -8
  87. package/dist/esm/search/index.js +8 -8
  88. package/dist/esm/{search-worker-js-entry-A4VBA2ZD.js → search-worker-js-entry-32MQILEZ.js} +113 -71
  89. package/dist/esm/{search-worker-js-entry-A4VBA2ZD.js.map → search-worker-js-entry-32MQILEZ.js.map} +2 -2
  90. package/dist/esm/{search-worker-ts-entry-LUHAXJBE.js → search-worker-ts-entry-IJRN7GQV.js} +5 -5
  91. package/dist/esm/{search-worker-ts-entry-LUHAXJBE.js.map → search-worker-ts-entry-IJRN7GQV.js.map} +0 -0
  92. package/dist/esm/skewb.sgs.json-GISOONJZ.js +16 -0
  93. package/dist/esm/{skewb.sgs.json-HNUN4G7F.js.map → skewb.sgs.json-GISOONJZ.js.map} +0 -0
  94. package/dist/esm/{sq1-hyperorbit.kpuzzle.json-4XS5YACO.js → sq1-hyperorbit.kpuzzle.json-AMXAFQCM.js} +2 -2
  95. package/dist/esm/{sq1-hyperorbit.kpuzzle.json-4XS5YACO.js.map → sq1-hyperorbit.kpuzzle.json-AMXAFQCM.js.map} +0 -0
  96. package/dist/esm/{sq1-hyperorbit.kpuzzle.svg-ID57EER7.js → sq1-hyperorbit.kpuzzle.svg-MNHJTJ6V.js} +2 -2
  97. package/dist/esm/{sq1-hyperorbit.kpuzzle.svg-ID57EER7.js.map → sq1-hyperorbit.kpuzzle.svg-MNHJTJ6V.js.map} +0 -0
  98. package/dist/esm/{sq1-solver-P3IWWET7.js → sq1-solver-KMN2GSOU.js} +3 -3
  99. package/dist/esm/{sq1-solver-P3IWWET7.js.map → sq1-solver-KMN2GSOU.js.map} +0 -0
  100. package/dist/esm/stream/index.js +2 -2
  101. package/dist/esm/twisty/index.js +558 -559
  102. package/dist/esm/twisty/index.js.map +3 -3
  103. package/dist/esm/worker-inside-generated-string-JGML54CI.js +3768 -0
  104. package/dist/esm/worker-inside-generated-string-JGML54CI.js.map +7 -0
  105. package/dist/types/puzzles/implementations/fto/fto.kpuzzle.svg.d.ts +1 -0
  106. package/dist/types/puzzles/implementations/fto/index.d.ts +1 -0
  107. package/dist/types/search/inside/api.d.ts +6 -0
  108. package/dist/types/search/outside.d.ts +2 -0
  109. package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
  110. package/dist/types/twisty/model/TwistyPlayerModel.d.ts +27 -46
  111. package/dist/types/twisty/model/TwistySceneModel.d.ts +27 -0
  112. package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts +3 -3
  113. package/package.json +21 -22
  114. package/dist/esm/chunk-CNIY6YZL.js.map +0 -7
  115. package/dist/esm/chunk-HFQZM22L.js.map +0 -7
  116. package/dist/esm/chunk-RENZB7QN.js.map +0 -7
  117. package/dist/esm/megaminx.sgs.json-CGIZZZMZ.js +0 -16
  118. package/dist/esm/pyraminx.sgs.json-XGJQTHLV.js +0 -14
  119. package/dist/esm/skewb.sgs.json-HNUN4G7F.js +0 -16
  120. package/dist/esm/worker-inside-generated-string-VHOABMFC.js +0 -3674
  121. package/dist/esm/worker-inside-generated-string-VHOABMFC.js.map +0 -7
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  parseSGS
3
- } from "./chunk-27KJGD3S.js";
3
+ } from "./chunk-FB7SFELN.js";
4
4
  import {
5
5
  PGNotation,
6
6
  getPuzzleGeometryByName
7
- } from "./chunk-F5WNHV7V.js";
7
+ } from "./chunk-ODQRVWJB.js";
8
8
  import {
9
9
  KPuzzle
10
- } from "./chunk-MVKZPDII.js";
10
+ } from "./chunk-YAOUFM4D.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-OAPHPP4R.js.map
1561
+ //# sourceMappingURL=chunk-OFGQQQBY.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  KPuzzle,
3
3
  experimental3x3x3KPuzzle
4
- } from "./chunk-MVKZPDII.js";
4
+ } from "./chunk-YAOUFM4D.js";
5
5
  import {
6
6
  __privateAdd,
7
7
  __privateGet,
8
8
  __privateSet
9
- } from "./chunk-WO2AXYFE.js";
9
+ } from "./chunk-MGJA5U5O.js";
10
10
 
11
11
  // src/cubing/puzzles/customPGPuzzleLoader.ts
12
12
  async function descAsyncGetPuzzleGeometry(desc) {
@@ -116,8 +116,7 @@ function getFaceletAppearance(appearance, orbitName, pieceIdx, faceletIdx, hint)
116
116
  }
117
117
  return faceletAppearance.appearance;
118
118
  }
119
- var PieceStickering;
120
- (function(PieceStickering2) {
119
+ var PieceStickering = /* @__PURE__ */ ((PieceStickering2) => {
121
120
  PieceStickering2["Regular"] = "Regular";
122
121
  PieceStickering2["Dim"] = "Dim";
123
122
  PieceStickering2["Ignored"] = "Ignored";
@@ -127,10 +126,11 @@ var PieceStickering;
127
126
  PieceStickering2["IgnoreNonPrimary"] = "IgnoreNonPrimary";
128
127
  PieceStickering2["PermuteNonPrimary"] = "PermuteNonPrimary";
129
128
  PieceStickering2["OrientationWithoutPermutation"] = "OrientationWithoutPermutation";
130
- })(PieceStickering || (PieceStickering = {}));
129
+ return PieceStickering2;
130
+ })(PieceStickering || {});
131
131
  var PieceAnnotation = class {
132
132
  constructor(kpuzzle, defaultValue) {
133
- this.stickerings = new Map();
133
+ this.stickerings = /* @__PURE__ */ new Map();
134
134
  for (const [orbitName, orbitDef] of Object.entries(kpuzzle.definition.orbits)) {
135
135
  this.stickerings.set(orbitName, new Array(orbitDef.numPieces).fill(defaultValue));
136
136
  }
@@ -170,29 +170,29 @@ var oiiii = {
170
170
  };
171
171
  function getPieceAppearance(pieceStickering) {
172
172
  switch (pieceStickering) {
173
- case PieceStickering.Regular:
173
+ case "Regular" /* Regular */:
174
174
  return r;
175
- case PieceStickering.Dim:
175
+ case "Dim" /* Dim */:
176
176
  return d;
177
- case PieceStickering.Ignored:
177
+ case "Ignored" /* Ignored */:
178
178
  return i;
179
- case PieceStickering.OrientationStickers:
179
+ case "OrientationStickers" /* OrientationStickers */:
180
180
  return o;
181
- case PieceStickering.Invisible:
181
+ case "Invisible" /* Invisible */:
182
182
  return invisiblePiece;
183
- case PieceStickering.IgnoreNonPrimary:
183
+ case "IgnoreNonPrimary" /* IgnoreNonPrimary */:
184
184
  return riiii;
185
- case PieceStickering.PermuteNonPrimary:
185
+ case "PermuteNonPrimary" /* PermuteNonPrimary */:
186
186
  return drrrr;
187
- case PieceStickering.Ignoriented:
187
+ case "Ignoriented" /* Ignoriented */:
188
188
  return diiii;
189
- case PieceStickering.OrientationWithoutPermutation:
189
+ case "OrientationWithoutPermutation" /* OrientationWithoutPermutation */:
190
190
  return oiiii;
191
191
  }
192
192
  }
193
193
  var PuzzleStickering = class extends PieceAnnotation {
194
194
  constructor(kpuzzle) {
195
- super(kpuzzle, PieceStickering.Regular);
195
+ super(kpuzzle, "Regular" /* Regular */);
196
196
  }
197
197
  set(pieceSet, pieceStickering) {
198
198
  for (const [orbitName, pieces] of this.stickerings.entries()) {
@@ -295,7 +295,7 @@ function setGlobalCustomStickerer(stickerer) {
295
295
  const successPromises = [];
296
296
  for (const player of players) {
297
297
  successPromises.push((async () => {
298
- const stickering = await player.experimentalModel.stickering.get();
298
+ const stickering = await player.experimentalModel.twistySceneModel.stickering.get();
299
299
  player.experimentalStickering = stickering === "experimental-global-custom-1" ? "experimental-global-custom-2" : "experimental-global-custom-1";
300
300
  })());
301
301
  }
@@ -339,19 +339,19 @@ async function cubeAppearance(puzzleLoader, stickering) {
339
339
  const CORNERS = () => m.not(m.or([CENTERS(), EDGES()]));
340
340
  const L6E = () => m.or([M(), m.and([LL(), EDGES()])]);
341
341
  function dimF2L() {
342
- puzzleStickering.set(F2L(), PieceStickering.Dim);
342
+ puzzleStickering.set(F2L(), "Dim" /* Dim */);
343
343
  }
344
344
  function setPLL() {
345
- puzzleStickering.set(LL(), PieceStickering.PermuteNonPrimary);
346
- puzzleStickering.set(centerU(), PieceStickering.Dim);
345
+ puzzleStickering.set(LL(), "PermuteNonPrimary" /* PermuteNonPrimary */);
346
+ puzzleStickering.set(centerU(), "Dim" /* Dim */);
347
347
  }
348
348
  function setOLL() {
349
- puzzleStickering.set(LL(), PieceStickering.IgnoreNonPrimary);
350
- puzzleStickering.set(centerU(), PieceStickering.Regular);
349
+ puzzleStickering.set(LL(), "IgnoreNonPrimary" /* IgnoreNonPrimary */);
350
+ puzzleStickering.set(centerU(), "Regular" /* Regular */);
351
351
  }
352
352
  function dimOLL() {
353
- puzzleStickering.set(LL(), PieceStickering.Ignoriented);
354
- puzzleStickering.set(centerU(), PieceStickering.Dim);
353
+ puzzleStickering.set(LL(), "Ignoriented" /* Ignoriented */);
354
+ puzzleStickering.set(centerU(), "Dim" /* Dim */);
355
355
  }
356
356
  switch (stickering) {
357
357
  case "full":
@@ -362,10 +362,10 @@ async function cubeAppearance(puzzleLoader, stickering) {
362
362
  break;
363
363
  case "CLS":
364
364
  dimF2L();
365
- puzzleStickering.set(m.and(m.moves(["D", "R", "F"])), PieceStickering.Regular);
366
- puzzleStickering.set(LL(), PieceStickering.Ignoriented);
367
- puzzleStickering.set(m.and([LL(), M(), S()]), PieceStickering.Dim);
368
- puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.IgnoreNonPrimary);
365
+ puzzleStickering.set(m.and(m.moves(["D", "R", "F"])), "Regular" /* Regular */);
366
+ puzzleStickering.set(LL(), "Ignoriented" /* Ignoriented */);
367
+ puzzleStickering.set(m.and([LL(), M(), S()]), "Dim" /* Dim */);
368
+ puzzleStickering.set(m.and([LL(), CORNERS()]), "IgnoreNonPrimary" /* IgnoreNonPrimary */);
369
369
  break;
370
370
  case "OLL":
371
371
  dimF2L();
@@ -374,117 +374,117 @@ async function cubeAppearance(puzzleLoader, stickering) {
374
374
  case "COLL":
375
375
  dimF2L();
376
376
  setPLL();
377
- puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Regular);
377
+ puzzleStickering.set(m.and([LL(), CORNERS()]), "Regular" /* Regular */);
378
378
  break;
379
379
  case "OCLL":
380
380
  dimF2L();
381
381
  dimOLL();
382
- puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.IgnoreNonPrimary);
382
+ puzzleStickering.set(m.and([LL(), CORNERS()]), "IgnoreNonPrimary" /* IgnoreNonPrimary */);
383
383
  break;
384
384
  case "CLL":
385
385
  dimF2L();
386
- puzzleStickering.set(m.not(m.and([CORNERS(), LL()])), PieceStickering.Dim);
386
+ puzzleStickering.set(m.not(m.and([CORNERS(), LL()])), "Dim" /* Dim */);
387
387
  break;
388
388
  case "ELL":
389
389
  dimF2L();
390
- puzzleStickering.set(LL(), PieceStickering.Dim);
391
- puzzleStickering.set(m.and([LL(), EDGES()]), PieceStickering.Regular);
390
+ puzzleStickering.set(LL(), "Dim" /* Dim */);
391
+ puzzleStickering.set(m.and([LL(), EDGES()]), "Regular" /* Regular */);
392
392
  break;
393
393
  case "ELS":
394
394
  dimF2L();
395
395
  setOLL();
396
- puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Ignored);
397
- puzzleStickering.set(edgeFR(), PieceStickering.Regular);
398
- puzzleStickering.set(cornerDFR(), PieceStickering.Ignored);
396
+ puzzleStickering.set(m.and([LL(), CORNERS()]), "Ignored" /* Ignored */);
397
+ puzzleStickering.set(edgeFR(), "Regular" /* Regular */);
398
+ puzzleStickering.set(cornerDFR(), "Ignored" /* Ignored */);
399
399
  break;
400
400
  case "LL":
401
401
  dimF2L();
402
402
  break;
403
403
  case "F2L":
404
- puzzleStickering.set(LL(), PieceStickering.Ignored);
404
+ puzzleStickering.set(LL(), "Ignored" /* Ignored */);
405
405
  break;
406
406
  case "ZBLL":
407
407
  dimF2L();
408
- puzzleStickering.set(LL(), PieceStickering.PermuteNonPrimary);
409
- puzzleStickering.set(centerU(), PieceStickering.Dim);
410
- puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Regular);
408
+ puzzleStickering.set(LL(), "PermuteNonPrimary" /* PermuteNonPrimary */);
409
+ puzzleStickering.set(centerU(), "Dim" /* Dim */);
410
+ puzzleStickering.set(m.and([LL(), CORNERS()]), "Regular" /* Regular */);
411
411
  break;
412
412
  case "ZBLS":
413
413
  dimF2L();
414
- puzzleStickering.set(slotFR(), PieceStickering.Regular);
414
+ puzzleStickering.set(slotFR(), "Regular" /* Regular */);
415
415
  setOLL();
416
- puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Ignored);
416
+ puzzleStickering.set(m.and([LL(), CORNERS()]), "Ignored" /* Ignored */);
417
417
  break;
418
418
  case "WVLS":
419
419
  case "VLS":
420
420
  dimF2L();
421
- puzzleStickering.set(slotFR(), PieceStickering.Regular);
421
+ puzzleStickering.set(slotFR(), "Regular" /* Regular */);
422
422
  setOLL();
423
423
  break;
424
424
  case "LS":
425
425
  dimF2L();
426
- puzzleStickering.set(slotFR(), PieceStickering.Regular);
427
- puzzleStickering.set(LL(), PieceStickering.Ignored);
428
- puzzleStickering.set(centerU(), PieceStickering.Dim);
426
+ puzzleStickering.set(slotFR(), "Regular" /* Regular */);
427
+ puzzleStickering.set(LL(), "Ignored" /* Ignored */);
428
+ puzzleStickering.set(centerU(), "Dim" /* Dim */);
429
429
  break;
430
430
  case "EO":
431
- puzzleStickering.set(CORNERS(), PieceStickering.Ignored);
432
- puzzleStickering.set(EDGES(), PieceStickering.OrientationWithoutPermutation);
431
+ puzzleStickering.set(CORNERS(), "Ignored" /* Ignored */);
432
+ puzzleStickering.set(EDGES(), "OrientationWithoutPermutation" /* OrientationWithoutPermutation */);
433
433
  break;
434
434
  case "EOline":
435
- puzzleStickering.set(CORNERS(), PieceStickering.Ignored);
436
- puzzleStickering.set(EDGES(), PieceStickering.OrientationWithoutPermutation);
437
- puzzleStickering.set(m.and(m.moves(["D", "M"])), PieceStickering.Regular);
435
+ puzzleStickering.set(CORNERS(), "Ignored" /* Ignored */);
436
+ puzzleStickering.set(EDGES(), "OrientationWithoutPermutation" /* OrientationWithoutPermutation */);
437
+ puzzleStickering.set(m.and(m.moves(["D", "M"])), "Regular" /* Regular */);
438
438
  break;
439
439
  case "EOcross":
440
- puzzleStickering.set(EDGES(), PieceStickering.OrientationWithoutPermutation);
441
- puzzleStickering.set(m.move("D"), PieceStickering.Regular);
442
- puzzleStickering.set(CORNERS(), PieceStickering.Ignored);
440
+ puzzleStickering.set(EDGES(), "OrientationWithoutPermutation" /* OrientationWithoutPermutation */);
441
+ puzzleStickering.set(m.move("D"), "Regular" /* Regular */);
442
+ puzzleStickering.set(CORNERS(), "Ignored" /* Ignored */);
443
443
  break;
444
444
  case "CMLL":
445
- puzzleStickering.set(F2L(), PieceStickering.Dim);
446
- puzzleStickering.set(L6E(), PieceStickering.Ignored);
447
- puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Regular);
445
+ puzzleStickering.set(F2L(), "Dim" /* Dim */);
446
+ puzzleStickering.set(L6E(), "Ignored" /* Ignored */);
447
+ puzzleStickering.set(m.and([LL(), CORNERS()]), "Regular" /* Regular */);
448
448
  break;
449
449
  case "L6E":
450
- puzzleStickering.set(m.not(L6E()), PieceStickering.Dim);
450
+ puzzleStickering.set(m.not(L6E()), "Dim" /* Dim */);
451
451
  break;
452
452
  case "L6EO":
453
- puzzleStickering.set(m.not(L6E()), PieceStickering.Dim);
454
- puzzleStickering.set(L6E(), PieceStickering.OrientationWithoutPermutation);
455
- puzzleStickering.set(m.and([CENTERS(), orUD()]), PieceStickering.OrientationStickers);
453
+ puzzleStickering.set(m.not(L6E()), "Dim" /* Dim */);
454
+ puzzleStickering.set(L6E(), "OrientationWithoutPermutation" /* OrientationWithoutPermutation */);
455
+ puzzleStickering.set(m.and([CENTERS(), orUD()]), "OrientationStickers" /* OrientationStickers */);
456
456
  break;
457
457
  case "Daisy":
458
- puzzleStickering.set(m.all(), PieceStickering.Ignored);
459
- puzzleStickering.set(CENTERS(), PieceStickering.Dim);
460
- puzzleStickering.set(m.and([m.move("D"), CENTERS()]), PieceStickering.Regular);
461
- puzzleStickering.set(m.and([m.move("U"), EDGES()]), PieceStickering.IgnoreNonPrimary);
458
+ puzzleStickering.set(m.all(), "Ignored" /* Ignored */);
459
+ puzzleStickering.set(CENTERS(), "Dim" /* Dim */);
460
+ puzzleStickering.set(m.and([m.move("D"), CENTERS()]), "Regular" /* Regular */);
461
+ puzzleStickering.set(m.and([m.move("U"), EDGES()]), "IgnoreNonPrimary" /* IgnoreNonPrimary */);
462
462
  break;
463
463
  case "Cross":
464
- puzzleStickering.set(m.all(), PieceStickering.Ignored);
465
- puzzleStickering.set(CENTERS(), PieceStickering.Dim);
466
- puzzleStickering.set(m.and([m.move("D"), CENTERS()]), PieceStickering.Regular);
467
- puzzleStickering.set(m.and([m.move("D"), EDGES()]), PieceStickering.Regular);
464
+ puzzleStickering.set(m.all(), "Ignored" /* Ignored */);
465
+ puzzleStickering.set(CENTERS(), "Dim" /* Dim */);
466
+ puzzleStickering.set(m.and([m.move("D"), CENTERS()]), "Regular" /* Regular */);
467
+ puzzleStickering.set(m.and([m.move("D"), EDGES()]), "Regular" /* Regular */);
468
468
  break;
469
469
  case "2x2x2":
470
- puzzleStickering.set(m.or(m.moves(["U", "F", "R"])), PieceStickering.Ignored);
471
- puzzleStickering.set(m.and([m.or(m.moves(["U", "F", "R"])), CENTERS()]), PieceStickering.Dim);
470
+ puzzleStickering.set(m.or(m.moves(["U", "F", "R"])), "Ignored" /* Ignored */);
471
+ puzzleStickering.set(m.and([m.or(m.moves(["U", "F", "R"])), CENTERS()]), "Dim" /* Dim */);
472
472
  break;
473
473
  case "2x2x3":
474
- puzzleStickering.set(m.all(), PieceStickering.Dim);
475
- puzzleStickering.set(m.or(m.moves(["U", "F", "R"])), PieceStickering.Ignored);
476
- puzzleStickering.set(m.and([m.or(m.moves(["U", "F", "R"])), CENTERS()]), PieceStickering.Dim);
477
- puzzleStickering.set(m.and([m.move("F"), m.not(m.or(m.moves(["U", "R"])))]), PieceStickering.Regular);
474
+ puzzleStickering.set(m.all(), "Dim" /* Dim */);
475
+ puzzleStickering.set(m.or(m.moves(["U", "F", "R"])), "Ignored" /* Ignored */);
476
+ puzzleStickering.set(m.and([m.or(m.moves(["U", "F", "R"])), CENTERS()]), "Dim" /* Dim */);
477
+ puzzleStickering.set(m.and([m.move("F"), m.not(m.or(m.moves(["U", "R"])))]), "Regular" /* Regular */);
478
478
  break;
479
479
  case "Void Cube":
480
- puzzleStickering.set(CENTERS(), PieceStickering.Invisible);
480
+ puzzleStickering.set(CENTERS(), "Invisible" /* Invisible */);
481
481
  break;
482
482
  case "picture":
483
483
  case "invisible":
484
- puzzleStickering.set(m.all(), PieceStickering.Invisible);
484
+ puzzleStickering.set(m.all(), "Invisible" /* Invisible */);
485
485
  break;
486
486
  case "centers-only":
487
- puzzleStickering.set(m.not(CENTERS()), PieceStickering.Ignored);
487
+ puzzleStickering.set(m.not(CENTERS()), "Ignored" /* Ignored */);
488
488
  break;
489
489
  case "experimental-global-custom-1":
490
490
  case "experimental-global-custom-2":
@@ -492,7 +492,7 @@ async function cubeAppearance(puzzleLoader, stickering) {
492
492
  break;
493
493
  default:
494
494
  console.warn(`Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`);
495
- puzzleStickering.set(m.and(m.moves([])), PieceStickering.Dim);
495
+ puzzleStickering.set(m.and(m.moves([])), "Dim" /* Dim */);
496
496
  }
497
497
  return puzzleStickering.toAppearance();
498
498
  }
@@ -596,9 +596,9 @@ var CubePGPuzzleLoader = class extends PGPuzzleLoader {
596
596
  var cube2x2x2 = {
597
597
  id: "2x2x2",
598
598
  fullName: "2\xD72\xD72 Cube",
599
- kpuzzle: getCached(async () => new KPuzzle((await import("./2x2x2.kpuzzle.json-RUB44MJV.js")).cube2x2x2KPuzzleDefinition)),
599
+ kpuzzle: getCached(async () => new KPuzzle((await import("./2x2x2.kpuzzle.json-BHTFIME6.js")).cube2x2x2KPuzzleDefinition)),
600
600
  svg: async () => {
601
- return (await import("./2x2x2.kpuzzle.svg-CQF2FTV7.js")).default;
601
+ return (await import("./2x2x2.kpuzzle.svg-CYX37VBY.js")).default;
602
602
  },
603
603
  pg: getCached(async () => {
604
604
  return asyncGetPuzzleGeometry("2x2x2");
@@ -617,10 +617,10 @@ var cube3x3x3 = {
617
617
  return experimental3x3x3KPuzzle;
618
618
  }),
619
619
  svg: getCached(async () => {
620
- return (await import("./3x3x3.kpuzzle.svg-ERSSH66P.js")).default;
620
+ return (await import("./3x3x3.kpuzzle.svg-5U7LUACF.js")).default;
621
621
  }),
622
622
  llSVG: getCached(async () => {
623
- return (await import("./3x3x3-ll.kpuzzle.svg-53CBPG5O.js")).default;
623
+ return (await import("./3x3x3-ll.kpuzzle.svg-KZNSV76X.js")).default;
624
624
  }),
625
625
  pg: getCached(async () => {
626
626
  return asyncGetPuzzleGeometry("3x3x3");
@@ -635,9 +635,9 @@ var clock = {
635
635
  fullName: "Clock",
636
636
  inventedBy: ["Christopher C. Wiggs", "Christopher J. Taylor"],
637
637
  inventionYear: 1988,
638
- kpuzzle: getCached(async () => new KPuzzle((await import("./clock.kpuzzle.json-BQKNKV3G.js")).clockKPuzzleDefinition)),
638
+ kpuzzle: getCached(async () => new KPuzzle((await import("./clock.kpuzzle.json-PYHONPBY.js")).clockKPuzzleDefinition)),
639
639
  svg: getCached(async () => {
640
- return (await import("./clock.kpuzzle.svg-B7TMN3SY.js")).default;
640
+ return (await import("./clock.kpuzzle.svg-JSRDCSQF.js")).default;
641
641
  })
642
642
  };
643
643
 
@@ -667,30 +667,30 @@ async function ftoStickering(puzzleLoader, stickering) {
667
667
  case "full":
668
668
  break;
669
669
  case "experimental-fto-fc":
670
- puzzleStickering.set(m.not(experimentalFTO_FC()), PieceStickering.Ignored);
670
+ puzzleStickering.set(m.not(experimentalFTO_FC()), "Ignored" /* Ignored */);
671
671
  break;
672
672
  case "experimental-fto-f2t":
673
- puzzleStickering.set(m.not(experimentalFTO_F2T()), PieceStickering.Ignored);
674
- puzzleStickering.set(experimentalFTO_FC(), PieceStickering.Dim);
673
+ puzzleStickering.set(m.not(experimentalFTO_F2T()), "Ignored" /* Ignored */);
674
+ puzzleStickering.set(experimentalFTO_FC(), "Dim" /* Dim */);
675
675
  break;
676
676
  case "experimental-fto-sc":
677
- puzzleStickering.set(m.not(experimentalFTO_SC()), PieceStickering.Ignored);
678
- puzzleStickering.set(experimentalFTO_F2T(), PieceStickering.Dim);
677
+ puzzleStickering.set(m.not(experimentalFTO_SC()), "Ignored" /* Ignored */);
678
+ puzzleStickering.set(experimentalFTO_F2T(), "Dim" /* Dim */);
679
679
  break;
680
680
  case "experimental-fto-l2c":
681
- puzzleStickering.set(m.not(experimentalFTO_L2C()), PieceStickering.Ignored);
682
- puzzleStickering.set(experimentalFTO_SC(), PieceStickering.Dim);
681
+ puzzleStickering.set(m.not(experimentalFTO_L2C()), "Ignored" /* Ignored */);
682
+ puzzleStickering.set(experimentalFTO_SC(), "Dim" /* Dim */);
683
683
  break;
684
684
  case "experimental-fto-lbt":
685
- puzzleStickering.set(m.not(experimentalFTO_LBT()), PieceStickering.Ignored);
686
- puzzleStickering.set(experimentalFTO_L2C(), PieceStickering.Dim);
685
+ puzzleStickering.set(m.not(experimentalFTO_LBT()), "Ignored" /* Ignored */);
686
+ puzzleStickering.set(experimentalFTO_L2C(), "Dim" /* Dim */);
687
687
  break;
688
688
  case "experimental-fto-l3t":
689
- puzzleStickering.set(experimentalFTO_LBT(), PieceStickering.Dim);
689
+ puzzleStickering.set(experimentalFTO_LBT(), "Dim" /* Dim */);
690
690
  break;
691
691
  default:
692
692
  console.warn(`Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`);
693
- puzzleStickering.set(m.and(m.moves([])), PieceStickering.Dim);
693
+ puzzleStickering.set(m.and(m.moves([])), "Dim" /* Dim */);
694
694
  }
695
695
  return puzzleStickering.toAppearance();
696
696
  }
@@ -717,6 +717,9 @@ var FTOPuzzleLoader = class extends PGPuzzleLoader {
717
717
  inventionYear: 1983
718
718
  });
719
719
  this.stickerings = ftoStickerings;
720
+ this.svg = getCached(async () => {
721
+ return (await import("./fto.kpuzzle.svg-H2RJX6UR.js")).ftoSVG;
722
+ });
720
723
  }
721
724
  appearance(stickering) {
722
725
  return ftoStickering(this, stickering);
@@ -765,7 +768,7 @@ var PyraminxPuzzleLoader = class extends PGPuzzleLoader {
765
768
  inventedBy: ["Uwe Meffert"]
766
769
  });
767
770
  this.svg = getCached(async () => {
768
- return (await import("./pyraminx.kpuzzle.svg-QBBMZVDY.js")).default;
771
+ return (await import("./pyraminx.kpuzzle.svg-UHDZCBET.js")).default;
769
772
  });
770
773
  }
771
774
  };
@@ -777,9 +780,9 @@ var square1 = {
777
780
  fullName: "Square-1",
778
781
  inventedBy: ["Karel Hr\u0161el", "Vojtech Kopsk\xFD"],
779
782
  inventionYear: 1990,
780
- kpuzzle: getCached(async () => new KPuzzle((await import("./sq1-hyperorbit.kpuzzle.json-4XS5YACO.js")).sq1HyperOrbitKPuzzleDefinition)),
783
+ kpuzzle: getCached(async () => new KPuzzle((await import("./sq1-hyperorbit.kpuzzle.json-AMXAFQCM.js")).sq1HyperOrbitKPuzzleDefinition)),
781
784
  svg: getCached(async () => {
782
- return (await import("./sq1-hyperorbit.kpuzzle.svg-ID57EER7.js")).default;
785
+ return (await import("./sq1-hyperorbit.kpuzzle.svg-MNHJTJ6V.js")).default;
783
786
  })
784
787
  };
785
788
 
@@ -817,7 +820,7 @@ var kilominx = {
817
820
  return kpuzzle;
818
821
  }),
819
822
  svg: getCached(async () => {
820
- return (await import("./kilominx.kpuzzle.svg-7XJBOKFU.js")).kilominxSVG;
823
+ return (await import("./kilominx.kpuzzle.svg-ZLRTRUTM.js")).kilominxSVG;
821
824
  })
822
825
  };
823
826
 
@@ -827,9 +830,9 @@ var rediCube = {
827
830
  fullName: "Redi Cube",
828
831
  inventedBy: ["Oskar van Deventer"],
829
832
  inventionYear: 2009,
830
- kpuzzle: getCached(async () => new KPuzzle((await import("./redi_cube.kpuzzle.json-EPBKWOMV.js")).rediCubeKPuzzleDefinition)),
833
+ kpuzzle: getCached(async () => new KPuzzle((await import("./redi_cube.kpuzzle.json-43CP47Z6.js")).rediCubeKPuzzleDefinition)),
831
834
  svg: async () => {
832
- return (await import("./redi_cube.kpuzzle.svg-BSHCMC2Z.js")).rediCubeSVG;
835
+ return (await import("./redi_cube.kpuzzle.svg-3DWDYE3O.js")).rediCubeSVG;
833
836
  }
834
837
  };
835
838
 
@@ -882,4 +885,4 @@ export {
882
885
  cube3x3x3,
883
886
  puzzles
884
887
  };
885
- //# sourceMappingURL=chunk-CNIY6YZL.js.map
888
+ //# sourceMappingURL=chunk-QKEGKHT5.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 =\n await player.experimentalModel.twistySceneModel.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 { 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(\"./fto.kpuzzle.svg\")).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 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
+ }