cubing 0.25.14 → 0.26.2

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 (414) hide show
  1. package/dist/esm/.DS_Store +0 -0
  2. package/dist/esm/bluetooth/index.js +1 -1
  3. package/dist/esm/{chunk-AT7N3AOZ.js → chunk-3ADPLDWG.js} +17 -9
  4. package/dist/esm/chunk-3ADPLDWG.js.map +7 -0
  5. package/dist/esm/{chunk-KIVNYU5K.js → chunk-3NFDCQI2.js} +5 -40
  6. package/dist/esm/chunk-3NFDCQI2.js.map +7 -0
  7. package/dist/esm/{chunk-XA4PIJ26.js → chunk-4OCHKVLJ.js} +6 -6
  8. package/dist/esm/{chunk-XA4PIJ26.js.map → chunk-4OCHKVLJ.js.map} +2 -2
  9. package/dist/esm/{chunk-QYQUT5N5.js → chunk-ESSOEWR6.js} +14 -14
  10. package/dist/esm/{chunk-QYQUT5N5.js.map → chunk-ESSOEWR6.js.map} +2 -2
  11. package/dist/esm/{chunk-EQO3X3CR.js → chunk-RGEST6KF.js} +10 -8
  12. package/dist/esm/chunk-RGEST6KF.js.map +7 -0
  13. package/dist/esm/chunk-YBDBUTYE.js +42 -0
  14. package/dist/esm/chunk-YBDBUTYE.js.map +7 -0
  15. package/dist/esm/puzzle-geometry/index.js +5 -1
  16. package/dist/esm/puzzles/index.js +1 -1
  17. package/dist/esm/{3x3x3.kpuzzle.svg-5U7LUACF.js → puzzles-dynamic-3x3x3-NB2PEZTV.js} +115 -4
  18. package/dist/esm/puzzles-dynamic-3x3x3-NB2PEZTV.js.map +7 -0
  19. package/dist/esm/puzzles-dynamic-side-events-CXNWDLKD.js +1855 -0
  20. package/dist/esm/puzzles-dynamic-side-events-CXNWDLKD.js.map +7 -0
  21. package/dist/esm/puzzles-dynamic-unofficial-CKTRIKMY.js +399 -0
  22. package/dist/esm/puzzles-dynamic-unofficial-CKTRIKMY.js.map +7 -0
  23. package/dist/esm/scramble/index.js +5 -4
  24. package/dist/esm/search/index.js +6 -5
  25. package/dist/esm/{chunk-ZII44VO5.js → search-dynamic-sgs-side-events-ZDPMZ4Y7.js} +320 -6
  26. package/dist/esm/search-dynamic-sgs-side-events-ZDPMZ4Y7.js.map +7 -0
  27. package/dist/esm/{fto.dynamic-SV2AUQBH.js → search-dynamic-sgs-unofficial-RAGEBTDP.js} +562 -9
  28. package/dist/esm/search-dynamic-sgs-unofficial-RAGEBTDP.js.map +7 -0
  29. package/dist/esm/{3x3x3-min2phase-UBW46KDU.js → search-dynamic-solve-3x3x3-K4TG7P3X.js} +1 -1
  30. package/dist/esm/{3x3x3-min2phase-UBW46KDU.js.map → search-dynamic-solve-3x3x3-K4TG7P3X.js.map} +0 -0
  31. package/dist/esm/{444-solver-EWF7OHAQ.js → search-dynamic-solve-4x4x4-W455FUFG.js} +4 -3
  32. package/dist/esm/{444-solver-EWF7OHAQ.js.map → search-dynamic-solve-4x4x4-W455FUFG.js.map} +1 -1
  33. package/dist/esm/{fto-solver-QFOR6LKK.js → search-dynamic-solve-fto-ZM45FTCO.js} +1 -1
  34. package/dist/esm/{fto-solver-QFOR6LKK.js.map → search-dynamic-solve-fto-ZM45FTCO.js.map} +0 -0
  35. package/dist/esm/{kilosolver-QN5CWSPC.js → search-dynamic-solve-kilominx-PAW6HKT5.js} +1 -3
  36. package/dist/esm/{kilosolver-QN5CWSPC.js.map → search-dynamic-solve-kilominx-PAW6HKT5.js.map} +1 -1
  37. package/dist/esm/{master_tetraminx-solver-4JXXIBVR.js → search-dynamic-solve-master_tetraminx-3R2CJUKW.js} +1 -3
  38. package/dist/esm/{master_tetraminx-solver-4JXXIBVR.js.map → search-dynamic-solve-master_tetraminx-3R2CJUKW.js.map} +1 -1
  39. package/dist/esm/{sq1-solver-E4EE73CO.js → search-dynamic-solve-sq1-RS5HN6AH.js} +1 -1
  40. package/dist/esm/{sq1-solver-E4EE73CO.js.map → search-dynamic-solve-sq1-RS5HN6AH.js.map} +0 -0
  41. package/dist/esm/{worker-inside-generated-string-NGQ24QDC.js → search-worker-inside-generated-string-VBEHCGJ6.js} +1335 -1335
  42. package/dist/esm/search-worker-inside-generated-string-VBEHCGJ6.js.map +7 -0
  43. package/dist/esm/{search-worker-js-entry-Z6HIC5BI.js → search-worker-js-entry-5IIKIMTU.js} +45 -60
  44. package/dist/esm/search-worker-js-entry-5IIKIMTU.js.map +7 -0
  45. package/dist/esm/{search-worker-ts-entry-PS4HBLXL.js → search-worker-ts-entry-BV3J54MW.js} +2 -2
  46. package/dist/esm/{search-worker-ts-entry-PS4HBLXL.js.map → search-worker-ts-entry-BV3J54MW.js.map} +0 -0
  47. package/dist/esm/twisty/index.js +71 -15
  48. package/dist/esm/twisty/index.js.map +3 -3
  49. package/dist/esm/{3d-dynamic-BOMV4HRU.js → twisty-dynamic-3d-KFFJZNMZ.js} +6 -5
  50. package/dist/esm/{3d-dynamic-BOMV4HRU.js.map → twisty-dynamic-3d-KFFJZNMZ.js.map} +2 -2
  51. package/dist/types/Alg-6f3dc52c.d.ts +278 -0
  52. package/dist/types/KPuzzleDefinition-121e85a8.d.ts +353 -0
  53. package/dist/types/KState-73482114.d.ts +70 -0
  54. package/dist/types/PuzzleLoader-9243f44d.d.ts +1177 -0
  55. package/dist/types/alg/index.d.ts +49 -13
  56. package/dist/types/bluetooth/index.d.ts +147 -11
  57. package/dist/types/{bluetooth/smart-puzzle/bluetooth-puzzle.d.ts → bluetooth-puzzle-679d8ca3.d.ts} +14 -8
  58. package/dist/types/kpuzzle/index.d.ts +8 -6
  59. package/dist/types/notation/index.d.ts +8 -2
  60. package/dist/types/outside-f7ba9c00.d.ts +22 -0
  61. package/dist/types/parse-6d363160.d.ts +9 -0
  62. package/dist/types/protocol/index.d.ts +26 -4
  63. package/dist/types/puzzle-geometry/index.d.ts +7 -6
  64. package/dist/types/puzzles/index.d.ts +31 -12
  65. package/dist/types/scramble/index.d.ts +4 -1
  66. package/dist/types/search/index.d.ts +8 -2
  67. package/dist/types/stream/index.d.ts +57 -3
  68. package/dist/types/twisty/index.d.ts +58 -16
  69. package/package.json +7 -4
  70. package/dist/esm/2x2x2.kpuzzle.json-BHTFIME6.js +0 -96
  71. package/dist/esm/2x2x2.kpuzzle.json-BHTFIME6.js.map +0 -7
  72. package/dist/esm/2x2x2.kpuzzle.svg-CYX37VBY.js +0 -52
  73. package/dist/esm/2x2x2.kpuzzle.svg-CYX37VBY.js.map +0 -7
  74. package/dist/esm/2x2x2.sgs.json-EFZFDZSW.js +0 -122
  75. package/dist/esm/2x2x2.sgs.json-EFZFDZSW.js.map +0 -7
  76. package/dist/esm/3x3x3-ll.kpuzzle.svg-KZNSV76X.js +0 -115
  77. package/dist/esm/3x3x3-ll.kpuzzle.svg-KZNSV76X.js.map +0 -7
  78. package/dist/esm/3x3x3.kpuzzle.svg-5U7LUACF.js.map +0 -7
  79. package/dist/esm/chunk-74BT3ZNM.js +0 -122
  80. package/dist/esm/chunk-74BT3ZNM.js.map +0 -7
  81. package/dist/esm/chunk-AT7N3AOZ.js.map +0 -7
  82. package/dist/esm/chunk-AWBXZ43I.js +0 -103
  83. package/dist/esm/chunk-AWBXZ43I.js.map +0 -7
  84. package/dist/esm/chunk-EQO3X3CR.js.map +0 -7
  85. package/dist/esm/chunk-KIVNYU5K.js.map +0 -7
  86. package/dist/esm/chunk-ZII44VO5.js.map +0 -7
  87. package/dist/esm/clock.kpuzzle.json-PYHONPBY.js +0 -714
  88. package/dist/esm/clock.kpuzzle.json-PYHONPBY.js.map +0 -7
  89. package/dist/esm/clock.kpuzzle.svg-JSRDCSQF.js +0 -376
  90. package/dist/esm/clock.kpuzzle.svg-JSRDCSQF.js.map +0 -7
  91. package/dist/esm/fto.dynamic-SV2AUQBH.js.map +0 -7
  92. package/dist/esm/fto.kpuzzle.svg-H2RJX6UR.js +0 -102
  93. package/dist/esm/fto.kpuzzle.svg-H2RJX6UR.js.map +0 -7
  94. package/dist/esm/kilominx.kpuzzle.svg-ZLRTRUTM.js +0 -83
  95. package/dist/esm/kilominx.kpuzzle.svg-ZLRTRUTM.js.map +0 -7
  96. package/dist/esm/megaminx.sgs.json-2JJOMDGZ.js +0 -16
  97. package/dist/esm/megaminx.sgs.json-2JJOMDGZ.js.map +0 -7
  98. package/dist/esm/pyraminx.kpuzzle.svg-UHDZCBET.js +0 -95
  99. package/dist/esm/pyraminx.kpuzzle.svg-UHDZCBET.js.map +0 -7
  100. package/dist/esm/pyraminx.sgs.json-53OXF5I4.js +0 -14
  101. package/dist/esm/pyraminx.sgs.json-53OXF5I4.js.map +0 -7
  102. package/dist/esm/redi_cube-6LJBQEBD.js +0 -565
  103. package/dist/esm/redi_cube-6LJBQEBD.js.map +0 -7
  104. package/dist/esm/redi_cube.kpuzzle.json-43CP47Z6.js +0 -66
  105. package/dist/esm/redi_cube.kpuzzle.json-43CP47Z6.js.map +0 -7
  106. package/dist/esm/redi_cube.kpuzzle.svg-3DWDYE3O.js +0 -160
  107. package/dist/esm/redi_cube.kpuzzle.svg-3DWDYE3O.js.map +0 -7
  108. package/dist/esm/search-worker-js-entry-Z6HIC5BI.js.map +0 -7
  109. package/dist/esm/skewb.sgs.json-3EF2HRKU.js +0 -16
  110. package/dist/esm/skewb.sgs.json-3EF2HRKU.js.map +0 -7
  111. package/dist/esm/sq1-hyperorbit.kpuzzle.json-AMXAFQCM.js +0 -244
  112. package/dist/esm/sq1-hyperorbit.kpuzzle.json-AMXAFQCM.js.map +0 -7
  113. package/dist/esm/sq1-hyperorbit.kpuzzle.svg-MNHJTJ6V.js +0 -302
  114. package/dist/esm/sq1-hyperorbit.kpuzzle.svg-MNHJTJ6V.js.map +0 -7
  115. package/dist/esm/worker-inside-generated-string-NGQ24QDC.js.map +0 -7
  116. package/dist/types/alg/Alg.d.ts +0 -118
  117. package/dist/types/alg/Alg.spec.d.ts +0 -1
  118. package/dist/types/alg/AlgBuilder.d.ts +0 -11
  119. package/dist/types/alg/Serializable.d.ts +0 -0
  120. package/dist/types/alg/common.d.ts +0 -19
  121. package/dist/types/alg/debug.d.ts +0 -4
  122. package/dist/types/alg/example.d.ts +0 -14
  123. package/dist/types/alg/is.d.ts +0 -4
  124. package/dist/types/alg/iteration.d.ts +0 -9
  125. package/dist/types/alg/keyboard.d.ts +0 -2
  126. package/dist/types/alg/limits.d.ts +0 -4
  127. package/dist/types/alg/operation.d.ts +0 -6
  128. package/dist/types/alg/operation.spec.d.ts +0 -1
  129. package/dist/types/alg/parse.d.ts +0 -12
  130. package/dist/types/alg/parse.spec.d.ts +0 -1
  131. package/dist/types/alg/test/alg-comparison.d.ts +0 -10
  132. package/dist/types/alg/test/alg.spec.d.ts +0 -1
  133. package/dist/types/alg/traversal.d.ts +0 -39
  134. package/dist/types/alg/units/QuantumWithAmount.d.ts +0 -11
  135. package/dist/types/alg/units/Unit.d.ts +0 -9
  136. package/dist/types/alg/units/containers/Commutator.d.ts +0 -14
  137. package/dist/types/alg/units/containers/Conjugate.d.ts +0 -14
  138. package/dist/types/alg/units/containers/Grouping.d.ts +0 -19
  139. package/dist/types/alg/units/index.d.ts +0 -8
  140. package/dist/types/alg/units/leaves/LineComment.d.ts +0 -12
  141. package/dist/types/alg/units/leaves/LineComment.spec.d.ts +0 -1
  142. package/dist/types/alg/units/leaves/Move.d.ts +0 -50
  143. package/dist/types/alg/units/leaves/Move.spec.d.ts +0 -1
  144. package/dist/types/alg/units/leaves/Newline.d.ts +0 -9
  145. package/dist/types/alg/units/leaves/Pause.d.ts +0 -9
  146. package/dist/types/alg/url.d.ts +0 -11
  147. package/dist/types/alg/url.spec.d.ts +0 -1
  148. package/dist/types/alg/validation.d.ts +0 -19
  149. package/dist/types/alg/warnOnce.d.ts +0 -1
  150. package/dist/types/bluetooth/connect/index.d.ts +0 -6
  151. package/dist/types/bluetooth/debug.d.ts +0 -2
  152. package/dist/types/bluetooth/keyboard.d.ts +0 -14
  153. package/dist/types/bluetooth/smart-puzzle/Heykube.d.ts +0 -17
  154. package/dist/types/bluetooth/smart-puzzle/connect.d.ts +0 -3
  155. package/dist/types/bluetooth/smart-puzzle/endianness.d.ts +0 -1
  156. package/dist/types/bluetooth/smart-puzzle/gan.d.ts +0 -34
  157. package/dist/types/bluetooth/smart-puzzle/giiker.d.ts +0 -21
  158. package/dist/types/bluetooth/smart-puzzle/giiker.spec.d.ts +0 -4
  159. package/dist/types/bluetooth/smart-puzzle/gocube.d.ts +0 -22
  160. package/dist/types/bluetooth/smart-robot/GanRobot.d.ts +0 -35
  161. package/dist/types/bluetooth/smart-robot/index.d.ts +0 -4
  162. package/dist/types/bluetooth/smart-timer/GanTimer.d.ts +0 -19
  163. package/dist/types/bluetooth/smart-timer/index.d.ts +0 -4
  164. package/dist/types/bluetooth/transformer.d.ts +0 -9
  165. package/dist/types/cubing.bundle-global.d.ts +0 -1
  166. package/dist/types/cubing.bundle-global.exports.d.ts +0 -24
  167. package/dist/types/kpuzzle/3x3x3/3x3x3.kpuzzle.json.d.ts +0 -2
  168. package/dist/types/kpuzzle/3x3x3/3x3x3.kpuzzle.json.spec.d.ts +0 -1
  169. package/dist/types/kpuzzle/3x3x3/puzzle-orientation.d.ts +0 -5
  170. package/dist/types/kpuzzle/KPuzzle.d.ts +0 -30
  171. package/dist/types/kpuzzle/KPuzzleDefinition.d.ts +0 -21
  172. package/dist/types/kpuzzle/KState.d.ts +0 -23
  173. package/dist/types/kpuzzle/KTransformation.d.ts +0 -24
  174. package/dist/types/kpuzzle/calculate.d.ts +0 -16
  175. package/dist/types/kpuzzle/combine.d.ts +0 -3
  176. package/dist/types/kpuzzle/construct.d.ts +0 -5
  177. package/dist/types/notation/CountAnimatedLeaves.d.ts +0 -2
  178. package/dist/types/notation/CountMoves.d.ts +0 -3
  179. package/dist/types/protocol/binary/binary3x3x3.d.ts +0 -19
  180. package/dist/types/protocol/binary/binary3x3x3.spec.d.ts +0 -1
  181. package/dist/types/protocol/binary/hex.d.ts +0 -2
  182. package/dist/types/protocol/binary/hex.spec.d.ts +0 -1
  183. package/dist/types/protocol/binary/orbit-indexing.d.ts +0 -5
  184. package/dist/types/protocol/binary/orbit-indexing.spec.d.ts +0 -1
  185. package/dist/types/protocol/binary/puzzle-orientation.d.ts +0 -4
  186. package/dist/types/puzzle-geometry/FaceNameSwizzler.d.ts +0 -12
  187. package/dist/types/puzzle-geometry/Options.d.ts +0 -45
  188. package/dist/types/puzzle-geometry/PGPuzzles.d.ts +0 -5
  189. package/dist/types/puzzle-geometry/PGPuzzles.spec.d.ts +0 -4
  190. package/dist/types/puzzle-geometry/Perm.d.ts +0 -18
  191. package/dist/types/puzzle-geometry/PermOriSet.d.ts +0 -71
  192. package/dist/types/puzzle-geometry/PlatonicGenerator.d.ts +0 -10
  193. package/dist/types/puzzle-geometry/PuzzleGeometry.d.ts +0 -176
  194. package/dist/types/puzzle-geometry/Quat.d.ts +0 -43
  195. package/dist/types/puzzle-geometry/Quat.spec.d.ts +0 -1
  196. package/dist/types/puzzle-geometry/SchreierSims.d.ts +0 -2
  197. package/dist/types/puzzle-geometry/notation-mapping/FTONotationMapper.d.ts +0 -10
  198. package/dist/types/puzzle-geometry/notation-mapping/FaceRenamingMapper.d.ts +0 -12
  199. package/dist/types/puzzle-geometry/notation-mapping/MegaminxScramblingNotationMapper.d.ts +0 -8
  200. package/dist/types/puzzle-geometry/notation-mapping/NotationMapper.d.ts +0 -7
  201. package/dist/types/puzzle-geometry/notation-mapping/NullMapper.d.ts +0 -6
  202. package/dist/types/puzzle-geometry/notation-mapping/NxNxNCubeMapper.d.ts +0 -8
  203. package/dist/types/puzzle-geometry/notation-mapping/PyraminxNotationMapper.d.ts +0 -15
  204. package/dist/types/puzzle-geometry/notation-mapping/SkewbNotationMapper.d.ts +0 -9
  205. package/dist/types/puzzle-geometry/notation-mapping/index.d.ts +0 -8
  206. package/dist/types/puzzle-geometry/orientcenters.spec.d.ts +0 -1
  207. package/dist/types/puzzles/PuzzleLoader.d.ts +0 -18
  208. package/dist/types/puzzles/async/async-pg3d.d.ts +0 -33
  209. package/dist/types/puzzles/async/lazy-cached.d.ts +0 -1
  210. package/dist/types/puzzles/customPGPuzzleLoader.d.ts +0 -11
  211. package/dist/types/puzzles/events.d.ts +0 -8
  212. package/dist/types/puzzles/implementations/2x2x2/2x2x2.kpuzzle.json.d.ts +0 -2
  213. package/dist/types/puzzles/implementations/2x2x2/2x2x2.kpuzzle.svg.d.ts +0 -2
  214. package/dist/types/puzzles/implementations/2x2x2/index.d.ts +0 -2
  215. package/dist/types/puzzles/implementations/3x3x3/3x3x3-ll.kpuzzle.svg.d.ts +0 -2
  216. package/dist/types/puzzles/implementations/3x3x3/3x3x3.kpuzzle.svg.d.ts +0 -2
  217. package/dist/types/puzzles/implementations/3x3x3/index.d.ts +0 -2
  218. package/dist/types/puzzles/implementations/clock/clock.kpuzzle.json.d.ts +0 -2
  219. package/dist/types/puzzles/implementations/clock/clock.kpuzzle.svg.d.ts +0 -2
  220. package/dist/types/puzzles/implementations/clock/index.d.ts +0 -2
  221. package/dist/types/puzzles/implementations/fto/fto.kpuzzle.svg.d.ts +0 -1
  222. package/dist/types/puzzles/implementations/fto/index.d.ts +0 -12
  223. package/dist/types/puzzles/implementations/kilominx/index.d.ts +0 -2
  224. package/dist/types/puzzles/implementations/kilominx/kilominx.kpuzzle.svg.d.ts +0 -1
  225. package/dist/types/puzzles/implementations/megaminx/index.d.ts +0 -11
  226. package/dist/types/puzzles/implementations/pyraminx/index.d.ts +0 -7
  227. package/dist/types/puzzles/implementations/pyraminx/pyraminx.kpuzzle.json.d.ts +0 -2
  228. package/dist/types/puzzles/implementations/pyraminx/pyraminx.kpuzzle.svg.d.ts +0 -2
  229. package/dist/types/puzzles/implementations/redi-cube/index.d.ts +0 -2
  230. package/dist/types/puzzles/implementations/redi-cube/redi_cube.kpuzzle.json.d.ts +0 -2
  231. package/dist/types/puzzles/implementations/redi-cube/redi_cube.kpuzzle.svg.d.ts +0 -1
  232. package/dist/types/puzzles/implementations/square1/index.d.ts +0 -2
  233. package/dist/types/puzzles/implementations/square1/sq1-hyperorbit.kpuzzle.json.d.ts +0 -2
  234. package/dist/types/puzzles/implementations/square1/sq1-hyperorbit.kpuzzle.svg.d.ts +0 -2
  235. package/dist/types/puzzles/stickerings/appearance.d.ts +0 -50
  236. package/dist/types/puzzles/stickerings/cube-stickerings.d.ts +0 -5
  237. package/dist/types/puzzles/stickerings/fto-stickerings.d.ts +0 -5
  238. package/dist/types/puzzles/stickerings/global-custom-stickering-hack.d.ts +0 -2
  239. package/dist/types/puzzles/stickerings/megaminx-stickerings.d.ts +0 -5
  240. package/dist/types/search/inside/api.d.ts +0 -21
  241. package/dist/types/search/inside/api.spec.d.ts +0 -1
  242. package/dist/types/search/inside/inside-worker.d.ts +0 -2
  243. package/dist/types/search/inside/search-worker-js-entry.d.ts +0 -1
  244. package/dist/types/search/inside/search-worker-ts-entry-path-getter.d.ts +0 -1
  245. package/dist/types/search/inside/search-worker-ts-entry.d.ts +0 -1
  246. package/dist/types/search/inside/solve/addOrientationSuffix.d.ts +0 -2
  247. package/dist/types/search/inside/solve/parseSGS.d.ts +0 -18
  248. package/dist/types/search/inside/solve/puzzles/2x2x2.d.ts +0 -6
  249. package/dist/types/search/inside/solve/puzzles/2x2x2.sgs.json.d.ts +0 -3
  250. package/dist/types/search/inside/solve/puzzles/3x3x3/convert.d.ts +0 -2
  251. package/dist/types/search/inside/solve/puzzles/3x3x3/filter.d.ts +0 -4
  252. package/dist/types/search/inside/solve/puzzles/3x3x3/index.d.ts +0 -8
  253. package/dist/types/search/inside/solve/puzzles/3x3x3/legacy-sgs.d.ts +0 -1
  254. package/dist/types/search/inside/solve/puzzles/3x3x3-inefficient.sgs.json.d.ts +0 -3
  255. package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts +0 -4
  256. package/dist/types/search/inside/solve/puzzles/5x5x5.d.ts +0 -2
  257. package/dist/types/search/inside/solve/puzzles/big-cubes.d.ts +0 -2
  258. package/dist/types/search/inside/solve/puzzles/clock.d.ts +0 -1
  259. package/dist/types/search/inside/solve/puzzles/fto.d.ts +0 -5
  260. package/dist/types/search/inside/solve/puzzles/fto.dynamic.d.ts +0 -3
  261. package/dist/types/search/inside/solve/puzzles/kilominx.d.ts +0 -2
  262. package/dist/types/search/inside/solve/puzzles/master_tetraminx.d.ts +0 -2
  263. package/dist/types/search/inside/solve/puzzles/megaminx.d.ts +0 -4
  264. package/dist/types/search/inside/solve/puzzles/megaminx.sgs.json.d.ts +0 -5
  265. package/dist/types/search/inside/solve/puzzles/pyraminx.d.ts +0 -6
  266. package/dist/types/search/inside/solve/puzzles/pyraminx.sgs.json.d.ts +0 -3
  267. package/dist/types/search/inside/solve/puzzles/redi_cube.d.ts +0 -2
  268. package/dist/types/search/inside/solve/puzzles/sgs-defs.spec.d.ts +0 -1
  269. package/dist/types/search/inside/solve/puzzles/skewb.d.ts +0 -6
  270. package/dist/types/search/inside/solve/puzzles/skewb.sgs.json.d.ts +0 -5
  271. package/dist/types/search/inside/solve/puzzles/sq1.d.ts +0 -2
  272. package/dist/types/search/inside/solve/puzzles/wca-minx.d.ts +0 -1
  273. package/dist/types/search/inside/solve/tremble.d.ts +0 -13
  274. package/dist/types/search/inside/worker-guard.d.ts +0 -3
  275. package/dist/types/search/instantiator.d.ts +0 -4
  276. package/dist/types/search/outside.d.ts +0 -17
  277. package/dist/types/search/worker-inside-generated-string.d.ts +0 -1
  278. package/dist/types/stream/process/ReorientedStream.d.ts +0 -20
  279. package/dist/types/stream/proxy-event.d.ts +0 -13
  280. package/dist/types/stream/twizzle/TwizzleStream.d.ts +0 -18
  281. package/dist/types/stream/twizzle/stream-types.d.ts +0 -32
  282. package/dist/types/stream/websocket-proxy.d.ts +0 -21
  283. package/dist/types/twisty/controllers/AnimationTypes.d.ts +0 -32
  284. package/dist/types/twisty/controllers/RenderScheduler.d.ts +0 -12
  285. package/dist/types/twisty/controllers/TwistyAnimationController.d.ts +0 -36
  286. package/dist/types/twisty/controllers/TwistyPlayerController.d.ts +0 -15
  287. package/dist/types/twisty/controllers/easing.d.ts +0 -1
  288. package/dist/types/twisty/controllers/indexer/AlgDuration.d.ts +0 -17
  289. package/dist/types/twisty/controllers/indexer/AlgIndexer.d.ts +0 -36
  290. package/dist/types/twisty/controllers/indexer/SimpleAlgIndexer.d.ts +0 -19
  291. package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts +0 -22
  292. package/dist/types/twisty/controllers/indexer/simultaneous-moves/simul-moves.d.ts +0 -25
  293. package/dist/types/twisty/controllers/indexer/tree/AlgWalker.d.ts +0 -63
  294. package/dist/types/twisty/controllers/indexer/tree/TreeAlgIndexer.d.ts +0 -20
  295. package/dist/types/twisty/controllers/indexer/tree/chunkAlgs.d.ts +0 -2
  296. package/dist/types/twisty/controllers/stream/timeline-move-calculation-draft.d.ts +0 -15
  297. package/dist/types/twisty/heavy-code-imports/3d.d.ts +0 -2
  298. package/dist/types/twisty/heavy-code-imports/dynamic-entries/3d-dynamic.d.ts +0 -10
  299. package/dist/types/twisty/model/PromiseFreshener.d.ts +0 -13
  300. package/dist/types/twisty/model/TwistyPlayerModel.d.ts +0 -85
  301. package/dist/types/twisty/model/TwistySceneModel.d.ts +0 -27
  302. package/dist/types/twisty/model/UserVisibleErrorTracker.d.ts +0 -10
  303. package/dist/types/twisty/model/helpers.d.ts +0 -4
  304. package/dist/types/twisty/model/props/TwistyProp.d.ts +0 -59
  305. package/dist/types/twisty/model/props/TwistyProp.spec.d.ts +0 -4
  306. package/dist/types/twisty/model/props/TwistyPropDebugger.d.ts +0 -26
  307. package/dist/types/twisty/model/props/general/ArbitraryStringProp.d.ts +0 -4
  308. package/dist/types/twisty/model/props/general/URLProp.d.ts +0 -5
  309. package/dist/types/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts +0 -5
  310. package/dist/types/twisty/model/props/puzzle/display/HintFaceletProp.d.ts +0 -10
  311. package/dist/types/twisty/model/props/puzzle/display/SpriteProp.d.ts +0 -9
  312. package/dist/types/twisty/model/props/puzzle/display/StickeringProp.d.ts +0 -50
  313. package/dist/types/twisty/model/props/puzzle/state/AlgProp.d.ts +0 -26
  314. package/dist/types/twisty/model/props/puzzle/state/AlgTransformationProp.d.ts +0 -11
  315. package/dist/types/twisty/model/props/puzzle/state/AnchorTransformationProp.d.ts +0 -14
  316. package/dist/types/twisty/model/props/puzzle/state/CatchUpMoveProp.d.ts +0 -10
  317. package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts +0 -16
  318. package/dist/types/twisty/model/props/puzzle/state/CurrentMoveInfoProp.d.ts +0 -13
  319. package/dist/types/twisty/model/props/puzzle/state/CurrentStateProp.d.ts +0 -14
  320. package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts +0 -19
  321. package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorRequestProp.d.ts +0 -11
  322. package/dist/types/twisty/model/props/puzzle/state/IndexerProp.d.ts +0 -14
  323. package/dist/types/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts +0 -11
  324. package/dist/types/twisty/model/props/puzzle/state/MovePressInputProp.d.ts +0 -10
  325. package/dist/types/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts +0 -9
  326. package/dist/types/twisty/model/props/puzzle/state/PuzzleAlgProp.d.ts +0 -13
  327. package/dist/types/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts +0 -9
  328. package/dist/types/twisty/model/props/puzzle/state/SetupTransformationProp.d.ts +0 -5
  329. package/dist/types/twisty/model/props/puzzle/structure/KPuzzleProp.d.ts +0 -10
  330. package/dist/types/twisty/model/props/puzzle/structure/PuzzleDescriptionProp.d.ts +0 -5
  331. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts +0 -10
  332. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts +0 -25
  333. package/dist/types/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts +0 -12
  334. package/dist/types/twisty/model/props/timeline/CoarseTimelineInfoProp.d.ts +0 -24
  335. package/dist/types/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts +0 -21
  336. package/dist/types/twisty/model/props/timeline/PlayingInfoProp.d.ts +0 -14
  337. package/dist/types/twisty/model/props/timeline/TempoScaleProp.d.ts +0 -5
  338. package/dist/types/twisty/model/props/timeline/TimestampRequestProp.d.ts +0 -15
  339. package/dist/types/twisty/model/props/viewer/BackViewProp.d.ts +0 -11
  340. package/dist/types/twisty/model/props/viewer/BackgroundProp.d.ts +0 -10
  341. package/dist/types/twisty/model/props/viewer/ButtonAppearanceProp.d.ts +0 -21
  342. package/dist/types/twisty/model/props/viewer/ControlPanelProp.d.ts +0 -10
  343. package/dist/types/twisty/model/props/viewer/LatitudeLimit.d.ts +0 -5
  344. package/dist/types/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts +0 -28
  345. package/dist/types/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts +0 -14
  346. package/dist/types/twisty/model/props/viewer/TimeRangeProp.d.ts +0 -10
  347. package/dist/types/twisty/model/props/viewer/ViewerLinkProp.d.ts +0 -11
  348. package/dist/types/twisty/model/props/viewer/VisualizationProp.d.ts +0 -12
  349. package/dist/types/twisty/model/props/viewer/VisualizationStrategyProp.d.ts +0 -12
  350. package/dist/types/twisty/views/2D/KPuzzleSVGWrapper.d.ts +0 -17
  351. package/dist/types/twisty/views/2D/Twisty2DPuzzle.css.d.ts +0 -2
  352. package/dist/types/twisty/views/2D/Twisty2DPuzzle.d.ts +0 -27
  353. package/dist/types/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts +0 -15
  354. package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts +0 -19
  355. package/dist/types/twisty/views/3D/DragTracker.d.ts +0 -27
  356. package/dist/types/twisty/views/3D/RendererPool.d.ts +0 -3
  357. package/dist/types/twisty/views/3D/TAU.d.ts +0 -2
  358. package/dist/types/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts +0 -21
  359. package/dist/types/twisty/views/3D/Twisty3DRenderTarget.d.ts +0 -3
  360. package/dist/types/twisty/views/3D/Twisty3DScene.d.ts +0 -14
  361. package/dist/types/twisty/views/3D/Twisty3DSceneWrapper.d.ts +0 -33
  362. package/dist/types/twisty/views/3D/Twisty3DVantage.css.d.ts +0 -2
  363. package/dist/types/twisty/views/3D/Twisty3DVantage.d.ts +0 -36
  364. package/dist/types/twisty/views/3D/TwistyOrbitControls.d.ts +0 -23
  365. package/dist/types/twisty/views/3D/TwistyOrbitControls.spec.d.ts +0 -4
  366. package/dist/types/twisty/views/3D/puzzles/Cube3D.d.ts +0 -58
  367. package/dist/types/twisty/views/3D/puzzles/PG3D.d.ts +0 -64
  368. package/dist/types/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts +0 -5
  369. package/dist/types/twisty/views/ClassListManager.d.ts +0 -10
  370. package/dist/types/twisty/views/ManagedCustomElement.d.ts +0 -19
  371. package/dist/types/twisty/views/TwistyAlgEditor/LeafTokens.d.ts +0 -17
  372. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts +0 -2
  373. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts +0 -40
  374. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.spec.d.ts +0 -4
  375. package/dist/types/twisty/views/TwistyAlgEditor/model.d.ts +0 -60
  376. package/dist/types/twisty/views/TwistyAlgViewer.css.d.ts +0 -2
  377. package/dist/types/twisty/views/TwistyAlgViewer.d.ts +0 -51
  378. package/dist/types/twisty/views/TwistyPlayer.css.d.ts +0 -2
  379. package/dist/types/twisty/views/TwistyPlayer.d.ts +0 -112
  380. package/dist/types/twisty/views/TwistyPlayerSettable.d.ts +0 -79
  381. package/dist/types/twisty/views/TwistyViewerWrapper.css.d.ts +0 -2
  382. package/dist/types/twisty/views/canvas.d.ts +0 -2
  383. package/dist/types/twisty/views/control-panel/TwistyButtons.css.d.ts +0 -3
  384. package/dist/types/twisty/views/control-panel/TwistyButtons.d.ts +0 -32
  385. package/dist/types/twisty/views/control-panel/TwistyScrubber.css.d.ts +0 -2
  386. package/dist/types/twisty/views/control-panel/TwistyScrubber.d.ts +0 -13
  387. package/dist/types/twisty/views/control-panel/webkit-fullscreen.d.ts +0 -14
  388. package/dist/types/twisty/views/document.d.ts +0 -1
  389. package/dist/types/twisty/views/node-custom-element-shims.d.ts +0 -4
  390. package/dist/types/twisty/views/screenshot.d.ts +0 -11
  391. package/dist/types/twisty/views/stream/TwistyStreamSource.css.d.ts +0 -2
  392. package/dist/types/twisty/views/stream/TwistyStreamSource.d.ts +0 -12
  393. package/dist/types/twisty/views/twizzle/TwizzleLink.css.d.ts +0 -2
  394. package/dist/types/twisty/views/twizzle/TwizzleLink.d.ts +0 -11
  395. package/dist/types/twisty/views/twizzle/url-params.d.ts +0 -18
  396. package/dist/types/vendor/comlink-everywhere/inside/index.d.ts +0 -4
  397. package/dist/types/vendor/comlink-everywhere/node-adapter.d.ts +0 -6
  398. package/dist/types/vendor/comlink-everywhere/outside/index.d.ts +0 -5
  399. package/dist/types/vendor/cstimer/src/js/lib/mathlib.d.ts +0 -4
  400. package/dist/types/vendor/cstimer/src/js/scramble/444-solver.d.ts +0 -3
  401. package/dist/types/vendor/min2phase/3x3x3-min2phase.d.ts +0 -2
  402. package/dist/types/vendor/p-lazy/p-lazy.d.ts +0 -9
  403. package/dist/types/vendor/random-uint-below/get-random-values.d.ts +0 -2
  404. package/dist/types/vendor/random-uint-below/index.d.ts +0 -3
  405. package/dist/types/vendor/random-uint-below/random-choice.d.ts +0 -1
  406. package/dist/types/vendor/random-uint-below/random53BitValue.d.ts +0 -1
  407. package/dist/types/vendor/sq12phase/sq1-solver.d.ts +0 -1
  408. package/dist/types/vendor/three/examples/jsm/libs/stats.modified.module.d.ts +0 -32
  409. package/dist/types/vendor/unsafe-raw-aes/unsafe-raw-aes.d.ts +0 -3
  410. package/dist/types/vendor/xyzzy/fto-solver-original.d.ts +0 -148
  411. package/dist/types/vendor/xyzzy/fto-solver.d.ts +0 -1
  412. package/dist/types/vendor/xyzzy/kilosolver.d.ts +0 -2
  413. package/dist/types/vendor/xyzzy/master_tetraminx-solver.d.ts +0 -1
  414. package/dist/types/vendor/xyzzy/redi_cube.d.ts +0 -2
