cubing 0.29.1 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/README.md +1 -6
  2. package/dist/esm/.DS_Store +0 -0
  3. package/dist/esm/alg/index.js +1 -2
  4. package/dist/esm/bluetooth/index.js +36 -32
  5. package/dist/esm/bluetooth/index.js.map +2 -2
  6. package/dist/esm/{chunk-XRZBPKES.js → chunk-35OK6TQ4.js} +328 -66
  7. package/dist/esm/chunk-35OK6TQ4.js.map +7 -0
  8. package/dist/esm/{chunk-WYKXX2XY.js → chunk-4QZRHN6S.js} +10 -8
  9. package/dist/esm/{chunk-WYKXX2XY.js.map → chunk-4QZRHN6S.js.map} +2 -2
  10. package/dist/esm/{chunk-2JDBIQSV.js → chunk-5OQ34D3X.js} +7 -7
  11. package/dist/esm/{chunk-2JDBIQSV.js.map → chunk-5OQ34D3X.js.map} +2 -2
  12. package/dist/esm/{chunk-U2ONHTIX.js → chunk-6FB2XWAK.js} +33 -31
  13. package/dist/esm/chunk-6FB2XWAK.js.map +7 -0
  14. package/dist/esm/{chunk-ZNAYJGVL.js → chunk-C6KMV2PL.js} +2 -2
  15. package/dist/esm/{chunk-ZNAYJGVL.js.map → chunk-C6KMV2PL.js.map} +0 -0
  16. package/dist/esm/{chunk-XU5ILFX5.js → chunk-GQBRF4EM.js} +6 -4
  17. package/dist/esm/{chunk-XU5ILFX5.js.map → chunk-GQBRF4EM.js.map} +2 -2
  18. package/dist/esm/{chunk-WXCNEGW3.js → chunk-HR5D6SD4.js} +2 -2
  19. package/dist/esm/{chunk-WXCNEGW3.js.map → chunk-HR5D6SD4.js.map} +2 -2
  20. package/dist/esm/{chunk-XT3R2ENM.js → chunk-KOAJIBEX.js} +47 -38
  21. package/dist/esm/chunk-KOAJIBEX.js.map +7 -0
  22. package/dist/esm/{chunk-OX6O2ZO5.js → chunk-QHWK5RXN.js} +1 -1
  23. package/dist/esm/chunk-QHWK5RXN.js.map +7 -0
  24. package/dist/esm/{chunk-GW4FGG42.js → chunk-RI2DAEY6.js} +2 -2
  25. package/dist/esm/{chunk-GW4FGG42.js.map → chunk-RI2DAEY6.js.map} +0 -0
  26. package/dist/esm/{chunk-AHEXXC6V.js → chunk-VIUWS2PX.js} +4 -4
  27. package/dist/esm/chunk-VIUWS2PX.js.map +7 -0
  28. package/dist/esm/{chunk-2IZUSAXQ.js → chunk-WEYPAZEE.js} +1 -1
  29. package/dist/esm/{chunk-2IZUSAXQ.js.map → chunk-WEYPAZEE.js.map} +1 -1
  30. package/dist/esm/{chunk-NI7U4XAZ.js → chunk-ZQT3QSWD.js} +226 -113
  31. package/dist/esm/chunk-ZQT3QSWD.js.map +7 -0
  32. package/dist/esm/kpuzzle/index.js +2 -3
  33. package/dist/esm/notation/index.js +2 -3
  34. package/dist/esm/protocol/index.js +4 -5
  35. package/dist/esm/puzzle-geometry/index.js +110 -85
  36. package/dist/esm/puzzle-geometry/index.js.map +2 -2
  37. package/dist/esm/puzzles/index.js +10 -7
  38. package/dist/esm/{puzzles-dynamic-3x3x3-KIG5A6QR.js → puzzles-dynamic-3x3x3-ZKMODX2P.js} +1 -3
  39. package/dist/esm/{puzzles-dynamic-3x3x3-KIG5A6QR.js.map → puzzles-dynamic-3x3x3-ZKMODX2P.js.map} +1 -1
  40. package/dist/esm/{puzzles-dynamic-4x4x4-PEDAPUZK.js → puzzles-dynamic-4x4x4-DT42HVIY.js} +1 -3
  41. package/dist/esm/{puzzles-dynamic-4x4x4-PEDAPUZK.js.map → puzzles-dynamic-4x4x4-DT42HVIY.js.map} +1 -1
  42. package/dist/esm/{puzzles-dynamic-side-events-5C7LMBWX.js → puzzles-dynamic-side-events-HMUBMHA5.js} +2 -4
  43. package/dist/esm/{puzzles-dynamic-side-events-5C7LMBWX.js.map → puzzles-dynamic-side-events-HMUBMHA5.js.map} +2 -2
  44. package/dist/esm/{puzzles-dynamic-unofficial-WWJ4NJMX.js → puzzles-dynamic-unofficial-QXSDLTK5.js} +1 -3
  45. package/dist/esm/{puzzles-dynamic-unofficial-WWJ4NJMX.js.map → puzzles-dynamic-unofficial-QXSDLTK5.js.map} +1 -1
  46. package/dist/esm/scramble/index.js +3 -4
  47. package/dist/esm/search/index.js +8 -9
  48. package/dist/esm/{search-dynamic-sgs-side-events-4H3X5HLH.js → search-dynamic-sgs-side-events-XNTCWRI4.js} +6 -7
  49. package/dist/esm/search-dynamic-sgs-side-events-XNTCWRI4.js.map +7 -0
  50. package/dist/esm/{search-dynamic-sgs-unofficial-7IRW4LVD.js → search-dynamic-sgs-unofficial-5KMZ747E.js} +122 -68
  51. package/dist/esm/search-dynamic-sgs-unofficial-5KMZ747E.js.map +7 -0
  52. package/dist/esm/{search-dynamic-solve-3x3x3-7XZTYQMO.js → search-dynamic-solve-3x3x3-TSXPWENP.js} +649 -407
  53. package/dist/esm/search-dynamic-solve-3x3x3-TSXPWENP.js.map +7 -0
  54. package/dist/esm/{search-dynamic-solve-4x4x4-7JTJCCSY.js → search-dynamic-solve-4x4x4-FKQ2JWK2.js} +399 -151
  55. package/dist/esm/search-dynamic-solve-4x4x4-FKQ2JWK2.js.map +7 -0
  56. package/dist/esm/{search-dynamic-solve-fto-4LI23P6K.js → search-dynamic-solve-fto-GPLW7S5F.js} +74 -35
  57. package/dist/esm/search-dynamic-solve-fto-GPLW7S5F.js.map +7 -0
  58. package/dist/esm/{search-dynamic-solve-kilominx-3HEVQ4MC.js → search-dynamic-solve-kilominx-HB2QFUGF.js} +136 -72
  59. package/dist/esm/search-dynamic-solve-kilominx-HB2QFUGF.js.map +7 -0
  60. package/dist/esm/{search-dynamic-solve-master_tetraminx-UB32C7MM.js → search-dynamic-solve-master_tetraminx-LR3LJI7O.js} +84 -42
  61. package/dist/esm/search-dynamic-solve-master_tetraminx-LR3LJI7O.js.map +7 -0
  62. package/dist/esm/{search-dynamic-solve-sq1-HA72TYF2.js → search-dynamic-solve-sq1-W33UXTDZ.js} +129 -55
  63. package/dist/esm/search-dynamic-solve-sq1-W33UXTDZ.js.map +7 -0
  64. package/dist/esm/search-worker-inside-generated-string-5HKZNHKK.js +3884 -0
  65. package/dist/esm/search-worker-inside-generated-string-5HKZNHKK.js.map +7 -0
  66. package/dist/esm/{search-worker-js-entry-T6YIT7YD.js → search-worker-js-entry-PDXEE46R.js} +44 -36
  67. package/dist/esm/search-worker-js-entry-PDXEE46R.js.map +7 -0
  68. package/dist/esm/{search-worker-ts-entry-OUEC4L5I.js → search-worker-ts-entry-UV2RY2EY.js} +3 -4
  69. package/dist/esm/{search-worker-ts-entry-OUEC4L5I.js.map → search-worker-ts-entry-UV2RY2EY.js.map} +1 -1
  70. package/dist/esm/stream/index.js +1 -2
  71. package/dist/esm/stream/index.js.map +2 -2
  72. package/dist/esm/twisty/index.js +368 -300
  73. package/dist/esm/twisty/index.js.map +3 -3
  74. package/dist/esm/{twisty-dynamic-3d-AZUSXQ5S.js → twisty-dynamic-3d-GPF6TW32.js} +57 -60
  75. package/dist/esm/twisty-dynamic-3d-GPF6TW32.js.map +7 -0
  76. package/dist/types/{Alg-137fb0d5.d.ts → Alg-1c8c3757.d.ts} +25 -26
  77. package/dist/types/{KState-a73111d7.d.ts → KState-7c9e40f4.d.ts} +1 -1
  78. package/dist/types/{TwizzleLink-bef52ecd.d.ts → TwizzleLink-3f8a01d2.d.ts} +19 -18
  79. package/dist/types/alg/index.d.ts +30 -8
  80. package/dist/types/bluetooth/index.d.ts +4 -4
  81. package/dist/types/{bluetooth-puzzle-8a678993.d.ts → bluetooth-puzzle-a64e9756.d.ts} +2 -2
  82. package/dist/types/kpuzzle/index.d.ts +2 -2
  83. package/dist/types/notation/index.d.ts +1 -1
  84. package/dist/types/{outside-e55f28a0.d.ts → outside-b62aa614.d.ts} +2 -2
  85. package/dist/types/{parseAlg-a28f7568.d.ts → parseAlg-d5fbee87.d.ts} +1 -1
  86. package/dist/types/protocol/index.d.ts +2 -2
  87. package/dist/types/puzzle-geometry/index.d.ts +3 -3
  88. package/dist/types/puzzles/index.d.ts +8 -6
  89. package/dist/types/scramble/index.d.ts +3 -3
  90. package/dist/types/search/index.d.ts +3 -3
  91. package/dist/types/stream/index.d.ts +3 -3
  92. package/dist/types/twisty/index.d.ts +5 -5
  93. package/package.json +51 -147
  94. package/dist/esm/chunk-AHEXXC6V.js.map +0 -7
  95. package/dist/esm/chunk-NI7U4XAZ.js.map +0 -7
  96. package/dist/esm/chunk-OX6O2ZO5.js.map +0 -7
  97. package/dist/esm/chunk-SBZRVSPK.js +0 -30
  98. package/dist/esm/chunk-SBZRVSPK.js.map +0 -7
  99. package/dist/esm/chunk-U2ONHTIX.js.map +0 -7
  100. package/dist/esm/chunk-XRZBPKES.js.map +0 -7
  101. package/dist/esm/chunk-XT3R2ENM.js.map +0 -7
  102. package/dist/esm/search-dynamic-sgs-side-events-4H3X5HLH.js.map +0 -7
  103. package/dist/esm/search-dynamic-sgs-unofficial-7IRW4LVD.js.map +0 -7
  104. package/dist/esm/search-dynamic-solve-3x3x3-7XZTYQMO.js.map +0 -7
  105. package/dist/esm/search-dynamic-solve-4x4x4-7JTJCCSY.js.map +0 -7
  106. package/dist/esm/search-dynamic-solve-fto-4LI23P6K.js.map +0 -7
  107. package/dist/esm/search-dynamic-solve-kilominx-3HEVQ4MC.js.map +0 -7
  108. package/dist/esm/search-dynamic-solve-master_tetraminx-UB32C7MM.js.map +0 -7
  109. package/dist/esm/search-dynamic-solve-sq1-HA72TYF2.js.map +0 -7
  110. package/dist/esm/search-worker-inside-generated-string-ZEY77HTF.js +0 -3886
  111. package/dist/esm/search-worker-inside-generated-string-ZEY77HTF.js.map +0 -7
  112. package/dist/esm/search-worker-js-entry-T6YIT7YD.js.map +0 -7
  113. package/dist/esm/twisty-dynamic-3d-AZUSXQ5S.js.map +0 -7
