cubing 0.26.7 → 0.28.1
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.
- package/README.md +3 -1
- package/dist/esm/alg/index.js +7 -11
- package/dist/esm/bluetooth/index.js +15 -16
- package/dist/esm/bluetooth/index.js.map +2 -2
- package/dist/esm/{chunk-J4SZZ5OP.js → chunk-32FWPPTW.js} +3 -3
- package/dist/esm/chunk-32FWPPTW.js.map +7 -0
- package/dist/esm/{chunk-YEXEZWAK.js → chunk-67VJZGH2.js} +3 -3
- package/dist/esm/{chunk-YEXEZWAK.js.map → chunk-67VJZGH2.js.map} +1 -1
- package/dist/esm/{chunk-ITRA3DUQ.js → chunk-7D7LW3WQ.js} +2 -2
- package/dist/esm/{chunk-ITRA3DUQ.js.map → chunk-7D7LW3WQ.js.map} +1 -1
- package/dist/esm/{chunk-GBMX6FHY.js → chunk-ALBEW4DJ.js} +1 -1
- package/dist/esm/{chunk-GBMX6FHY.js.map → chunk-ALBEW4DJ.js.map} +1 -1
- package/dist/esm/{chunk-FCB447RN.js → chunk-CSBUJ64Q.js} +197 -128
- package/dist/esm/chunk-CSBUJ64Q.js.map +7 -0
- package/dist/esm/{chunk-WQK6XWML.js → chunk-F4WWCPVE.js} +2 -2
- package/dist/esm/{chunk-WQK6XWML.js.map → chunk-F4WWCPVE.js.map} +1 -1
- package/dist/esm/{chunk-YBDBUTYE.js → chunk-GVPTO3OF.js} +1 -1
- package/dist/esm/{chunk-YBDBUTYE.js.map → chunk-GVPTO3OF.js.map} +1 -1
- package/dist/esm/chunk-LSVR2HCG.js +1111 -0
- package/dist/esm/chunk-LSVR2HCG.js.map +7 -0
- package/dist/esm/{chunk-KSNW26OV.js → chunk-MWKALF6W.js} +7 -7
- package/dist/esm/{chunk-KSNW26OV.js.map → chunk-MWKALF6W.js.map} +1 -1
- package/dist/esm/{chunk-GLII3KIK.js → chunk-NPHUBFZ6.js} +6 -6
- package/dist/esm/chunk-NPHUBFZ6.js.map +7 -0
- package/dist/esm/{chunk-BEXHMXCT.js → chunk-RHC3DIN3.js} +1 -1
- package/dist/esm/{chunk-BEXHMXCT.js.map → chunk-RHC3DIN3.js.map} +1 -1
- package/dist/esm/{chunk-NYAPGKCW.js → chunk-V55YSWJY.js} +1 -1
- package/dist/esm/{chunk-NYAPGKCW.js.map → chunk-V55YSWJY.js.map} +1 -1
- package/dist/esm/{chunk-P637ZWHR.js → chunk-WAL36PO3.js} +7 -7
- package/dist/esm/{chunk-P637ZWHR.js.map → chunk-WAL36PO3.js.map} +1 -1
- package/dist/esm/{chunk-ASOUBXFO.js → chunk-YSVFZVG4.js} +14 -14
- package/dist/esm/chunk-YSVFZVG4.js.map +7 -0
- package/dist/esm/{chunk-QK4WH7WZ.js → chunk-ZY3RTFFS.js} +5 -5
- package/dist/esm/chunk-ZY3RTFFS.js.map +7 -0
- package/dist/esm/kpuzzle/index.js +2 -2
- package/dist/esm/notation/index.js +2 -2
- package/dist/esm/protocol/index.js +8 -8
- package/dist/esm/puzzle-geometry/index.js +4369 -14
- package/dist/esm/puzzle-geometry/index.js.map +3 -3
- package/dist/esm/puzzles/index.js +4 -4
- package/dist/esm/{puzzles-dynamic-side-events-HOXBZYWI.js → puzzles-dynamic-side-events-WZI4Y3N6.js} +1 -1
- package/dist/esm/{puzzles-dynamic-side-events-HOXBZYWI.js.map → puzzles-dynamic-side-events-WZI4Y3N6.js.map} +1 -1
- package/dist/esm/{puzzles-dynamic-unofficial-MGVOFUDR.js → puzzles-dynamic-unofficial-FUG3JBMH.js} +1 -1
- package/dist/esm/{puzzles-dynamic-unofficial-MGVOFUDR.js.map → puzzles-dynamic-unofficial-FUG3JBMH.js.map} +1 -1
- package/dist/esm/scramble/index.js +5 -5
- package/dist/esm/search/index.js +10 -10
- package/dist/esm/{search-dynamic-sgs-side-events-OUCE5RN6.js → search-dynamic-sgs-side-events-R3HDJ5XQ.js} +10 -12
- package/dist/esm/search-dynamic-sgs-side-events-R3HDJ5XQ.js.map +7 -0
- package/dist/esm/{search-dynamic-sgs-unofficial-KS2IT3DM.js → search-dynamic-sgs-unofficial-FQNKGHVO.js} +7 -7
- package/dist/esm/{search-dynamic-sgs-unofficial-KS2IT3DM.js.map → search-dynamic-sgs-unofficial-FQNKGHVO.js.map} +1 -1
- package/dist/esm/{search-dynamic-solve-3x3x3-K4TG7P3X.js → search-dynamic-solve-3x3x3-K42IWMQV.js} +1 -1
- package/dist/esm/{search-dynamic-solve-3x3x3-K4TG7P3X.js.map → search-dynamic-solve-3x3x3-K42IWMQV.js.map} +1 -1
- package/dist/esm/{search-dynamic-solve-4x4x4-6IIZNXXP.js → search-dynamic-solve-4x4x4-XRV4NBMQ.js} +8 -8
- package/dist/esm/{search-dynamic-solve-4x4x4-6IIZNXXP.js.map → search-dynamic-solve-4x4x4-XRV4NBMQ.js.map} +1 -1
- package/dist/esm/{search-dynamic-solve-fto-WROONLZS.js → search-dynamic-solve-fto-O6UXF7EC.js} +2 -2
- package/dist/esm/{search-dynamic-solve-fto-WROONLZS.js.map → search-dynamic-solve-fto-O6UXF7EC.js.map} +1 -1
- package/dist/esm/{search-dynamic-solve-kilominx-UEFJENHO.js → search-dynamic-solve-kilominx-G4MLGWNS.js} +3 -3
- package/dist/esm/{search-dynamic-solve-kilominx-UEFJENHO.js.map → search-dynamic-solve-kilominx-G4MLGWNS.js.map} +1 -1
- package/dist/esm/{search-dynamic-solve-master_tetraminx-3R2CJUKW.js → search-dynamic-solve-master_tetraminx-3RKD3IAN.js} +2 -2
- package/dist/esm/{search-dynamic-solve-master_tetraminx-3R2CJUKW.js.map → search-dynamic-solve-master_tetraminx-3RKD3IAN.js.map} +1 -1
- package/dist/esm/{search-dynamic-solve-sq1-RS5HN6AH.js → search-dynamic-solve-sq1-WIJEGVLP.js} +2 -2
- package/dist/esm/{search-dynamic-solve-sq1-RS5HN6AH.js.map → search-dynamic-solve-sq1-WIJEGVLP.js.map} +1 -1
- package/dist/esm/search-worker-inside-generated-string-IZCKWXUA.js +3768 -0
- package/dist/esm/search-worker-inside-generated-string-IZCKWXUA.js.map +7 -0
- package/dist/esm/{search-worker-js-entry-4A3O552B.js → search-worker-js-entry-WBEKNBB7.js} +21 -21
- package/dist/esm/search-worker-js-entry-WBEKNBB7.js.map +7 -0
- package/dist/esm/{search-worker-ts-entry-NUFPSU6U.js → search-worker-ts-entry-XQWMEOC4.js} +5 -5
- package/dist/esm/{search-worker-ts-entry-NUFPSU6U.js.map → search-worker-ts-entry-XQWMEOC4.js.map} +1 -1
- package/dist/esm/stream/index.js +4 -4
- package/dist/esm/stream/index.js.map +1 -1
- package/dist/esm/twisty/index.js +95 -813
- package/dist/esm/twisty/index.js.map +3 -3
- package/dist/esm/{twisty-dynamic-3d-YI5E4NWB.js → twisty-dynamic-3d-QOX7IEXC.js} +52 -17
- package/dist/esm/twisty-dynamic-3d-QOX7IEXC.js.map +7 -0
- package/dist/types/{Alg-5cf4b166.d.ts → Alg-e2a80975.d.ts} +66 -53
- package/dist/types/{KState-836cc3c7.d.ts → KState-a2f0e651.d.ts} +2 -1
- package/dist/types/{TwizzleLink-4f0a162d.d.ts → TwizzleLink-dcf51446.d.ts} +20 -16
- package/dist/types/alg/index.d.ts +16 -7
- package/dist/types/bluetooth/index.d.ts +17 -7
- package/dist/types/{bluetooth-puzzle-b1d62cb5.d.ts → bluetooth-puzzle-3670a6a1.d.ts} +6 -9
- package/dist/types/kpuzzle/index.d.ts +2 -2
- package/dist/types/notation/index.d.ts +1 -1
- package/dist/types/{outside-a6c8f46b.d.ts → outside-0ce1b145.d.ts} +2 -2
- package/dist/types/parseAlg-db0dec6c.d.ts +9 -0
- package/dist/types/protocol/index.d.ts +7 -3
- package/dist/types/puzzle-geometry/index.d.ts +3 -3
- package/dist/types/puzzles/index.d.ts +10 -5
- package/dist/types/scramble/index.d.ts +3 -3
- package/dist/types/search/index.d.ts +3 -3
- package/dist/types/stream/index.d.ts +4 -4
- package/dist/types/twisty/index.d.ts +13 -6
- package/package.json +29 -26
- package/dist/esm/chunk-ASOUBXFO.js.map +0 -7
- package/dist/esm/chunk-FCB447RN.js.map +0 -7
- package/dist/esm/chunk-GLII3KIK.js.map +0 -7
- package/dist/esm/chunk-J4SZZ5OP.js.map +0 -7
- package/dist/esm/chunk-KT3AIQTR.js +0 -4386
- package/dist/esm/chunk-KT3AIQTR.js.map +0 -7
- package/dist/esm/chunk-LKISJU2L.js +0 -339
- package/dist/esm/chunk-LKISJU2L.js.map +0 -7
- package/dist/esm/chunk-QK4WH7WZ.js.map +0 -7
- package/dist/esm/search-dynamic-sgs-side-events-OUCE5RN6.js.map +0 -7
- package/dist/esm/search-worker-inside-generated-string-GNBQVERX.js +0 -3768
- package/dist/esm/search-worker-inside-generated-string-GNBQVERX.js.map +0 -7
- package/dist/esm/search-worker-js-entry-4A3O552B.js.map +0 -7
- package/dist/esm/twisty-dynamic-3d-YI5E4NWB.js.map +0 -7
- package/dist/types/parse-9db7ee51.d.ts +0 -9
|
@@ -33,11 +33,6 @@ var AlgCommon = class extends Comparable {
|
|
|
33
33
|
};
|
|
34
34
|
|
|
35
35
|
// src/cubing/alg/iteration.ts
|
|
36
|
-
var IterationDirection = /* @__PURE__ */ ((IterationDirection3) => {
|
|
37
|
-
IterationDirection3[IterationDirection3["Forwards"] = 1] = "Forwards";
|
|
38
|
-
IterationDirection3[IterationDirection3["Backwards"] = -1] = "Backwards";
|
|
39
|
-
return IterationDirection3;
|
|
40
|
-
})(IterationDirection || {});
|
|
41
36
|
function toggleDirection(iterationDirection, flip = true) {
|
|
42
37
|
if (!flip) {
|
|
43
38
|
return iterationDirection;
|
|
@@ -70,32 +65,42 @@ var MAX_INT_DESCRIPTION = "2^31 - 1";
|
|
|
70
65
|
var MIN_INT = -2147483648;
|
|
71
66
|
|
|
72
67
|
// src/cubing/alg/AlgBuilder.ts
|
|
73
|
-
var
|
|
68
|
+
var _algNode;
|
|
74
69
|
var AlgBuilder = class {
|
|
75
70
|
constructor() {
|
|
76
|
-
__privateAdd(this,
|
|
71
|
+
__privateAdd(this, _algNode, []);
|
|
77
72
|
}
|
|
78
73
|
push(u) {
|
|
79
|
-
__privateGet(this,
|
|
74
|
+
__privateGet(this, _algNode).push(u);
|
|
80
75
|
}
|
|
81
76
|
experimentalPushAlg(alg) {
|
|
82
|
-
for (const u of alg.
|
|
77
|
+
for (const u of alg.childAlgNodes()) {
|
|
83
78
|
this.push(u);
|
|
84
79
|
}
|
|
85
80
|
}
|
|
86
|
-
|
|
87
|
-
return __privateGet(this,
|
|
81
|
+
experimentalNumAlgNodes() {
|
|
82
|
+
return __privateGet(this, _algNode).length;
|
|
88
83
|
}
|
|
89
84
|
toAlg() {
|
|
90
|
-
return new Alg(__privateGet(this,
|
|
85
|
+
return new Alg(__privateGet(this, _algNode));
|
|
91
86
|
}
|
|
92
87
|
reset() {
|
|
93
|
-
__privateSet(this,
|
|
88
|
+
__privateSet(this, _algNode, []);
|
|
94
89
|
}
|
|
95
90
|
};
|
|
96
|
-
|
|
91
|
+
_algNode = new WeakMap();
|
|
92
|
+
|
|
93
|
+
// src/cubing/alg/debug.ts
|
|
94
|
+
var algDebugGlobals = {
|
|
95
|
+
caratNISSNotationEnabled: false
|
|
96
|
+
};
|
|
97
|
+
function setAlgDebug(options) {
|
|
98
|
+
if ("caratNISSNotationEnabled" in options) {
|
|
99
|
+
algDebugGlobals.caratNISSNotationEnabled = !!options.caratNISSNotationEnabled;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
97
102
|
|
|
98
|
-
// src/cubing/alg/
|
|
103
|
+
// src/cubing/alg/alg-nodes/containers/Commutator.ts
|
|
99
104
|
var _A, _B;
|
|
100
105
|
var _Commutator = class extends AlgCommon {
|
|
101
106
|
constructor(aSource, bSource) {
|
|
@@ -144,7 +149,7 @@ var Commutator = _Commutator;
|
|
|
144
149
|
_A = new WeakMap();
|
|
145
150
|
_B = new WeakMap();
|
|
146
151
|
|
|
147
|
-
// src/cubing/alg/
|
|
152
|
+
// src/cubing/alg/alg-nodes/containers/Conjugate.ts
|
|
148
153
|
var _A2, _B2;
|
|
149
154
|
var _Conjugate = class extends AlgCommon {
|
|
150
155
|
constructor(aSource, bSource) {
|
|
@@ -185,7 +190,7 @@ var Conjugate = _Conjugate;
|
|
|
185
190
|
_A2 = new WeakMap();
|
|
186
191
|
_B2 = new WeakMap();
|
|
187
192
|
|
|
188
|
-
// src/cubing/alg/
|
|
193
|
+
// src/cubing/alg/alg-nodes/leaves/LineComment.ts
|
|
189
194
|
var _text;
|
|
190
195
|
var _LineComment = class extends AlgCommon {
|
|
191
196
|
constructor(commentText) {
|
|
@@ -216,7 +221,7 @@ var _LineComment = class extends AlgCommon {
|
|
|
216
221
|
var LineComment = _LineComment;
|
|
217
222
|
_text = new WeakMap();
|
|
218
223
|
|
|
219
|
-
// src/cubing/alg/
|
|
224
|
+
// src/cubing/alg/alg-nodes/leaves/Newline.ts
|
|
220
225
|
var Newline = class extends AlgCommon {
|
|
221
226
|
toString() {
|
|
222
227
|
return `
|
|
@@ -233,7 +238,7 @@ var Newline = class extends AlgCommon {
|
|
|
233
238
|
}
|
|
234
239
|
};
|
|
235
240
|
|
|
236
|
-
// src/cubing/alg/
|
|
241
|
+
// src/cubing/alg/alg-nodes/leaves/Pause.ts
|
|
237
242
|
var Pause = class extends AlgCommon {
|
|
238
243
|
toString() {
|
|
239
244
|
return `.`;
|
|
@@ -249,16 +254,16 @@ var Pause = class extends AlgCommon {
|
|
|
249
254
|
}
|
|
250
255
|
};
|
|
251
256
|
|
|
252
|
-
// src/cubing/alg/
|
|
257
|
+
// src/cubing/alg/parseAlg.ts
|
|
253
258
|
function parseIntWithEmptyFallback(n, emptyFallback) {
|
|
254
259
|
return n ? parseInt(n) : emptyFallback;
|
|
255
260
|
}
|
|
256
|
-
var
|
|
257
|
-
var
|
|
258
|
-
var
|
|
259
|
-
var
|
|
260
|
-
var
|
|
261
|
-
var
|
|
261
|
+
var AMOUNT_REGEX = /^(\d+)?('?)/;
|
|
262
|
+
var MOVE_START_REGEX = /^[_\dA-Za-z]/;
|
|
263
|
+
var QUANTUM_MOVE_REGEX = /^((([1-9]\d*)-)?([1-9]\d*))?([_A-Za-z]+)?/;
|
|
264
|
+
var COMMENT_TEXT_REGEX = /^[^\n]*/;
|
|
265
|
+
var SQUARE1_PAIR_START_REGEX = /^(-?\d+), ?/;
|
|
266
|
+
var SQUARE1_PAIR_END_REGEX = /^(-?\d+)\)/;
|
|
262
267
|
function parseAlg(s) {
|
|
263
268
|
return new AlgParser().parseAlg(s);
|
|
264
269
|
}
|
|
@@ -283,18 +288,28 @@ function transferCharIndex(from, to) {
|
|
|
283
288
|
}
|
|
284
289
|
return to;
|
|
285
290
|
}
|
|
286
|
-
var _input, _idx;
|
|
291
|
+
var _input, _idx, _nissQueue;
|
|
287
292
|
var AlgParser = class {
|
|
288
293
|
constructor() {
|
|
289
294
|
__privateAdd(this, _input, "");
|
|
290
295
|
__privateAdd(this, _idx, 0);
|
|
296
|
+
__privateAdd(this, _nissQueue, []);
|
|
291
297
|
}
|
|
292
298
|
parseAlg(input) {
|
|
293
299
|
__privateSet(this, _input, input);
|
|
294
300
|
__privateSet(this, _idx, 0);
|
|
295
301
|
const alg = this.parseAlgWithStopping([]);
|
|
296
302
|
this.mustBeAtEndOfInput();
|
|
297
|
-
|
|
303
|
+
const algNodes = Array.from(alg.childAlgNodes());
|
|
304
|
+
if (__privateGet(this, _nissQueue).length > 0) {
|
|
305
|
+
for (const nissGrouping of __privateGet(this, _nissQueue).reverse()) {
|
|
306
|
+
algNodes.push(nissGrouping);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
const newAlg = new Alg(algNodes);
|
|
310
|
+
const { startCharIndex, endCharIndex } = alg;
|
|
311
|
+
addCharIndices(newAlg, startCharIndex, endCharIndex);
|
|
312
|
+
return newAlg;
|
|
298
313
|
}
|
|
299
314
|
parseMove(input) {
|
|
300
315
|
__privateSet(this, _input, input);
|
|
@@ -333,11 +348,11 @@ var AlgParser = class {
|
|
|
333
348
|
}
|
|
334
349
|
if (this.tryConsumeNext(" ")) {
|
|
335
350
|
crowded = false;
|
|
336
|
-
if (algBuilder.
|
|
351
|
+
if (algBuilder.experimentalNumAlgNodes() === 0) {
|
|
337
352
|
algStartIdx = __privateGet(this, _idx);
|
|
338
353
|
}
|
|
339
354
|
continue mainLoop;
|
|
340
|
-
} else if (
|
|
355
|
+
} else if (MOVE_START_REGEX.test(__privateGet(this, _input)[__privateGet(this, _idx)])) {
|
|
341
356
|
mustNotBeCrowded(savedCharIndex);
|
|
342
357
|
const move = this.parseMoveImpl();
|
|
343
358
|
algBuilder.push(move);
|
|
@@ -346,11 +361,11 @@ var AlgParser = class {
|
|
|
346
361
|
continue mainLoop;
|
|
347
362
|
} else if (this.tryConsumeNext("(")) {
|
|
348
363
|
mustNotBeCrowded(savedCharIndex);
|
|
349
|
-
const sq1PairStartMatch = this.tryRegex(
|
|
364
|
+
const sq1PairStartMatch = this.tryRegex(SQUARE1_PAIR_START_REGEX);
|
|
350
365
|
if (sq1PairStartMatch) {
|
|
351
366
|
const topAmountString = sq1PairStartMatch[1];
|
|
352
367
|
const savedCharIndexD = __privateGet(this, _idx);
|
|
353
|
-
const sq1PairEndMatch = this.parseRegex(
|
|
368
|
+
const sq1PairEndMatch = this.parseRegex(SQUARE1_PAIR_END_REGEX);
|
|
354
369
|
const uMove = addCharIndices(new Move(new QuantumMove("U_SQ_"), parseInt(topAmountString)), savedCharIndex + 1, savedCharIndex + 1 + topAmountString.length);
|
|
355
370
|
const dMove = addCharIndices(new Move(new QuantumMove("D_SQ_"), parseInt(sq1PairEndMatch[1])), savedCharIndexD, __privateGet(this, _idx) - 1);
|
|
356
371
|
const alg = addCharIndices(new Alg([uMove, dMove]), savedCharIndex + 1, __privateGet(this, _idx) - 1);
|
|
@@ -367,6 +382,19 @@ var AlgParser = class {
|
|
|
367
382
|
algEndIdx = __privateGet(this, _idx);
|
|
368
383
|
continue mainLoop;
|
|
369
384
|
}
|
|
385
|
+
} else if (this.tryConsumeNext("^")) {
|
|
386
|
+
if (!algDebugGlobals.caratNISSNotationEnabled) {
|
|
387
|
+
throw new Error("Alg contained a carat but carat NISS notation is not enabled.");
|
|
388
|
+
}
|
|
389
|
+
this.mustConsumeNext("(");
|
|
390
|
+
const alg = this.parseAlgWithStopping([")"]);
|
|
391
|
+
this.popNext();
|
|
392
|
+
const grouping = new Grouping(alg, -1);
|
|
393
|
+
const placeholder = new Pause();
|
|
394
|
+
grouping.experimentalNISSPlaceholder = placeholder;
|
|
395
|
+
placeholder.experimentalNISSGrouping = grouping;
|
|
396
|
+
__privateGet(this, _nissQueue).push(grouping);
|
|
397
|
+
algBuilder.push(placeholder);
|
|
370
398
|
} else if (this.tryConsumeNext("[")) {
|
|
371
399
|
mustNotBeCrowded(savedCharIndex);
|
|
372
400
|
const A = this.parseAlgWithStopping([",", ":"]);
|
|
@@ -395,7 +423,7 @@ var AlgParser = class {
|
|
|
395
423
|
} else if (this.tryConsumeNext("/")) {
|
|
396
424
|
if (this.tryConsumeNext("/")) {
|
|
397
425
|
mustNotBeCrowded(savedCharIndex);
|
|
398
|
-
const [text] = this.parseRegex(
|
|
426
|
+
const [text] = this.parseRegex(COMMENT_TEXT_REGEX);
|
|
399
427
|
algBuilder.push(addCharIndices(new LineComment(text), savedCharIndex, __privateGet(this, _idx)));
|
|
400
428
|
crowded = false;
|
|
401
429
|
algEndIdx = __privateGet(this, _idx);
|
|
@@ -425,7 +453,7 @@ var AlgParser = class {
|
|
|
425
453
|
return addCharIndices(algBuilder.toAlg(), algStartIdx, algEndIdx);
|
|
426
454
|
}
|
|
427
455
|
parseQuantumMoveImpl() {
|
|
428
|
-
const [, , , outerLayerStr, innerLayerStr, family] = this.parseRegex(
|
|
456
|
+
const [, , , outerLayerStr, innerLayerStr, family] = this.parseRegex(QUANTUM_MOVE_REGEX);
|
|
429
457
|
return new QuantumMove(family, parseIntWithEmptyFallback(innerLayerStr, void 0), parseIntWithEmptyFallback(outerLayerStr, void 0));
|
|
430
458
|
}
|
|
431
459
|
parseMoveImpl() {
|
|
@@ -481,7 +509,7 @@ var AlgParser = class {
|
|
|
481
509
|
}
|
|
482
510
|
parseAmountAndTrackEmptyAbsAmount() {
|
|
483
511
|
const savedIdx = __privateGet(this, _idx);
|
|
484
|
-
const [, absAmountStr, primeStr] = this.parseRegex(
|
|
512
|
+
const [, absAmountStr, primeStr] = this.parseRegex(AMOUNT_REGEX);
|
|
485
513
|
if (absAmountStr?.startsWith("0") && absAmountStr !== "0") {
|
|
486
514
|
throw new Error(`Error at char index ${savedIdx}: An amount can only start with 0 if it's exactly the digit 0.`);
|
|
487
515
|
}
|
|
@@ -492,7 +520,7 @@ var AlgParser = class {
|
|
|
492
520
|
}
|
|
493
521
|
parseAmount() {
|
|
494
522
|
const savedIdx = __privateGet(this, _idx);
|
|
495
|
-
const [, absAmountStr, primeStr] = this.parseRegex(
|
|
523
|
+
const [, absAmountStr, primeStr] = this.parseRegex(AMOUNT_REGEX);
|
|
496
524
|
if (absAmountStr?.startsWith("0") && absAmountStr !== "0") {
|
|
497
525
|
throw new Error(`Error at char index ${savedIdx}: An amount number can only start with 0 if it's exactly the digit 0.`);
|
|
498
526
|
}
|
|
@@ -539,6 +567,7 @@ var AlgParser = class {
|
|
|
539
567
|
};
|
|
540
568
|
_input = new WeakMap();
|
|
541
569
|
_idx = new WeakMap();
|
|
570
|
+
_nissQueue = new WeakMap();
|
|
542
571
|
|
|
543
572
|
// src/cubing/alg/warnOnce.ts
|
|
544
573
|
var warned = /* @__PURE__ */ new Set();
|
|
@@ -549,13 +578,13 @@ function warnOnce(s) {
|
|
|
549
578
|
}
|
|
550
579
|
}
|
|
551
580
|
|
|
552
|
-
// src/cubing/alg/
|
|
581
|
+
// src/cubing/alg/alg-nodes/QuantumWithAmount.ts
|
|
553
582
|
var QuantumWithAmount = class {
|
|
554
583
|
constructor(quantum, amount = 1) {
|
|
555
584
|
this.quantum = quantum;
|
|
556
585
|
this.amount = amount;
|
|
557
586
|
if (!Number.isInteger(this.amount) || this.amount < MIN_INT || this.amount > MAX_INT) {
|
|
558
|
-
throw new Error(`
|
|
587
|
+
throw new Error(`AlgNode amount absolute value must be a non-negative integer below ${MAX_INT_DESCRIPTION}.`);
|
|
559
588
|
}
|
|
560
589
|
}
|
|
561
590
|
suffix() {
|
|
@@ -581,7 +610,7 @@ var QuantumWithAmount = class {
|
|
|
581
610
|
}
|
|
582
611
|
};
|
|
583
612
|
|
|
584
|
-
// src/cubing/alg/
|
|
613
|
+
// src/cubing/alg/alg-nodes/leaves/Move.ts
|
|
585
614
|
var _family, _innerLayer, _outerLayer;
|
|
586
615
|
var _QuantumMove = class extends Comparable {
|
|
587
616
|
constructor(family, innerLayer, outerLayer) {
|
|
@@ -716,7 +745,7 @@ var _Move = class extends AlgCommon {
|
|
|
716
745
|
var Move = _Move;
|
|
717
746
|
_quantumWithAmount = new WeakMap();
|
|
718
747
|
|
|
719
|
-
// src/cubing/alg/
|
|
748
|
+
// src/cubing/alg/alg-nodes/containers/Grouping.ts
|
|
720
749
|
var Square1TupleFormatter = class {
|
|
721
750
|
constructor() {
|
|
722
751
|
this.quantumU_SQ_ = null;
|
|
@@ -733,8 +762,8 @@ var Square1TupleFormatter = class {
|
|
|
733
762
|
this.quantumU_SQ_ || (this.quantumU_SQ_ = new QuantumMove("U_SQ_"));
|
|
734
763
|
this.quantumD_SQ_ || (this.quantumD_SQ_ = new QuantumMove("D_SQ_"));
|
|
735
764
|
const quantumAlg = grouping.alg;
|
|
736
|
-
if (quantumAlg.
|
|
737
|
-
const [U, D] = quantumAlg.
|
|
765
|
+
if (quantumAlg.experimentalNumChildAlgNodes() === 2) {
|
|
766
|
+
const [U, D] = quantumAlg.childAlgNodes();
|
|
738
767
|
if (U.as(Move)?.quantum.isIdentical(this.quantumU_SQ_) && D.as(Move)?.quantum.isIdentical(this.quantumD_SQ_)) {
|
|
739
768
|
if (grouping.amount !== 1) {
|
|
740
769
|
throw new Error("Square-1 tuples cannot have an amount other than 1.");
|
|
@@ -795,66 +824,71 @@ _quantumWithAmount2 = new WeakMap();
|
|
|
795
824
|
function experimentalIs(v, c) {
|
|
796
825
|
return v instanceof c;
|
|
797
826
|
}
|
|
798
|
-
function
|
|
827
|
+
function experimentalIsAlgNode(v) {
|
|
799
828
|
return experimentalIs(v, Grouping) || experimentalIs(v, LineComment) || experimentalIs(v, Commutator) || experimentalIs(v, Conjugate) || experimentalIs(v, Move) || experimentalIs(v, Newline) || experimentalIs(v, Pause);
|
|
800
829
|
}
|
|
801
830
|
|
|
802
831
|
// src/cubing/alg/traversal.ts
|
|
803
|
-
function dispatch(t,
|
|
804
|
-
if (
|
|
805
|
-
return t.traverseGrouping(
|
|
832
|
+
function dispatch(t, algNode, dataDown) {
|
|
833
|
+
if (algNode.is(Grouping)) {
|
|
834
|
+
return t.traverseGrouping(algNode, dataDown);
|
|
806
835
|
}
|
|
807
|
-
if (
|
|
808
|
-
return t.traverseMove(
|
|
836
|
+
if (algNode.is(Move)) {
|
|
837
|
+
return t.traverseMove(algNode, dataDown);
|
|
809
838
|
}
|
|
810
|
-
if (
|
|
811
|
-
return t.traverseCommutator(
|
|
839
|
+
if (algNode.is(Commutator)) {
|
|
840
|
+
return t.traverseCommutator(algNode, dataDown);
|
|
812
841
|
}
|
|
813
|
-
if (
|
|
814
|
-
return t.traverseConjugate(
|
|
842
|
+
if (algNode.is(Conjugate)) {
|
|
843
|
+
return t.traverseConjugate(algNode, dataDown);
|
|
815
844
|
}
|
|
816
|
-
if (
|
|
817
|
-
return t.traversePause(
|
|
845
|
+
if (algNode.is(Pause)) {
|
|
846
|
+
return t.traversePause(algNode, dataDown);
|
|
818
847
|
}
|
|
819
|
-
if (
|
|
820
|
-
return t.traverseNewline(
|
|
848
|
+
if (algNode.is(Newline)) {
|
|
849
|
+
return t.traverseNewline(algNode, dataDown);
|
|
821
850
|
}
|
|
822
|
-
if (
|
|
823
|
-
return t.traverseLineComment(
|
|
851
|
+
if (algNode.is(LineComment)) {
|
|
852
|
+
return t.traverseLineComment(algNode, dataDown);
|
|
824
853
|
}
|
|
825
|
-
throw new Error(`unknown
|
|
854
|
+
throw new Error(`unknown AlgNode`);
|
|
826
855
|
}
|
|
827
|
-
function
|
|
856
|
+
function mustBeAlgNode(t) {
|
|
828
857
|
if (t.is(Grouping) || t.is(Move) || t.is(Commutator) || t.is(Conjugate) || t.is(Pause) || t.is(Newline) || t.is(LineComment)) {
|
|
829
858
|
return t;
|
|
830
859
|
}
|
|
831
|
-
throw new Error("internal error: expected
|
|
860
|
+
throw new Error("internal error: expected AlgNode");
|
|
832
861
|
}
|
|
833
862
|
var TraversalDownUp = class {
|
|
834
|
-
|
|
835
|
-
return dispatch(this,
|
|
863
|
+
traverseAlgNode(algNode, dataDown) {
|
|
864
|
+
return dispatch(this, algNode, dataDown);
|
|
836
865
|
}
|
|
837
|
-
|
|
838
|
-
return
|
|
866
|
+
traverseIntoAlgNode(algNode, dataDown) {
|
|
867
|
+
return mustBeAlgNode(this.traverseAlgNode(algNode, dataDown));
|
|
839
868
|
}
|
|
840
869
|
};
|
|
841
870
|
var TraversalUp = class extends TraversalDownUp {
|
|
842
|
-
|
|
843
|
-
return dispatch(this,
|
|
871
|
+
traverseAlgNode(algNode) {
|
|
872
|
+
return dispatch(this, algNode, void 0);
|
|
844
873
|
}
|
|
845
|
-
|
|
846
|
-
return
|
|
874
|
+
traverseIntoAlgNode(algNode) {
|
|
875
|
+
return mustBeAlgNode(this.traverseAlgNode(algNode));
|
|
847
876
|
}
|
|
848
877
|
};
|
|
849
|
-
var _newAmount, newAmount_fn;
|
|
878
|
+
var _newPlaceholderAssociationsMap, _newPlaceholderAssociations, newPlaceholderAssociations_fn, _newAmount, newAmount_fn;
|
|
850
879
|
var _Simplify = class extends TraversalDownUp {
|
|
880
|
+
constructor() {
|
|
881
|
+
super(...arguments);
|
|
882
|
+
__privateAdd(this, _newPlaceholderAssociations);
|
|
883
|
+
__privateAdd(this, _newPlaceholderAssociationsMap, void 0);
|
|
884
|
+
}
|
|
851
885
|
*traverseAlg(alg, options) {
|
|
852
886
|
if (options.depth === 0) {
|
|
853
|
-
yield* alg.
|
|
887
|
+
yield* alg.childAlgNodes();
|
|
854
888
|
return;
|
|
855
889
|
}
|
|
856
|
-
const
|
|
857
|
-
let
|
|
890
|
+
const newAlgNodes = [];
|
|
891
|
+
let lastAlgNode = null;
|
|
858
892
|
const collapseMoves = options?.collapseMoves ?? true;
|
|
859
893
|
function appendMoveWithNewAmount(move, deltaAmount) {
|
|
860
894
|
var _a;
|
|
@@ -863,35 +897,35 @@ var _Simplify = class extends TraversalDownUp {
|
|
|
863
897
|
return false;
|
|
864
898
|
}
|
|
865
899
|
const newMove = new Move(move.quantum, newAmount);
|
|
866
|
-
|
|
867
|
-
|
|
900
|
+
newAlgNodes.push(newMove);
|
|
901
|
+
lastAlgNode = newMove;
|
|
868
902
|
return true;
|
|
869
903
|
}
|
|
870
|
-
function appendCollapsed(
|
|
871
|
-
if (collapseMoves &&
|
|
872
|
-
|
|
873
|
-
if (!appendMoveWithNewAmount(
|
|
874
|
-
|
|
904
|
+
function appendCollapsed(newAlgNode) {
|
|
905
|
+
if (collapseMoves && lastAlgNode?.is(Move) && newAlgNode.is(Move) && lastAlgNode.quantum.isIdentical(newAlgNode.quantum)) {
|
|
906
|
+
newAlgNodes.pop();
|
|
907
|
+
if (!appendMoveWithNewAmount(lastAlgNode, newAlgNode.amount)) {
|
|
908
|
+
lastAlgNode = newAlgNodes.slice(-1)[0];
|
|
875
909
|
}
|
|
876
910
|
} else {
|
|
877
|
-
if (
|
|
878
|
-
appendMoveWithNewAmount(
|
|
911
|
+
if (newAlgNode.is(Move)) {
|
|
912
|
+
appendMoveWithNewAmount(newAlgNode, 0);
|
|
879
913
|
} else {
|
|
880
|
-
|
|
881
|
-
|
|
914
|
+
newAlgNodes.push(newAlgNode);
|
|
915
|
+
lastAlgNode = newAlgNode;
|
|
882
916
|
}
|
|
883
917
|
}
|
|
884
918
|
}
|
|
885
919
|
const newOptions = {
|
|
886
920
|
depth: options.depth ? options.depth - 1 : null
|
|
887
921
|
};
|
|
888
|
-
for (const
|
|
889
|
-
for (const
|
|
890
|
-
appendCollapsed(
|
|
922
|
+
for (const algNode of alg.childAlgNodes()) {
|
|
923
|
+
for (const ancestorAlgNode of this.traverseAlgNode(algNode, newOptions)) {
|
|
924
|
+
appendCollapsed(ancestorAlgNode);
|
|
891
925
|
}
|
|
892
926
|
}
|
|
893
|
-
for (const
|
|
894
|
-
yield
|
|
927
|
+
for (const newAlgNode of newAlgNodes) {
|
|
928
|
+
yield newAlgNode;
|
|
895
929
|
}
|
|
896
930
|
}
|
|
897
931
|
*traverseGrouping(grouping, options) {
|
|
@@ -902,7 +936,13 @@ var _Simplify = class extends TraversalDownUp {
|
|
|
902
936
|
const newOptions = {
|
|
903
937
|
depth: options.depth ? options.depth - 1 : null
|
|
904
938
|
};
|
|
905
|
-
|
|
939
|
+
const newGrouping = new Grouping(this.traverseAlg(grouping.alg, newOptions), grouping.amount);
|
|
940
|
+
const newPlaceholder = __privateMethod(this, _newPlaceholderAssociations, newPlaceholderAssociations_fn).call(this).get(grouping);
|
|
941
|
+
if (newPlaceholder) {
|
|
942
|
+
newGrouping.experimentalNISSPlaceholder = newPlaceholder;
|
|
943
|
+
newPlaceholder.experimentalNISSGrouping = newGrouping;
|
|
944
|
+
}
|
|
945
|
+
yield newGrouping;
|
|
906
946
|
}
|
|
907
947
|
*traverseMove(move, _options) {
|
|
908
948
|
yield move;
|
|
@@ -928,7 +968,13 @@ var _Simplify = class extends TraversalDownUp {
|
|
|
928
968
|
yield new Conjugate(this.traverseAlg(conjugate.A, newOptions), this.traverseAlg(conjugate.B, newOptions));
|
|
929
969
|
}
|
|
930
970
|
*traversePause(pause, _options) {
|
|
931
|
-
|
|
971
|
+
if (pause.experimentalNISSGrouping) {
|
|
972
|
+
const newPause = new Pause();
|
|
973
|
+
__privateMethod(this, _newPlaceholderAssociations, newPlaceholderAssociations_fn).call(this).set(pause.experimentalNISSGrouping, newPause);
|
|
974
|
+
yield newPause;
|
|
975
|
+
} else {
|
|
976
|
+
yield pause;
|
|
977
|
+
}
|
|
932
978
|
}
|
|
933
979
|
*traverseNewline(newline, _options) {
|
|
934
980
|
yield newline;
|
|
@@ -938,6 +984,11 @@ var _Simplify = class extends TraversalDownUp {
|
|
|
938
984
|
}
|
|
939
985
|
};
|
|
940
986
|
var Simplify = _Simplify;
|
|
987
|
+
_newPlaceholderAssociationsMap = new WeakMap();
|
|
988
|
+
_newPlaceholderAssociations = new WeakSet();
|
|
989
|
+
newPlaceholderAssociations_fn = function() {
|
|
990
|
+
return __privateGet(this, _newPlaceholderAssociationsMap) ?? __privateSet(this, _newPlaceholderAssociationsMap, /* @__PURE__ */ new Map());
|
|
991
|
+
};
|
|
941
992
|
_newAmount = new WeakSet();
|
|
942
993
|
newAmount_fn = function(move, deltaAmount, options) {
|
|
943
994
|
let newAmount = move.amount + deltaAmount;
|
|
@@ -958,16 +1009,16 @@ function toIterable(input) {
|
|
|
958
1009
|
return [];
|
|
959
1010
|
}
|
|
960
1011
|
if (experimentalIs(input, Alg)) {
|
|
961
|
-
return input.
|
|
1012
|
+
return input.childAlgNodes();
|
|
962
1013
|
}
|
|
963
1014
|
if (typeof input === "string") {
|
|
964
|
-
return parseAlg(input).
|
|
1015
|
+
return parseAlg(input).childAlgNodes();
|
|
965
1016
|
}
|
|
966
1017
|
const iter = input;
|
|
967
1018
|
if (typeof iter[Symbol.iterator] === "function") {
|
|
968
1019
|
return iter;
|
|
969
1020
|
}
|
|
970
|
-
throw new Error("Invalid
|
|
1021
|
+
throw new Error("Invalid AlgNode");
|
|
971
1022
|
}
|
|
972
1023
|
function experimentalEnsureAlg(alg) {
|
|
973
1024
|
if (experimentalIs(alg, Alg)) {
|
|
@@ -975,15 +1026,15 @@ function experimentalEnsureAlg(alg) {
|
|
|
975
1026
|
}
|
|
976
1027
|
return new Alg(alg);
|
|
977
1028
|
}
|
|
978
|
-
var
|
|
1029
|
+
var _algNodes;
|
|
979
1030
|
var _Alg = class extends AlgCommon {
|
|
980
1031
|
constructor(alg) {
|
|
981
1032
|
super();
|
|
982
|
-
__privateAdd(this,
|
|
983
|
-
__privateSet(this,
|
|
984
|
-
for (const
|
|
985
|
-
if (!
|
|
986
|
-
throw new Error("An alg can only contain
|
|
1033
|
+
__privateAdd(this, _algNodes, void 0);
|
|
1034
|
+
__privateSet(this, _algNodes, Array.from(toIterable(alg)));
|
|
1035
|
+
for (const algNode of __privateGet(this, _algNodes)) {
|
|
1036
|
+
if (!experimentalIsAlgNode(algNode)) {
|
|
1037
|
+
throw new Error("An alg can only contain alg nodes.");
|
|
987
1038
|
}
|
|
988
1039
|
}
|
|
989
1040
|
}
|
|
@@ -992,8 +1043,8 @@ var _Alg = class extends AlgCommon {
|
|
|
992
1043
|
if (!other.is(_Alg)) {
|
|
993
1044
|
return false;
|
|
994
1045
|
}
|
|
995
|
-
const l1 = Array.from(__privateGet(this,
|
|
996
|
-
const l2 = Array.from(__privateGet(otherAsAlg,
|
|
1046
|
+
const l1 = Array.from(__privateGet(this, _algNodes));
|
|
1047
|
+
const l2 = Array.from(__privateGet(otherAsAlg, _algNodes));
|
|
997
1048
|
if (l1.length !== l2.length) {
|
|
998
1049
|
return false;
|
|
999
1050
|
}
|
|
@@ -1005,12 +1056,12 @@ var _Alg = class extends AlgCommon {
|
|
|
1005
1056
|
return true;
|
|
1006
1057
|
}
|
|
1007
1058
|
invert() {
|
|
1008
|
-
return new _Alg(reverse(Array.from(__privateGet(this,
|
|
1059
|
+
return new _Alg(reverse(Array.from(__privateGet(this, _algNodes)).map((u) => u.invert())));
|
|
1009
1060
|
}
|
|
1010
1061
|
*experimentalExpand(iterDir = 1 /* Forwards */, depth) {
|
|
1011
1062
|
depth ?? (depth = Infinity);
|
|
1012
|
-
for (const
|
|
1013
|
-
yield*
|
|
1063
|
+
for (const algNode of direct(__privateGet(this, _algNodes), iterDir)) {
|
|
1064
|
+
yield* algNode.experimentalExpand(iterDir, depth);
|
|
1014
1065
|
}
|
|
1015
1066
|
}
|
|
1016
1067
|
expand(options) {
|
|
@@ -1024,10 +1075,10 @@ var _Alg = class extends AlgCommon {
|
|
|
1024
1075
|
}
|
|
1025
1076
|
}
|
|
1026
1077
|
concat(input) {
|
|
1027
|
-
return new _Alg(Array.from(__privateGet(this,
|
|
1078
|
+
return new _Alg(Array.from(__privateGet(this, _algNodes)).concat(Array.from(toIterable(input))));
|
|
1028
1079
|
}
|
|
1029
1080
|
experimentalIsEmpty() {
|
|
1030
|
-
for (const _ of __privateGet(this,
|
|
1081
|
+
for (const _ of __privateGet(this, _algNodes)) {
|
|
1031
1082
|
return false;
|
|
1032
1083
|
}
|
|
1033
1084
|
return true;
|
|
@@ -1035,13 +1086,19 @@ var _Alg = class extends AlgCommon {
|
|
|
1035
1086
|
static fromString(s) {
|
|
1036
1087
|
return parseAlg(s);
|
|
1037
1088
|
}
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1089
|
+
units() {
|
|
1090
|
+
return this.childAlgNodes();
|
|
1091
|
+
}
|
|
1092
|
+
*childAlgNodes() {
|
|
1093
|
+
for (const algNode of __privateGet(this, _algNodes)) {
|
|
1094
|
+
yield algNode;
|
|
1041
1095
|
}
|
|
1042
1096
|
}
|
|
1043
1097
|
experimentalNumUnits() {
|
|
1044
|
-
return
|
|
1098
|
+
return this.experimentalNumChildAlgNodes();
|
|
1099
|
+
}
|
|
1100
|
+
experimentalNumChildAlgNodes() {
|
|
1101
|
+
return Array.from(__privateGet(this, _algNodes)).length;
|
|
1045
1102
|
}
|
|
1046
1103
|
get type() {
|
|
1047
1104
|
warnOnce("deprecated: type");
|
|
@@ -1049,13 +1106,22 @@ var _Alg = class extends AlgCommon {
|
|
|
1049
1106
|
}
|
|
1050
1107
|
toString() {
|
|
1051
1108
|
let output = "";
|
|
1052
|
-
let
|
|
1053
|
-
for (const
|
|
1054
|
-
if (
|
|
1055
|
-
output += spaceBetween(
|
|
1109
|
+
let previousVisibleAlgNode = null;
|
|
1110
|
+
for (const algNode of __privateGet(this, _algNodes)) {
|
|
1111
|
+
if (previousVisibleAlgNode) {
|
|
1112
|
+
output += spaceBetween(previousVisibleAlgNode, algNode);
|
|
1056
1113
|
}
|
|
1057
|
-
|
|
1058
|
-
|
|
1114
|
+
const nissGrouping = algNode.as(Pause)?.experimentalNISSGrouping;
|
|
1115
|
+
if (nissGrouping) {
|
|
1116
|
+
if (nissGrouping.amount !== -1) {
|
|
1117
|
+
throw new Error("Invalid NISS Grouping amount!");
|
|
1118
|
+
}
|
|
1119
|
+
output += `^(${nissGrouping.alg.toString()})`;
|
|
1120
|
+
} else if (algNode.as(Grouping)?.experimentalNISSPlaceholder) {
|
|
1121
|
+
} else {
|
|
1122
|
+
output += algNode.toString();
|
|
1123
|
+
}
|
|
1124
|
+
previousVisibleAlgNode = algNode;
|
|
1059
1125
|
}
|
|
1060
1126
|
return output;
|
|
1061
1127
|
}
|
|
@@ -1064,11 +1130,14 @@ var _Alg = class extends AlgCommon {
|
|
|
1064
1130
|
}
|
|
1065
1131
|
};
|
|
1066
1132
|
var Alg = _Alg;
|
|
1067
|
-
|
|
1133
|
+
_algNodes = new WeakMap();
|
|
1068
1134
|
function spaceBetween(u1, u2) {
|
|
1069
1135
|
if (u1.is(Newline) || u2.is(Newline)) {
|
|
1070
1136
|
return "";
|
|
1071
1137
|
}
|
|
1138
|
+
if (u2.as(Grouping)?.experimentalNISSPlaceholder) {
|
|
1139
|
+
return "";
|
|
1140
|
+
}
|
|
1072
1141
|
if (u1.is(LineComment) && !u2.is(Newline)) {
|
|
1073
1142
|
return "\n";
|
|
1074
1143
|
}
|
|
@@ -1211,7 +1280,7 @@ function serializeURLParam(a) {
|
|
|
1211
1280
|
escaped = escaped.replace(/-/g, "-").replace(/'/g, "-");
|
|
1212
1281
|
return escaped;
|
|
1213
1282
|
}
|
|
1214
|
-
function
|
|
1283
|
+
function experimentalAlgCubingNetLink(options) {
|
|
1215
1284
|
const url = new URL("https://alg.cubing.net");
|
|
1216
1285
|
if (!options.alg) {
|
|
1217
1286
|
throw new Error("An alg parameter is required.");
|
|
@@ -1288,10 +1357,10 @@ function algCubingNetLink(options) {
|
|
|
1288
1357
|
|
|
1289
1358
|
// src/cubing/alg/operation.ts
|
|
1290
1359
|
function experimentalAppendMove(alg, newMove, options) {
|
|
1291
|
-
const
|
|
1292
|
-
const oldLastMove =
|
|
1360
|
+
const oldAlgNodes = Array.from(alg.childAlgNodes());
|
|
1361
|
+
const oldLastMove = oldAlgNodes[oldAlgNodes.length - 1];
|
|
1293
1362
|
if (options?.coalesce && oldLastMove && oldLastMove.quantum && oldLastMove.quantum.isIdentical(newMove.quantum)) {
|
|
1294
|
-
const
|
|
1363
|
+
const newAlgNodes = oldAlgNodes.slice(0, oldAlgNodes.length - 1);
|
|
1295
1364
|
let newAmount = oldLastMove.amount + newMove.amount;
|
|
1296
1365
|
const mod = options?.mod;
|
|
1297
1366
|
if (mod) {
|
|
@@ -1301,19 +1370,19 @@ function experimentalAppendMove(alg, newMove, options) {
|
|
|
1301
1370
|
}
|
|
1302
1371
|
}
|
|
1303
1372
|
if (newAmount !== 0) {
|
|
1304
|
-
|
|
1373
|
+
newAlgNodes.push(oldLastMove.modified({ amount: newAmount }));
|
|
1305
1374
|
}
|
|
1306
|
-
return new Alg(
|
|
1375
|
+
return new Alg(newAlgNodes);
|
|
1307
1376
|
} else {
|
|
1308
|
-
return new Alg([...
|
|
1377
|
+
return new Alg([...oldAlgNodes, newMove]);
|
|
1309
1378
|
}
|
|
1310
1379
|
}
|
|
1311
1380
|
|
|
1312
1381
|
export {
|
|
1313
|
-
IterationDirection,
|
|
1314
1382
|
direct,
|
|
1315
1383
|
directedGenerator,
|
|
1316
1384
|
AlgBuilder,
|
|
1385
|
+
setAlgDebug,
|
|
1317
1386
|
Commutator,
|
|
1318
1387
|
Conjugate,
|
|
1319
1388
|
LineComment,
|
|
@@ -1328,7 +1397,7 @@ export {
|
|
|
1328
1397
|
Alg,
|
|
1329
1398
|
Example,
|
|
1330
1399
|
keyToMove,
|
|
1331
|
-
|
|
1400
|
+
experimentalAlgCubingNetLink,
|
|
1332
1401
|
experimentalAppendMove
|
|
1333
1402
|
};
|
|
1334
|
-
//# sourceMappingURL=chunk-
|
|
1403
|
+
//# sourceMappingURL=chunk-CSBUJ64Q.js.map
|