cubing 0.43.3 → 0.43.5

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 (83) hide show
  1. package/README.md +17 -1
  2. package/dist/bin/scramble.js +11 -3
  3. package/dist/bin/scramble.js.map +2 -2
  4. package/dist/lib/cubing/{Alg-c6770822.d.ts → Alg-3ed1d42c.d.ts} +1 -1
  5. package/dist/lib/cubing/{KPattern-60960997.d.ts → KPattern-7494403f.d.ts} +3 -2
  6. package/dist/lib/cubing/{TwizzleLink-3c302469.d.ts → TwizzleLink-4060845a.d.ts} +5 -5
  7. package/dist/lib/cubing/alg/{index.d.ts → index.d.cts} +4 -4
  8. package/dist/lib/cubing/bluetooth/{index.d.ts → index.d.cts} +5 -5
  9. package/dist/lib/cubing/bluetooth/index.js +4 -4
  10. package/dist/lib/cubing/bluetooth/index.js.map +2 -2
  11. package/dist/lib/cubing/{bluetooth-puzzle-c3224834.d.ts → bluetooth-puzzle-c9c778f2.d.ts} +2 -2
  12. package/dist/lib/cubing/chunks/{chunk-ZUPLJQAD.js → chunk-4MCJ7H5A.js} +8 -4
  13. package/dist/lib/cubing/chunks/{chunk-ZUPLJQAD.js.map → chunk-4MCJ7H5A.js.map} +2 -2
  14. package/dist/lib/cubing/chunks/{chunk-NDY3DEEE.js → chunk-72RDBMAX.js} +1 -28
  15. package/dist/lib/cubing/chunks/chunk-72RDBMAX.js.map +7 -0
  16. package/dist/lib/cubing/chunks/{chunk-RS62HLA5.js → chunk-CULFM3I2.js} +22 -41
  17. package/dist/lib/cubing/chunks/chunk-CULFM3I2.js.map +7 -0
  18. package/dist/lib/cubing/chunks/chunk-DX6FHFRA.js +28 -0
  19. package/dist/lib/cubing/chunks/chunk-DX6FHFRA.js.map +7 -0
  20. package/dist/lib/cubing/chunks/{chunk-3LQLRLXS.js → chunk-ITZZ44VH.js} +3 -3
  21. package/dist/lib/cubing/chunks/chunk-ITZZ44VH.js.map +7 -0
  22. package/dist/lib/cubing/chunks/{chunk-EBWRIEEZ.js → chunk-J6EV75FJ.js} +29 -122
  23. package/dist/lib/cubing/chunks/chunk-J6EV75FJ.js.map +7 -0
  24. package/dist/lib/cubing/chunks/{chunk-NB6OOT2E.js → chunk-NS47A66S.js} +3 -3
  25. package/dist/lib/cubing/chunks/chunk-NS47A66S.js.map +7 -0
  26. package/dist/lib/cubing/chunks/{chunk-QF4HTZYW.js → chunk-VIEFLN2D.js} +33 -3
  27. package/dist/lib/cubing/chunks/chunk-VIEFLN2D.js.map +7 -0
  28. package/dist/lib/cubing/chunks/{chunk-SODS5Y3A.js → chunk-ZQFNVOD5.js} +7 -7
  29. package/dist/lib/cubing/chunks/inside-BCHGO3XT.js +16 -0
  30. package/dist/lib/cubing/chunks/{puzzles-dynamic-unofficial-WXH65MSQ.js → puzzles-dynamic-unofficial-2RL6RPOO.js} +60 -60
  31. package/dist/lib/cubing/chunks/puzzles-dynamic-unofficial-2RL6RPOO.js.map +7 -0
  32. package/dist/lib/cubing/chunks/{search-dynamic-sgs-side-events-KBQTGXZR.js → search-dynamic-sgs-side-events-PFWJK7HL.js} +4 -4
  33. package/dist/lib/cubing/chunks/{search-dynamic-sgs-unofficial-KTHSSINP.js → search-dynamic-sgs-unofficial-YLGCKTJJ.js} +4 -4
  34. package/dist/lib/cubing/chunks/{search-dynamic-solve-4x4x4-JQRNWKAG.js → search-dynamic-solve-4x4x4-JZPYKEUP.js} +7 -7
  35. package/dist/lib/cubing/chunks/search-worker-entry.js +1 -1
  36. package/dist/lib/cubing/chunks/{twisty-dynamic-3d-GX34QIPC.js → twisty-dynamic-3d-IRLKRUGR.js} +16 -5
  37. package/dist/lib/cubing/chunks/twisty-dynamic-3d-IRLKRUGR.js.map +7 -0
  38. package/dist/lib/cubing/chunks/{twsearch-BDAXZGZU-Q2YC2EQ6.js → twsearch-BDAXZGZU-JERMHHZP.js} +2 -2
  39. package/dist/lib/cubing/chunks/{twsearch-BDAXZGZU-Q2YC2EQ6.js.map → twsearch-BDAXZGZU-JERMHHZP.js.map} +1 -1
  40. package/dist/lib/cubing/chunks/twsearch-ZUYNNUKY.js +440 -0
  41. package/dist/lib/cubing/chunks/twsearch-ZUYNNUKY.js.map +7 -0
  42. package/dist/lib/cubing/chunks/{twsearch-SLVE4NQH.js → twsearch-cpp-CUTU3IFM.js} +35 -5
  43. package/dist/lib/cubing/chunks/twsearch-cpp-CUTU3IFM.js.map +7 -0
  44. package/dist/lib/cubing/chunks/twsearch_wasm_bg-V6CRTKYG-PV6XNJXH.js +15 -0
  45. package/dist/lib/cubing/chunks/twsearch_wasm_bg-V6CRTKYG-PV6XNJXH.js.map +7 -0
  46. package/dist/lib/cubing/{outside-2f424d30.d.ts → index-17ce7649.d.ts} +2 -2
  47. package/dist/lib/cubing/kpuzzle/index.d.cts +2 -0
  48. package/dist/lib/cubing/kpuzzle/index.js +1 -1
  49. package/dist/lib/cubing/notation/{index.d.ts → index.d.cts} +4 -4
  50. package/dist/lib/cubing/notation/index.js +3 -3
  51. package/dist/lib/cubing/{parseAlg-d2c83795.d.ts → parseAlg-23e8b6cd.d.ts} +1 -1
  52. package/dist/lib/cubing/protocol/{index.d.ts → index.d.cts} +6 -6
  53. package/dist/lib/cubing/protocol/index.js +3 -3
  54. package/dist/lib/cubing/puzzle-geometry/index.d.cts +7 -0
  55. package/dist/lib/cubing/puzzles/{index.d.ts → index.d.cts} +5 -6
  56. package/dist/lib/cubing/puzzles/index.js +3 -3
  57. package/dist/lib/cubing/scramble/index.d.cts +3 -0
  58. package/dist/lib/cubing/scramble/index.js +6 -6
  59. package/dist/lib/cubing/search/{index.d.ts → index.d.cts} +3 -3
  60. package/dist/lib/cubing/search/index.js +6 -6
  61. package/dist/lib/cubing/stream/{index.d.ts → index.d.cts} +3 -3
  62. package/dist/lib/cubing/twisty/{index.d.ts → index.d.cts} +6 -6
  63. package/dist/lib/cubing/twisty/index.js +7 -7
  64. package/dist/lib/cubing/twisty/index.js.map +2 -2
  65. package/package.json +33 -28
  66. package/dist/lib/cubing/chunks/chunk-3LQLRLXS.js.map +0 -7
  67. package/dist/lib/cubing/chunks/chunk-EBWRIEEZ.js.map +0 -7
  68. package/dist/lib/cubing/chunks/chunk-NB6OOT2E.js.map +0 -7
  69. package/dist/lib/cubing/chunks/chunk-NDY3DEEE.js.map +0 -7
  70. package/dist/lib/cubing/chunks/chunk-QF4HTZYW.js.map +0 -7
  71. package/dist/lib/cubing/chunks/chunk-RS62HLA5.js.map +0 -7
  72. package/dist/lib/cubing/chunks/inside-5CIAPTLP.js +0 -16
  73. package/dist/lib/cubing/chunks/puzzles-dynamic-unofficial-WXH65MSQ.js.map +0 -7
  74. package/dist/lib/cubing/chunks/twisty-dynamic-3d-GX34QIPC.js.map +0 -7
  75. package/dist/lib/cubing/chunks/twsearch-SLVE4NQH.js.map +0 -7
  76. package/dist/lib/cubing/kpuzzle/index.d.ts +0 -2
  77. package/dist/lib/cubing/puzzle-geometry/index.d.ts +0 -7
  78. package/dist/lib/cubing/scramble/index.d.ts +0 -3
  79. /package/dist/lib/cubing/chunks/{chunk-SODS5Y3A.js.map → chunk-ZQFNVOD5.js.map} +0 -0
  80. /package/dist/lib/cubing/chunks/{inside-5CIAPTLP.js.map → inside-BCHGO3XT.js.map} +0 -0
  81. /package/dist/lib/cubing/chunks/{search-dynamic-sgs-side-events-KBQTGXZR.js.map → search-dynamic-sgs-side-events-PFWJK7HL.js.map} +0 -0
  82. /package/dist/lib/cubing/chunks/{search-dynamic-sgs-unofficial-KTHSSINP.js.map → search-dynamic-sgs-unofficial-YLGCKTJJ.js.map} +0 -0
  83. /package/dist/lib/cubing/chunks/{search-dynamic-solve-4x4x4-JQRNWKAG.js.map → search-dynamic-solve-4x4x4-JZPYKEUP.js.map} +0 -0