@@ -3,10 +3,14 @@ import {
3
3
  StickeringManager,
4
4
  experimental3x3x3KPuzzle,
5
5
  experimentalStickerings
6
- } from "./chunk-U2ONHTIX.js";
6
+ } from "./chunk-6FB2XWAK.js";
7
7
  import {
8
8
  KPuzzle
9
- } from "./chunk-XU5ILFX5.js";
9
+ } from "./chunk-GQBRF4EM.js";
10
+ import {
11
+ Move,
12
+ QuantumMove
13
+ } from "./chunk-ZQT3QSWD.js";
10
14
 
11
15
  // src/cubing/puzzles/events.ts
12
16
  var wcaEvents = {
@@ -19,11 +23,11 @@ var wcaEvents = {
19
23
  "333bf": { puzzleID: "3x3x3", eventName: "3x3x3 Blindfolded" },
20
24
  "333fm": { puzzleID: "3x3x3", eventName: "3x3x3 Fewest Moves" },
21
25
  "333oh": { puzzleID: "3x3x3", eventName: "3x3x3 One-Handed" },
22
- "clock": { puzzleID: "clock", eventName: "Clock" },
23
- "minx": { puzzleID: "megaminx", eventName: "Megaminx" },
24
- "pyram": { puzzleID: "pyraminx", eventName: "Pyraminx" },
25
- "skewb": { puzzleID: "skewb", eventName: "Skewb" },
26
- "sq1": { puzzleID: "square1", eventName: "Square-1" },
26
+ clock: { puzzleID: "clock", eventName: "Clock" },
27
+ minx: { puzzleID: "megaminx", eventName: "Megaminx" },
28
+ pyram: { puzzleID: "pyraminx", eventName: "Pyraminx" },
29
+ skewb: { puzzleID: "skewb", eventName: "Skewb" },
30
+ sq1: { puzzleID: "square1", eventName: "Square-1" },
27
31
  "444bf": { puzzleID: "4x4x4", eventName: "4x4x4 Blindfolded" },
28
32
  "555bf": { puzzleID: "5x5x5", eventName: "5x5x5 Blindfolded" },
29
33
  "333mb": { puzzleID: "3x3x3", eventName: "3x3x3 Multi-Blind" }
@@ -31,7 +35,7 @@ var wcaEvents = {
31
35
  function wcaEventInfo(event) {
32
36
  return wcaEvents[event] ?? null;
33
37
  }
34
- var events = {
38
+ var twizzleEvents = {
35
39
  ...wcaEvents,
36
40
  fto: { puzzleID: "fto", eventName: "Face-Turning Octahedron" },
37
41
  master_tetraminx: {
@@ -48,7 +52,7 @@ var events = {
48
52
  }
49
53
  };
50
54
  function eventInfo(event) {
51
- return events[event] ?? null;
55
+ return twizzleEvents[event] ?? null;
52
56
  }
53
57
 
54
58
  // src/cubing/puzzles/stickerings/cube-stickerings.ts
@@ -91,11 +95,12 @@ async function cubeAppearance(puzzleLoader, stickering) {
91
95
  switch (stickering) {
92
96
  case "full":
93
97
  break;
94
- case "PLL":
98
+ case "PLL": {
95
99
  dimF2L();
96
100
  setPLL();
97
101
  break;
98
- case "CLS":
102
+ }
103
+ case "CLS": {
99
104
  dimF2L();
100
105
  puzzleStickering.set(cornerDFR(), "Regular" /* Regular */);
101
106
  puzzleStickering.set(LL(), "Ignoriented" /* Ignoriented */);
@@ -105,17 +110,20 @@ async function cubeAppearance(puzzleLoader, stickering) {
105
110
  "IgnoreNonPrimary" /* IgnoreNonPrimary */
106
111
  );
107
112
  break;
108
- case "OLL":
113
+ }
114
+ case "OLL": {
109
115
  dimF2L();
110
116
  setOLL();
111
117
  break;
112
- case "COLL":
118
+ }
119
+ case "COLL": {
113
120
  dimF2L();
114
121
  puzzleStickering.set(m.and([LL(), EDGES()]), "Ignoriented" /* Ignoriented */);
115
122
  puzzleStickering.set(m.and([LL(), CENTERS()]), "Dim" /* Dim */);
116
123
  puzzleStickering.set(m.and([LL(), CORNERS()]), "Regular" /* Regular */);
117
124
  break;
118
- case "OCLL":
125
+ }
126
+ case "OCLL": {
119
127
  dimF2L();
120
128
  dimOLL();
121
129
  puzzleStickering.set(
@@ -123,49 +131,58 @@ async function cubeAppearance(puzzleLoader, stickering) {
123
131
  "IgnoreNonPrimary" /* IgnoreNonPrimary */
124
132
  );
125
133
  break;
126
- case "CLL":
134
+ }
135
+ case "CLL": {
127
136
  dimF2L();
128
137
  puzzleStickering.set(
129
138
  m.not(m.and([CORNERS(), LL()])),
130
139
  "Dim" /* Dim */
131
140
  );
132
141
  break;
133
- case "ELL":
142
+ }
143
+ case "ELL": {
134
144
  dimF2L();
135
145
  puzzleStickering.set(LL(), "Dim" /* Dim */);
136
146
  puzzleStickering.set(m.and([LL(), EDGES()]), "Regular" /* Regular */);
137
147
  break;
138
- case "ELS":
148
+ }
149
+ case "ELS": {
139
150
  dimF2L();
140
151
  setOLL();
141
152
  puzzleStickering.set(m.and([LL(), CORNERS()]), "Ignored" /* Ignored */);
142
153
  puzzleStickering.set(edgeFR(), "Regular" /* Regular */);
143
154
  puzzleStickering.set(cornerDFR(), "Ignored" /* Ignored */);
144
155
  break;
145
- case "LL":
156
+ }
157
+ case "LL": {
146
158
  dimF2L();
147
159
  break;
148
- case "F2L":
160
+ }
161
+ case "F2L": {
149
162
  puzzleStickering.set(LL(), "Ignored" /* Ignored */);
150
163
  break;
151
- case "ZBLL":
164
+ }
165
+ case "ZBLL": {
152
166
  dimF2L();
153
167
  puzzleStickering.set(LL(), "PermuteNonPrimary" /* PermuteNonPrimary */);
154
168
  puzzleStickering.set(centerLL(), "Dim" /* Dim */);
155
169
  puzzleStickering.set(m.and([LL(), CORNERS()]), "Regular" /* Regular */);
156
170
  break;
157
- case "ZBLS":
171
+ }
172
+ case "ZBLS": {
158
173
  dimF2L();
159
174
  puzzleStickering.set(slotFR(), "Regular" /* Regular */);
160
175
  setOLL();
161
176
  puzzleStickering.set(m.and([LL(), CORNERS()]), "Ignored" /* Ignored */);
162
177
  break;
163
- case "VLS":
178
+ }
179
+ case "VLS": {
164
180
  dimF2L();
165
181
  puzzleStickering.set(slotFR(), "Regular" /* Regular */);
166
182
  setOLL();
167
183
  break;
168
- case "WVLS":
184
+ }
185
+ case "WVLS": {
169
186
  dimF2L();
170
187
  puzzleStickering.set(slotFR(), "Regular" /* Regular */);
171
188
  puzzleStickering.set(m.and([LL(), EDGES()]), "Ignoriented" /* Ignoriented */);
@@ -175,20 +192,23 @@ async function cubeAppearance(puzzleLoader, stickering) {
175
192
  "IgnoreNonPrimary" /* IgnoreNonPrimary */
176
193
  );
177
194
  break;
178
- case "LS":
195
+ }
196
+ case "LS": {
179
197
  dimF2L();
180
198
  puzzleStickering.set(slotFR(), "Regular" /* Regular */);
181
199
  puzzleStickering.set(LL(), "Ignored" /* Ignored */);
182
200
  puzzleStickering.set(centerLL(), "Dim" /* Dim */);
183
201
  break;
184
- case "EO":
202
+ }
203
+ case "EO": {
185
204
  puzzleStickering.set(CORNERS(), "Ignored" /* Ignored */);
186
205
  puzzleStickering.set(
187
206
  EDGES(),
188
207
  "OrientationWithoutPermutation" /* OrientationWithoutPermutation */
189
208
  );
190
209
  break;
191
- case "EOline":
210
+ }
211
+ case "EOline": {
192
212
  puzzleStickering.set(CORNERS(), "Ignored" /* Ignored */);
193
213
  puzzleStickering.set(
194
214
  EDGES(),
@@ -196,7 +216,8 @@ async function cubeAppearance(puzzleLoader, stickering) {
196
216
  );
197
217
  puzzleStickering.set(m.and(m.moves(["D", "M"])), "Regular" /* Regular */);
198
218
  break;
199
- case "EOcross":
219
+ }
220
+ case "EOcross": {
200
221
  puzzleStickering.set(
201
222
  EDGES(),
202
223
  "OrientationWithoutPermutation" /* OrientationWithoutPermutation */
@@ -204,19 +225,23 @@ async function cubeAppearance(puzzleLoader, stickering) {
204
225
  puzzleStickering.set(m.move("D"), "Regular" /* Regular */);
205
226
  puzzleStickering.set(CORNERS(), "Ignored" /* Ignored */);
206
227
  break;
207
- case "CMLL":
228
+ }
229
+ case "CMLL": {
208
230
  puzzleStickering.set(F2L(), "Dim" /* Dim */);
209
231
  puzzleStickering.set(L6E(), "Ignored" /* Ignored */);
210
232
  puzzleStickering.set(m.and([LL(), CORNERS()]), "Regular" /* Regular */);
211
233
  break;
212
- case "L10P":
234
+ }
235
+ case "L10P": {
213
236
  puzzleStickering.set(m.not(L6E()), "Dim" /* Dim */);
214
237
  puzzleStickering.set(m.and([CORNERS(), LL()]), "Regular" /* Regular */);
215
238
  break;
216
- case "L6E":
239
+ }
240
+ case "L6E": {
217
241
  puzzleStickering.set(m.not(L6E()), "Dim" /* Dim */);
218
242
  break;
219
- case "L6EO":
243
+ }
244
+ case "L6EO": {
220
245
  puzzleStickering.set(m.not(L6E()), "Dim" /* Dim */);
221
246
  puzzleStickering.set(
222
247
  L6E(),
@@ -227,7 +252,8 @@ async function cubeAppearance(puzzleLoader, stickering) {
227
252
  "OrientationStickers" /* OrientationStickers */
228
253
  );
229
254
  break;
230
- case "Daisy":
255
+ }
256
+ case "Daisy": {
231
257
  puzzleStickering.set(m.all(), "Ignored" /* Ignored */);
232
258
  puzzleStickering.set(CENTERS(), "Dim" /* Dim */);
233
259
  puzzleStickering.set(
@@ -239,7 +265,8 @@ async function cubeAppearance(puzzleLoader, stickering) {
239
265
  "IgnoreNonPrimary" /* IgnoreNonPrimary */
240
266
  );
241
267
  break;
242
- case "Cross":
268
+ }
269
+ case "Cross": {
243
270
  puzzleStickering.set(m.all(), "Ignored" /* Ignored */);
244
271
  puzzleStickering.set(CENTERS(), "Dim" /* Dim */);
245
272
  puzzleStickering.set(
@@ -251,7 +278,8 @@ async function cubeAppearance(puzzleLoader, stickering) {
251
278
  "Regular" /* Regular */
252
279
  );
253
280
  break;
254
- case "2x2x2":
281
+ }
282
+ case "2x2x2": {
255
283
  puzzleStickering.set(
256
284
  m.or(m.moves(["U", "F", "R"])),
257
285
  "Ignored" /* Ignored */
@@ -261,7 +289,8 @@ async function cubeAppearance(puzzleLoader, stickering) {
261
289
  "Dim" /* Dim */
262
290
  );
263
291
  break;
264
- case "2x2x3":
292
+ }
293
+ case "2x2x3": {
265
294
  puzzleStickering.set(m.all(), "Dim" /* Dim */);
266
295
  puzzleStickering.set(
267
296
  m.or(m.moves(["U", "F", "R"])),
@@ -276,16 +305,20 @@ async function cubeAppearance(puzzleLoader, stickering) {
276
305
  "Regular" /* Regular */
277
306
  );
278
307
  break;
279
- case "Void Cube":
308
+ }
309
+ case "Void Cube": {
280
310
  puzzleStickering.set(CENTERS(), "Invisible" /* Invisible */);
281
311
  break;
312
+ }
282
313
  case "picture":
283
- case "invisible":
314
+ case "invisible": {
284
315
  puzzleStickering.set(m.all(), "Invisible" /* Invisible */);
285
316
  break;
286
- case "centers-only":
317
+ }
318
+ case "centers-only": {
287
319
  puzzleStickering.set(m.not(CENTERS()), "Ignored" /* Ignored */);
288
320
  break;
321
+ }
289
322
  default:
290
323
  console.warn(
291
324
  `Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`
@@ -371,11 +404,11 @@ var cube2x2x2 = {
371
404
  fullName: "2\xD72\xD72 Cube",
372
405
  kpuzzle: getCached(
373
406
  async () => new KPuzzle(
374
- (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).cube2x2x2JSON
407
+ (await import("./puzzles-dynamic-side-events-HMUBMHA5.js")).cube2x2x2JSON
375
408
  )
376
409
  ),
377
410
  svg: async () => {
378
- return (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).cube2x2x2SVG;
411
+ return (await import("./puzzles-dynamic-side-events-HMUBMHA5.js")).cube2x2x2SVG;
379
412
  },
380
413
  pg: getCached(async () => {
381
414
  return asyncGetPuzzleGeometry("2x2x2");
@@ -384,6 +417,226 @@ var cube2x2x2 = {
384
417
  stickerings: cubeStickerings
385
418
  };
386
419
 
420
+ // src/cubing/puzzles/implementations/3x3x3/puzzle-specific-simplifications.ts
421
+ function makeSourceInfo(moveStrings, type, from, to) {
422
+ const output = [];
423
+ for (const moveString of moveStrings) {
424
+ const move = Move.fromString(moveString);
425
+ const { family, amount: direction } = move;
426
+ if (![-1, 1].includes(direction)) {
427
+ throw new Error("Invalid config move");
428
+ }
429
+ output.push({ family, direction, type, from, to });
430
+ }
431
+ return output;
432
+ }
433
+ var axisInfos = {
434
+ ["x axis" /* X */]: {
435
+ sliceDiameter: 3,
436
+ extendsThroughEntirePuzzle: true,
437
+ moveSourceInfos: [
438
+ ...makeSourceInfo(["R"], 0 /* INDEXABLE_SLICE_NEAR */, 0, 3),
439
+ ...makeSourceInfo(["L'"], 1 /* INDEXABLE_SLICE_FAR */, 0, 3),
440
+ ...makeSourceInfo(["r", "Rw"], 2 /* INDEXABLE_WIDE_NEAR */, 0, 2),
441
+ ...makeSourceInfo(["l'", "Lw'"], 3 /* INDEXABLE_WIDE_FAR */, 0, 2),
442
+ ...makeSourceInfo(["M'"], 4 /* SPECIFIC_SLICE */, 1, 2),
443
+ ...makeSourceInfo(["x", "Uv", "Dv'"], 5 /* ROTATION */, 0, 3)
444
+ ]
445
+ },
446
+ ["y axis" /* Y */]: {
447
+ sliceDiameter: 3,
448
+ extendsThroughEntirePuzzle: true,
449
+ moveSourceInfos: [
450
+ ...makeSourceInfo(["U"], 0 /* INDEXABLE_SLICE_NEAR */, 0, 3),
451
+ ...makeSourceInfo(["D'"], 1 /* INDEXABLE_SLICE_FAR */, 0, 3),
452
+ ...makeSourceInfo(["u", "Uw"], 2 /* INDEXABLE_WIDE_NEAR */, 0, 2),
453
+ ...makeSourceInfo(["d'", "Dw'"], 3 /* INDEXABLE_WIDE_FAR */, 0, 2),
454
+ ...makeSourceInfo(["E'"], 4 /* SPECIFIC_SLICE */, 1, 2),
455
+ ...makeSourceInfo(["y", "Uv", "Dv'"], 5 /* ROTATION */, 0, 3)
456
+ ]
457
+ },
458
+ ["z axis" /* Z */]: {
459
+ sliceDiameter: 3,
460
+ extendsThroughEntirePuzzle: true,
461
+ moveSourceInfos: [
462
+ ...makeSourceInfo(["F"], 0 /* INDEXABLE_SLICE_NEAR */, 0, 3),
463
+ ...makeSourceInfo(["B'"], 1 /* INDEXABLE_SLICE_FAR */, 0, 3),
464
+ ...makeSourceInfo(["f", "Fw"], 2 /* INDEXABLE_WIDE_NEAR */, 0, 3),
465
+ ...makeSourceInfo(["b'", "Bw'"], 3 /* INDEXABLE_WIDE_FAR */, 0, 3),
466
+ ...makeSourceInfo(["S"], 4 /* SPECIFIC_SLICE */, 1, 2),
467
+ ...makeSourceInfo(["z", "Fv", "Bv'"], 5 /* ROTATION */, 0, 3)
468
+ ]
469
+ }
470
+ };
471
+ var byFamily = {};
472
+ for (const [axis, info] of Object.entries(axisInfos)) {
473
+ for (const moveSourceInfo of info.moveSourceInfos) {
474
+ byFamily[moveSourceInfo.family] = { axis, moveSourceInfo };
475
+ }
476
+ }
477
+ var byAxisThenType = {};
478
+ var _a;
479
+ for (const axis of Object.keys(axisInfos)) {
480
+ const entry = {};
481
+ byAxisThenType[axis] = entry;
482
+ for (const moveSourceInfo of axisInfos[axis].moveSourceInfos) {
483
+ (entry[_a = moveSourceInfo.type] ?? (entry[_a] = [])).push(moveSourceInfo);
484
+ }
485
+ }
486
+ var byAxisThenSpecificSlices = {};
487
+ for (const axis of Object.keys(axisInfos)) {
488
+ const entry = /* @__PURE__ */ new Map();
489
+ byAxisThenSpecificSlices[axis] = entry;
490
+ for (const moveSourceInfo of axisInfos[axis].moveSourceInfos) {
491
+ if (!entry.get(moveSourceInfo.from)) {
492
+ entry.set(moveSourceInfo.from, moveSourceInfo);
493
+ }
494
+ }
495
+ }
496
+ function firstOfType(axis, moveSourceType) {
497
+ const entry = byAxisThenType[axis][moveSourceType]?.[0];
498
+ if (!entry) {
499
+ throw new Error(
500
+ `Could not find a reference move (axis: ${axis}, move source type: ${moveSourceType})`
501
+ );
502
+ }
503
+ return entry;
504
+ }
505
+ var areQuantumMovesSameAxis = (quantumMove1, quantumMove2) => {
506
+ return byFamily[quantumMove1.family].axis === byFamily[quantumMove2.family].axis;
507
+ };
508
+ function simplestMove(axis, from, to, directedAmount) {
509
+ if (from + 1 === to) {
510
+ const sliceSpecificInfo = byAxisThenSpecificSlices[axis].get(from);
511
+ if (sliceSpecificInfo) {
512
+ return new Move(
513
+ new QuantumMove(sliceSpecificInfo.family),
514
+ directedAmount * sliceSpecificInfo.direction
515
+ );
516
+ }
517
+ }
518
+ const axisInfo = axisInfos[axis];
519
+ const { sliceDiameter } = axisInfo;
520
+ if (from === 0 && to === sliceDiameter) {
521
+ const moveSourceInfo2 = firstOfType(axis, 5 /* ROTATION */);
522
+ return new Move(
523
+ new QuantumMove(moveSourceInfo2.family),
524
+ directedAmount * moveSourceInfo2.direction
525
+ );
526
+ }
527
+ const far = from + to > sliceDiameter;
528
+ if (far) {
529
+ [from, to] = [sliceDiameter - to, sliceDiameter - from];
530
+ }
531
+ let outerLayer = from + 1;
532
+ let innerLayer = to;
533
+ const slice = outerLayer === innerLayer;
534
+ if (slice) {
535
+ innerLayer = null;
536
+ }
537
+ if (outerLayer === 1) {
538
+ outerLayer = null;
539
+ }
540
+ if (slice && outerLayer === 1) {
541
+ innerLayer = null;
542
+ }
543
+ if (!slice && innerLayer === 2) {
544
+ innerLayer = null;
545
+ }
546
+ const moveSourceType = slice ? far ? 1 /* INDEXABLE_SLICE_FAR */ : 0 /* INDEXABLE_SLICE_NEAR */ : far ? 3 /* INDEXABLE_WIDE_FAR */ : 2 /* INDEXABLE_WIDE_NEAR */;
547
+ const moveSourceInfo = firstOfType(axis, moveSourceType);
548
+ return new Move(
549
+ new QuantumMove(moveSourceInfo.family, innerLayer, outerLayer),
550
+ directedAmount * moveSourceInfo.direction
551
+ );
552
+ }
553
+ function simplifySameAxisMoves(moves, quantumMod = true) {
554
+ if (moves.length === 0) {
555
+ return [];
556
+ }
557
+ const axis = byFamily[moves[0].family].axis;
558
+ const axisInfo = axisInfos[axis];
559
+ const { sliceDiameter } = axisInfo;
560
+ const sliceDeltas = /* @__PURE__ */ new Map();
561
+ let lastCandidateRange = null;
562
+ function adjustValue(idx, relativeDelta) {
563
+ let newDelta = (sliceDeltas.get(idx) ?? 0) + relativeDelta;
564
+ if (quantumMod) {
565
+ newDelta = newDelta % 4 + 5 % 4 - 1;
566
+ }
567
+ if (newDelta === 0) {
568
+ sliceDeltas.delete(idx);
569
+ } else {
570
+ sliceDeltas.set(idx, newDelta);
571
+ }
572
+ }
573
+ let suffixLength = 0;
574
+ for (const move of Array.from(moves).reverse()) {
575
+ suffixLength++;
576
+ const { moveSourceInfo } = byFamily[move.family];
577
+ const directedAmount2 = move.amount * moveSourceInfo.direction;
578
+ switch (moveSourceInfo.type) {
579
+ case 0 /* INDEXABLE_SLICE_NEAR */: {
580
+ const idx = (move.innerLayer ?? 1) - 1;
581
+ adjustValue(idx, directedAmount2);
582
+ adjustValue(idx + 1, -directedAmount2);
583
+ break;
584
+ }
585
+ case 1 /* INDEXABLE_SLICE_FAR */: {
586
+ const idx = sliceDiameter - (move.innerLayer ?? 1);
587
+ adjustValue(idx, directedAmount2);
588
+ adjustValue(idx + 1, -directedAmount2);
589
+ break;
590
+ }
591
+ case 2 /* INDEXABLE_WIDE_NEAR */: {
592
+ adjustValue((move.outerLayer ?? 1) - 1, directedAmount2);
593
+ adjustValue(move.innerLayer ?? 2, -directedAmount2);
594
+ break;
595
+ }
596
+ case 3 /* INDEXABLE_WIDE_FAR */: {
597
+ adjustValue(sliceDiameter - (move.innerLayer ?? 2), directedAmount2);
598
+ adjustValue(
599
+ sliceDiameter - ((move.outerLayer ?? 1) - 1),
600
+ -directedAmount2
601
+ );
602
+ break;
603
+ }
604
+ case 4 /* SPECIFIC_SLICE */: {
605
+ adjustValue(moveSourceInfo.from, directedAmount2);
606
+ adjustValue(moveSourceInfo.to, -directedAmount2);
607
+ break;
608
+ }
609
+ case 5 /* ROTATION */: {
610
+ adjustValue(0, directedAmount2);
611
+ adjustValue(sliceDiameter, -directedAmount2);
612
+ break;
613
+ }
614
+ }
615
+ if ([0, 2].includes(sliceDeltas.size)) {
616
+ lastCandidateRange = { suffixLength, sliceDeltas: new Map(sliceDeltas) };
617
+ }
618
+ }
619
+ if (sliceDeltas.size === 0) {
620
+ return [];
621
+ }
622
+ if (!lastCandidateRange) {
623
+ return moves;
624
+ }
625
+ let [from, to] = lastCandidateRange.sliceDeltas.keys();
626
+ if (from > to) {
627
+ [from, to] = [to, from];
628
+ }
629
+ const directedAmount = lastCandidateRange.sliceDeltas.get(from);
630
+ return [
631
+ ...moves.slice(0, -lastCandidateRange.suffixLength),
632
+ ...directedAmount !== 0 ? [simplestMove(axis, from, to, directedAmount)] : []
633
+ ];
634
+ }
635
+ var puzzleSpecificSimplifyOptions333 = {
636
+ quantumMoveOrder: () => 4,
637
+ axis: { areQuantumMovesSameAxis, simplifySameAxisMoves }
638
+ };
639
+
387
640
  // src/cubing/puzzles/implementations/3x3x3/index.ts
388
641
  var cube3x3x3 = {
389
642
  id: "3x3x3",
@@ -394,16 +647,17 @@ var cube3x3x3 = {
394
647
  return experimental3x3x3KPuzzle;
395
648
  }),
396
649
  svg: getCached(async () => {
397
- return (await import("./puzzles-dynamic-3x3x3-KIG5A6QR.js")).cube3x3x3SVG;
650
+ return (await import("./puzzles-dynamic-3x3x3-ZKMODX2P.js")).cube3x3x3SVG;
398
651
  }),
399
652
  llSVG: getCached(async () => {
400
- return (await import("./puzzles-dynamic-3x3x3-KIG5A6QR.js")).cube3x3x3LLSVG;
653
+ return (await import("./puzzles-dynamic-3x3x3-ZKMODX2P.js")).cube3x3x3LLSVG;
401
654
  }),
402
655
  pg: getCached(async () => {
403
656
  return asyncGetPuzzleGeometry("3x3x3");
404
657
  }),
405
658
  appearance: (stickering) => cubeAppearance(cube3x3x3, stickering),
406
- stickerings: cubeStickerings
659
+ stickerings: cubeStickerings,
660
+ puzzleSpecificSimplifyOptions: puzzleSpecificSimplifyOptions333
407
661
  };
408
662
 
409
663
  // src/cubing/puzzles/implementations/clock/index.ts
@@ -414,11 +668,11 @@ var clock = {
414
668
  inventionYear: 1988,
415
669
  kpuzzle: getCached(
416
670
  async () => new KPuzzle(
417
- (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).clockJSON
671
+ (await import("./puzzles-dynamic-side-events-HMUBMHA5.js")).clockJSON
418
672
  )
419
673
  ),
420
674
  svg: getCached(async () => {
421
- return (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).clockSVG;
675
+ return (await import("./puzzles-dynamic-side-events-HMUBMHA5.js")).clockSVG;
422
676
  })
423
677
  };
424
678
 
@@ -451,43 +705,49 @@ async function ftoStickering(puzzleLoader, stickering) {
451
705
  switch (stickering) {
452
706
  case "full":
453
707
  break;
454
- case "experimental-fto-fc":
708
+ case "experimental-fto-fc": {
455
709
  puzzleStickering.set(
456
710
  m.not(experimentalFTO_FC()),
457
711
  "Ignored" /* Ignored */
458
712
  );
459
713
  break;
460
- case "experimental-fto-f2t":
714
+ }
715
+ case "experimental-fto-f2t": {
461
716
  puzzleStickering.set(
462
717
  m.not(experimentalFTO_F2T()),
463
718
  "Ignored" /* Ignored */
464
719
  );
465
720
  puzzleStickering.set(experimentalFTO_FC(), "Dim" /* Dim */);
466
721
  break;
467
- case "experimental-fto-sc":
722
+ }
723
+ case "experimental-fto-sc": {
468
724
  puzzleStickering.set(
469
725
  m.not(experimentalFTO_SC()),
470
726
  "Ignored" /* Ignored */
471
727
  );
472
728
  puzzleStickering.set(experimentalFTO_F2T(), "Dim" /* Dim */);
473
729
  break;
474
- case "experimental-fto-l2c":
730
+ }
731
+ case "experimental-fto-l2c": {
475
732
  puzzleStickering.set(
476
733
  m.not(experimentalFTO_L2C()),
477
734
  "Ignored" /* Ignored */
478
735
  );
479
736
  puzzleStickering.set(experimentalFTO_SC(), "Dim" /* Dim */);
480
737
  break;
481
- case "experimental-fto-lbt":
738
+ }
739
+ case "experimental-fto-lbt": {
482
740
  puzzleStickering.set(
483
741
  m.not(experimentalFTO_LBT()),
484
742
  "Ignored" /* Ignored */
485
743
  );
486
744
  puzzleStickering.set(experimentalFTO_L2C(), "Dim" /* Dim */);
487
745
  break;
488
- case "experimental-fto-l3t":
746
+ }
747
+ case "experimental-fto-l3t": {
489
748
  puzzleStickering.set(experimentalFTO_LBT(), "Dim" /* Dim */);
490
749
  break;
750
+ }
491
751
  default:
492
752
  console.warn(
493
753
  `Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`
@@ -520,7 +780,7 @@ var FTOPuzzleLoader = class extends PGPuzzleLoader {
520
780
  });
521
781
  this.stickerings = ftoStickerings;
522
782
  this.svg = getCached(async () => {
523
- return (await import("./puzzles-dynamic-unofficial-WWJ4NJMX.js")).ftoSVG;
783
+ return (await import("./puzzles-dynamic-unofficial-QXSDLTK5.js")).ftoSVG;
524
784
  });
525
785
  }
526
786
  appearance(stickering) {
@@ -576,7 +836,7 @@ var PyraminxPuzzleLoader = class extends PGPuzzleLoader {
576
836
  inventedBy: ["Uwe Meffert"]
577
837
  });
578
838
  this.svg = getCached(async () => {
579
- return (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).pyraminxSVG;
839
+ return (await import("./puzzles-dynamic-side-events-HMUBMHA5.js")).pyraminxSVG;
580
840
  });
581
841
  }
582
842
  };
@@ -590,11 +850,11 @@ var square1 = {
590
850
  inventionYear: 1990,
591
851
  kpuzzle: getCached(
592
852
  async () => new KPuzzle(
593
- (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).sq1HyperOrbitJSON
853
+ (await import("./puzzles-dynamic-side-events-HMUBMHA5.js")).sq1HyperOrbitJSON
594
854
  )
595
855
  ),
596
856
  svg: getCached(async () => {
597
- return (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).sq1HyperOrbitSVG;
857
+ return (await import("./puzzles-dynamic-side-events-HMUBMHA5.js")).sq1HyperOrbitSVG;
598
858
  })
599
859
  };
600
860
 
@@ -637,7 +897,7 @@ var kilominx = {
637
897
  return kpuzzle;
638
898
  }),
639
899
  svg: getCached(async () => {
640
- return (await import("./puzzles-dynamic-unofficial-WWJ4NJMX.js")).kilominxSVG;
900
+ return (await import("./puzzles-dynamic-unofficial-QXSDLTK5.js")).kilominxSVG;
641
901
  })
642
902
  };
643
903
 
@@ -649,11 +909,11 @@ var rediCube = {
649
909
  inventionYear: 2009,
650
910
  kpuzzle: getCached(
651
911
  async () => new KPuzzle(
652
- (await import("./puzzles-dynamic-unofficial-WWJ4NJMX.js")).rediCubeJSON
912
+ (await import("./puzzles-dynamic-unofficial-QXSDLTK5.js")).rediCubeJSON
653
913
  )
654
914
  ),
655
915
  svg: async () => {
656
- return (await import("./puzzles-dynamic-unofficial-WWJ4NJMX.js")).rediCubeSVG;
916
+ return (await import("./puzzles-dynamic-unofficial-QXSDLTK5.js")).rediCubeSVG;
657
917
  }
658
918
  };
659
919
 
@@ -663,7 +923,7 @@ var cube4x4x4 = new CubePGPuzzleLoader({
663
923
  fullName: "4\xD74\xD74 Cube"
664
924
  });
665
925
  cube4x4x4.llSVG = getCached(async () => {
666
- return (await import("./puzzles-dynamic-4x4x4-PEDAPUZK.js")).cube4x4x4LLSVG;
926
+ return (await import("./puzzles-dynamic-4x4x4-DT42HVIY.js")).cube4x4x4LLSVG;
667
927
  });
668
928
 
669
929
  // src/cubing/puzzles/index.ts
@@ -679,22 +939,22 @@ var puzzles = {
679
939
  fullName: "40\xD740\xD740 Cube"
680
940
  }),
681
941
  clock,
682
- "megaminx": megaminx,
942
+ megaminx,
683
943
  pyraminx,
684
- "skewb": new PGPuzzleLoader({
944
+ skewb: new PGPuzzleLoader({
685
945
  id: "skewb",
686
946
  fullName: "Skewb",
687
947
  inventedBy: ["Tony Durham"]
688
948
  }),
689
949
  square1,
690
- "fto": fto,
691
- "gigaminx": new PGPuzzleLoader({
950
+ fto,
951
+ gigaminx: new PGPuzzleLoader({
692
952
  id: "gigaminx",
693
953
  fullName: "Gigaminx",
694
954
  inventedBy: ["Tyler Fox"],
695
955
  inventionYear: 2006
696
956
  }),
697
- "master_tetraminx": new PGPuzzleLoader({
957
+ master_tetraminx: new PGPuzzleLoader({
698
958
  pgID: "master tetraminx",
699
959
  id: "master_tetraminx",
700
960
  fullName: "Master Tetraminx",
@@ -702,14 +962,16 @@ var puzzles = {
702
962
  inventionYear: 2002
703
963
  }),
704
964
  kilominx,
705
- "redi_cube": rediCube
965
+ redi_cube: rediCube
706
966
  };
707
967
 
708
968
  export {
969
+ wcaEvents,
709
970
  wcaEventInfo,
971
+ twizzleEvents,
710
972
  eventInfo,
711
973
  cube2x2x2,
712
974
  cube3x3x3,
713
975
  puzzles
714
976
  };
715
- //# sourceMappingURL=chunk-XRZBPKES.js.map
977
+ //# sourceMappingURL=chunk-35OK6TQ4.js.map