@@ -3,12 +3,13 @@ import {
3
3
  THREEJS,
4
4
  experimentalStickerings,
5
5
  hintFaceletStyles
6
- } from "./chunk-KIVNYU5K.js";
6
+ } from "./chunk-3NFDCQI2.js";
7
+ import "./chunk-YBDBUTYE.js";
7
8
  import {
8
9
  cube3x3x3,
9
10
  getFaceletAppearance,
10
11
  puzzles
11
- } from "./chunk-QYQUT5N5.js";
12
+ } from "./chunk-ESSOEWR6.js";
12
13
  import "./chunk-HD2CMNE4.js";
13
14
  import {
14
15
  Move
@@ -1446,7 +1447,7 @@ isValidMove_fn = function(move) {
1446
1447
  }
1447
1448
  };
1448
1449
 
1449
- // src/cubing/twisty/heavy-code-imports/dynamic-entries/3d-dynamic.ts
1450
+ // src/cubing/twisty/heavy-code-imports/dynamic-entries/twisty-dynamic-3d.ts
1450
1451
  import * as T3I from "three";
1451
1452
 
1452
1453
  // src/cubing/twisty/views/3D/Twisty3DScene.ts
@@ -1480,7 +1481,7 @@ var Twisty3DScene = class {
1480
1481
  }