package/README.md CHANGED
@@ -42,7 +42,23 @@ If you would like to contribute to the development of `cubing.js`, please refer
42
42
 
43
43
  ## Developing `cubing.js` itself
44
44
 
45
- If you have `git`, `node`, `npm`, and [`bun`](https://bun.sh/) installed, you can run the `cubing.js` source like this (see the [contribution guidelines](./CONTRIBUTING.md) for more details):
45
+ Working on `cubing.js` requires the following tools:
46
+
47
+ - [`GNU make`](https://www.gnu.org/software/make/) (probably included with your OS)
48
+ - [`git`](https://git-scm.com/) (possibly included with your OS)
49
+ - [`node` and `npm`](https://nodejs.org/en/download)
50
+ - [`bun`](https://bun.sh/)
51
+ - [`git-lfs`](https://git-lfs.com/)
52
+
53
+ On macOS, you can install these using [Homebrew](https://brew.sh/):
54
+
55
+ ```shell
56
+ brew install git node oven-sh/bun/bun git-lfs
57
+ ```
58
+
59
+ (On other platforms, you'll have to follow individual installation instructions. We recommend using [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) on Windows.)
60
+
61
+ Once you have these dependencies, you can run the `cubing.js` source like this (see the [contribution guidelines](./CONTRIBUTING.md) for more details):
46
62
 
47
63
  ```shell
48
64
  git clone https://github.com/cubing/cubing.js && cd cubing.js
@@ -41,7 +41,7 @@ var argv = await yargs(
41
41
  ).version(false).strictOptions().argv;
42
42
  var eventID = argv.eventID;
43
43
  var { format } = argv;
44
- format ??= argv.text ? "text" : void 0;
44
+ format ??= argv.text || !process.stdout.isTTY ? "text" : "auto";
45
45
  setSearchDebug({ logPerf: false, showWorkerInstantiationWarnings: false });
46
46
  function scrambleText(scramble) {
47
47
  return scramble.toString();
@@ -90,10 +90,14 @@ if (format !== "json-text" && argv.amount === 1) {
90
90
  "Encountered `json` format in code that is not expected to handle it."
91
91
  );
92
92
  }
93
- default: {
93
+ case "auto": {
94
94
  console.log(`${scrambleText(scramble)}
95
95
 
96
96
  \u{1F517} ${scrambleLink(scramble)}`);
97
+ break;
98
+ }
99
+ default: {
100
+ throw new Error("Unknown format!");
97
101
  }
98
102
  }
99
103
  } else {
@@ -117,12 +121,16 @@ if (format !== "json-text" && argv.amount === 1) {
117
121
  jsonListPrinter?.push(scramble.toString());
118
122
  break;
119
123
  }
120
- default: {
124
+ case "auto": {
121
125
  console.log(`// Scramble #${i + 1}
122
126
  ${scrambleText(scramble)}
123
127
 
124
128
  \u{1F517} ${scrambleLink(scramble)}
125
129
  `);
130
+ break;
131
+ }
132
+ default: {
133
+ throw new Error("Unknown format!");
126
134
  }
127
135
  }
128
136
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/bin/scramble.ts"],
4
- "sourcesContent": ["// To run this file directly:\n// bun run src/bin/scramble.ts -- 333\n\nimport { eventInfo } from \"cubing/puzzles\";\nimport { randomScrambleForEvent } from \"cubing/scramble\";\nimport { setSearchDebug } from \"cubing/search\";\nimport type { Alg } from \"cubing/alg\";\n\n// TODO: completions for `bash`, `zsh`, and `fish`: https://github.com/loilo/completarr\n\nconst [yargs, hideBin] = await (async () => {\n try {\n const yargs = (await import(\"yargs\")).default;\n const { hideBin } = await import(\"yargs/helpers\");\n return [yargs, hideBin];\n } catch (e) {\n throw new Error(\n \"Could not import `yargs`, which is not automatically installed as a regular dependency of `cubing`. Please run `npm install yargs` (or the equivalent) separately.\",\n );\n }\n})();\n\n// @ts-ignore: Top-level await is okay because this is not part of the main library.\nconst argv = await yargs(\n // TODO: `hideBin` just shows `bun` in `bun`.\n hideBin(process.argv),\n)\n .option(\"amount\", {\n describe: \"Output format.\",\n default: 1,\n type: \"number\",\n alias: \"n\",\n })\n .option(\"format\", {\n describe: \"Output format.\",\n choices: [\"text\", \"link\", \"json-text\"],\n alias: \"f\",\n })\n .option(\"text\", {\n type: \"boolean\",\n describe: \"Convenient shorthand for `--format text`.\",\n alias: \"t\",\n })\n .usage(\"$0 eventID\", \"Generate cubing scrambles.\", (yargs) =>\n yargs.positional(\"eventID\", {\n describe: \"WCA or unofficial event ID\",\n type: \"string\",\n }),\n )\n .version(false) // TODO: why doesn't `yargs` get the right version in `bun` or for the `dist` bin?\n .strictOptions().argv;\n\nconst eventID = argv.eventID as string;\nlet { format } = argv;\nformat ??= argv.text ? \"text\" : undefined;\n\nsetSearchDebug({ logPerf: false, showWorkerInstantiationWarnings: false });\n\nfunction scrambleText(scramble: Alg): string {\n return scramble.toString();\n}\n\nfunction scrambleLink(scramble: Alg): string {\n const url = new URL(\"https://alpha.twizzle.net/edit/\");\n const puzzleID = eventInfo(eventID)?.puzzleID;\n puzzleID && url.searchParams.set(\"puzzle\", puzzleID);\n url.searchParams.set(\"alg\", scramble.toString());\n return url.toString();\n}\n\nclass JSONListPrinter<T> {\n #finished = false;\n #firstValuePrintedAlready = false;\n constructor() {\n process.stdout.write(\"[\\n \");\n }\n\n push(value: T) {\n if (this.#firstValuePrintedAlready) {\n process.stdout.write(\",\\n \");\n }\n this.#firstValuePrintedAlready = true;\n process.stdout.write(JSON.stringify(value));\n }\n\n finish() {\n if (this.#finished) {\n throw new Error(\"Tried to finish JSON list printing multiple times.\");\n }\n this.#finished = true;\n console.log(\"\\n]\");\n }\n}\n\nif (format !== \"json-text\" && argv.amount === 1) {\n // @ts-ignore: Top-level await is okay because this is not part of the main library.\n const scramble = await randomScrambleForEvent(eventID);\n\n switch (format) {\n case \"text\": {\n console.log(scrambleText(scramble));\n break;\n }\n case \"link\": {\n console.log(scrambleLink(scramble));\n break;\n }\n case \"json-text\": {\n throw new Error(\n \"Encountered `json` format in code that is not expected to handle it.\",\n );\n }\n default: {\n console.log(`${scrambleText(scramble)}\n\n\uD83D\uDD17 ${scrambleLink(scramble)}`);\n }\n }\n} else {\n const jsonListPrinter: JSONListPrinter<string> | undefined =\n format === \"json-text\" ? new JSONListPrinter() : undefined;\n for (let i = 0; i < argv.amount; i++) {\n // @ts-ignore: Top-level await is okay because this is not part of the main library.\n const scramble = await randomScrambleForEvent(eventID);\n switch (format) {\n case \"text\": {\n console.log(`// Scramble #${i + 1}`);\n console.log(`${scrambleText(scramble)}\\n`);\n break;\n }\n case \"link\": {\n console.log(`// Scramble #${i + 1}`);\n console.log(`${scrambleLink(scramble)}\\n`);\n break;\n }\n case \"json-text\": {\n jsonListPrinter?.push(scramble.toString());\n break;\n }\n default: {\n console.log(`// Scramble #${i + 1}\n${scrambleText(scramble)}\n\n\uD83D\uDD17 ${scrambleLink(scramble)}\n`);\n }\n }\n }\n jsonListPrinter?.finish();\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// To run this file directly:\n// bun run src/bin/scramble.ts -- 333\n\nimport { eventInfo } from \"cubing/puzzles\";\nimport { randomScrambleForEvent } from \"cubing/scramble\";\nimport { setSearchDebug } from \"cubing/search\";\nimport type { Alg } from \"cubing/alg\";\n\n// TODO: completions for `bash`, `zsh`, and `fish`: https://github.com/loilo/completarr\n\nconst [yargs, hideBin] = await (async () => {\n try {\n const yargs = (await import(\"yargs\")).default;\n const { hideBin } = await import(\"yargs/helpers\");\n return [yargs, hideBin];\n } catch (e) {\n throw new Error(\n \"Could not import `yargs`, which is not automatically installed as a regular dependency of `cubing`. Please run `npm install yargs` (or the equivalent) separately.\",\n );\n }\n})();\n\n// @ts-ignore: Top-level await is okay because this is not part of the main library.\nconst argv = await yargs(\n // TODO: `hideBin` just shows `bun` in `bun`.\n hideBin(process.argv),\n)\n .option(\"amount\", {\n describe: \"Output format.\",\n default: 1,\n type: \"number\",\n alias: \"n\",\n })\n .option(\"format\", {\n describe: \"Output format.\",\n choices: [\"text\", \"link\", \"json-text\"],\n alias: \"f\",\n })\n .option(\"text\", {\n type: \"boolean\",\n describe: \"Convenient shorthand for `--format text`.\",\n alias: \"t\",\n })\n .usage(\"$0 eventID\", \"Generate cubing scrambles.\", (yargs) =>\n yargs.positional(\"eventID\", {\n describe: \"WCA or unofficial event ID\",\n type: \"string\",\n }),\n )\n .version(false) // TODO: why doesn't `yargs` get the right version in `bun` or for the `dist` bin?\n .strictOptions().argv;\n\nconst eventID = argv.eventID as string;\nlet { format } = argv;\nformat ??= argv.text || !process.stdout.isTTY ? \"text\" : \"auto\";\n\nsetSearchDebug({ logPerf: false, showWorkerInstantiationWarnings: false });\n\nfunction scrambleText(scramble: Alg): string {\n return scramble.toString();\n}\n\nfunction scrambleLink(scramble: Alg): string {\n const url = new URL(\"https://alpha.twizzle.net/edit/\");\n const puzzleID = eventInfo(eventID)?.puzzleID;\n puzzleID && url.searchParams.set(\"puzzle\", puzzleID);\n url.searchParams.set(\"alg\", scramble.toString());\n return url.toString();\n}\n\nclass JSONListPrinter<T> {\n #finished = false;\n #firstValuePrintedAlready = false;\n constructor() {\n process.stdout.write(\"[\\n \");\n }\n\n push(value: T) {\n if (this.#firstValuePrintedAlready) {\n process.stdout.write(\",\\n \");\n }\n this.#firstValuePrintedAlready = true;\n process.stdout.write(JSON.stringify(value));\n }\n\n finish() {\n if (this.#finished) {\n throw new Error(\"Tried to finish JSON list printing multiple times.\");\n }\n this.#finished = true;\n console.log(\"\\n]\");\n }\n}\n\nif (format !== \"json-text\" && argv.amount === 1) {\n // @ts-ignore: Top-level await is okay because this is not part of the main library.\n const scramble = await randomScrambleForEvent(eventID);\n\n switch (format) {\n case \"text\": {\n console.log(scrambleText(scramble));\n break;\n }\n case \"link\": {\n console.log(scrambleLink(scramble));\n break;\n }\n case \"json-text\": {\n throw new Error(\n \"Encountered `json` format in code that is not expected to handle it.\",\n );\n }\n case \"auto\": {\n console.log(`${scrambleText(scramble)}\n\n\uD83D\uDD17 ${scrambleLink(scramble)}`);\n break;\n }\n default: {\n throw new Error(\"Unknown format!\");\n }\n }\n} else {\n const jsonListPrinter: JSONListPrinter<string> | undefined =\n format === \"json-text\" ? new JSONListPrinter() : undefined;\n for (let i = 0; i < argv.amount; i++) {\n // @ts-ignore: Top-level await is okay because this is not part of the main library.\n const scramble = await randomScrambleForEvent(eventID);\n switch (format) {\n case \"text\": {\n console.log(`// Scramble #${i + 1}`);\n console.log(`${scrambleText(scramble)}\\n`);\n break;\n }\n case \"link\": {\n console.log(`// Scramble #${i + 1}`);\n console.log(`${scrambleLink(scramble)}\\n`);\n break;\n }\n case \"json-text\": {\n jsonListPrinter?.push(scramble.toString());\n break;\n }\n case \"auto\": {\n console.log(`// Scramble #${i + 1}\n${scrambleText(scramble)}\n\n\uD83D\uDD17 ${scrambleLink(scramble)}\n`);\n break;\n }\n default: {\n throw new Error(\"Unknown format!\");\n }\n }\n }\n jsonListPrinter?.finish();\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["yargs", "hideBin"]
7
7
  }
@@ -339,4 +339,4 @@ declare class Alg extends AlgCommon<Alg> {
339
339
  simplify(options?: SimplifyOptions): Alg;
340
340
  }
341
341
 
342
- export { AlgNode as A, Commutator as C, Grouping as G, IterationDirection as I, LineComment as L, Move as M, Newline as N, Pause as P, QuantumMove as Q, SimplifyOptions as S, Alg as a, AppendOptions as b, Conjugate as c, AlgLeaf as d, MoveModifications as e, AlgBranch as f, PuzzleSpecificSimplifyOptions as g, AppendCancelOptions as h };
342
+ export { Alg as A, Commutator as C, Grouping as G, IterationDirection as I, LineComment as L, Move as M, Newline as N, PuzzleSpecificSimplifyOptions as P, QuantumMove as Q, SimplifyOptions as S, AlgNode as a, AlgLeaf as b, AppendOptions as c, Conjugate as d, Pause as e, MoveModifications as f, AlgBranch as g, AppendCancelOptions as h };
@@ -1,4 +1,4 @@
1
- import { M as Move, a as Alg } from './Alg-c6770822.js';
1
+ import { M as Move, A as Alg } from './Alg-3ed1d42c.js';
2
2
 
3
3
  type KPatternData = Record<string, KPatternOrbitData>;
4
4
  interface KPatternOrbitData {
@@ -537,6 +537,7 @@ declare class KPattern {
537
537
  applyTransformation(transformation: KTransformation): KPattern;
538
538
  applyMove(move: Move | string): KPattern;
539
539
  applyAlg(alg: Alg | string): KPattern;
540
+ isIdentical(other: KPattern): boolean;
540
541
  /** @deprecated */
541
542
  experimentalToTransformation(): KTransformation | null;
542
543
  experimentalIsSolved(options: {
@@ -545,4 +546,4 @@ declare class KPattern {
545
546
  }): boolean;
546
547
  }
547
548
 
548
- export { KPattern as K, PuzzleGeometry as P, Quat as Q, StickerDat as S, KPuzzle as a, KPuzzleDefinition as b, KPatternData as c, KPatternOrbitData as d, KTransformationData as e, KTransformationOrbitData as f, KTransformation as g, PuzzleDescriptionString as h, Perm as i, getPuzzleDescriptionString as j, getPuzzleGeometryByDesc as k, getPuzzleGeometryByName as l, getPG3DNamedPuzzles as m, StickerDatAxis as n, StickerDatFace as o, parsePuzzleDescription as p, StickerDatSticker as q, parseOptions as r, PuzzleGeometryOptions as s, PGNotation as t, PuzzleCutDescription as u, PuzzleDescription as v, PUZZLE_CUT_TYPES as w, PuzzleCutType as x, PUZZLE_BASE_SHAPES as y, PuzzleBaseShape as z };
549
+ export { KPattern as K, Perm as P, Quat as Q, StickerDat as S, getPuzzleGeometryByDesc as a, getPuzzleGeometryByName as b, getPG3DNamedPuzzles as c, PuzzleGeometry as d, StickerDatAxis as e, StickerDatFace as f, getPuzzleDescriptionString as g, StickerDatSticker as h, parseOptions as i, PuzzleGeometryOptions as j, PGNotation as k, PuzzleCutDescription as l, PuzzleDescription as m, PUZZLE_CUT_TYPES as n, PuzzleCutType as o, parsePuzzleDescription as p, PUZZLE_BASE_SHAPES as q, PuzzleBaseShape as r, KPuzzle as s, KTransformation as t, PuzzleDescriptionString as u, KPuzzleDefinition as v, KPatternData as w, KPatternOrbitData as x, KTransformationData as y, KTransformationOrbitData as z };
@@ -1,9 +1,9 @@
1
1
  import { Texture, Object3D, Raycaster, PerspectiveCamera, Scene, WebGLRenderer } from 'three';
2
- import { g as PuzzleSpecificSimplifyOptions, M as Move, a as Alg, P as Pause, h as AppendCancelOptions, d as AlgLeaf, b as AppendOptions, A as AlgNode, I as IterationDirection } from './Alg-c6770822.js';
3
- import { P as Parsed } from './parseAlg-d2c83795.js';
4
- import { a as KPuzzle, P as PuzzleGeometry, K as KPattern, g as KTransformation, h as PuzzleDescriptionString } from './KPattern-60960997.js';
2
+ import { P as PuzzleSpecificSimplifyOptions, M as Move, A as Alg, e as Pause, h as AppendCancelOptions, b as AlgLeaf, c as AppendOptions, a as AlgNode, I as IterationDirection } from './Alg-3ed1d42c.js';
3
+ import { P as Parsed } from './parseAlg-23e8b6cd.js';
4
+ import { s as KPuzzle, d as PuzzleGeometry, K as KPattern, t as KTransformation, u as PuzzleDescriptionString } from './KPattern-7494403f.js';
5
5
 
6
- type FaceletMeshStickeringMask = "regular" | "dim" | "oriented" | "ignored" | "invisible";
6
+ type FaceletMeshStickeringMask = "regular" | "dim" | "oriented" | "experimentalOriented2" | "ignored" | "invisible";
7
7
  type FaceletStickeringMask = {
8
8
  mask: FaceletMeshStickeringMask;
9
9
  hintMask?: FaceletMeshStickeringMask;
@@ -76,7 +76,7 @@ declare class UserVisibleErrorTracker extends SimpleTwistyPropSource<UserVisible
76
76
  protected canReuseValue(_v1: UserVisibleError, _v2: UserVisibleError): boolean;
77
77
  }
78
78
 
79
- type InputRecord = {};
79
+ type InputRecord = Record<string, any>;
80
80
  type InputProps<T extends InputRecord> = {
81
81
  [s in keyof T]: TwistyPropParent<T[s]>;
82
82
  };
@@ -1,6 +1,6 @@
1
- import { A as AlgNode, a as Alg, M as Move, b as AppendOptions, G as Grouping, C as Commutator, c as Conjugate, P as Pause, N as Newline, L as LineComment, d as AlgLeaf } from '../Alg-c6770822.js';
2
- export { a as Alg, f as AlgBranch, d as AlgLeaf, A as AlgNode, h as AppendCancelOptions, C as Commutator, c as Conjugate, G as Grouping, L as LineComment, M as Move, e as MoveModifications, N as Newline, P as Pause, g as PuzzleSpecificSimplifyOptions, Q as QuantumMove, S as SimplifyOptions } from '../Alg-c6770822.js';
3
- export { P as ExperimentalParsed } from '../parseAlg-d2c83795.js';
1
+ import { a as AlgNode, A as Alg, M as Move, c as AppendOptions, G as Grouping, C as Commutator, d as Conjugate, e as Pause, N as Newline, L as LineComment, b as AlgLeaf } from '../Alg-3ed1d42c.js';
2
+ export { g as AlgBranch, h as AppendCancelOptions, f as MoveModifications, P as PuzzleSpecificSimplifyOptions, Q as QuantumMove, S as SimplifyOptions } from '../Alg-3ed1d42c.js';
3
+ export { P as ExperimentalParsed } from '../parseAlg-23e8b6cd.js';
4
4
 
5
5
  /** @deprecated */
6
6
  type Unit = AlgNode;
@@ -80,4 +80,4 @@ declare function setAlgDebug(options: {
80
80
  caretNISSNotationEnabled?: boolean;
81
81
  }): void;
82
82
 
83
- export { AlgBuilder, AlgCubingNetOptions, Example, TraversalDownUp, TraversalUp, Unit, experimentalAlgCubingNetLink, experimentalAppendMove, experimentalIs, functionFromTraversal, keyToMove, setAlgDebug };
83
+ export { Alg, AlgBuilder, AlgCubingNetOptions, AlgLeaf, AlgNode, Commutator, Conjugate, Example, Grouping, LineComment, Move, Newline, Pause, TraversalDownUp, TraversalUp, Unit, experimentalAlgCubingNetLink, experimentalAppendMove, experimentalIs, functionFromTraversal, keyToMove, setAlgDebug };
@@ -1,7 +1,7 @@
1
- import { K as KPattern } from '../KPattern-60960997.js';
2
- import { B as BluetoothPuzzle } from '../bluetooth-puzzle-c3224834.js';
3
- export { B as BluetoothPuzzle, A as MoveEvent, O as OrientationEvent } from '../bluetooth-puzzle-c3224834.js';
4
- import { a as Alg, M as Move } from '../Alg-c6770822.js';
1
+ import { K as KPattern } from '../KPattern-7494403f.js';
2
+ import { B as BluetoothPuzzle } from '../bluetooth-puzzle-c9c778f2.js';
3
+ export { A as MoveEvent, O as OrientationEvent } from '../bluetooth-puzzle-c9c778f2.js';
4
+ import { A as Alg, M as Move } from '../Alg-3ed1d42c.js';
5
5
 
6
6
  declare function enableDebugLogging(enable: boolean): void;
7
7
 
@@ -153,4 +153,4 @@ type BluetoothTimer = GanTimer;
153
153
  /** @category Timers */
154
154
  declare function connectSmartTimer(options?: BluetoothConnectOptions): Promise<BluetoothTimer>;
155
155
 
156
- export { BluetoothRobot, BluetoothTimer, GanCube, GiiKERCube, GoCube, KeyboardPuzzle, connectSmartPuzzle, connectSmartRobot, connectSmartTimer, debugKeyboardConnect, enableDebugLogging };
156
+ export { BluetoothPuzzle, BluetoothRobot, BluetoothTimer, GanCube, GiiKERCube, GoCube, KeyboardPuzzle, connectSmartPuzzle, connectSmartRobot, connectSmartTimer, debugKeyboardConnect, enableDebugLogging };
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  binaryComponentsToReid3x3x3,
3
3
  twizzleBinaryToBinaryComponents
4
- } from "../chunks/chunk-NB6OOT2E.js";
4
+ } from "../chunks/chunk-NS47A66S.js";
5
5
  import {
6
6
  cube3x3x3,
7
7
  puzzles
8
- } from "../chunks/chunk-SODS5Y3A.js";
8
+ } from "../chunks/chunk-ZQFNVOD5.js";
9
9
  import {
10
10
  experimental3x3x3KPuzzle
11
- } from "../chunks/chunk-RS62HLA5.js";
11
+ } from "../chunks/chunk-CULFM3I2.js";
12
12
  import {
13
13
  KPattern
14
- } from "../chunks/chunk-QF4HTZYW.js";
14
+ } from "../chunks/chunk-VIEFLN2D.js";
15
15
  import {
16
16
  Alg,
17
17
  Move,