cubing 0.43.8 → 0.43.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 (49) hide show
  1. package/dist/bin/scramble.js +1 -1
  2. package/dist/bin/scramble.js.map +1 -1
  3. package/dist/lib/cubing/{TwizzleLink-5130fb88.d.ts → TwizzleLink-dc09917e.d.ts} +4 -1
  4. package/dist/lib/cubing/bluetooth/index.js +3 -3
  5. package/dist/lib/cubing/chunks/{chunk-OSYK74JC.js → chunk-5NPUMH6W.js} +34 -10
  6. package/dist/lib/cubing/chunks/chunk-5NPUMH6W.js.map +7 -0
  7. package/dist/lib/cubing/chunks/{chunk-WGGIQSR5.js → chunk-6VYPSSU5.js} +2 -2
  8. package/dist/lib/cubing/chunks/{chunk-CIXTS2MM.js → chunk-BBAZ2T3M.js} +1 -1
  9. package/dist/lib/cubing/chunks/{chunk-CIXTS2MM.js.map → chunk-BBAZ2T3M.js.map} +2 -2
  10. package/dist/lib/cubing/chunks/{chunk-ZJWG2BON.js → chunk-JVPTEPFC.js} +1 -1
  11. package/dist/lib/cubing/chunks/{chunk-IGETWN2F.js → chunk-RZY42U7V.js} +9 -9
  12. package/dist/lib/cubing/chunks/{chunk-IGETWN2F.js.map → chunk-RZY42U7V.js.map} +1 -1
  13. package/dist/lib/cubing/chunks/{chunk-RMZCFV3U.js → chunk-UDOQOVVD.js} +2 -2
  14. package/dist/lib/cubing/chunks/{chunk-RDBJ7KQY.js → chunk-XO6HGCQK.js} +3 -3
  15. package/dist/lib/cubing/chunks/{inside-CGVTI6TP.js → inside-XKFHO7VM.js} +5 -5
  16. package/dist/lib/cubing/chunks/{puzzles-dynamic-3x3x3-NSCZM77Q.js → puzzles-dynamic-3x3x3-JWIWLLZA.js} +114 -1
  17. package/dist/lib/cubing/chunks/{puzzles-dynamic-3x3x3-NSCZM77Q.js.map → puzzles-dynamic-3x3x3-JWIWLLZA.js.map} +3 -3
  18. package/dist/lib/cubing/chunks/{puzzles-dynamic-unofficial-2RL6RPOO.js → puzzles-dynamic-unofficial-EE5FDJ3S.js} +446 -1
  19. package/dist/lib/cubing/chunks/{puzzles-dynamic-unofficial-2RL6RPOO.js.map → puzzles-dynamic-unofficial-EE5FDJ3S.js.map} +3 -3
  20. package/dist/lib/cubing/chunks/{search-dynamic-sgs-side-events-XJOEMUP4.js → search-dynamic-sgs-side-events-6WBZJX7C.js} +3 -3
  21. package/dist/lib/cubing/chunks/{search-dynamic-sgs-unofficial-OVA5E6ZA.js → search-dynamic-sgs-unofficial-NOUFI5HW.js} +3 -3
  22. package/dist/lib/cubing/chunks/{search-dynamic-solve-4x4x4-J2CC72NW.js → search-dynamic-solve-4x4x4-XVQ3BRL4.js} +6 -6
  23. package/dist/lib/cubing/chunks/search-worker-entry.js +1 -1
  24. package/dist/lib/cubing/chunks/{twisty-dynamic-3d-XNR4N5OZ.js → twisty-dynamic-3d-CDX3JZF3.js} +4 -4
  25. package/dist/lib/cubing/notation/index.d.ts +1 -1
  26. package/dist/lib/cubing/notation/index.js +2 -2
  27. package/dist/lib/cubing/protocol/index.js +2 -2
  28. package/dist/lib/cubing/puzzle-geometry/index.js +4 -0
  29. package/dist/lib/cubing/puzzle-geometry/index.js.map +2 -2
  30. package/dist/lib/cubing/puzzles/index.d.ts +2 -1
  31. package/dist/lib/cubing/puzzles/index.js +2 -2
  32. package/dist/lib/cubing/scramble/index.js +5 -5
  33. package/dist/lib/cubing/search/index.js +5 -5
  34. package/dist/lib/cubing/stream/index.js +1 -0
  35. package/dist/lib/cubing/stream/index.js.map +2 -2
  36. package/dist/lib/cubing/twisty/index.d.ts +2 -2
  37. package/dist/lib/cubing/twisty/index.js +10 -7
  38. package/dist/lib/cubing/twisty/index.js.map +2 -2
  39. package/package.json +3 -2
  40. package/dist/lib/cubing/chunks/chunk-OSYK74JC.js.map +0 -7
  41. /package/dist/lib/cubing/chunks/{chunk-WGGIQSR5.js.map → chunk-6VYPSSU5.js.map} +0 -0
  42. /package/dist/lib/cubing/chunks/{chunk-ZJWG2BON.js.map → chunk-JVPTEPFC.js.map} +0 -0
  43. /package/dist/lib/cubing/chunks/{chunk-RMZCFV3U.js.map → chunk-UDOQOVVD.js.map} +0 -0
  44. /package/dist/lib/cubing/chunks/{chunk-RDBJ7KQY.js.map → chunk-XO6HGCQK.js.map} +0 -0
  45. /package/dist/lib/cubing/chunks/{inside-CGVTI6TP.js.map → inside-XKFHO7VM.js.map} +0 -0
  46. /package/dist/lib/cubing/chunks/{search-dynamic-sgs-side-events-XJOEMUP4.js.map → search-dynamic-sgs-side-events-6WBZJX7C.js.map} +0 -0
  47. /package/dist/lib/cubing/chunks/{search-dynamic-sgs-unofficial-OVA5E6ZA.js.map → search-dynamic-sgs-unofficial-NOUFI5HW.js.map} +0 -0
  48. /package/dist/lib/cubing/chunks/{search-dynamic-solve-4x4x4-J2CC72NW.js.map → search-dynamic-solve-4x4x4-XVQ3BRL4.js.map} +0 -0
  49. /package/dist/lib/cubing/chunks/{twisty-dynamic-3d-XNR4N5OZ.js.map → twisty-dynamic-3d-CDX3JZF3.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { a as PuzzleID, P as PuzzleLoader, E as ExperimentalStickering, S as StickeringMask } from '../TwizzleLink-5130fb88.js';
1
+ import { a as PuzzleID, P as PuzzleLoader, E as ExperimentalStickering, S as StickeringMask } from '../TwizzleLink-dc09917e.js';
2
2
  import { P as PuzzleSpecificSimplifyOptions } from '../Alg-3d4f29da.js';
3
3
  import { s as KPuzzle, d as PuzzleGeometry } from '../KPattern-615b74bc.js';
4
4
  import 'three';
@@ -27,6 +27,7 @@ declare const cube3x3x3: {
27
27
  kpuzzle: () => Promise<KPuzzle>;
28
28
  svg: () => Promise<string>;
29
29
  llSVG: () => Promise<string>;
30
+ llFaceSVG: () => Promise<string>;
30
31
  pg: () => Promise<PuzzleGeometry>;
31
32
  stickeringMask: (stickering: ExperimentalStickering) => Promise<StickeringMask>;
32
33
  stickerings: () => Promise<string[]>;
@@ -6,8 +6,8 @@ import {
6
6
  twizzleEvents,
7
7
  wcaEventInfo,
8
8
  wcaEvents
9
- } from "../chunks/chunk-OSYK74JC.js";
10
- import "../chunks/chunk-CIXTS2MM.js";
9
+ } from "../chunks/chunk-5NPUMH6W.js";
10
+ import "../chunks/chunk-BBAZ2T3M.js";
11
11
  import "../chunks/chunk-ZSRBMEG7.js";
12
12
  import "../chunks/chunk-AI65BHEO.js";
13
13
  export {
@@ -1,13 +1,13 @@
1
1
  import "../chunks/chunk-NAPITA3L.js";
2
2
  import {
3
3
  randomScrambleForEvent
4
- } from "../chunks/chunk-ZJWG2BON.js";
5
- import "../chunks/chunk-IGETWN2F.js";
4
+ } from "../chunks/chunk-JVPTEPFC.js";
5
+ import "../chunks/chunk-RZY42U7V.js";
6
6
  import "../chunks/chunk-7GUL3OBQ.js";
7
7
  import "../chunks/chunk-VL22SFND.js";
8
- import "../chunks/chunk-WGGIQSR5.js";
9
- import "../chunks/chunk-OSYK74JC.js";
10
- import "../chunks/chunk-CIXTS2MM.js";
8
+ import "../chunks/chunk-6VYPSSU5.js";
9
+ import "../chunks/chunk-5NPUMH6W.js";
10
+ import "../chunks/chunk-BBAZ2T3M.js";
11
11
  import "../chunks/chunk-ZSRBMEG7.js";
12
12
  import "../chunks/chunk-AI65BHEO.js";
13
13
  export {
@@ -6,15 +6,15 @@ import {
6
6
  solvePyraminx,
7
7
  solveSkewb,
8
8
  solveTwsearch
9
- } from "../chunks/chunk-ZJWG2BON.js";
9
+ } from "../chunks/chunk-JVPTEPFC.js";
10
10
  import {
11
11
  random333Pattern
12
- } from "../chunks/chunk-IGETWN2F.js";
12
+ } from "../chunks/chunk-RZY42U7V.js";
13
13
  import "../chunks/chunk-7GUL3OBQ.js";