1481
1482
  };
1482
1483
 
1483
- // src/cubing/twisty/heavy-code-imports/dynamic-entries/3d-dynamic.ts
1484
+ // src/cubing/twisty/heavy-code-imports/dynamic-entries/twisty-dynamic-3d.ts
1484
1485
  async function cube3DShim(options) {
1485
1486
  const renderCallbackShim = () => {
1486
1487
  };
@@ -1499,4 +1500,4 @@ export {
1499
1500
  cube3DShim,
1500
1501
  pg3dShim
1501
1502
  };
1502
- //# sourceMappingURL=3d-dynamic-BOMV4HRU.js.map
1503
+ //# sourceMappingURL=twisty-dynamic-3d-KFFJZNMZ.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/cubing/twisty/views/3D/puzzles/Cube3D.ts", "../../src/cubing/twisty/controllers/easing.ts", "../../src/cubing/twisty/views/3D/puzzles/PG3D.ts", "../../src/cubing/twisty/heavy-code-imports/dynamic-entries/3d-dynamic.ts", "../../src/cubing/twisty/views/3D/Twisty3DScene.ts"],
3
+ "sources": ["../../src/cubing/twisty/views/3D/puzzles/Cube3D.ts", "../../src/cubing/twisty/controllers/easing.ts", "../../src/cubing/twisty/views/3D/puzzles/PG3D.ts", "../../src/cubing/twisty/heavy-code-imports/dynamic-entries/twisty-dynamic-3d.ts", "../../src/cubing/twisty/views/3D/Twisty3DScene.ts"],
4
4
  "sourcesContent": ["import {\n BackSide,\n BoxGeometry,\n BufferAttribute,\n BufferGeometry,\n DoubleSide,\n Euler,\n Group,\n Matrix4,\n Mesh,\n MeshBasicMaterial,\n Object3D,\n Quaternion,\n Texture,\n TextureLoader,\n Vector2,\n Vector3,\n} from \"three\";\nimport type { ExperimentalStickering } from \"../../..\";\nimport type { KPuzzle } from \"../../../../kpuzzle\";\nimport { puzzles } from \"../../../../puzzles\";\nimport type {\n FaceletMeshAppearance,\n PuzzleAppearance,\n} from \"../../../../puzzles/stickerings/appearance\";\nimport type { PuzzlePosition } from \"../../../controllers/AnimationTypes\";\nimport { smootherStep } from \"../../../controllers/easing\";\nimport {\n HintFaceletStyle,\n hintFaceletStyles,\n} from \"../../../model/props/puzzle/display/HintFaceletProp\";\nimport { experimentalStickerings } from \"../../../model/props/puzzle/display/StickeringProp\";\nimport { TAU } from \"../TAU\";\nimport type { Twisty3DPuzzle } from \"./Twisty3DPuzzle\";\n\nconst svgLoader = new TextureLoader();\n\nconst ignoredMaterial = new MeshBasicMaterial({\n color: 0x444444,\n side: DoubleSide,\n});\n\nconst ignoredMaterialHint = new MeshBasicMaterial({\n color: 0xcccccc,\n side: BackSide,\n transparent: true,\n opacity: 0.75,\n});\n\nconst invisibleMaterial = new MeshBasicMaterial({\n visible: false,\n});\n\nconst orientedMaterial = new MeshBasicMaterial({\n color: 0x44ddcc,\n});\n\nconst orientedMaterialHint = new MeshBasicMaterial({\n color: 0x44ddcc,\n side: BackSide,\n transparent: true,\n opacity: 0.5,\n});\n\ninterface MaterialMap extends Record<FaceletMeshAppearance, MeshBasicMaterial> {\n regular: MeshBasicMaterial;\n dim: MeshBasicMaterial;\n ignored: MeshBasicMaterial;\n invisible: MeshBasicMaterial;\n}\n\nclass AxisInfo {\n public stickerMaterial: MaterialMap;\n public hintStickerMaterial: MaterialMap;\n constructor(\n public vector: Vector3,\n public fromZ: Euler,\n public color: number,\n public dimColor: number,\n public hintOpacityScale: number, // TODO: make this work better across bright *and* dark backgrounds. Maybe tweak sticker compositing settings?\n options?: { hintColor?: number; hintDimColor?: number },\n ) {\n // TODO: Make sticker material single-sided when cubie foundation is opaque?\n this.stickerMaterial = {\n regular: new MeshBasicMaterial({\n color,\n side: DoubleSide,\n }),\n dim: new MeshBasicMaterial({\n color: dimColor,\n side: DoubleSide,\n }),\n oriented: orientedMaterial,\n ignored: ignoredMaterial,\n invisible: invisibleMaterial,\n };\n this.hintStickerMaterial = {\n regular: new MeshBasicMaterial({\n color: options?.hintColor ?? color,\n side: BackSide,\n transparent: true,\n opacity: 0.5 * hintOpacityScale,\n }),\n dim: new MeshBasicMaterial({\n color: options?.hintDimColor ?? dimColor,\n side: BackSide,\n transparent: true,\n opacity: 0.5 * hintOpacityScale,\n }),\n oriented: orientedMaterialHint,\n ignored: ignoredMaterialHint,\n invisible: invisibleMaterial,\n };\n }\n}\n\nconst axesInfo: AxisInfo[] = [\n new AxisInfo(\n new Vector3(0, 1, 0),\n new Euler(-TAU / 4, 0, 0),\n 0xffffff,\n 0xdddddd,\n 1.25,\n ),\n new AxisInfo(\n new Vector3(-1, 0, 0),\n new Euler(0, -TAU / 4, 0),\n 0xff8800,\n 0x884400,\n 1,\n { hintDimColor: 0x996600 },\n ),\n new AxisInfo(\n new Vector3(0, 0, 1),\n new Euler(0, 0, 0),\n 0x00ff00,\n 0x008800,\n 1,\n { hintDimColor: 0x009900 },\n ),\n new AxisInfo(\n new Vector3(1, 0, 0),\n new Euler(0, TAU / 4, 0),\n 0xff0000,\n 0x660000,\n 1,\n { hintDimColor: 0x990000 },\n ),\n new AxisInfo(\n new Vector3(0, 0, -1),\n new Euler(0, TAU / 2, 0),\n 0x0000ff,\n 0x000088,\n 0.75,\n { hintColor: 0x0044ff, hintDimColor: 0x001866 },\n ),\n new AxisInfo(\n new Vector3(0, -1, 0),\n new Euler(TAU / 4, 0, 0),\n 0xffff00,\n 0x888800,\n 1.25,\n { hintDimColor: 0xbbbb00 },\n ),\n];\n\nconst face: { [s: string]: number } = {\n U: 0,\n L: 1,\n F: 2,\n R: 3,\n B: 4,\n D: 5,\n};\n\nconst familyToAxis: { [s: string]: number } = {\n U: face.U,\n u: face.U,\n Uw: face.U,\n Uv: face.U,\n y: face.U,\n L: face.L,\n l: face.L,\n Lw: face.L,\n Lv: face.L,\n M: face.L,\n F: face.F,\n f: face.F,\n Fw: face.F,\n Fv: face.F,\n S: face.F,\n z: face.F,\n R: face.R,\n r: face.R,\n Rw: face.R,\n Rv: face.R,\n x: face.R,\n B: face.B,\n b: face.B,\n Bw: face.B,\n Bv: face.B,\n D: face.D,\n d: face.D,\n Dw: face.D,\n Dv: face.D,\n E: face.D,\n};\n\nconst cubieDimensions = {\n stickerWidth: 0.85,\n stickerElevation: 0.503,\n foundationWidth: 1,\n hintStickerElevation: 1.45,\n};\nconst EXPERIMENTAL_PICTURE_CUBE_HINT_ELEVATION = 2;\n\n/** @deprecated */\nexport function experimentalSetDefaultStickerElevation(\n stickerElevation: number,\n): void {\n cubieDimensions.stickerElevation = stickerElevation;\n}\n\nexport interface Cube3DOptions {\n showMainStickers?: boolean;\n hintFacelets?: HintFaceletStyle;\n showFoundation?: boolean; // TODO: better name\n experimentalStickering?: ExperimentalStickering;\n foundationSprite?: Texture | null;\n hintSprite?: Texture | null;\n}\n\nconst cube3DOptionsDefaults: Cube3DOptions = {\n showMainStickers: true,\n hintFacelets: \"floating\",\n showFoundation: true,\n experimentalStickering: \"full\",\n foundationSprite: null,\n hintSprite: null,\n};\n\n// TODO: Make internal foundation faces one-sided, facing to the outside of the cube.\nconst blackMesh = new MeshBasicMaterial({\n color: 0x000000,\n opacity: 1,\n transparent: true,\n});\n\nconst blackTranslucentMesh = new MeshBasicMaterial({\n color: 0x000000,\n opacity: 0.3,\n transparent: true,\n});\n\nclass CubieDef {\n public matrix: Matrix4;\n public stickerFaces: number[];\n // stickerFaceNames can be e.g. [\"U\", \"F\", \"R\"], \"UFR\" if every face is a single letter.\n constructor(\n public orbit: string,\n stickerFaceNames: string[] | string,\n q: Quaternion,\n ) {\n const individualStickerFaceNames =\n typeof stickerFaceNames === \"string\"\n ? stickerFaceNames.split(\"\")\n : stickerFaceNames;\n this.stickerFaces = individualStickerFaceNames.map((s) => face[s]);\n this.matrix = new Matrix4();\n this.matrix.setPosition(firstPiecePosition[orbit]);\n this.matrix.premultiply(new Matrix4().makeRotationFromQuaternion(q));\n }\n}\n\nfunction t(v: Vector3, t4: number): Quaternion {\n return new Quaternion().setFromAxisAngle(v, (TAU * t4) / 4);\n}\n\nconst r = {\n O: new Vector3(0, 0, 0),\n U: new Vector3(0, -1, 0),\n L: new Vector3(1, 0, 0),\n F: new Vector3(0, 0, -1),\n R: new Vector3(-1, 0, 0),\n B: new Vector3(0, 0, 1),\n D: new Vector3(0, 1, 0),\n};\n\ninterface OrbitIndexed<T> {\n [s: string]: T;\n}\ntype PieceIndexed<T> = OrbitIndexed<T[]>;\n\nconst firstPiecePosition: OrbitIndexed<Vector3> = {\n EDGES: new Vector3(0, 1, 1),\n CORNERS: new Vector3(1, 1, 1),\n CENTERS: new Vector3(0, 1, 0),\n};\nconst orientationRotation: OrbitIndexed<Matrix4[]> = {\n EDGES: [0, 1].map((i) =>\n new Matrix4().makeRotationAxis(\n firstPiecePosition.EDGES.clone().normalize(),\n (-i * TAU) / 2,\n ),\n ),\n CORNERS: [0, 1, 2].map((i) =>\n new Matrix4().makeRotationAxis(\n firstPiecePosition.CORNERS.clone().normalize(),\n (-i * TAU) / 3,\n ),\n ),\n CENTERS: [0, 1, 2, 3].map((i) =>\n new Matrix4().makeRotationAxis(\n firstPiecePosition.CENTERS.clone().normalize(),\n (-i * TAU) / 4,\n ),\n ),\n};\nconst cubieStickerOrder = [face.U, face.F, face.R];\n\nconst pieceDefs: PieceIndexed<CubieDef> = {\n EDGES: [\n new CubieDef(\"EDGES\", \"UF\", t(r.O, 0)),\n new CubieDef(\"EDGES\", \"UR\", t(r.U, 3)),\n new CubieDef(\"EDGES\", \"UB\", t(r.U, 2)),\n new CubieDef(\"EDGES\", \"UL\", t(r.U, 1)),\n new CubieDef(\"EDGES\", \"DF\", t(r.F, 2)),\n new CubieDef(\"EDGES\", \"DR\", t(r.F, 2).premultiply(t(r.D, 1))),\n new CubieDef(\"EDGES\", \"DB\", t(r.F, 2).premultiply(t(r.D, 2))),\n new CubieDef(\"EDGES\", \"DL\", t(r.F, 2).premultiply(t(r.D, 3))),\n new CubieDef(\"EDGES\", \"FR\", t(r.U, 3).premultiply(t(r.R, 3))),\n new CubieDef(\"EDGES\", \"FL\", t(r.U, 1).premultiply(t(r.R, 3))),\n new CubieDef(\"EDGES\", \"BR\", t(r.U, 3).premultiply(t(r.R, 1))),\n new CubieDef(\"EDGES\", \"BL\", t(r.U, 1).premultiply(t(r.R, 1))),\n ],\n CORNERS: [\n new CubieDef(\"CORNERS\", \"UFR\", t(r.O, 0)),\n new CubieDef(\"CORNERS\", \"URB\", t(r.U, 3)),\n new CubieDef(\"CORNERS\", \"UBL\", t(r.U, 2)),\n new CubieDef(\"CORNERS\", \"ULF\", t(r.U, 1)),\n new CubieDef(\"CORNERS\", \"DRF\", t(r.F, 2).premultiply(t(r.D, 1))),\n new CubieDef(\"CORNERS\", \"DFL\", t(r.F, 2).premultiply(t(r.D, 0))),\n new CubieDef(\"CORNERS\", \"DLB\", t(r.F, 2).premultiply(t(r.D, 3))),\n new CubieDef(\"CORNERS\", \"DBR\", t(r.F, 2).premultiply(t(r.D, 2))),\n ],\n CENTERS: [\n new CubieDef(\"CENTERS\", \"U\", t(r.O, 0)),\n new CubieDef(\"CENTERS\", \"L\", t(r.R, 3).premultiply(t(r.U, 1))),\n new CubieDef(\"CENTERS\", \"F\", t(r.R, 3)),\n new CubieDef(\"CENTERS\", \"R\", t(r.R, 3).premultiply(t(r.D, 1))),\n new CubieDef(\"CENTERS\", \"B\", t(r.R, 3).premultiply(t(r.D, 2))),\n new CubieDef(\"CENTERS\", \"D\", t(r.R, 2)),\n ],\n};\n\nconst CUBE_SCALE = 1 / 3;\n\ninterface FaceletInfo {\n faceIdx: number;\n facelet: Mesh;\n hintFacelet?: Mesh;\n}\n\n// TODO: Compatibility with Randelshofer or standard net layout? Offer a\n// conversion function?\nconst pictureStickerCoords: Record<string, number[][][]> = {\n EDGES: [\n [\n [0, 4, 6],\n [0, 4, 5],\n ],\n [\n [3, 5, 7],\n [0, 7, 5],\n ],\n [\n [2, 4, 8],\n [0, 10, 5],\n ],\n [\n [1, 3, 7],\n [0, 1, 5],\n ],\n [\n [2, 4, 2],\n [2, 4, 3],\n ],\n [\n [3, 5, 1],\n [2, 7, 3],\n ],\n [\n [0, 4, 0],\n [2, 10, 3],\n ],\n [\n [1, 3, 1],\n [2, 1, 3],\n ],\n [\n [3, 5, 4],\n [3, 6, 4],\n ],\n [\n [1, 3, 4],\n [1, 2, 4],\n ],\n [\n [1, 9, 4],\n [1, 8, 4],\n ],\n [\n [3, 11, 4],\n [3, 0, 4],\n ],\n ],\n CORNERS: [\n [\n [0, 5, 6],\n [0, 5, 5],\n [0, 6, 5],\n ],\n [\n [3, 5, 8],\n [0, 8, 5],\n [0, 9, 5],\n ],\n [\n [2, 3, 8],\n [0, 11, 5],\n [0, 0, 5],\n ],\n [\n [1, 3, 6],\n [0, 2, 5],\n [0, 3, 5],\n ],\n [\n [3, 5, 2],\n [2, 6, 3],\n [2, 5, 3],\n ],\n [\n [2, 3, 2],\n [2, 3, 3],\n [2, 2, 3],\n ],\n [\n [1, 3, 0],\n [2, 0, 3],\n [2, 11, 3],\n ],\n [\n [0, 5, 0],\n [2, 9, 3],\n [2, 8, 3],\n ],\n ],\n CENTERS: [\n [[0, 4, 7]],\n [[0, 1, 4]],\n [[0, 4, 4]],\n [[0, 7, 4]],\n [[0, 10, 4]],\n [[0, 4, 1]],\n ],\n};\n\nlet sharedCubieFoundationGeometryCache: BoxGeometry | null = null;\nfunction sharedCubieFoundationGeometry(): BoxGeometry {\n return (\n sharedCubieFoundationGeometryCache ??\n (sharedCubieFoundationGeometryCache = new BoxGeometry(\n cubieDimensions.foundationWidth,\n cubieDimensions.foundationWidth,\n cubieDimensions.foundationWidth,\n ))\n );\n}\n\nfunction newStickerGeometry(): BufferGeometry {\n const r = new BufferGeometry();\n const half = 0.5 * cubieDimensions.stickerWidth;\n r.setAttribute(\n \"position\",\n new BufferAttribute(\n new Float32Array([\n half,\n half,\n 0,\n -half,\n half,\n 0,\n half,\n -half,\n 0,\n -half,\n half,\n 0,\n -half,\n -half,\n 0,\n half,\n -half,\n 0,\n ]),\n 3,\n ),\n );\n r.setAttribute(\n \"uv\",\n new BufferAttribute(\n new Float32Array([\n 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1,\n ]),\n 2,\n ),\n );\n // r.setAttribute('normals', new BufferAttribute(new Float32Array([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]), 3));\n return r;\n}\n\nlet sharedStickerGeometryCache: BufferGeometry | null = null;\nfunction sharedStickerGeometry(): BufferGeometry {\n return (\n sharedStickerGeometryCache ??\n (sharedStickerGeometryCache = newStickerGeometry())\n );\n}\n\n// TODO: Split into \"scene model\" and \"view\".\nexport class Cube3D extends Object3D implements Twisty3DPuzzle {\n kpuzzleFaceletInfo: Record<string, FaceletInfo[][]>;\n private pieces: PieceIndexed<Object3D> = {};\n private options: Cube3DOptions;\n // TODO: Keep track of option-based meshes better.\n private experimentalHintStickerMeshes: Mesh[] = [];\n private experimentalFoundationMeshes: Mesh[] = [];\n\n private setSpriteURL: (url: string) => void;\n private sprite: Texture | Promise<Texture> = new Promise((resolve) => {\n this.setSpriteURL = (url: string): void => {\n svgLoader.load(url, resolve);\n };\n });\n\n // TODO: Don't overwrite the static function.\n // TODO: This doesn't work dynamically yet.\n setSprite(texture: Texture): void {\n this.sprite = texture;\n }\n\n private setHintSpriteURL: (url: string) => void;\n private hintSprite: Texture | Promise<Texture> = new Promise((resolve) => {\n this.setHintSpriteURL = (url: string): void => {\n svgLoader.load(url, resolve);\n };\n });\n\n // TODO: Don't overwrite the static function.\n // TODO: This doesn't work dynamically yet.\n setHintSprite(texture: Texture): void {\n this.hintSprite = texture;\n }\n\n constructor(\n private kpuzzle: KPuzzle,\n private scheduleRenderCallback?: () => void,\n options: Cube3DOptions = {},\n ) {\n super();\n\n this.options = { ...cube3DOptionsDefaults };\n Object.assign(this.options, options); // TODO: check if this works\n\n if (this.kpuzzle.name() !== \"3x3x3\") {\n throw new Error(\n `Invalid puzzle for this Cube3D implementation: ${this.kpuzzle.name()}`,\n );\n }\n\n if (options.foundationSprite) {\n this.setSprite(options.foundationSprite);\n }\n if (options.hintSprite) {\n this.setHintSprite(options.hintSprite);\n }\n\n this.kpuzzleFaceletInfo = {};\n for (const orbit in pieceDefs) {\n const orbitFaceletInfo: FaceletInfo[][] = [];\n this.kpuzzleFaceletInfo[orbit] = orbitFaceletInfo;\n this.pieces[orbit] = pieceDefs[orbit].map(\n this.createCubie.bind(this, orbit, orbitFaceletInfo),\n );\n }\n this.scale.set(CUBE_SCALE, CUBE_SCALE, CUBE_SCALE);\n\n // TODO: Can we construct this directly instead of applying it later? Would that be more code-efficient?\n if (this.options.experimentalStickering) {\n this.setStickering(this.options.experimentalStickering);\n }\n }\n\n // Can only be called once.\n /** @deprecated */\n experimentalSetStickerSpriteURL(stickerSpriteURL: string): void {\n this.setSpriteURL(stickerSpriteURL);\n }\n\n // Can only be called once.\n /** @deprecated */\n experimentalSetHintStickerSpriteURL(hintStickerSpriteURL: string): void {\n this.setHintSpriteURL(hintStickerSpriteURL);\n }\n\n setStickering(stickering: ExperimentalStickering): void {\n // TODO\n (async () => {\n // TODO\n const appearance = await puzzles[\"3x3x3\"].appearance!(\n stickering ?? \"full\",\n );\n this.setAppearance(\n appearance ?? (await puzzles[\"3x3x3\"].appearance!(\"full\")),\n );\n })();\n }\n\n setAppearance(appearance: PuzzleAppearance): void {\n for (const [orbitName, orbitAppearance] of Object.entries(\n appearance.orbits,\n )) {\n for (\n let pieceIdx = 0;\n pieceIdx < orbitAppearance.pieces.length;\n pieceIdx++\n ) {\n const pieceAppearance = orbitAppearance.pieces[pieceIdx];\n if (pieceAppearance) {\n const pieceInfo = this.kpuzzleFaceletInfo[orbitName][pieceIdx];\n for (\n let faceletIdx = 0;\n faceletIdx < pieceInfo.length;\n faceletIdx++\n ) {\n const faceletAppearance = pieceAppearance.facelets[faceletIdx];\n if (faceletAppearance) {\n const faceletInfo = pieceInfo[faceletIdx];\n\n const appearance =\n typeof faceletAppearance === \"string\"\n ? faceletAppearance\n : faceletAppearance?.appearance;\n\n faceletInfo.facelet.material =\n axesInfo[faceletInfo.faceIdx].stickerMaterial[appearance];\n // TODO\n const hintAppearance =\n typeof faceletAppearance === \"string\"\n ? appearance\n : faceletAppearance.hintAppearance ?? appearance;\n if (faceletInfo.hintFacelet) {\n faceletInfo.hintFacelet.material =\n axesInfo[faceletInfo.faceIdx].hintStickerMaterial[\n hintAppearance\n ];\n }\n }\n }\n }\n }\n }\n if (this.scheduleRenderCallback) {\n this.scheduleRenderCallback();\n }\n }\n\n /** @deprecated */\n public experimentalUpdateOptions(options: Cube3DOptions): void {\n if (\"showMainStickers\" in options) {\n throw new Error(\"Unimplemented\");\n }\n\n const showFoundation = options.showFoundation;\n if (\n typeof showFoundation !== \"undefined\" &&\n this.options.showFoundation !== showFoundation\n ) {\n this.options.showFoundation = showFoundation;\n for (const foundation of this.experimentalFoundationMeshes) {\n foundation.visible = showFoundation;\n }\n }\n\n const hintFacelets = options.hintFacelets;\n if (\n typeof hintFacelets !== \"undefined\" &&\n this.options.hintFacelets !== hintFacelets &&\n hintFaceletStyles[hintFacelets] // TODO: test this\n ) {\n this.options.hintFacelets = hintFacelets;\n for (const hintSticker of this.experimentalHintStickerMeshes) {\n hintSticker.visible = hintFacelets === \"floating\";\n }\n this.scheduleRenderCallback!(); // TODO\n }\n\n const experimentalStickering = options.experimentalStickering;\n if (\n typeof experimentalStickering !== \"undefined\" &&\n this.options.experimentalStickering !== experimentalStickering &&\n experimentalStickerings[experimentalStickering] // TODO: test this\n ) {\n this.options.experimentalStickering = experimentalStickering;\n // TODO\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.setStickering(experimentalStickering);\n this.scheduleRenderCallback!(); // TODO\n }\n }\n\n public onPositionChange(p: PuzzlePosition): void {\n const reid333 = p.state;\n for (const orbit in pieceDefs) {\n const pieces = pieceDefs[orbit];\n for (let i = 0; i < pieces.length; i++) {\n const j = reid333.stateData[orbit].pieces[i];\n this.pieces[orbit][j].matrix.copy(pieceDefs[orbit][i].matrix);\n this.pieces[orbit][j].matrix.multiply(\n orientationRotation[orbit][reid333.stateData[orbit].orientation[i]],\n );\n }\n for (const moveProgress of p.movesInProgress) {\n const move = moveProgress.move;\n const turnNormal = axesInfo[familyToAxis[move.family]].vector;\n const moveMatrix = new Matrix4().makeRotationAxis(\n turnNormal,\n (-this.ease(moveProgress.fraction) *\n moveProgress.direction *\n move.amount *\n TAU) /\n 4,\n );\n for (let i = 0; i < pieces.length; i++) {\n const k =\n this.kpuzzle.definition.moves[move.family][orbit].permutation[i];\n if (\n i !== k ||\n this.kpuzzle.definition.moves[move.family][orbit].orientation[i] !==\n 0\n ) {\n const j = reid333.stateData[orbit].pieces[i];\n this.pieces[orbit][j].matrix.premultiply(moveMatrix);\n }\n }\n }\n }\n this.scheduleRenderCallback!();\n }\n\n // TODO: Always create (but sometimes hide parts) so we can show them later,\n // or (better) support creating puzzle parts on demand.\n private createCubie(\n orbit: string,\n orbitFacelets: FaceletInfo[][],\n piece: CubieDef,\n orbitPieceIdx: number,\n ): Object3D {\n const cubieFaceletInfo: FaceletInfo[] = [];\n orbitFacelets.push(cubieFaceletInfo);\n const cubie = new Group();\n if (this.options.showFoundation) {\n const foundation = this.createCubieFoundation();\n cubie.add(foundation);\n this.experimentalFoundationMeshes.push(foundation);\n }\n for (let i = 0; i < piece.stickerFaces.length; i++) {\n const sticker = this.createSticker(\n axesInfo[cubieStickerOrder[i]],\n axesInfo[piece.stickerFaces[i]],\n false,\n );\n const faceletInfo: FaceletInfo = {\n faceIdx: piece.stickerFaces[i],\n facelet: sticker,\n };\n cubie.add(sticker);\n if (this.options.hintFacelets === \"floating\") {\n const hintSticker = this.createSticker(\n axesInfo[cubieStickerOrder[i]],\n axesInfo[piece.stickerFaces[i]],\n true,\n );\n cubie.add(hintSticker);\n faceletInfo.hintFacelet = hintSticker;\n this.experimentalHintStickerMeshes.push(hintSticker);\n }\n\n if (\n this.options.experimentalStickering === \"picture\" &&\n pictureStickerCoords[orbit] &&\n pictureStickerCoords[orbit][orbitPieceIdx] &&\n pictureStickerCoords[orbit][orbitPieceIdx][i]\n ) {\n const [rotate, offsetX, offsetY] =\n pictureStickerCoords[orbit][orbitPieceIdx][i];\n (async () => {\n const addImageSticker = async (hint: boolean) => {\n const texture: Texture = await (hint\n ? this.hintSprite\n : this.sprite);\n\n const mesh = this.createSticker(\n axesInfo[cubieStickerOrder[i]],\n axesInfo[piece.stickerFaces[i]],\n hint,\n );\n mesh.material = new MeshBasicMaterial({\n map: texture,\n side: hint ? BackSide : DoubleSide,\n transparent: true,\n });\n\n const x1 = offsetX / 12;\n const x2 = (offsetX + 1) / 12;\n const y1 = offsetY / 9;\n const y2 = (offsetY + 1) / 9;\n\n let v1 = new Vector2(x1, y1);\n let v2 = new Vector2(x1, y2);\n let v3 = new Vector2(x2, y2);\n let v4 = new Vector2(x2, y1);\n\n switch (rotate) {\n case 1:\n [v1, v2, v3, v4] = [v2, v3, v4, v1];\n break;\n case 2:\n [v1, v2, v3, v4] = [v3, v4, v1, v2];\n break;\n case 3:\n [v1, v2, v3, v4] = [v4, v1, v2, v3];\n break;\n }\n mesh.geometry.setAttribute(\n \"uv\",\n new BufferAttribute(\n new Float32Array([\n v3.x,\n v3.y,\n v2.x,\n v2.y,\n v4.x,\n v4.y,\n v2.x,\n v2.y,\n v1.x,\n v1.y,\n v4.x,\n v4.y,\n ]),\n 2,\n ),\n );\n cubie.add(mesh);\n };\n // const delay: number = ({\n // CENTERS: 1000,\n // EDGES: 2000,\n // CORNERS: 3500,\n // } as Record<string, number>)[orbit];\n // if (orbit === \"CENTERS\" && orbitPieceIdx === 5) {\n addImageSticker(true);\n addImageSticker(false);\n // } else {\n // await this.sprite;\n // await this.hintSprite;\n // setTimeout(\n // () => addImageSticker(true),\n // delay + orbitPieceIdx * 100,\n // );\n // setTimeout(\n // () => addImageSticker(false),\n // delay + orbitPieceIdx * 100,\n // );\n // }\n })();\n }\n\n cubieFaceletInfo.push(faceletInfo);\n }\n cubie.matrix.copy(piece.matrix);\n cubie.matrixAutoUpdate = false;\n this.add(cubie);\n return cubie;\n }\n\n // TODO: Support creating only the outward-facing parts?\n private createCubieFoundation(): Mesh {\n const box = sharedCubieFoundationGeometry();\n return new Mesh(\n box,\n this.options.experimentalStickering === \"picture\"\n ? blackMesh\n : blackTranslucentMesh,\n );\n }\n\n private createSticker(\n posAxisInfo: AxisInfo,\n materialAxisInfo: AxisInfo,\n isHint: boolean,\n ): Mesh {\n const geo =\n this.options.experimentalStickering === \"picture\"\n ? newStickerGeometry()\n : sharedStickerGeometry();\n const stickerMesh = new Mesh(\n geo,\n isHint\n ? materialAxisInfo.hintStickerMaterial.regular\n : materialAxisInfo.stickerMaterial.regular,\n );\n stickerMesh.setRotationFromEuler(posAxisInfo.fromZ);\n stickerMesh.position.copy(posAxisInfo.vector);\n stickerMesh.position.multiplyScalar(\n isHint\n ? this.options.experimentalStickering === \"picture\"\n ? EXPERIMENTAL_PICTURE_CUBE_HINT_ELEVATION\n : cubieDimensions.hintStickerElevation\n : cubieDimensions.stickerElevation,\n );\n return stickerMesh;\n }\n\n /** @deprecated */\n experimentalSetFoundationOpacity(opacity: number): void {\n (\n this.experimentalFoundationMeshes[0].material as MeshBasicMaterial\n ).opacity = opacity;\n }\n\n /** @deprecated */\n experimentalSetStickerWidth(width: number): void {\n for (const orbitInfo of Object.values(this.kpuzzleFaceletInfo)) {\n for (const pieceInfo of orbitInfo) {\n for (const faceletInfo of pieceInfo) {\n faceletInfo.facelet.scale.setScalar(\n width / cubieDimensions.stickerWidth,\n );\n // faceletInfo.facelet.setRotationFromAxisAngle(new Vector3(0, 1, 0), 0);\n // faceletInfo.facelet.rotateOnAxis(new Vector3(1, 0, 1), TAU / 6);\n }\n }\n }\n }\n\n /** @deprecated */\n experimentalSetCenterStickerWidth(width: number): void {\n for (const orbitInfo of [this.kpuzzleFaceletInfo[\"CENTERS\"]]) {\n for (const pieceInfo of orbitInfo) {\n for (const faceletInfo of pieceInfo) {\n faceletInfo.facelet.scale.setScalar(\n width / cubieDimensions.stickerWidth,\n );\n // faceletInfo.facelet.setRotationFromAxisAngle(new Vector3(0, 1, 0), 0);\n // faceletInfo.facelet.rotateOnAxis(new Vector3(1, 0, 1), TAU / 6);\n }\n }\n }\n }\n\n private ease(fraction: number): number {\n return smootherStep(fraction);\n }\n}\n", "export function smootherStep(x: number): number {\n return x * x * x * (10 - x * (15 - 6 * x));\n}\n", "import {\n BufferAttribute,\n BufferGeometry,\n Color,\n DoubleSide,\n Euler,\n FrontSide,\n Group,\n Material,\n Mesh,\n MeshBasicMaterial,\n Object3D,\n Texture,\n Vector3,\n} from \"three\";\nimport { Move } from \"../../../../alg\";\nimport type { KPuzzle, KTransformation } from \"../../../../kpuzzle\";\nimport type {\n StickerDat,\n StickerDatAxis,\n StickerDatSticker,\n} from \"../../../../puzzle-geometry\";\nimport type { TextureMapper } from \"../../../../puzzle-geometry/PuzzleGeometry\";\nimport {\n ExperimentalFaceletMeshAppearance,\n experimentalGetFaceletAppearance,\n ExperimentalPuzzleAppearance,\n} from \"../../../../puzzles\";\nimport type { PuzzlePosition } from \"../../../controllers/AnimationTypes\";\nimport { smootherStep } from \"../../../controllers/easing\";\nimport type { HintFaceletStyle } from \"../../../model/props/puzzle/display/HintFaceletProp\";\nimport { TAU } from \"../TAU\";\nimport type { Twisty3DPuzzle } from \"./Twisty3DPuzzle\";\n\nconst foundationMaterial = new MeshBasicMaterial({\n side: DoubleSide,\n color: 0x000000,\n});\nconst invisMaterial = new MeshBasicMaterial({\n visible: false,\n});\nconst basicStickerMaterial = new MeshBasicMaterial({\n vertexColors: true,\n});\n\nfunction dist(coords: number[], a: number, b: number): number {\n return Math.hypot(\n coords[3 * a] - coords[3 * b],\n coords[3 * a + 1] - coords[3 * b + 1],\n coords[3 * a + 2] - coords[3 * b + 2],\n );\n}\n\nfunction triarea(coords: number[], a: number, b: number, c: number): number {\n const ab = dist(coords, a, b);\n const bc = dist(coords, b, c);\n const ac = dist(coords, a, c);\n const p = (ab + bc + ac) / 2;\n return Math.sqrt(p * (p - ab) * (p - bc) * (p - ac));\n}\n\nfunction polyarea(coords: number[]): number {\n let sum = 0;\n for (let i = 2; 3 * i < coords.length; i++) {\n sum += triarea(coords, 0, 1, i);\n }\n return sum;\n}\n\nfunction normalize(r: number[]): number[] {\n const m = Math.hypot(r[0], r[1], r[2]);\n r[0] /= m;\n r[1] /= m;\n r[2] /= m;\n return r;\n}\n\nfunction cross(a: number[], b: number[]): number[] {\n const r = new Array<number>(3);\n r[0] = a[1] * b[2] - a[2] * b[1];\n r[1] = a[2] * b[0] - a[0] * b[2];\n r[2] = a[0] * b[1] - a[1] * b[0];\n return r;\n}\n\nfunction normal(c: number[]): number[] {\n const a: number[] = [c[3] - c[0], c[4] - c[1], c[5] - c[2]];\n const b: number[] = [c[6] - c[3], c[7] - c[4], c[8] - c[5]];\n const r = cross(a, b);\n return normalize(r);\n}\n\nfunction trimEdges(face: number[], tr: number): number[] {\n const r: number[] = [];\n const A: number[] = new Array(3);\n const B: number[] = new Array(3);\n for (let iter = 1; iter < 10; iter++) {\n for (let i = 0; i < face.length; i += 3) {\n const pi = (i + face.length - 3) % face.length;\n const ni = (i + 3) % face.length;\n for (let k = 0; k < 3; k++) {\n A[k] = face[pi + k] - face[i + k];\n B[k] = face[ni + k] - face[i + k];\n }\n const alen = Math.hypot(A[0], A[1], A[2]);\n const blen = Math.hypot(B[0], B[1], B[2]);\n for (let k = 0; k < 3; k++) {\n A[k] /= alen;\n B[k] /= blen;\n }\n const d = A[0] * B[0] + A[1] * B[1] + A[2] * B[2];\n const m = tr / Math.sqrt(1 - d * d);\n for (let k = 0; k < 3; k++) {\n r[i + k] = face[i + k] + (A[k] + B[k]) * m;\n }\n }\n let good = true;\n for (let i = 0; good && i < r.length; i += 3) {\n const ni = (i + 3) % face.length;\n let t = 0;\n for (let k = 0; k < 3; k++) {\n const a = face[ni + k] - face[i + k];\n const b = r[ni + k] - r[i + k];\n t += a * b;\n }\n if (t <= 0) {\n good = false;\n }\n }\n if (good) {\n return r;\n }\n tr /= 2;\n }\n return face;\n}\n\nclass Filler {\n pos: number;\n ipos: number;\n vertices: Float32Array;\n colors: Uint8Array;\n uvs?: Float32Array;\n ind: Uint8Array;\n constructor(public sz: number, public tm: TextureMapper) {\n this.vertices = new Float32Array(9 * sz);\n this.uvs = undefined;\n this.colors = new Uint8Array(18 * sz);\n this.ind = new Uint8Array(sz);\n this.pos = 0;\n this.ipos = 0;\n }\n\n add(pt: number[], i: number, c: number) {\n this.vertices[this.pos] = pt[3 * i + 0];\n this.vertices[this.pos + 1] = pt[3 * i + 1];\n this.vertices[this.pos + 2] = pt[3 * i + 2];\n this.colors[this.pos] = c >> 16;\n this.colors[this.pos + 1] = (c >> 8) & 255;\n this.colors[this.pos + 2] = c & 255;\n this.pos += 3;\n }\n\n addUncolored(pt: number[], i: number) {\n this.vertices[this.pos] = pt[3 * i + 0];\n this.vertices[this.pos + 1] = pt[3 * i + 1];\n this.vertices[this.pos + 2] = pt[3 * i + 2];\n this.pos += 3;\n }\n\n setind(i: number) {\n this.ind[this.ipos++] = i;\n }\n\n makePoly(coords: number[], color: number, ind: number): void {\n const ncoords: number[] = coords;\n for (let g = 1; 3 * (g + 1) < ncoords.length; g++) {\n this.add(ncoords, 0, color);\n this.add(ncoords, g, color);\n this.add(ncoords, g + 1, color);\n this.setind(ind);\n }\n }\n\n setAttributes(geo: BufferGeometry) {\n geo.setAttribute(\"position\", new BufferAttribute(this.vertices, 3));\n // the geometry only needs the first half of the array\n const sa2 = this.colors.subarray(0, 9 * this.sz);\n geo.setAttribute(\"color\", new BufferAttribute(sa2, 3, true));\n }\n\n makeGroups(geo: BufferGeometry) {\n geo.clearGroups();\n for (let i = 0; i < this.ipos; ) {\n const si = i++;\n const iv = this.ind[si];\n while (this.ind[i] === iv) {\n i++;\n }\n geo.addGroup(3 * si, 3 * (i - si), iv);\n }\n }\n\n saveOriginalColors() {\n this.colors.copyWithin(this.pos, 0, this.pos);\n }\n}\n\nclass StickerDef {\n private origColor: number;\n private origColorAppearance: number;\n private faceColor: number;\n private texturePtr?: StickerDef = undefined;\n public twistVal: number = -1;\n public stickerStart: number;\n public stickerEnd: number;\n public hintStart: number;\n public hintEnd: number;\n public foundationStart: number;\n public foundationEnd: number;\n private isDup: boolean;\n private faceNum: number;\n constructor(\n filler: Filler,\n stickerDat: StickerDatSticker,\n trim: number,\n options?: {\n appearance?: ExperimentalFaceletMeshAppearance;\n },\n ) {\n this.isDup = !!stickerDat.isDup;\n this.faceNum = stickerDat.face;\n this.stickerStart = filler.ipos;\n const sdColor = new Color(stickerDat.color).getHex();\n this.origColor = sdColor;\n this.origColorAppearance = sdColor;\n if (options?.appearance) {\n this.setAppearance(filler, options.appearance);\n }\n this.faceColor = sdColor;\n const coords = this.stickerCoords(stickerDat.coords, trim);\n filler.makePoly(coords, this.faceColor, this.isDup ? 4 : 0);\n this.stickerEnd = filler.ipos;\n }\n\n private stickerCoords(coords: number[], trim: number): number[] {\n return trimEdges(coords.slice(), trim);\n }\n\n private hintCoords(\n coords: number[],\n hintStickerHeightScale: number,\n trim: number,\n normal: number[],\n ): number[] {\n coords = this.stickerCoords(coords, trim); // pick up trim from stickers\n normal = normal.slice();\n for (let i = 0; i < 3; i++) {\n normal[i] *= 0.5 * hintStickerHeightScale;\n }\n const hCoords = new Array<number>(coords.length);\n for (let i = 0; 3 * i < coords.length; i++) {\n const j = coords.length / 3 - 1 - i;\n hCoords[3 * i] = coords[3 * j] + normal[0];\n hCoords[3 * i + 1] = coords[3 * j + 1] + normal[1];\n hCoords[3 * i + 2] = coords[3 * j + 2] + normal[2];\n }\n return hCoords;\n }\n\n private foundationCoords(coords: number[]): number[] {\n const ncoords = coords.slice();\n for (let i = 0; i < coords.length; i++) {\n ncoords[i] = coords[i] * 0.999;\n }\n return ncoords;\n }\n\n addHint(\n filler: Filler,\n stickerDat: StickerDatSticker,\n hintStickers: boolean,\n hintStickerHeightScale: number,\n trim: number,\n normal: number[],\n ): void {\n this.hintStart = filler.ipos;\n const coords = this.hintCoords(\n stickerDat.coords,\n hintStickerHeightScale,\n trim,\n normal,\n );\n filler.makePoly(\n coords,\n this.faceColor,\n hintStickers && !this.isDup ? 2 : 4,\n );\n this.hintEnd = filler.ipos;\n }\n\n public addFoundation(\n filler: Filler,\n stickerDat: StickerDatSticker,\n black: number,\n ) {\n this.foundationStart = filler.ipos;\n const coords = this.foundationCoords(stickerDat.coords);\n filler.makePoly(coords, black, this.isDup ? 4 : 6);\n this.foundationEnd = filler.ipos;\n }\n\n private setHintStickers(filler: Filler, hintStickers: boolean): void {\n const indv = this.isDup || !hintStickers ? 4 : 2;\n for (let i = this.hintStart; i < this.hintEnd; i++) {\n filler.ind[i] = indv | (filler.ind[i] & 1);\n }\n }\n\n public setAppearance(\n filler: Filler,\n faceletMeshAppearance: ExperimentalFaceletMeshAppearance,\n ): void {\n let c = 0;\n switch (faceletMeshAppearance) {\n case \"regular\":\n c = this.origColor;\n break;\n case \"dim\":\n if (this.origColor === 0xffffff) {\n c = 0xdddddd;\n } else {\n c = new Color(this.origColor).multiplyScalar(0.5).getHex();\n }\n break;\n case \"oriented\":\n c = 0xff88ff;\n break;\n case \"ignored\":\n c = 0x444444;\n break;\n case \"invisible\":\n c = this.origColor;\n }\n this.origColorAppearance = c;\n for (let i = 9 * this.stickerStart; i < 9 * this.stickerEnd; i += 3) {\n filler.colors[filler.pos + i] = c >> 16;\n filler.colors[filler.pos + i + 1] = (c >> 8) & 255;\n filler.colors[filler.pos + i + 2] = c & 255;\n }\n for (let i = 9 * this.hintStart; i < 9 * this.hintEnd; i += 3) {\n filler.colors[filler.pos + i] = c >> 16;\n filler.colors[filler.pos + i + 1] = (c >> 8) & 255;\n filler.colors[filler.pos + i + 2] = c & 255;\n }\n this.setHintStickers(\n filler,\n faceletMeshAppearance !== \"invisible\" && !this.isDup,\n );\n }\n\n public addUVs(filler: Filler): void {\n const uvs = filler.uvs!;\n const vert = filler.vertices;\n const coords = new Array(3);\n for (let i = 3 * this.stickerStart; i < 3 * this.stickerEnd; i++) {\n coords[0] = vert[3 * i];\n coords[1] = vert[3 * i + 1];\n coords[2] = vert[3 * i + 2];\n const uv = filler.tm.getuv(this.faceNum, coords);\n uvs[2 * i] = uv[0];\n uvs[2 * i + 1] = uv[1];\n }\n for (let i = 3 * this.hintStart; i < 3 * this.hintEnd; i++) {\n coords[0] = vert[3 * i];\n coords[1] = vert[3 * i + 1];\n coords[2] = vert[3 * i + 2];\n const uv = filler.tm.getuv(this.faceNum, coords);\n uvs[2 * i] = uv[0];\n uvs[2 * i + 1] = uv[1];\n }\n }\n\n public setTexture(filler: Filler, sd: StickerDef): number {\n if (this.texturePtr === sd) {\n return 0;\n }\n this.texturePtr = sd;\n const sz = 6 * filler.sz;\n filler.uvs!.copyWithin(\n 6 * this.stickerStart,\n 6 * sd.stickerStart + sz,\n 6 * sd.stickerEnd + sz,\n );\n filler.uvs!.copyWithin(\n 6 * this.hintStart,\n 6 * sd.hintStart + sz,\n 6 * sd.hintEnd + sz,\n );\n return 1;\n }\n\n public setColor(filler: Filler, sd: StickerDef): number {\n const c = sd.origColorAppearance;\n if (this.faceColor !== c) {\n this.faceColor = c;\n const sz = filler.pos;\n filler.colors.copyWithin(\n 9 * this.stickerStart,\n 9 * sd.stickerStart + sz,\n 9 * sd.stickerEnd + sz,\n );\n filler.colors.copyWithin(\n 9 * this.hintStart,\n 9 * sd.hintStart + sz,\n 9 * sd.hintEnd + sz,\n );\n return 1;\n } else {\n return 0;\n }\n }\n}\n\nclass HitPlaneDef {\n public cubie: Group;\n private geo: BufferGeometry;\n constructor(hitface: any, tm: TextureMapper, stickerDat: StickerDat) {\n this.cubie = new Group();\n const coords = hitface.coords as number[];\n const filler = new Filler(coords.length / 3 - 2, tm);\n for (let g = 1; 3 * g + 3 < coords.length; g++) {\n filler.addUncolored(coords, 0);\n filler.addUncolored(coords, g);\n filler.addUncolored(coords, g + 1);\n }\n this.geo = new BufferGeometry();\n filler.setAttributes(this.geo);\n const obj = new Mesh(this.geo, invisMaterial);\n obj.userData.quantumMove = stickerDat.notationMapper.notationToExternal(\n new Move(hitface.name),\n );\n this.cubie.scale.setScalar(0.99);\n this.cubie.add(obj);\n }\n}\n\nclass AxisInfo {\n public axis: Vector3;\n public order: number;\n constructor(axisDat: StickerDatAxis) {\n const vec = axisDat.coordinates;\n this.axis = new Vector3(vec[0], vec[1], vec[2]);\n this.order = axisDat.order;\n }\n}\n\nexport interface PG3DOptions {\n appearance?: ExperimentalPuzzleAppearance;\n}\n\nconst DEFAULT_COLOR_FRACTION = 0.71;\nconst PG_SCALE = 0.5;\n\n// TODO: Split into \"scene model\" and \"view\".\n/*\n * PG3D uses a single geometry for the puzzle, with all the faces for\n * each sticker (including the foundation stickers) in a single\n * geometry. We use the materialIndex in the face to point to a\n * specific entry, which is either a colored sticker, invisible, or\n * black (foundation).\n *\n * To support general twisting of a subset of the puzzle, we then\n * instantiate this same geometry in two different meshes with two\n * distinct material arrays. One, the fixed mesh, has the material\n * array set up like: [colored, invisible, black, invisible].\n * The twisting mesh has the material array set up as\n * [invisible, colored, invislble, black]. When not twisted, the\n * two meshes are directly coincident, and the (shared) materialIndex\n * in each face points to a non-invisible material in exactly one of\n * the two meshes. When we decide to twist some cubies, we make\n * the cubies that move point to visible materials in the moving\n * mesh (which makes them point to invisible materials in the static\n * mesh). This way, we only need to rotate the moving mesh as a\n * single object---this should be very fast, and occur entirely in\n * the GPU. Unfortunately this doesn't quite work as fast as we'd\n * like because three.js makes a draw call every time we have a change\n * in the material index. By moving the foundation triangles separate\n * from the sticker triangles, we enhance the probability that many\n * triangles can be rendered in one call speeding up the render.\n * We also get some assistance from puzzleGeometry to try to keep\n * nearby stickers close to each other.\n */\nexport class PG3D extends Object3D implements Twisty3DPuzzle {\n private stickers: { [key: string]: StickerDef[][] };\n private axesInfo: { [key: string]: AxisInfo };\n\n private stickerTargets: Object3D[] = [];\n private controlTargets: Object3D[] = [];\n\n private movingObj: Object3D;\n private filler: Filler;\n private foundationBound: number; // before this: colored; after: black\n private fixedGeo: BufferGeometry;\n private lastPos: PuzzlePosition;\n private lastMoveTransformation: KTransformation;\n private hintMaterial: Material;\n private stickerMaterial: Material;\n private materialArray1: Material[];\n private materialArray2: Material[];\n private textured: boolean = false;\n private showHintStickers: boolean = false;\n private showFoundations: boolean = false;\n private hintMaterialDisposable: boolean;\n private stickerMaterialDisposable: boolean;\n\n #pendingStickeringUpdate: boolean = false;\n\n public isPG3DForTwisty3DPuzzleWrapper: true;\n\n constructor(\n private scheduleRenderCallback: () => void,\n private kpuzzle: KPuzzle,\n private stickerDat: StickerDat,\n enableFoundationOpt: boolean = false,\n enableHintStickersOpt: boolean = false,\n hintStickerHeightScale: number = 1,\n private params: PG3DOptions = {},\n ) {\n super();\n if (stickerDat.stickers.length === 0) {\n throw Error(\"Reuse of stickerdat from pg; please don't do that.\");\n }\n this.hintMaterial = new MeshBasicMaterial({\n vertexColors: true,\n transparent: true,\n opacity: 0.5,\n });\n this.hintMaterialDisposable = true;\n this.stickerMaterial = basicStickerMaterial;\n this.stickerMaterialDisposable = false;\n this.axesInfo = {};\n const axesDef = this.stickerDat.axis;\n for (const axis of axesDef) {\n this.axesInfo[axis.quantumMove.family] = new AxisInfo(axis);\n }\n const stickers = this.stickerDat.stickers as any[];\n this.stickers = {};\n this.materialArray1 = new Array(8);\n this.materialArray2 = new Array(8);\n // TODO: the argument enableFoundationOpt really means, do we ever want to display\n // foundations. But it is presently *used* to mean, show foundations initially\n // (and maybe experimentalSetAppearance changes this). So for now we set up the\n // show flag from the enable flag, and turn on the enable flag so later when it's\n // used we will get the foundations. What this means is the geometry always \"pays\"\n // for foundations, even if they aren't displayed.\n this.showFoundation(enableFoundationOpt);\n enableFoundationOpt = true;\n let triangleCount = 0;\n const multiplier = 3;\n for (const sticker of stickers) {\n const sides = sticker.coords.length / 3;\n triangleCount += multiplier * (sides - 2);\n }\n const filler = new Filler(triangleCount, stickerDat.textureMapper);\n const black = 0;\n const normals: number[][] = [];\n let totArea = 0;\n for (const f of stickerDat.faces) {\n normals.push(normal(f.coords));\n totArea += polyarea(f.coords);\n }\n const colorfrac = DEFAULT_COLOR_FRACTION;\n let nonDupStickers = 0;\n for (const sticker of stickers) {\n if (!sticker.isDup) {\n nonDupStickers++;\n }\n }\n const trim =\n (Math.sqrt(totArea / nonDupStickers) * (1 - Math.sqrt(colorfrac))) / 2;\n for (const sticker of stickers) {\n const orbit = sticker.orbit;\n const ord = sticker.ord;\n const ori = sticker.ori;\n if (!this.stickers[orbit]) {\n this.stickers[orbit] = [];\n }\n if (!this.stickers[orbit][ori]) {\n this.stickers[orbit][ori] = [];\n }\n const options: { appearance?: ExperimentalFaceletMeshAppearance } = {};\n if (params.appearance) {\n options.appearance = experimentalGetFaceletAppearance(\n params.appearance,\n orbit,\n ord,\n ori,\n false,\n );\n }\n const stickerdef = new StickerDef(filler, sticker, trim, options);\n this.stickers[orbit][ori][ord] = stickerdef;\n }\n // TODO: the argument enableHintStickersOpt really means, do we ever want to display\n // hint stickers. But it is presently *used* to mean, show hint stickers initially\n // (and maybe experimentalSetAppearance changes this). So for now we set up the\n // show flag from the enable flag, and turn on the enable flag so later when it's\n // used we will get the hint stickers. What this means is the geometry always \"pays\"\n // for hint stickers, even if they aren't displayed.\n this.showHintStickers = enableHintStickersOpt;\n enableHintStickersOpt = true;\n for (const sticker of stickers) {\n const orbit = sticker.orbit;\n const ord = sticker.ord;\n const ori = sticker.ori;\n this.stickers[orbit][ori][ord].addHint(\n filler,\n sticker,\n enableHintStickersOpt,\n hintStickerHeightScale,\n trim,\n normals[sticker.face],\n );\n }\n this.foundationBound = filler.ipos;\n for (const sticker of stickers) {\n const orbit = sticker.orbit;\n const ord = sticker.ord;\n const ori = sticker.ori;\n if (enableFoundationOpt) {\n this.stickers[orbit][ori][ord].addFoundation(filler, sticker, black);\n }\n }\n const fixedGeo = new BufferGeometry();\n filler.setAttributes(fixedGeo);\n filler.makeGroups(fixedGeo);\n const obj = new Mesh(fixedGeo, this.materialArray1);\n obj.scale.set(PG_SCALE, PG_SCALE, PG_SCALE);\n this.add(obj);\n const obj2 = new Mesh(fixedGeo, this.materialArray2);\n obj2.scale.set(PG_SCALE, PG_SCALE, PG_SCALE);\n this.add(obj2);\n const hitfaces = this.stickerDat.faces as any[];\n this.movingObj = obj2;\n this.fixedGeo = fixedGeo;\n this.filler = filler;\n for (const hitface of hitfaces) {\n const facedef = new HitPlaneDef(\n hitface,\n stickerDat.textureMapper,\n this.stickerDat,\n );\n facedef.cubie.scale.set(PG_SCALE, PG_SCALE, PG_SCALE);\n this.add(facedef.cubie);\n this.controlTargets.push(facedef.cubie.children[0]);\n }\n filler.saveOriginalColors();\n stickerDat.stickers = []; // don't need these anymore\n this.updateMaterialArrays();\n /*\n this.experimentalUpdateTexture(\n true,\n new TextureLoader().load(\n \"/experiments.cubing.net/cubing.js/twisty/mkbhd-sprite-red.png\",\n ),\n new TextureLoader().load(\n \"/experiments.cubing.net/cubing.js/twisty/mkbhd-sprite-red-hint.png\",\n ),\n );\n */\n }\n\n public dispose(): void {\n if (this.fixedGeo) {\n this.fixedGeo.dispose();\n }\n if (this.stickerMaterialDisposable) {\n this.stickerMaterial.dispose();\n this.stickerMaterial = basicStickerMaterial;\n this.stickerMaterialDisposable = false;\n }\n if (this.hintMaterialDisposable) {\n this.hintMaterial.dispose();\n this.hintMaterial = basicStickerMaterial;\n this.hintMaterialDisposable = false;\n }\n }\n\n public experimentalGetStickerTargets(): Object3D[] {\n return this.stickerTargets;\n }\n\n public experimentalGetControlTargets(): Object3D[] {\n return this.controlTargets;\n }\n\n #isValidMove(move: Move): boolean {\n try {\n this.kpuzzle.moveToTransformation(move);\n return true;\n } catch (_) {\n return false;\n }\n }\n\n getClosestMoveToAxis(\n point: Vector3,\n transformations: {\n invert: boolean;\n depth?: \"secondSlice\" | \"rotation\" | \"none\";\n },\n ): { move: Move; order: number } | null {\n let closestMove: Move | null = null;\n let closestMoveDotProduct: number = 0;\n\n let modify: (move: Move) => Move = (m) => m;\n switch (transformations.depth) {\n case \"secondSlice\":\n modify = (m: Move) => m.modified({ innerLayer: 2 });\n break;\n case \"rotation\":\n modify = (m: Move) => m.modified({ family: m.family + \"v\" });\n break;\n }\n\n for (const axis of this.stickerDat.axis) {\n const product = point.dot(new Vector3(...axis.coordinates));\n if (product > closestMoveDotProduct) {\n const modified = this.stickerDat.notationMapper.notationToExternal(\n modify(axis.quantumMove),\n );\n if (!modified) {\n continue;\n }\n if (this.#isValidMove(modified)) {\n closestMoveDotProduct = product;\n closestMove = modified;\n }\n }\n }\n\n if (!closestMove) {\n return null;\n }\n\n if (transformations.invert) {\n closestMove = closestMove.invert();\n }\n const order = this.kpuzzle\n .moveToTransformation(closestMove)\n .repetitionOrder();\n return { move: closestMove, order }; // TODO: push this down\n }\n\n experimentalSetAppearance(appearance: ExperimentalPuzzleAppearance): void {\n this.params.appearance = appearance;\n for (const orbitName in this.kpuzzle.definition.orbits) {\n const { numPieces, numOrientations: orientations } =\n this.kpuzzle.definition.orbits[orbitName];\n for (let pieceIdx = 0; pieceIdx < numPieces; pieceIdx++) {\n for (let faceletIdx = 0; faceletIdx < orientations; faceletIdx++) {\n const faceletAppearance = experimentalGetFaceletAppearance(\n appearance,\n orbitName,\n pieceIdx,\n faceletIdx,\n false,\n );\n const stickerDef = this.stickers[orbitName][faceletIdx][pieceIdx];\n if (\n this.textured &&\n this.hintMaterialDisposable &&\n faceletAppearance === \"invisible\"\n ) {\n // ignore \"invisible\" if textured hints\n } else {\n stickerDef.setAppearance(this.filler, faceletAppearance);\n }\n }\n }\n }\n this.#pendingStickeringUpdate = true;\n if (this.lastPos) {\n this.onPositionChange(this.lastPos);\n }\n }\n\n public onPositionChange(p: PuzzlePosition): void {\n const transformation = p.state.experimentalToTransformation();\n if (!transformation) {\n throw new Error(\"indistinguishable pieces are not supported by PG3D yet\");\n }\n const noRotation = new Euler();\n this.movingObj.rotation.copy(noRotation);\n let colormods = 0;\n const filler = this.filler;\n const ind = filler.ind;\n if (\n !this.lastPos ||\n this.#pendingStickeringUpdate ||\n !this.lastPos.state\n .experimentalToTransformation()!\n .isIdentical(transformation)\n ) {\n for (const orbit in this.stickers) {\n const pieces = this.stickers[orbit];\n const pos2 = transformation.transformationData[orbit];\n const orin = pieces.length;\n if (orin === 1) {\n const pieces2 = pieces[0];\n for (let i = 0; i < pieces2.length; i++) {\n const ni = pos2.permutation[i];\n if (this.textured) {\n colormods += pieces2[i].setTexture(filler, pieces2[ni]);\n } else {\n colormods += pieces2[i].setColor(filler, pieces2[ni]);\n }\n }\n } else {\n for (let ori = 0; ori < orin; ori++) {\n const pieces2 = pieces[ori];\n for (let i = 0; i < pieces2.length; i++) {\n const nori = (ori + orin - pos2.orientation[i]) % orin;\n const ni = pos2.permutation[i];\n if (this.textured) {\n colormods += pieces2[i].setTexture(filler, pieces[nori][ni]);\n } else {\n colormods += pieces2[i].setColor(filler, pieces[nori][ni]);\n }\n }\n }\n }\n }\n this.lastPos = p;\n }\n let vismods = 0;\n for (const moveProgress of p.movesInProgress) {\n const externalMove = moveProgress.move;\n // TODO: unswizzle goes external to internal, and so does the call after that\n // and so does the stateForBlockMove call\n const unswizzled = this.stickerDat.unswizzle(externalMove);\n if (!unswizzled) {\n // bad times, but let's not throw.\n return;\n }\n\n const move = externalMove;\n const quantumTransformation = this.kpuzzle.moveToTransformation(\n move.modified({ amount: 1 }),\n ); // TODO\n\n const ax = this.axesInfo[unswizzled.family];\n const turnNormal = ax.axis;\n const angle =\n (-this.ease(moveProgress.fraction) *\n moveProgress.direction *\n unswizzled.amount *\n TAU) /\n ax.order;\n this.movingObj.rotateOnAxis(turnNormal, angle);\n if (this.lastMoveTransformation !== quantumTransformation) {\n for (const orbit in this.stickers) {\n const pieces = this.stickers[orbit];\n const orin = pieces.length;\n const bmv = quantumTransformation.transformationData[orbit];\n for (let ori = 0; ori < orin; ori++) {\n const pieces2 = pieces[ori];\n for (let i = 0; i < pieces2.length; i++) {\n const p2 = pieces2[i];\n const ni = bmv.permutation[i];\n let tv = 0;\n if (ni !== i || bmv.orientation[i] !== 0) {\n tv = 1;\n }\n if (tv !== p2.twistVal) {\n if (tv) {\n for (let j = p2.stickerStart; j < p2.stickerEnd; j++) {\n ind[j] |= 1;\n }\n for (let j = p2.hintStart; j < p2.hintEnd; j++) {\n ind[j] |= 1;\n }\n for (let j = p2.foundationStart; j < p2.foundationEnd; j++) {\n ind[j] |= 1;\n }\n } else {\n for (let j = p2.stickerStart; j < p2.stickerEnd; j++) {\n ind[j] &= ~1;\n }\n for (let j = p2.hintStart; j < p2.hintEnd; j++) {\n ind[j] &= ~1;\n }\n for (let j = p2.foundationStart; j < p2.foundationEnd; j++) {\n ind[j] &= ~1;\n }\n }\n p2.twistVal = tv;\n vismods++;\n }\n }\n }\n }\n this.lastMoveTransformation = quantumTransformation;\n }\n }\n if (this.#pendingStickeringUpdate || vismods) {\n this.filler.makeGroups(this.fixedGeo);\n }\n if (this.#pendingStickeringUpdate || colormods) {\n if (this.textured) {\n (this.fixedGeo.getAttribute(\"uv\") as BufferAttribute).updateRange = {\n offset: 0,\n count: 6 * this.foundationBound,\n };\n (this.fixedGeo.getAttribute(\"uv\") as BufferAttribute).needsUpdate =\n true;\n }\n if (this.#pendingStickeringUpdate || !this.textured) {\n (this.fixedGeo.getAttribute(\"color\") as BufferAttribute).updateRange = {\n offset: 0,\n count: 9 * this.foundationBound,\n };\n (this.fixedGeo.getAttribute(\"color\") as BufferAttribute).needsUpdate =\n true;\n }\n }\n this.scheduleRenderCallback();\n this.#pendingStickeringUpdate = false;\n }\n\n private ease(fraction: number): number {\n return smootherStep(fraction);\n }\n\n private showHintFacelets(v: boolean) {\n this.showHintStickers = v;\n }\n\n private updateMaterialArrays() {\n for (let i = 0; i < 8; i++) {\n this.materialArray1[i] = invisMaterial;\n this.materialArray2[i] = invisMaterial;\n }\n this.materialArray1[0] = this.stickerMaterial;\n this.materialArray2[1] = this.stickerMaterial;\n if (this.showHintStickers) {\n this.materialArray1[2] = this.hintMaterial;\n this.materialArray2[3] = this.hintMaterial;\n } else {\n this.materialArray1[2] = invisMaterial;\n this.materialArray2[3] = invisMaterial;\n }\n if (this.showFoundations) {\n this.materialArray1[6] = foundationMaterial;\n this.materialArray2[7] = foundationMaterial;\n } else {\n this.materialArray1[6] = invisMaterial;\n this.materialArray2[7] = invisMaterial;\n }\n }\n\n private showFoundation(v: boolean) {\n this.showFoundations = v;\n }\n\n private setHintStickerOpacity(v: number): void {\n if (this.hintMaterialDisposable) {\n this.hintMaterial.dispose();\n this.hintMaterialDisposable = false;\n }\n if (v === 0) {\n this.hintMaterial = invisMaterial;\n } else if (v === 1) {\n this.hintMaterial = this.stickerMaterial;\n } else {\n this.hintMaterial = new MeshBasicMaterial({\n vertexColors: true,\n transparent: true,\n opacity: 0.5,\n });\n this.hintMaterialDisposable = true;\n }\n }\n\n public experimentalUpdateOptions(options: {\n showMainStickers?: boolean;\n hintFacelets?: HintFaceletStyle;\n showFoundation?: boolean; // TODO: better name\n hintStickerOpacity?: number;\n }): void {\n if (options.hintFacelets !== undefined) {\n this.showHintFacelets(options.hintFacelets !== \"none\");\n }\n if (options.showFoundation !== undefined) {\n this.showFoundation(options.showFoundation);\n }\n if (options.hintStickerOpacity !== undefined) {\n this.setHintStickerOpacity(options.hintStickerOpacity);\n }\n this.#pendingStickeringUpdate = true;\n if (this.lastPos) {\n this.onPositionChange(this.lastPos);\n }\n this.updateMaterialArrays();\n this.scheduleRenderCallback();\n }\n\n private adduvs() {\n const filler = this.filler;\n if (filler.uvs) {\n return;\n }\n this.filler.uvs = new Float32Array(12 * filler.sz);\n for (const orbit in this.stickers) {\n const pieces = this.stickers[orbit];\n const orin = pieces.length;\n for (let ori = 0; ori < orin; ori++) {\n const pieces2 = pieces[ori];\n for (const piece2 of pieces2) {\n piece2.addUVs(this.filler);\n }\n }\n }\n filler.uvs!.copyWithin(6 * filler.sz, 0, 6 * filler.sz);\n const sa1 = filler.uvs!.subarray(0, 6 * filler.sz);\n this.fixedGeo.setAttribute(\"uv\", new BufferAttribute(sa1, 2, true));\n }\n\n public experimentalUpdateTexture(\n enabled: boolean,\n stickerTexture?: Texture | null,\n hintTexture?: Texture | null,\n ) {\n if (!stickerTexture) {\n enabled = false;\n }\n if (enabled && !this.filler.uvs) {\n this.adduvs();\n }\n this.textured = enabled;\n if (this.stickerMaterialDisposable) {\n this.stickerMaterial.dispose();\n this.stickerMaterialDisposable = false;\n }\n if (enabled) {\n this.stickerMaterial = new MeshBasicMaterial({\n map: stickerTexture,\n side: FrontSide,\n transparent: false,\n });\n this.stickerMaterialDisposable = true;\n } else {\n this.stickerMaterial = basicStickerMaterial;\n }\n if (this.hintMaterialDisposable) {\n this.hintMaterial.dispose();\n this.hintMaterialDisposable = false;\n }\n if (enabled) {\n this.hintMaterial = new MeshBasicMaterial({\n map: hintTexture,\n side: FrontSide,\n transparent: false,\n });\n this.hintMaterialDisposable = true;\n } else {\n this.hintMaterial = basicStickerMaterial;\n }\n if (enabled) {\n this.showHintFacelets(hintTexture !== null);\n }\n this.updateMaterialArrays();\n this.#pendingStickeringUpdate = true;\n if (this.lastPos) {\n this.onPositionChange(this.lastPos);\n }\n this.scheduleRenderCallback();\n }\n}\n", "import { cube3x3x3, PuzzleLoader } from \"../../../puzzles\";\nimport type { HintFaceletStyle } from \"../../model/props/puzzle/display/HintFaceletProp\";\nimport { Cube3D, Cube3DOptions } from \"../../views/3D/puzzles/Cube3D\";\nimport { PG3D } from \"../../views/3D/puzzles/PG3D\";\n\n// Mangled to avoid autocompleting.\n// This must not be imported directly.\nexport * as T3I from \"three\";\nexport { Cube3D } from \"../../views/3D/puzzles/Cube3D\";\nexport { PG3D } from \"../../views/3D/puzzles/PG3D\";\nexport { Twisty3DScene } from \"../../views/3D/Twisty3DScene\";\n\nexport async function cube3DShim(options?: Cube3DOptions): Promise<Cube3D> {\n const renderCallbackShim = () => {};\n return new Cube3D(await cube3x3x3.kpuzzle(), renderCallbackShim, options);\n}\n\n// TODO: take loader?\nexport async function pg3dShim(\n puzzleLoader: PuzzleLoader,\n hintFacelets: HintFaceletStyle,\n): Promise<PG3D> {\n const renderCallbackShim = () => {};\n return new PG3D(\n renderCallbackShim,\n await puzzleLoader.kpuzzle(),\n (await puzzleLoader.pg!()).get3d(),\n true,\n hintFacelets === \"floating\",\n );\n}\n", "import type { Scene as ThreeScene } from \"three\";\nimport { THREEJS } from \"../../heavy-code-imports/3d\";\nimport type { Twisty3DPuzzle } from \"./puzzles/Twisty3DPuzzle\";\nimport type { Twisty3DRenderTarget } from \"./Twisty3DRenderTarget\";\n\nexport class Twisty3DScene implements Twisty3DRenderTarget {\n private renderTargets: Set<Twisty3DRenderTarget> = new Set();\n public twisty3Ds: Set<Twisty3DPuzzle> = new Set();\n\n threeJSScene: Promise<ThreeScene> = (async () =>\n new (await THREEJS).Scene())();\n constructor() {}\n\n addRenderTarget(renderTarget: Twisty3DRenderTarget): void {\n this.renderTargets.add(renderTarget);\n }\n\n scheduleRender(): void {\n for (const renderTarget of this.renderTargets) {\n renderTarget.scheduleRender();\n }\n }\n\n async addTwisty3DPuzzle(twisty3DPuzzle: Twisty3DPuzzle): Promise<void> {\n this.twisty3Ds.add(twisty3DPuzzle);\n (await this.threeJSScene).add(twisty3DPuzzle);\n // TODO: scheduleRender?\n }\n\n async removeTwisty3DPuzzle(twisty3DPuzzle: Twisty3DPuzzle): Promise<void> {\n this.twisty3Ds.delete(twisty3DPuzzle);\n (await this.threeJSScene).remove(twisty3DPuzzle);\n // TODO: scheduleRender?\n }\n\n async clearPuzzles(): Promise<void> {\n for (const puz of this.twisty3Ds) {\n (await this.threeJSScene).remove(puz);\n }\n this.twisty3Ds.clear();\n // TODO: scheduleRender?\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,278 @@
1
+ declare enum IterationDirection {
2
+ Forwards = 1,
3
+ Backwards = -1
4
+ }
5
+ declare function direct<T>(g: Iterable<T>, iterDir: IterationDirection): Iterable<T>;
6
+ declare function directedGenerator<T>(g: Generator<T>, direction: IterationDirection): Generator<T>;
7
+
8
+ interface QuantumMoveModifications {
9
+ outerLayer?: number;
10
+ innerLayer?: number;
11
+ family?: string;
12
+ }
13
+ declare class QuantumMove extends Comparable {
14
+ #private;
15
+ constructor(family: string, innerLayer?: number | null, outerLayer?: number | null);
16
+ static fromString(s: string): QuantumMove;
17
+ modified(modifications: QuantumMoveModifications): QuantumMove;
18
+ isIdentical(other: QuantumMove): boolean;
19
+ /** @deprecated */
20
+ get family(): string;
21
+ /** @deprecated */
22
+ get outerLayer(): number | null;
23
+ /** @deprecated */
24
+ get innerLayer(): number | null;
25
+ experimentalExpand(): Generator<LeafUnit>;
26
+ toString(): string;
27
+ }
28
+ interface MoveModifications {
29
+ outerLayer?: number;
30
+ innerLayer?: number;
31
+ family?: string;
32
+ amount?: number;
33
+ }
34
+ declare class Move extends AlgCommon<Move> {
35
+ #private;
36
+ constructor(...args: [QuantumMove] | [QuantumMove, number] | [string] | [string, number]);
37
+ isIdentical(other: Comparable): boolean;
38
+ invert(): Move;
39
+ experimentalExpand(iterDir?: IterationDirection): Generator<LeafUnit>;
40
+ get quantum(): QuantumMove;
41
+ modified(modifications: MoveModifications): Move;
42
+ static fromString(s: string): Move;
43
+ get amount(): number;
44
+ /** @deprecated */
45
+ get type(): string;
46
+ /** @deprecated */
47
+ get family(): string;
48
+ /** @deprecated */
49
+ get outerLayer(): number | undefined;
50
+ /** @deprecated */
51
+ get innerLayer(): number | undefined;
52
+ toString(): string;
53
+ }
54
+
55
+ declare class Grouping extends AlgCommon<Grouping> {
56
+ #private;
57
+ constructor(algSource: FlexibleAlgSource, amount?: number);
58
+ isIdentical(other: Comparable): boolean;
59
+ get alg(): Alg;
60
+ get amount(): number;
61
+ /** @deprecated */
62
+ get experimentalRepetitionSuffix(): string;
63
+ invert(): Grouping;
64
+ experimentalExpand(iterDir?: IterationDirection, depth?: number): Generator<LeafUnit>;
65
+ static fromString(): Grouping;
66
+ toString(): string;
67
+ experimentalAsSquare1Tuple(): [moveU: Move, moveD: Move] | null;
68
+ }
69
+
70
+ declare class LineComment extends AlgCommon<LineComment> {
71
+ #private;
72
+ constructor(commentText: string);
73
+ get text(): string;
74
+ isIdentical(other: Comparable): boolean;
75
+ invert(): LineComment;
76
+ experimentalExpand(_iterDir?: IterationDirection, _depth?: number): Generator<LeafUnit>;
77
+ toString(): string;
78
+ }
79
+
80
+ declare class Commutator extends AlgCommon<Commutator> {
81
+ #private;
82
+ constructor(aSource: FlexibleAlgSource, bSource: FlexibleAlgSource);
83
+ get A(): Alg;
84
+ get B(): Alg;
85
+ isIdentical(other: Comparable): boolean;
86
+ invert(): Commutator;
87
+ experimentalExpand(iterDir?: IterationDirection, depth?: number): Generator<LeafUnit>;
88
+ toString(): string;
89
+ }
90
+
91
+ declare class Conjugate extends AlgCommon<Conjugate> {
92
+ #private;
93
+ constructor(aSource: FlexibleAlgSource, bSource: FlexibleAlgSource);
94
+ get A(): Alg;
95
+ get B(): Alg;
96
+ isIdentical(other: Comparable): boolean;
97
+ invert(): Conjugate;
98
+ experimentalExpand(iterDir: IterationDirection, depth?: number): Generator<LeafUnit>;
99
+ toString(): string;
100
+ }
101
+
102
+ declare class Newline extends AlgCommon<Newline> {
103
+ toString(): string;
104
+ isIdentical(other: Comparable): boolean;
105
+ invert(): Newline;
106
+ experimentalExpand(_iterDir?: IterationDirection, _depth?: number): Generator<LeafUnit>;
107
+ }
108
+
109
+ declare class Pause extends AlgCommon<Pause> {
110
+ toString(): string;
111
+ isIdentical(other: Comparable): boolean;
112
+ invert(): Pause;
113
+ experimentalExpand(_iterDir?: IterationDirection, _depth?: number): Generator<LeafUnit>;
114
+ }
115
+
116
+ declare type LeafUnit = Move | LineComment | Newline | Pause;
117
+ declare type Unit = LeafUnit | Grouping | Conjugate | Commutator;
118
+
119
+ declare abstract class Comparable {
120
+ is(c: any): boolean;
121
+ as<T>(c: new (...args: any) => T): T | null;
122
+ abstract isIdentical(other: Comparable): boolean;
123
+ }
124
+ interface Repeatable extends Comparable {
125
+ experimentalExpand(iterDir?: IterationDirection, depth?: number): Generator<LeafUnit>;
126
+ }
127
+ declare abstract class AlgCommon<T extends Alg | Unit> extends Comparable implements Repeatable {
128
+ constructor();
129
+ get log(): (message?: any) => void;
130
+ abstract toString(): string;
131
+ abstract invert(): T;
132
+ abstract experimentalExpand(iterDir: IterationDirection): Generator<LeafUnit>;
133
+ }
134
+
135
+ declare abstract class TraversalDownUp<DataDown, DataAlgUp, DataUnitUp = DataAlgUp> {
136
+ traverseUnit(unit: Unit, dataDown: DataDown): DataUnitUp;
137
+ traverseIntoUnit(unit: Unit, dataDown: DataDown): Unit;
138
+ abstract traverseAlg(alg: Alg, dataDown: DataDown): DataAlgUp;
139
+ abstract traverseGrouping(grouping: Grouping, dataDown: DataDown): DataUnitUp;
140
+ abstract traverseMove(move: Move, dataDown: DataDown): DataUnitUp;
141
+ abstract traverseCommutator(commutator: Commutator, dataDown: DataDown): DataUnitUp;
142
+ abstract traverseConjugate(conjugate: Conjugate, dataDown: DataDown): DataUnitUp;
143
+ abstract traversePause(pause: Pause, dataDown: DataDown): DataUnitUp;
144
+ abstract traverseNewline(newline: Newline, dataDown: DataDown): DataUnitUp;
145
+ abstract traverseLineComment(comment: LineComment, dataDown: DataDown): DataUnitUp;
146
+ }
147
+ declare abstract class TraversalUp<DataAlgUp, DataUnitUp = DataAlgUp> extends TraversalDownUp<undefined, DataAlgUp, DataUnitUp> {
148
+ traverseUnit(unit: Unit): DataUnitUp;
149
+ traverseIntoUnit(unit: Unit): Unit;
150
+ abstract traverseAlg(alg: Alg): DataAlgUp;
151
+ abstract traverseGrouping(grouping: Grouping): DataUnitUp;
152
+ abstract traverseMove(move: Move): DataUnitUp;
153
+ abstract traverseCommutator(commutator: Commutator): DataUnitUp;
154
+ abstract traverseConjugate(conjugate: Conjugate): DataUnitUp;
155
+ abstract traversePause(pause: Pause): DataUnitUp;
156
+ abstract traverseNewline(newline: Newline): DataUnitUp;
157
+ abstract traverseLineComment(comment: LineComment): DataUnitUp;
158
+ }
159
+ interface SimplifyOptions {
160
+ collapseMoves?: boolean;
161
+ quantumMoveOrder?: (quantumMove: QuantumMove) => number;
162
+ depth?: number | null;
163
+ }
164
+
165
+ declare type FlexibleAlgSource = string | Iterable<Unit> | Alg;
166
+ /**
167
+ * Alg is a class that encapsulated a structured alg. To create an alg from a string, use:
168
+ *
169
+ * new Alg("R U R'"); // Convenient
170
+ * Alg.fromString(dynamicString); // Recommended when handling dynamic input.
171
+ *
172
+ * Once you have an Alg, you can call methods to transform it:
173
+ *
174
+ * new Alg("[[R: U], R U R2']").expand().simplify().invert();
175
+ *
176
+ * To convert an Alg to a string, use .toString():
177
+ *
178
+ * new Alg("R U F").invert().toString();
179
+ *
180
+ * If you need to debug, you may also find it convenient to use .log():
181
+ *
182
+ * if (alg.isIdentical(alg.invert())) {
183
+ * alg.log("A self-inverse!")
184
+ * }
185
+ *
186
+ * For more information, see: {@link https://js.cubing.net/cubing/alg/}
187
+ *
188
+ */
189
+ declare class Alg extends AlgCommon<Alg> {
190
+ #private;
191
+ constructor(alg?: FlexibleAlgSource);
192
+ /**
193
+ * Checks whether this Alg is structurally identical to another Alg. This
194
+ * essentially means that they are written identically apart from whitespace.
195
+ *
196
+ * const alg1 = new Alg("R U L'");
197
+ * const alg2 = new Alg("L U' R'").invert();
198
+ * // true
199
+ * alg1.isIdentical(alg2);
200
+ *
201
+ * // false
202
+ * new Alg("[R, U]").isIdentical(new Alg("R U R' U'"));
203
+ * // true
204
+ * new Alg("[R, U]").expand().isIdentical(new Alg("R U R' U'"));
205
+ *
206
+ * Note that .isIdentical() efficiently compares algorithms, but mainly exists
207
+ * to help optimize code when the structure of an algorithm hasn't changed.
208
+ * There are many ways to write the "same" alg on most puzzles, but is
209
+ * *highly* recommended to avoid expanding two Alg instances to compare them,
210
+ * since that can easily slow your program to a crawl if someone inputs an alg
211
+ * containing a large repetition. In general, you should use `cubing/kpuzzle`
212
+ * to compare if two algs have the same effect on a puzzle.
213
+ *
214
+ * Also note that parser annotations are not take into account while comparing
215
+ * algs:
216
+ *
217
+ * const alg = new Alg([new Move("R"), new Move("U2")]);
218
+ * // true, even though one of the algs has parser annotations
219
+ * alg.isIdentical(new Alg("R U2"))
220
+ *
221
+ */
222
+ isIdentical(other: Comparable): boolean;
223
+ /**
224
+ * Returns the inverse of the given alg.
225
+ *
226
+ * Note that that this does not make any assumptions about what puzzle the alg
227
+ * is for. For example, U2 is its own inverse on a cube, but U2' has the same
228
+ * effect U3 (and not U2) on Megaminx:
229
+ *
230
+ * // Outputs: R U2' L'
231
+ * new Alg("L U2 R'").invert().log();
232
+ */
233
+ invert(): Alg;
234
+ /** @deprecated Use {@link Alg.expand} instead. */
235
+ experimentalExpand(iterDir?: IterationDirection, depth?: number): Generator<LeafUnit>;
236
+ /**
237
+ * Expands all Grouping, Commutator, and Conjugate parts nested inside the
238
+ * alg.
239
+ *
240
+ * // F R U R' U' F'
241
+ * new Alg("[F: [R, U]]").expand().log();
242
+ *
243
+ * // F [R, U] F'
244
+ * new Alg("[F: [R, U]]").expand(({ depth: 1 }).log();
245
+ *
246
+ * Avoid calling this on a user-provided alg unless the user explicitly asks
247
+ * to see the expanded alg. Otherwise, it's easy to make your program freeze
248
+ * when someone passes in an alg like: (R U)10000000
249
+ *
250
+ * Generally, if you want to perform an operation on an entire alg, you'll
251
+ * want to use something based on the `Traversal` mechanism, like countMoves()
252
+ * from `cubing/notation`.
253
+ */
254
+ expand(options?: {
255
+ depth?: number;
256
+ }): Alg;
257
+ /** @deprecated */
258
+ experimentalLeafMoves(): Generator<Move>;
259
+ concat(input: FlexibleAlgSource): Alg;
260
+ /** @deprecated */
261
+ experimentalIsEmpty(): boolean;
262
+ static fromString(s: string): Alg;
263
+ units(): Generator<Unit>;
264
+ experimentalNumUnits(): number;
265
+ /** @deprecated */
266
+ get type(): string;
267
+ /**
268
+ * Converts the Alg to a string:
269
+ *
270
+ * const alg = new Alg([new Move("R"), new Move("U2"), new Move("L")])
271
+ * // R U2 L
272
+ * console.log(alg.toString())
273
+ */
274
+ toString(): string;
275
+ simplify(options?: SimplifyOptions): Alg;
276
+ }
277
+
278
+ export { Alg 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, TraversalDownUp as T, Unit as U, Conjugate as a, TraversalUp as b, MoveModifications as c, directedGenerator as d, direct as e };