14
14
  import "../chunks/chunk-VL22SFND.js";
15
- import "../chunks/chunk-WGGIQSR5.js";
16
- import "../chunks/chunk-OSYK74JC.js";
17
- import "../chunks/chunk-CIXTS2MM.js";
15
+ import "../chunks/chunk-6VYPSSU5.js";
16
+ import "../chunks/chunk-5NPUMH6W.js";
17
+ import "../chunks/chunk-BBAZ2T3M.js";
18
18
  import "../chunks/chunk-ZSRBMEG7.js";
19
19
  import "../chunks/chunk-AI65BHEO.js";
20
20
  export {
@@ -13,6 +13,7 @@ var WebSocketProxySender = class {
13
13
  this.websocket.onmessage = this.onmessage.bind(this);
14
14
  }
15
15
  sendMoveEvent(e) {
16
+ e.latestAlgLeaf = e.latestAlgLeaf.toString();
16
17
  this.sendProxyEvent({
17
18
  event: "move",
18
19
  data: e
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cubing/stream/websocket-proxy.ts", "../../../../src/cubing/stream/twizzle/TwizzleStream.ts"],
4
- "sourcesContent": ["import type { MoveEvent, OrientationEvent } from \"../bluetooth\";\nimport type { ProxyEvent } from \"./proxy-event\";\n\nexport class WebSocketProxySender {\n protected websocket: WebSocket;\n constructor(url: string) {\n this.websocket = new WebSocket(url);\n this.websocket.onopen = this.onopen.bind(this);\n this.websocket.onerror = this.onerror.bind(this);\n this.websocket.onmessage = this.onmessage.bind(this);\n }\n\n public sendMoveEvent(e: MoveEvent): void {\n this.sendProxyEvent({\n event: \"move\",\n data: e,\n });\n }\n\n public sendOrientationEvent(e: OrientationEvent): void {\n this.sendProxyEvent({\n event: \"orientation\",\n data: e,\n });\n }\n\n public sendResetEvent(): void {\n this.sendProxyEvent({ event: \"reset\" });\n }\n\n protected sendProxyEvent(proxyEvent: ProxyEvent): void {\n this.websocket.send(JSON.stringify(proxyEvent));\n }\n\n protected onopen(): void {\n console.log(\"Sending socket is open!\");\n }\n\n protected onerror(error: Error): void {\n console.error(\"WebSocket sender error:\", error);\n }\n\n protected onmessage(_e: MessageEvent): void {}\n}\n\nexport abstract class WebSocketProxyReceiver {\n protected websocket: WebSocket;\n constructor(url: string, socketOrigin?: string) {\n if (!socketOrigin) {\n console.log(\"No socket origin specified. Will not attempt to connect.\");\n return;\n }\n this.websocket = new WebSocket(url);\n console.log(this.websocket);\n this.websocket.onopen = this.onopen.bind(this);\n this.websocket.onerror = this.onerror.bind(this);\n this.websocket.onmessage = this.onmessage.bind(this);\n }\n\n protected onopen(): void {\n console.log(\"Receiving socket is open!\");\n }\n\n protected onerror(error: Error): void {\n console.error(\"WebSocket receiver error:\", error);\n }\n\n protected onmessage(e: MessageEvent): void {\n this.onProxyEvent(JSON.parse(e.data));\n }\n\n abstract onProxyEvent(e: ProxyEvent): void;\n}\n", "import { Move, QuantumMove } from \"../../alg\";\nimport type { StreamMessageEvent } from \"./stream-types\";\n\nclass TwizzleStream extends EventTarget {\n socket: WebSocket;\n constructor(url: string) {\n super();\n this.socket = new WebSocket(url);\n this.socket.onmessage = this.onMessage.bind(this); // TODO: Can we \"add a listener instead\"?\n }\n\n onMessage(msg: MessageEvent): void {\n try {\n const json: StreamMessageEvent = JSON.parse(msg.data);\n if (json.event === \"move\") {\n const move = json.data.latestMove;\n if (move.type !== \"blockMove\") {\n throw new Error(\"Invalid move!\");\n }\n this.dispatchEvent(\n new CustomEvent(\"move\", {\n detail: {\n move: new Move(new QuantumMove(move.family), move.amount),\n },\n }),\n );\n }\n } catch (e) {\n console.error(\"Could not handle message:\", e);\n }\n }\n}\n\ntype StreamsField = {\n streamID: string;\n senders: { name: string; twizzleUserID: string; wcaID: string | null }[];\n}[];\n\nexport class TwizzleStreamServer {\n async streams(): Promise<StreamsField> {\n return (\n (await (await fetch(\"https://api.twizzle.net/v0/streams\")).json()) as {\n streams: StreamsField;\n }\n ).streams;\n }\n\n connect(streamID: string): TwizzleStream {\n return new TwizzleStream(\n `wss://api.twizzle.net/v0/streams/${streamID}/socket`,\n );\n }\n}\n"],
5
- "mappings": ";;;;;;AAGO,IAAM,uBAAN,MAA2B;AAAA,EACtB;AAAA,EACV,YAAY,KAAa;AACvB,SAAK,YAAY,IAAI,UAAU,GAAG;AAClC,SAAK,UAAU,SAAS,KAAK,OAAO,KAAK,IAAI;AAC7C,SAAK,UAAU,UAAU,KAAK,QAAQ,KAAK,IAAI;AAC/C,SAAK,UAAU,YAAY,KAAK,UAAU,KAAK,IAAI;AAAA,EACrD;AAAA,EAEO,cAAc,GAAoB;AACvC,SAAK,eAAe;AAAA,MAClB,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEO,qBAAqB,GAA2B;AACrD,SAAK,eAAe;AAAA,MAClB,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEO,iBAAuB;AAC5B,SAAK,eAAe,EAAE,OAAO,QAAQ,CAAC;AAAA,EACxC;AAAA,EAEU,eAAe,YAA8B;AACrD,SAAK,UAAU,KAAK,KAAK,UAAU,UAAU,CAAC;AAAA,EAChD;AAAA,EAEU,SAAe;AACvB,YAAQ,IAAI,yBAAyB;AAAA,EACvC;AAAA,EAEU,QAAQ,OAAoB;AACpC,YAAQ,MAAM,2BAA2B,KAAK;AAAA,EAChD;AAAA,EAEU,UAAU,IAAwB;AAAA,EAAC;AAC/C;AAEO,IAAe,yBAAf,MAAsC;AAAA,EACjC;AAAA,EACV,YAAY,KAAa,cAAuB;AAC9C,QAAI,CAAC,cAAc;AACjB,cAAQ,IAAI,0DAA0D;AACtE;AAAA,IACF;AACA,SAAK,YAAY,IAAI,UAAU,GAAG;AAClC,YAAQ,IAAI,KAAK,SAAS;AAC1B,SAAK,UAAU,SAAS,KAAK,OAAO,KAAK,IAAI;AAC7C,SAAK,UAAU,UAAU,KAAK,QAAQ,KAAK,IAAI;AAC/C,SAAK,UAAU,YAAY,KAAK,UAAU,KAAK,IAAI;AAAA,EACrD;AAAA,EAEU,SAAe;AACvB,YAAQ,IAAI,2BAA2B;AAAA,EACzC;AAAA,EAEU,QAAQ,OAAoB;AACpC,YAAQ,MAAM,6BAA6B,KAAK;AAAA,EAClD;AAAA,EAEU,UAAU,GAAuB;AACzC,SAAK,aAAa,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,EACtC;AAGF;;;ACrEA,IAAM,gBAAN,cAA4B,YAAY;AAAA,EACtC;AAAA,EACA,YAAY,KAAa;AACvB,UAAM;AACN,SAAK,SAAS,IAAI,UAAU,GAAG;AAC/B,SAAK,OAAO,YAAY,KAAK,UAAU,KAAK,IAAI;AAAA,EAClD;AAAA,EAEA,UAAU,KAAyB;AACjC,QAAI;AACF,YAAM,OAA2B,KAAK,MAAM,IAAI,IAAI;AACpD,UAAI,KAAK,UAAU,QAAQ;AACzB,cAAM,OAAO,KAAK,KAAK;AACvB,YAAI,KAAK,SAAS,aAAa;AAC7B,gBAAM,IAAI,MAAM,eAAe;AAAA,QACjC;AACA,aAAK;AAAA,UACH,IAAI,YAAY,QAAQ;AAAA,YACtB,QAAQ;AAAA,cACN,MAAM,IAAI,KAAK,IAAI,YAAY,KAAK,MAAM,GAAG,KAAK,MAAM;AAAA,YAC1D;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,SAAS,GAAG;AACV,cAAQ,MAAM,6BAA6B,CAAC;AAAA,IAC9C;AAAA,EACF;AACF;AAOO,IAAM,sBAAN,MAA0B;AAAA,EAC/B,MAAM,UAAiC;AACrC,YACG,OAAO,MAAM,MAAM,oCAAoC,GAAG,KAAK,GAGhE;AAAA,EACJ;AAAA,EAEA,QAAQ,UAAiC;AACvC,WAAO,IAAI;AAAA,MACT,oCAAoC,QAAQ;AAAA,IAC9C;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["import type { MoveEvent, OrientationEvent } from \"../bluetooth\";\nimport type { ProxyEvent } from \"./proxy-event\";\n\nexport class WebSocketProxySender {\n protected websocket: WebSocket;\n constructor(url: string) {\n this.websocket = new WebSocket(url);\n this.websocket.onopen = this.onopen.bind(this);\n this.websocket.onerror = this.onerror.bind(this);\n this.websocket.onmessage = this.onmessage.bind(this);\n }\n\n public sendMoveEvent(e: MoveEvent): void {\n (e as any).latestAlgLeaf = e.latestAlgLeaf.toString(); // TODO\n this.sendProxyEvent({\n event: \"move\",\n data: e,\n });\n }\n\n public sendOrientationEvent(e: OrientationEvent): void {\n this.sendProxyEvent({\n event: \"orientation\",\n data: e,\n });\n }\n\n public sendResetEvent(): void {\n this.sendProxyEvent({ event: \"reset\" });\n }\n\n protected sendProxyEvent(proxyEvent: ProxyEvent): void {\n this.websocket.send(JSON.stringify(proxyEvent));\n }\n\n protected onopen(): void {\n console.log(\"Sending socket is open!\");\n }\n\n protected onerror(error: Error): void {\n console.error(\"WebSocket sender error:\", error);\n }\n\n protected onmessage(_e: MessageEvent): void {}\n}\n\nexport abstract class WebSocketProxyReceiver {\n protected websocket: WebSocket;\n constructor(url: string, socketOrigin?: string) {\n if (!socketOrigin) {\n console.log(\"No socket origin specified. Will not attempt to connect.\");\n return;\n }\n this.websocket = new WebSocket(url);\n console.log(this.websocket);\n this.websocket.onopen = this.onopen.bind(this);\n this.websocket.onerror = this.onerror.bind(this);\n this.websocket.onmessage = this.onmessage.bind(this);\n }\n\n protected onopen(): void {\n console.log(\"Receiving socket is open!\");\n }\n\n protected onerror(error: Error): void {\n console.error(\"WebSocket receiver error:\", error);\n }\n\n protected onmessage(e: MessageEvent): void {\n this.onProxyEvent(JSON.parse(e.data));\n }\n\n abstract onProxyEvent(e: ProxyEvent): void;\n}\n", "import { Move, QuantumMove } from \"../../alg\";\nimport type { StreamMessageEvent } from \"./stream-types\";\n\nclass TwizzleStream extends EventTarget {\n socket: WebSocket;\n constructor(url: string) {\n super();\n this.socket = new WebSocket(url);\n this.socket.onmessage = this.onMessage.bind(this); // TODO: Can we \"add a listener instead\"?\n }\n\n onMessage(msg: MessageEvent): void {\n try {\n const json: StreamMessageEvent = JSON.parse(msg.data);\n if (json.event === \"move\") {\n const move = json.data.latestMove;\n if (move.type !== \"blockMove\") {\n throw new Error(\"Invalid move!\");\n }\n this.dispatchEvent(\n new CustomEvent(\"move\", {\n detail: {\n move: new Move(new QuantumMove(move.family), move.amount),\n },\n }),\n );\n }\n } catch (e) {\n console.error(\"Could not handle message:\", e);\n }\n }\n}\n\ntype StreamsField = {\n streamID: string;\n senders: { name: string; twizzleUserID: string; wcaID: string | null }[];\n}[];\n\nexport class TwizzleStreamServer {\n async streams(): Promise<StreamsField> {\n return (\n (await (await fetch(\"https://api.twizzle.net/v0/streams\")).json()) as {\n streams: StreamsField;\n }\n ).streams;\n }\n\n connect(streamID: string): TwizzleStream {\n return new TwizzleStream(\n `wss://api.twizzle.net/v0/streams/${streamID}/socket`,\n );\n }\n}\n"],
5
+ "mappings": ";;;;;;AAGO,IAAM,uBAAN,MAA2B;AAAA,EACtB;AAAA,EACV,YAAY,KAAa;AACvB,SAAK,YAAY,IAAI,UAAU,GAAG;AAClC,SAAK,UAAU,SAAS,KAAK,OAAO,KAAK,IAAI;AAC7C,SAAK,UAAU,UAAU,KAAK,QAAQ,KAAK,IAAI;AAC/C,SAAK,UAAU,YAAY,KAAK,UAAU,KAAK,IAAI;AAAA,EACrD;AAAA,EAEO,cAAc,GAAoB;AACvC,IAAC,EAAU,gBAAgB,EAAE,cAAc,SAAS;AACpD,SAAK,eAAe;AAAA,MAClB,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEO,qBAAqB,GAA2B;AACrD,SAAK,eAAe;AAAA,MAClB,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEO,iBAAuB;AAC5B,SAAK,eAAe,EAAE,OAAO,QAAQ,CAAC;AAAA,EACxC;AAAA,EAEU,eAAe,YAA8B;AACrD,SAAK,UAAU,KAAK,KAAK,UAAU,UAAU,CAAC;AAAA,EAChD;AAAA,EAEU,SAAe;AACvB,YAAQ,IAAI,yBAAyB;AAAA,EACvC;AAAA,EAEU,QAAQ,OAAoB;AACpC,YAAQ,MAAM,2BAA2B,KAAK;AAAA,EAChD;AAAA,EAEU,UAAU,IAAwB;AAAA,EAAC;AAC/C;AAEO,IAAe,yBAAf,MAAsC;AAAA,EACjC;AAAA,EACV,YAAY,KAAa,cAAuB;AAC9C,QAAI,CAAC,cAAc;AACjB,cAAQ,IAAI,0DAA0D;AACtE;AAAA,IACF;AACA,SAAK,YAAY,IAAI,UAAU,GAAG;AAClC,YAAQ,IAAI,KAAK,SAAS;AAC1B,SAAK,UAAU,SAAS,KAAK,OAAO,KAAK,IAAI;AAC7C,SAAK,UAAU,UAAU,KAAK,QAAQ,KAAK,IAAI;AAC/C,SAAK,UAAU,YAAY,KAAK,UAAU,KAAK,IAAI;AAAA,EACrD;AAAA,EAEU,SAAe;AACvB,YAAQ,IAAI,2BAA2B;AAAA,EACzC;AAAA,EAEU,QAAQ,OAAoB;AACpC,YAAQ,MAAM,6BAA6B,KAAK;AAAA,EAClD;AAAA,EAEU,UAAU,GAAuB;AACzC,SAAK,aAAa,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,EACtC;AAGF;;;ACtEA,IAAM,gBAAN,cAA4B,YAAY;AAAA,EACtC;AAAA,EACA,YAAY,KAAa;AACvB,UAAM;AACN,SAAK,SAAS,IAAI,UAAU,GAAG;AAC/B,SAAK,OAAO,YAAY,KAAK,UAAU,KAAK,IAAI;AAAA,EAClD;AAAA,EAEA,UAAU,KAAyB;AACjC,QAAI;AACF,YAAM,OAA2B,KAAK,MAAM,IAAI,IAAI;AACpD,UAAI,KAAK,UAAU,QAAQ;AACzB,cAAM,OAAO,KAAK,KAAK;AACvB,YAAI,KAAK,SAAS,aAAa;AAC7B,gBAAM,IAAI,MAAM,eAAe;AAAA,QACjC;AACA,aAAK;AAAA,UACH,IAAI,YAAY,QAAQ;AAAA,YACtB,QAAQ;AAAA,cACN,MAAM,IAAI,KAAK,IAAI,YAAY,KAAK,MAAM,GAAG,KAAK,MAAM;AAAA,YAC1D;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,SAAS,GAAG;AACV,cAAQ,MAAM,6BAA6B,CAAC;AAAA,IAC9C;AAAA,EACF;AACF;AAOO,IAAM,sBAAN,MAA0B;AAAA,EAC/B,MAAM,UAAiC;AACrC,YACG,OAAO,MAAM,MAAM,oCAAoC,GAAG,KAAK,GAGhE;AAAA,EACJ;AAAA,EAEA,QAAQ,UAAiC;AACvC,WAAO,IAAI;AAAA,MACT,oCAAoC,QAAQ;AAAA,IAC9C;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,5 @@
1
- import { A as AlgIndexer, T as Timestamp, D as Duration, S as StickeringMask } from '../TwizzleLink-5130fb88.js';
2
- export { B as BackViewLayout, N as EXPERIMENTAL_PROP_NO_VALUE, M as ExperimentalMillisecondTimestamp, E as ExperimentalStickering, a as PuzzleID, d as TwistyAlgEditor, c as TwistyAlgViewer, b as TwistyPlayer, e as TwistyPlayerConfig, g as TwizzleLink, V as VisualizationFormat, f as backViewLayouts } from '../TwizzleLink-5130fb88.js';
1
+ import { A as AlgIndexer, T as Timestamp, D as Duration, S as StickeringMask } from '../TwizzleLink-dc09917e.js';
2
+ export { B as BackViewLayout, N as EXPERIMENTAL_PROP_NO_VALUE, M as ExperimentalMillisecondTimestamp, E as ExperimentalStickering, a as PuzzleID, d as TwistyAlgEditor, c as TwistyAlgViewer, b as TwistyPlayer, e as TwistyPlayerConfig, g as TwizzleLink, V as VisualizationFormat, f as backViewLayouts } from '../TwizzleLink-dc09917e.js';
3
3
  import { A as Alg, M as Move } from '../Alg-3d4f29da.js';
4
4
  import { s as KPuzzle, K as KPattern, t as KTransformation } from '../KPattern-615b74bc.js';
5
5
  import 'three';
@@ -18,21 +18,21 @@ import {
18
18
  rawRenderPooled,
19
19
  setCameraFromOrbitCoordinates,
20
20
  setTwistyDebug
21
- } from "../chunks/chunk-RDBJ7KQY.js";
21
+ } from "../chunks/chunk-XO6HGCQK.js";
22
22
  import {
23
23
  countAnimatedLeaves,
24
24
  countMetricMoves,
25
25
  countMoves
26
- } from "../chunks/chunk-WGGIQSR5.js";
26
+ } from "../chunks/chunk-6VYPSSU5.js";
27
27
  import {
28
28
  cube3x3x3,
29
29
  puzzles
30
- } from "../chunks/chunk-OSYK74JC.js";
30
+ } from "../chunks/chunk-5NPUMH6W.js";
31
31
  import {
32
32
  customPGPuzzleLoader,
33
33
  getPartialAppendOptionsForPuzzleSpecificSimplifyOptions,
34
34
  getPieceStickeringMask
35
- } from "../chunks/chunk-CIXTS2MM.js";
35
+ } from "../chunks/chunk-BBAZ2T3M.js";
36
36
  import "../chunks/chunk-ZSRBMEG7.js";
37
37
  import {
38
38
  Alg,
@@ -781,7 +781,7 @@ var Twisty2DPuzzleWrapper = class {
781
781
  // TODO: Stale dropper?
782
782
  async twisty2DPuzzle() {
783
783
  return this.#cachedTwisty2DPuzzle ??= (async () => {
784
- const svgPromise = this.effectiveVisualization === "experimental-2D-LL" ? this.puzzleLoader.llSVG() : this.puzzleLoader.svg();
784
+ const svgPromise = this.effectiveVisualization === "experimental-2D-LL-face" ? this.puzzleLoader.llFaceSVG() : this.effectiveVisualization === "experimental-2D-LL" ? this.puzzleLoader.llSVG() : this.puzzleLoader.svg();
785
785
  return new Twisty2DPuzzle(
786
786
  this.model,
787
787
  await this.puzzleLoader.kpuzzle(),
@@ -3319,6 +3319,7 @@ var VisualizationStrategyProp = class extends TwistyPropDerived {
3319
3319
  case "square1":
3320
3320
  case "redi_cube":
3321
3321
  case "melindas2x2x2x2":
3322
+ case "loopover":
3322
3323
  return "2D";
3323
3324
  case "3x3x3":
3324
3325
  switch (inputs.visualizationRequest) {
@@ -3334,6 +3335,7 @@ var VisualizationStrategyProp = class extends TwistyPropDerived {
3334
3335
  case "3D":
3335
3336
  return "PG3D";
3336
3337
  case "experimental-2D-LL":
3338
+ case "experimental-2D-LL-face":
3337
3339
  if (["2x2x2", "4x4x4", "megaminx"].includes(inputs.puzzleID)) {
3338
3340
  return "experimental-2D-LL";
3339
3341
  } else {
@@ -4347,7 +4349,8 @@ var TwistyPlayer = class extends TwistyPlayerSettable {
4347
4349
  let newWrapper;
4348
4350
  switch (strategy) {
4349
4351
  case "2D":
4350
- case "experimental-2D-LL": {
4352
+ case "experimental-2D-LL":
4353
+ case "experimental-2D-LL-face": {
4351
4354
  newWrapper = new Twisty2DSceneWrapper(
4352
4355
  this.experimentalModel.twistySceneModel,
4353
4356
  strategy
@@ -4485,7 +4488,7 @@ var TwistyPlayer = class extends TwistyPlayerSettable {
4485
4488
  // TODO: Make this more ergonomic and flexible.
4486
4489
  // TODO: dimensions.
4487
4490
  async experimentalDownloadScreenshot(filename) {
4488
- if (["2D", "experimental-2D-LL"].includes(
4491
+ if (["2D", "experimental-2D-LL", "experimental-2D-LL-face"].includes(
4489
4492
  await this.experimentalModel.visualizationStrategy.get()
4490
4493
  )) {
4491
4494
  const wrapper2D = this.#visualizationWrapper;