cubing 0.21.1 → 0.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. package/README.md +4 -7
  2. package/{src/cubing/kpuzzle → dist}/.DS_Store +0 -0
  3. package/dist/bin/order.js +16675 -0
  4. package/dist/bin/order.js.map +7 -0
  5. package/dist/bin/puzzle-geometry-bin.js +13 -9
  6. package/dist/bin/puzzle-geometry-bin.js.map +2 -2
  7. package/dist/bundle-global/cubing.bundle-global.js +555 -298
  8. package/dist/esm/3d-M7GBIT3X.js +21 -0
  9. package/dist/esm/3d-M7GBIT3X.js.map +7 -0
  10. package/dist/esm/alg/index.js +1 -1
  11. package/dist/esm/bluetooth/index.js +10 -8
  12. package/dist/esm/bluetooth/index.js.map +3 -3
  13. package/dist/esm/{chunk-RE7MIN5R.js → chunk-4IUYLRHT.js} +2 -2
  14. package/dist/esm/{chunk-RE7MIN5R.js.map → chunk-4IUYLRHT.js.map} +0 -0
  15. package/dist/esm/{chunk-CSVAFZSB.js → chunk-6BZSKSG7.js} +724 -735
  16. package/dist/esm/chunk-6BZSKSG7.js.map +7 -0
  17. package/dist/esm/{chunk-BU5PUJK3.js → chunk-EWRBHQFX.js} +1 -1
  18. package/dist/esm/{chunk-BU5PUJK3.js.map → chunk-EWRBHQFX.js.map} +1 -1
  19. package/dist/esm/{chunk-APIIMJG6.js → chunk-GF76PWEV.js} +450 -1052
  20. package/dist/esm/chunk-GF76PWEV.js.map +7 -0
  21. package/dist/esm/{chunk-MUQMBH2S.js → chunk-R3HRHYIW.js} +16 -4
  22. package/dist/esm/chunk-R3HRHYIW.js.map +7 -0
  23. package/dist/esm/{chunk-YV3RT5PX.js → chunk-X6JHXPDX.js} +2 -2
  24. package/dist/esm/{chunk-YV3RT5PX.js.map → chunk-X6JHXPDX.js.map} +0 -0
  25. package/dist/esm/esm-test-worker.js +2 -2
  26. package/dist/esm/esm-test-worker.js.map +2 -2
  27. package/dist/esm/kpuzzle/index.js +2 -2
  28. package/dist/esm/{node-WEHVBEKP.js → node-HFBX5WHK.js} +2 -2
  29. package/dist/esm/{node-WEHVBEKP.js.map → node-HFBX5WHK.js.map} +1 -1
  30. package/dist/esm/{node-BSAQKO3G.js → node-SP4L2AKI.js} +2 -2
  31. package/dist/esm/{node-BSAQKO3G.js.map → node-SP4L2AKI.js.map} +1 -1
  32. package/dist/esm/notation/index.js +2 -2
  33. package/dist/esm/protocol/index.js +2 -2
  34. package/dist/esm/puzzle-geometry/index.js +14 -10
  35. package/dist/esm/puzzle-geometry/index.js.map +2 -2
  36. package/dist/esm/puzzles/index.js +3 -3
  37. package/dist/esm/scramble/index.js +4 -4
  38. package/dist/esm/search/index.js +4 -4
  39. package/dist/esm/stream/index.js +1 -1
  40. package/dist/esm/twisty/index.js +729 -2346
  41. package/dist/esm/twisty/index.js.map +3 -3
  42. package/dist/esm/worker-inside-generated-string-RQYYANYQ.js +3107 -0
  43. package/dist/esm/worker-inside-generated-string-RQYYANYQ.js.map +7 -0
  44. package/dist/types/alg/index.d.ts +1 -0
  45. package/dist/types/alg/index.d.ts.map +1 -1
  46. package/dist/types/alg/units/leaves/Move.d.ts +1 -1
  47. package/dist/types/alg/units/leaves/Move.d.ts.map +1 -1
  48. package/dist/types/bluetooth/smart-puzzle/gan.d.ts.map +1 -1
  49. package/dist/types/cubing.bundle-global.d.ts +1 -24
  50. package/dist/types/cubing.bundle-global.d.ts.map +1 -1
  51. package/dist/types/cubing.bundle-global.exports.d.ts +25 -0
  52. package/dist/types/cubing.bundle-global.exports.d.ts.map +1 -0
  53. package/dist/types/puzzle-geometry/PGPuzzles.spec.d.ts +3 -0
  54. package/dist/types/puzzle-geometry/PGPuzzles.spec.d.ts.map +1 -1
  55. package/dist/types/puzzle-geometry/PuzzleGeometry.d.ts +7 -3
  56. package/dist/types/puzzle-geometry/PuzzleGeometry.d.ts.map +1 -1
  57. package/dist/types/puzzle-geometry/index.d.ts +1 -1
  58. package/dist/types/puzzle-geometry/index.d.ts.map +1 -1
  59. package/dist/types/puzzles/index.d.ts +1 -1
  60. package/dist/types/puzzles/index.d.ts.map +1 -1
  61. package/dist/types/puzzles/stickerings/cube-stickerings.d.ts.map +1 -1
  62. package/dist/types/search/inside/api.d.ts.map +1 -1
  63. package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts +1 -1
  64. package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts.map +1 -1
  65. package/dist/types/search/inside/solve/puzzles/fto.d.ts +6 -0
  66. package/dist/types/search/inside/solve/puzzles/fto.d.ts.map +1 -0
  67. package/dist/types/search/inside/solve/puzzles/fto.sgs.json.d.ts +5 -0
  68. package/dist/types/search/inside/solve/puzzles/fto.sgs.json.d.ts.map +1 -0
  69. package/dist/types/search/inside/solve/tremble.d.ts.map +1 -1
  70. package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
  71. package/dist/types/search/worker-inside-generated-string.d.ts.map +1 -1
  72. package/dist/types/twisty/{old/animation/cursor/CursorTypes.d.ts → controllers/AnimationTypes.d.ts} +10 -3
  73. package/dist/types/twisty/controllers/AnimationTypes.d.ts.map +1 -0
  74. package/dist/types/twisty/{old/animation → controllers}/RenderScheduler.d.ts +0 -0
  75. package/dist/types/twisty/controllers/RenderScheduler.d.ts.map +1 -0
  76. package/dist/types/twisty/controllers/TwistyAnimationController.d.ts +1 -1
  77. package/dist/types/twisty/controllers/TwistyAnimationController.d.ts.map +1 -1
  78. package/dist/types/twisty/{old/animation → controllers}/easing.d.ts +0 -0
  79. package/dist/types/twisty/controllers/easing.d.ts.map +1 -0
  80. package/dist/types/twisty/{old/animation → controllers}/indexer/AlgDuration.d.ts +2 -2
  81. package/dist/types/twisty/controllers/indexer/AlgDuration.d.ts.map +1 -0
  82. package/dist/types/twisty/{old/animation → controllers}/indexer/AlgIndexer.d.ts +3 -3
  83. package/dist/types/twisty/controllers/indexer/AlgIndexer.d.ts.map +1 -0
  84. package/dist/types/twisty/{old/animation → controllers}/indexer/SimpleAlgIndexer.d.ts +3 -3
  85. package/dist/types/twisty/controllers/indexer/SimpleAlgIndexer.d.ts.map +1 -0
  86. package/dist/types/twisty/{old/animation → controllers}/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts +3 -3
  87. package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts.map +1 -0
  88. package/dist/types/twisty/{old/animation → controllers}/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.d.ts +3 -3
  89. package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.d.ts.map +1 -0
  90. package/dist/types/twisty/{old/animation → controllers}/indexer/simultaneous-moves/simul-moves.d.ts +2 -2
  91. package/dist/types/twisty/controllers/indexer/simultaneous-moves/simul-moves.d.ts.map +1 -0
  92. package/dist/types/twisty/{old/animation → controllers}/indexer/tree/AlgWalker.d.ts +2 -2
  93. package/dist/types/twisty/controllers/indexer/tree/AlgWalker.d.ts.map +1 -0
  94. package/dist/types/twisty/{old/animation → controllers}/indexer/tree/TreeAlgIndexer.d.ts +3 -3
  95. package/dist/types/twisty/controllers/indexer/tree/TreeAlgIndexer.d.ts.map +1 -0
  96. package/dist/types/twisty/controllers/indexer/tree/chunkAlgs.d.ts +3 -0
  97. package/dist/types/twisty/controllers/indexer/tree/chunkAlgs.d.ts.map +1 -0
  98. package/dist/types/twisty/{old/animation → controllers}/stream/timeline-move-calculation-draft.d.ts +2 -2
  99. package/dist/types/twisty/controllers/stream/timeline-move-calculation-draft.d.ts.map +1 -0
  100. package/dist/types/twisty/heavy-code-imports/dynamic-entries/3d.d.ts +1 -2
  101. package/dist/types/twisty/heavy-code-imports/dynamic-entries/3d.d.ts.map +1 -1
  102. package/dist/types/twisty/index.d.ts +9 -12
  103. package/dist/types/twisty/index.d.ts.map +1 -1
  104. package/dist/types/twisty/model/TwistyPlayerModel.d.ts +11 -0
  105. package/dist/types/twisty/model/TwistyPlayerModel.d.ts.map +1 -1
  106. package/dist/types/twisty/model/props/TwistyPropDebugger.d.ts +1 -1
  107. package/dist/types/twisty/model/props/TwistyPropDebugger.d.ts.map +1 -1
  108. package/dist/types/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts +6 -0
  109. package/dist/types/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts.map +1 -0
  110. package/dist/types/twisty/model/props/puzzle/display/HintFaceletProp.d.ts +5 -1
  111. package/dist/types/twisty/model/props/puzzle/display/HintFaceletProp.d.ts.map +1 -1
  112. package/dist/types/twisty/model/props/puzzle/display/StickeringProp.d.ts +46 -1
  113. package/dist/types/twisty/model/props/puzzle/display/StickeringProp.d.ts.map +1 -1
  114. package/dist/types/twisty/model/props/puzzle/state/AnchoredStartProp.d.ts +2 -2
  115. package/dist/types/twisty/model/props/puzzle/state/AnchoredStartProp.d.ts.map +1 -1
  116. package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesProp.d.ts +1 -1
  117. package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesProp.d.ts.map +1 -1
  118. package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts +1 -1
  119. package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts.map +1 -1
  120. package/dist/types/twisty/model/props/puzzle/state/CurrentTransformationProp.d.ts +1 -1
  121. package/dist/types/twisty/model/props/puzzle/state/CurrentTransformationProp.d.ts.map +1 -1
  122. package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts +5 -2
  123. package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts.map +1 -1
  124. package/dist/types/twisty/model/props/puzzle/state/IndexerProp.d.ts +2 -2
  125. package/dist/types/twisty/model/props/puzzle/state/IndexerProp.d.ts.map +1 -1
  126. package/dist/types/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts +2 -2
  127. package/dist/types/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts.map +1 -1
  128. package/dist/types/twisty/model/props/puzzle/state/MovePressInputProp.d.ts +11 -0
  129. package/dist/types/twisty/model/props/puzzle/state/MovePressInputProp.d.ts.map +1 -0
  130. package/dist/types/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts +10 -0
  131. package/dist/types/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts.map +1 -0
  132. package/dist/types/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts +5 -1
  133. package/dist/types/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts.map +1 -1
  134. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts +1 -1
  135. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts.map +1 -1
  136. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts +19 -1
  137. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts.map +1 -1
  138. package/dist/types/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts +1 -1
  139. package/dist/types/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts.map +1 -1
  140. package/dist/types/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts +2 -3
  141. package/dist/types/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts.map +1 -1
  142. package/dist/types/twisty/model/props/timeline/PlayingInfoProp.d.ts +1 -1
  143. package/dist/types/twisty/model/props/timeline/PlayingInfoProp.d.ts.map +1 -1
  144. package/dist/types/twisty/model/props/timeline/TimestampRequestProp.d.ts +1 -1
  145. package/dist/types/twisty/model/props/timeline/TimestampRequestProp.d.ts.map +1 -1
  146. package/dist/types/twisty/model/props/viewer/BackViewProp.d.ts +6 -1
  147. package/dist/types/twisty/model/props/viewer/BackViewProp.d.ts.map +1 -1
  148. package/dist/types/twisty/model/props/viewer/BackgroundProp.d.ts +5 -1
  149. package/dist/types/twisty/model/props/viewer/BackgroundProp.d.ts.map +1 -1
  150. package/dist/types/twisty/model/props/viewer/ControlPanelProp.d.ts +5 -1
  151. package/dist/types/twisty/model/props/viewer/ControlPanelProp.d.ts.map +1 -1
  152. package/dist/types/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts +18 -5
  153. package/dist/types/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts.map +1 -1
  154. package/dist/types/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts +6 -6
  155. package/dist/types/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts.map +1 -1
  156. package/dist/types/twisty/model/props/viewer/TimeRangeProp.d.ts +2 -2
  157. package/dist/types/twisty/model/props/viewer/TimeRangeProp.d.ts.map +1 -1
  158. package/dist/types/twisty/model/props/viewer/ViewerLinkProp.d.ts +5 -1
  159. package/dist/types/twisty/model/props/viewer/ViewerLinkProp.d.ts.map +1 -1
  160. package/dist/types/twisty/model/props/viewer/VisualizationProp.d.ts +7 -1
  161. package/dist/types/twisty/model/props/viewer/VisualizationProp.d.ts.map +1 -1
  162. package/dist/types/twisty/model/props/viewer/VisualizationStrategyProp.d.ts +1 -1
  163. package/dist/types/twisty/model/props/viewer/VisualizationStrategyProp.d.ts.map +1 -1
  164. package/dist/types/twisty/views/2D/Twisty2DPuzzle.css.d.ts +3 -0
  165. package/dist/types/twisty/views/2D/Twisty2DPuzzle.css.d.ts.map +1 -0
  166. package/dist/types/twisty/views/2D/Twisty2DPuzzle.d.ts +4 -6
  167. package/dist/types/twisty/views/2D/Twisty2DPuzzle.d.ts.map +1 -1
  168. package/dist/types/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts +1 -1
  169. package/dist/types/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts.map +1 -1
  170. package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts +2 -2
  171. package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts.map +1 -1
  172. package/dist/types/twisty/views/3D/DragTracker.d.ts +28 -0
  173. package/dist/types/twisty/views/3D/DragTracker.d.ts.map +1 -0
  174. package/dist/types/twisty/views/3D/RendererPool.d.ts.map +1 -1
  175. package/dist/types/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts +6 -1
  176. package/dist/types/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts.map +1 -1
  177. package/dist/types/twisty/views/3D/Twisty3DSceneWrapper.d.ts +9 -4
  178. package/dist/types/twisty/views/3D/Twisty3DSceneWrapper.d.ts.map +1 -1
  179. package/dist/types/twisty/views/3D/Twisty3DVantage.css.d.ts +3 -0
  180. package/dist/types/twisty/views/3D/Twisty3DVantage.css.d.ts.map +1 -0
  181. package/dist/types/twisty/views/3D/Twisty3DVantage.d.ts +12 -8
  182. package/dist/types/twisty/views/3D/Twisty3DVantage.d.ts.map +1 -1
  183. package/dist/types/twisty/views/3D/TwistyOrbitControls.d.ts +24 -0
  184. package/dist/types/twisty/views/3D/TwistyOrbitControls.d.ts.map +1 -0
  185. package/dist/types/twisty/views/3D/TwistyOrbitControls.spec.d.ts +5 -0
  186. package/dist/types/twisty/views/3D/TwistyOrbitControls.spec.d.ts.map +1 -0
  187. package/dist/types/twisty/views/3D/puzzles/Cube3D.d.ts +4 -4
  188. package/dist/types/twisty/views/3D/puzzles/Cube3D.d.ts.map +1 -1
  189. package/dist/types/twisty/views/3D/puzzles/PG3D.d.ts +17 -10
  190. package/dist/types/twisty/views/3D/puzzles/PG3D.d.ts.map +1 -1
  191. package/dist/types/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts +1 -1
  192. package/dist/types/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts.map +1 -1
  193. package/dist/types/twisty/{old/dom/element → views}/ClassListManager.d.ts +0 -0
  194. package/dist/types/twisty/views/ClassListManager.d.ts.map +1 -0
  195. package/dist/types/twisty/{old/dom/element → views}/ManagedCustomElement.d.ts +0 -0
  196. package/dist/types/twisty/views/ManagedCustomElement.d.ts.map +1 -0
  197. package/dist/types/twisty/views/TwistyAlgEditor/LeafTokens.d.ts +1 -1
  198. package/dist/types/twisty/views/TwistyAlgEditor/LeafTokens.d.ts.map +1 -1
  199. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts +1 -1
  200. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts.map +1 -1
  201. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts +2 -1
  202. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts.map +1 -1
  203. package/dist/types/twisty/views/TwistyAlgViewer.css.d.ts +1 -1
  204. package/dist/types/twisty/views/TwistyAlgViewer.css.d.ts.map +1 -1
  205. package/dist/types/twisty/views/TwistyAlgViewer.d.ts +2 -2
  206. package/dist/types/twisty/views/TwistyAlgViewer.d.ts.map +1 -1
  207. package/dist/types/twisty/views/TwistyPlayer.css.d.ts +3 -0
  208. package/dist/types/twisty/views/TwistyPlayer.css.d.ts.map +1 -0
  209. package/dist/types/twisty/views/TwistyPlayer.d.ts +7 -3
  210. package/dist/types/twisty/views/TwistyPlayer.d.ts.map +1 -1
  211. package/dist/types/twisty/views/TwistyPlayerSettable.d.ts +7 -4
  212. package/dist/types/twisty/views/TwistyPlayerSettable.d.ts.map +1 -1
  213. package/dist/types/twisty/views/TwistyViewerWrapper.css.d.ts +3 -0
  214. package/dist/types/twisty/views/TwistyViewerWrapper.css.d.ts.map +1 -0
  215. package/dist/types/twisty/{old/dom/viewers → views}/canvas.d.ts +0 -0
  216. package/dist/types/twisty/views/canvas.d.ts.map +1 -0
  217. package/dist/types/twisty/views/control-panel/TwistyButtonsV2.css.d.ts +4 -0
  218. package/dist/types/twisty/views/control-panel/TwistyButtonsV2.css.d.ts.map +1 -0
  219. package/dist/types/twisty/views/control-panel/TwistyButtonsV2.d.ts +1 -1
  220. package/dist/types/twisty/views/control-panel/TwistyButtonsV2.d.ts.map +1 -1
  221. package/dist/types/twisty/views/control-panel/TwistyScrubber.css.d.ts +3 -0
  222. package/dist/types/twisty/{old/dom/controls → views/control-panel}/TwistyScrubber.css.d.ts.map +1 -1
  223. package/dist/types/twisty/views/control-panel/TwistyScrubberV2.d.ts +1 -1
  224. package/dist/types/twisty/views/control-panel/TwistyScrubberV2.d.ts.map +1 -1
  225. package/dist/types/twisty/{old/dom/element → views}/node-custom-element-shims.d.ts +0 -0
  226. package/dist/types/twisty/views/node-custom-element-shims.d.ts.map +1 -0
  227. package/dist/types/twisty/views/stream/TwistyStreamSource.css.d.ts +3 -0
  228. package/dist/types/twisty/views/stream/TwistyStreamSource.css.d.ts.map +1 -0
  229. package/dist/types/twisty/{old/dom → views}/stream/TwistyStreamSource.d.ts +1 -1
  230. package/dist/types/twisty/views/stream/TwistyStreamSource.d.ts.map +1 -0
  231. package/dist/types/{search/vendor → vendor}/comlink-everywhere/inside/index.d.ts +0 -0
  232. package/dist/types/vendor/comlink-everywhere/inside/index.d.ts.map +1 -0
  233. package/dist/types/{search/vendor → vendor}/comlink-everywhere/inside/node.d.ts +0 -0
  234. package/dist/types/vendor/comlink-everywhere/inside/node.d.ts.map +1 -0
  235. package/dist/types/{search/vendor → vendor}/comlink-everywhere/outside/index.d.ts +0 -0
  236. package/dist/types/vendor/comlink-everywhere/outside/index.d.ts.map +1 -0
  237. package/dist/types/{search/vendor → vendor}/comlink-everywhere/outside/node.d.ts +0 -0
  238. package/dist/types/vendor/comlink-everywhere/outside/node.d.ts.map +1 -0
  239. package/dist/types/{search/inside/solve/vendor → vendor}/cstimer/src/js/lib/mathlib.d.ts +0 -0
  240. package/dist/types/vendor/cstimer/src/js/lib/mathlib.d.ts.map +1 -0
  241. package/dist/types/{search/inside/solve/vendor → vendor}/cstimer/src/js/scramble/scramble_444.d.ts +1 -1
  242. package/dist/types/vendor/cstimer/src/js/scramble/scramble_444.d.ts.map +1 -0
  243. package/dist/types/{search/inside/solve/vendor → vendor}/min2phase/gwt.d.ts +0 -0
  244. package/dist/types/vendor/min2phase/gwt.d.ts.map +1 -0
  245. package/dist/types/{search/inside/solve/vendor → vendor}/random-uint-below/get-random-values.d.ts +0 -0
  246. package/dist/types/vendor/random-uint-below/get-random-values.d.ts.map +1 -0
  247. package/dist/types/{search/inside/solve/vendor → vendor}/random-uint-below/index.d.ts +1 -1
  248. package/dist/types/vendor/random-uint-below/index.d.ts.map +1 -0
  249. package/dist/types/{search/inside/solve/vendor → vendor}/random-uint-below/random-choice.d.ts +0 -0
  250. package/dist/types/vendor/random-uint-below/random-choice.d.ts.map +1 -0
  251. package/dist/types/{search/inside/solve/vendor/random-uint-below/random-int.d.ts → vendor/random-uint-below/random53BitValue.d.ts} +1 -1
  252. package/dist/types/vendor/random-uint-below/random53BitValue.d.ts.map +1 -0
  253. package/dist/types/{search/inside/solve/vendor → vendor}/sq12phase/scramble_sq1.d.ts +0 -0
  254. package/dist/types/vendor/sq12phase/scramble_sq1.d.ts.map +1 -0
  255. package/dist/types/{bluetooth/smart-puzzle → vendor/unsafe-raw-aes}/unsafe-raw-aes.d.ts +0 -0
  256. package/dist/types/vendor/unsafe-raw-aes/unsafe-raw-aes.d.ts.map +1 -0
  257. package/docs/.DS_Store +0 -0
  258. package/docs/cubing/.DS_Store +0 -0
  259. package/docs/cubing/api/index.html +11 -52
  260. package/docs/cubing/index.html +67 -27
  261. package/docs/main.css +7 -6
  262. package/package.json +8 -9
  263. package/src/cubing/.DS_Store +0 -0
  264. package/src/cubing/alg/index.ts +1 -0
  265. package/src/cubing/alg/units/leaves/Move.ts +1 -1
  266. package/src/cubing/bluetooth/smart-puzzle/gan.ts +4 -1
  267. package/src/cubing/bluetooth/smart-timer/GanTimer.ts +1 -1
  268. package/src/cubing/cubing.bundle-global.exports.ts +25 -0
  269. package/src/cubing/cubing.bundle-global.ts +3 -27
  270. package/src/cubing/puzzle-geometry/PGPuzzles.spec.ts +4 -0
  271. package/src/cubing/puzzle-geometry/PuzzleGeometry.ts +20 -8
  272. package/src/cubing/puzzle-geometry/index.ts +2 -2
  273. package/src/cubing/puzzles/.DS_Store +0 -0
  274. package/src/cubing/puzzles/implementations/.DS_Store +0 -0
  275. package/src/cubing/puzzles/index.ts +1 -1
  276. package/src/cubing/puzzles/stickerings/cube-stickerings.ts +18 -0
  277. package/src/cubing/puzzles/stickerings/global-custom-stickering-hack.ts +1 -1
  278. package/src/cubing/search/.DS_Store +0 -0
  279. package/src/cubing/search/esm-test-worker.js +1 -1
  280. package/src/cubing/search/inside/.DS_Store +0 -0
  281. package/src/cubing/search/inside/api.ts +3 -0
  282. package/src/cubing/search/inside/entry.js +1 -1
  283. package/src/cubing/search/inside/inside-worker.ts +1 -1
  284. package/src/cubing/search/inside/solve/.DS_Store +0 -0
  285. package/src/cubing/search/inside/solve/addOrientationSuffix.ts +1 -1
  286. package/src/cubing/{alg → search/inside/solve/puzzles}/.DS_Store +0 -0
  287. package/src/cubing/search/inside/solve/puzzles/2x2x2.ts +1 -1
  288. package/src/cubing/search/inside/solve/puzzles/3x3x3/index.ts +2 -2
  289. package/src/cubing/search/inside/solve/puzzles/4x4x4.ts +2 -2
  290. package/src/cubing/search/inside/solve/puzzles/big-cubes.ts +1 -1
  291. package/src/cubing/search/inside/solve/puzzles/clock.ts +1 -1
  292. package/src/cubing/search/inside/solve/puzzles/{FTO.sgs → fto.sgs.json.ts} +116 -80
  293. package/src/cubing/search/inside/solve/puzzles/fto.ts +58 -0
  294. package/src/cubing/search/inside/solve/puzzles/sq1.ts +1 -1
  295. package/src/cubing/search/inside/solve/puzzles/wca-minx.ts +1 -1
  296. package/src/cubing/search/inside/solve/tremble.ts +2 -1
  297. package/src/cubing/search/inside/solve/vendor/.DS_Store +0 -0
  298. package/src/cubing/search/instantiator.ts +1 -1
  299. package/src/cubing/search/worker-inside-generated-string.js +1 -1
  300. package/src/cubing/twisty/.DS_Store +0 -0
  301. package/src/cubing/{alg/units → twisty/controllers}/.DS_Store +0 -0
  302. package/src/cubing/twisty/{old/animation/cursor/CursorTypes.ts → controllers/AnimationTypes.ts} +11 -2
  303. package/src/cubing/twisty/{old/animation → controllers}/RenderScheduler.ts +0 -0
  304. package/src/cubing/twisty/controllers/TwistyAnimationController.ts +4 -4
  305. package/src/cubing/twisty/controllers/animation/.DS_Store +0 -0
  306. package/src/cubing/twisty/{old/animation → controllers}/easing.ts +0 -0
  307. package/src/cubing/{stream → twisty/controllers/indexer}/.DS_Store +0 -0
  308. package/src/cubing/twisty/{old/animation → controllers}/indexer/AlgDuration.ts +2 -2
  309. package/src/cubing/twisty/{old/animation → controllers}/indexer/AlgIndexer.ts +4 -4
  310. package/src/cubing/twisty/{old/animation → controllers}/indexer/SimpleAlgIndexer.ts +4 -4
  311. package/src/cubing/twisty/{old/animation → controllers}/indexer/simultaneous-moves/SimultaneousMoveIndexer.ts +3 -3
  312. package/src/cubing/twisty/{old/animation → controllers}/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.ts +3 -3
  313. package/src/cubing/twisty/{old/animation → controllers}/indexer/simultaneous-moves/simul-moves.ts +2 -2
  314. package/src/cubing/twisty/{old/animation → controllers}/indexer/tree/AlgWalker.ts +4 -4
  315. package/src/cubing/twisty/{old/animation → controllers}/indexer/tree/TreeAlgIndexer.ts +3 -3
  316. package/src/cubing/twisty/{old/animation → controllers}/indexer/tree/chunkAlgs.ts +2 -2
  317. package/src/cubing/twisty/{old/animation → controllers}/stream/timeline-move-calculation-draft.spec.ts.TODO +0 -0
  318. package/src/cubing/twisty/{old/animation → controllers}/stream/timeline-move-calculation-draft.ts +2 -2
  319. package/src/cubing/twisty/heavy-code-imports/.DS_Store +0 -0
  320. package/src/cubing/twisty/heavy-code-imports/dynamic-entries/3d.ts +2 -12
  321. package/src/cubing/twisty/index.ts +12 -19
  322. package/src/cubing/twisty/model/.DS_Store +0 -0
  323. package/src/cubing/twisty/model/TwistyPlayerModel.ts +38 -7
  324. package/src/cubing/twisty/model/props/.DS_Store +0 -0
  325. package/src/cubing/twisty/model/props/TwistyPropDebugger.ts +3 -3
  326. package/src/cubing/twisty/model/props/puzzle/.DS_Store +0 -0
  327. package/src/cubing/twisty/model/props/puzzle/display/FoundationDisplayProp.ts +9 -0
  328. package/src/cubing/twisty/model/props/puzzle/display/HintFaceletProp.ts +6 -1
  329. package/src/cubing/twisty/model/props/puzzle/display/StickeringProp.ts +49 -1
  330. package/src/cubing/twisty/model/props/puzzle/state/AlgTransformationProp.ts +1 -1
  331. package/src/cubing/twisty/model/props/puzzle/state/AnchoredStartProp.ts +2 -2
  332. package/src/cubing/twisty/model/props/puzzle/state/CurrentLeavesProp.ts +2 -2
  333. package/src/cubing/twisty/model/props/puzzle/state/CurrentLeavesSimplified.ts +1 -1
  334. package/src/cubing/twisty/model/props/puzzle/state/CurrentTransformationProp.ts +1 -1
  335. package/src/cubing/twisty/model/props/puzzle/state/IndexerConstructorProp.ts +12 -5
  336. package/src/cubing/twisty/model/props/puzzle/state/IndexerProp.ts +2 -2
  337. package/src/cubing/twisty/model/props/puzzle/state/LegacyPositionProp.ts +2 -2
  338. package/src/cubing/twisty/model/props/puzzle/state/MovePressInputProp.ts +14 -0
  339. package/src/cubing/twisty/model/props/puzzle/state/NaiveMoveCountProp.ts +20 -0
  340. package/src/cubing/twisty/model/props/puzzle/state/SetupAnchorProp.ts +7 -1
  341. package/src/cubing/twisty/model/props/puzzle/structure/PuzzleIDProp.ts +1 -1
  342. package/src/cubing/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.ts +20 -1
  343. package/src/cubing/twisty/model/props/puzzle/structure/PuzzleLoaderProp.ts +1 -1
  344. package/src/cubing/twisty/model/props/timeline/DetailedTimelineInfoProp.ts +5 -3
  345. package/src/cubing/twisty/model/props/timeline/PlayingInfoProp.ts +1 -4
  346. package/src/cubing/twisty/model/props/timeline/TimestampRequestProp.ts +1 -1
  347. package/src/cubing/twisty/model/props/viewer/BackViewProp.ts +7 -1
  348. package/src/cubing/twisty/model/props/viewer/BackgroundProp.ts +6 -1
  349. package/src/cubing/twisty/model/props/viewer/ControlPanelProp.ts +5 -1
  350. package/src/cubing/twisty/model/props/viewer/OrbitCoordinatesProp.ts +83 -12
  351. package/src/cubing/twisty/model/props/viewer/OrbitCoordinatesRequestProp.ts +8 -8
  352. package/src/cubing/twisty/model/props/viewer/TimeRangeProp.ts +2 -2
  353. package/src/cubing/twisty/model/props/viewer/ViewerLinkProp.ts +5 -1
  354. package/src/cubing/twisty/model/props/viewer/VisualizationProp.ts +8 -1
  355. package/src/cubing/twisty/model/props/viewer/VisualizationStrategyProp.ts +1 -1
  356. package/src/cubing/twisty/old/.DS_Store +0 -0
  357. package/src/cubing/twisty/old/animation/.DS_Store +0 -0
  358. package/src/cubing/twisty/old/dom/.DS_Store +0 -0
  359. package/src/cubing/twisty/views/.DS_Store +0 -0
  360. package/src/cubing/twisty/{old/dom/viewers/Twisty2DSVGView.css.ts → views/2D/Twisty2DPuzzle.css.ts} +1 -1
  361. package/src/cubing/twisty/views/2D/Twisty2DPuzzle.ts +8 -12
  362. package/src/cubing/twisty/views/2D/Twisty2DPuzzleWrapper.ts +1 -1
  363. package/src/cubing/twisty/views/2D/Twisty2DSceneWrapper.ts +4 -4
  364. package/src/cubing/{bluetooth → twisty/views/3D}/.DS_Store +0 -0
  365. package/src/cubing/twisty/views/3D/DragTracker.ts +184 -0
  366. package/src/cubing/twisty/views/3D/RendererPool.ts +2 -1
  367. package/src/cubing/twisty/views/3D/Twisty3DPuzzleWrapper.ts +51 -5
  368. package/src/cubing/twisty/views/3D/Twisty3DSceneWrapper.ts +51 -10
  369. package/src/cubing/twisty/{old/dom/viewers/Twisty3DCanvas.css.ts → views/3D/Twisty3DVantage.css.ts} +2 -2
  370. package/src/cubing/twisty/views/3D/Twisty3DVantage.ts +103 -35
  371. package/src/cubing/twisty/views/3D/TwistyOrbitControls.spec.ts +213 -0
  372. package/src/cubing/twisty/views/3D/TwistyOrbitControls.ts +176 -0
  373. package/src/cubing/twisty/views/3D/puzzles/Cube3D.ts +5 -9
  374. package/src/cubing/twisty/views/3D/puzzles/PG3D.ts +127 -37
  375. package/src/cubing/twisty/views/3D/puzzles/Twisty3DPuzzle.ts +1 -1
  376. package/src/cubing/twisty/{old/dom/element → views}/ClassListManager.ts +0 -0
  377. package/src/cubing/twisty/{old/dom/element → views}/ManagedCustomElement.ts +0 -0
  378. package/src/cubing/twisty/views/TwistyAlgEditor/LeafTokens.ts +1 -1
  379. package/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.ts +1 -1
  380. package/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.ts +11 -4
  381. package/src/cubing/twisty/views/TwistyAlgViewer.css.ts +1 -1
  382. package/src/cubing/twisty/views/TwistyAlgViewer.ts +4 -4
  383. package/src/cubing/twisty/{old/dom → views}/TwistyPlayer.css.ts +4 -1
  384. package/src/cubing/twisty/views/TwistyPlayer.ts +16 -25
  385. package/src/cubing/twisty/views/TwistyPlayerSettable.ts +14 -10
  386. package/src/cubing/twisty/{old/dom/viewers → views}/TwistyViewerWrapper.css.ts +1 -1
  387. package/src/cubing/twisty/{old/dom/viewers → views}/canvas.ts +0 -0
  388. package/src/cubing/twisty/{old/dom/controls/buttons.css.ts → views/control-panel/TwistyButtonsV2.css.ts} +1 -1
  389. package/src/cubing/twisty/views/control-panel/TwistyButtonsV2.ts +5 -8
  390. package/src/cubing/twisty/{old/dom/controls → views/control-panel}/TwistyScrubber.css.ts +1 -1
  391. package/src/cubing/twisty/views/control-panel/TwistyScrubberV2.ts +3 -3
  392. package/src/cubing/twisty/{old/dom/element → views}/node-custom-element-shims.ts +2 -2
  393. package/src/cubing/twisty/{old/dom → views}/stream/TwistyStreamSource.css.ts +1 -1
  394. package/src/cubing/twisty/{old/dom → views}/stream/TwistyStreamSource.ts +9 -9
  395. package/src/cubing/vendor/.DS_Store +0 -0
  396. package/src/cubing/{twisty/old/animation/indexer → vendor/comlink-everywhere}/.DS_Store +0 -0
  397. package/src/cubing/{search/vendor → vendor}/comlink-everywhere/comlink-everywhere.webloc +0 -0
  398. package/src/cubing/{search/vendor → vendor}/comlink-everywhere/inside/index.d.ts +0 -0
  399. package/src/cubing/{search/vendor → vendor}/comlink-everywhere/inside/index.js +0 -0
  400. package/src/cubing/{search/vendor → vendor}/comlink-everywhere/inside/node.js +0 -0
  401. package/src/cubing/{search/vendor → vendor}/comlink-everywhere/outside/index.d.ts +0 -0
  402. package/src/cubing/{search/vendor → vendor}/comlink-everywhere/outside/index.js +0 -0
  403. package/src/cubing/{search/vendor → vendor}/comlink-everywhere/outside/node.js +0 -0
  404. package/src/cubing/vendor/cstimer/.DS_Store +0 -0
  405. package/src/cubing/{search/inside/solve/vendor → vendor}/cstimer/LICENSE +0 -0
  406. package/src/cubing/{search/inside/solve/vendor → vendor}/cstimer/src/js/lib/mathlib.ts +0 -0
  407. package/src/cubing/{search/inside/solve/vendor → vendor}/cstimer/src/js/scramble/scramble_444.ts +3 -3
  408. package/src/cubing/{search/inside/solve/vendor → vendor}/min2phase/gwt.d.ts +0 -0
  409. package/src/cubing/{search/inside/solve/vendor → vendor}/min2phase/gwt.js +0 -0
  410. package/src/cubing/vendor/random-uint-below/get-random-values.ts +23 -0
  411. package/src/cubing/{search/inside/solve/vendor → vendor}/random-uint-below/index.ts +2 -2
  412. package/src/cubing/{search/inside/solve/vendor → vendor}/random-uint-below/random-choice.ts +1 -1
  413. package/src/cubing/{search/inside/solve/vendor/random-uint-below/random-int.ts → vendor/random-uint-below/random53BitValue.ts} +0 -0
  414. package/src/cubing/{search/inside/solve/vendor → vendor}/sq12phase/scramble_sq1.js +0 -0
  415. package/src/cubing/{bluetooth/smart-puzzle → vendor/unsafe-raw-aes}/unsafe-raw-aes.ts +18 -20
  416. package/dist/esm/3d-B25DP5PE.js +0 -39
  417. package/dist/esm/3d-B25DP5PE.js.map +0 -7
  418. package/dist/esm/chunk-APIIMJG6.js.map +0 -7
  419. package/dist/esm/chunk-CSVAFZSB.js.map +0 -7
  420. package/dist/esm/chunk-MUQMBH2S.js.map +0 -7
  421. package/dist/esm/worker-inside-generated-string-KDZOUGJF.js +0 -2831
  422. package/dist/esm/worker-inside-generated-string-KDZOUGJF.js.map +0 -7
  423. package/dist/types/bluetooth/smart-puzzle/unsafe-raw-aes.d.ts.map +0 -1
  424. package/dist/types/search/inside/solve/vendor/cstimer/src/js/lib/mathlib.d.ts.map +0 -1
  425. package/dist/types/search/inside/solve/vendor/cstimer/src/js/scramble/scramble_444.d.ts.map +0 -1
  426. package/dist/types/search/inside/solve/vendor/min2phase/gwt.d.ts.map +0 -1
  427. package/dist/types/search/inside/solve/vendor/random-uint-below/get-random-values.d.ts.map +0 -1
  428. package/dist/types/search/inside/solve/vendor/random-uint-below/index.d.ts.map +0 -1
  429. package/dist/types/search/inside/solve/vendor/random-uint-below/random-choice.d.ts.map +0 -1
  430. package/dist/types/search/inside/solve/vendor/random-uint-below/random-int.d.ts.map +0 -1
  431. package/dist/types/search/inside/solve/vendor/sq12phase/scramble_sq1.d.ts.map +0 -1
  432. package/dist/types/search/vendor/comlink-everywhere/inside/index.d.ts.map +0 -1
  433. package/dist/types/search/vendor/comlink-everywhere/inside/node.d.ts.map +0 -1
  434. package/dist/types/search/vendor/comlink-everywhere/outside/index.d.ts.map +0 -1
  435. package/dist/types/search/vendor/comlink-everywhere/outside/node.d.ts.map +0 -1
  436. package/dist/types/twisty/old/animation/RenderScheduler.d.ts.map +0 -1
  437. package/dist/types/twisty/old/animation/Timeline.d.ts +0 -72
  438. package/dist/types/twisty/old/animation/Timeline.d.ts.map +0 -1
  439. package/dist/types/twisty/old/animation/cursor/AlgCursor.d.ts +0 -53
  440. package/dist/types/twisty/old/animation/cursor/AlgCursor.d.ts.map +0 -1
  441. package/dist/types/twisty/old/animation/cursor/CursorTypes.d.ts.map +0 -1
  442. package/dist/types/twisty/old/animation/easing.d.ts.map +0 -1
  443. package/dist/types/twisty/old/animation/indexer/AlgDuration.d.ts.map +0 -1
  444. package/dist/types/twisty/old/animation/indexer/AlgIndexer.d.ts.map +0 -1
  445. package/dist/types/twisty/old/animation/indexer/SimpleAlgIndexer.d.ts.map +0 -1
  446. package/dist/types/twisty/old/animation/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts.map +0 -1
  447. package/dist/types/twisty/old/animation/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.d.ts.map +0 -1
  448. package/dist/types/twisty/old/animation/indexer/simultaneous-moves/simul-moves.d.ts.map +0 -1
  449. package/dist/types/twisty/old/animation/indexer/tree/AlgWalker.d.ts.map +0 -1
  450. package/dist/types/twisty/old/animation/indexer/tree/TreeAlgIndexer.d.ts.map +0 -1
  451. package/dist/types/twisty/old/animation/indexer/tree/chunkAlgs.d.ts +0 -3
  452. package/dist/types/twisty/old/animation/indexer/tree/chunkAlgs.d.ts.map +0 -1
  453. package/dist/types/twisty/old/animation/stream/timeline-move-calculation-draft.d.ts.map +0 -1
  454. package/dist/types/twisty/old/dom/TwistyAlgViewerV1.css.d.ts +0 -3
  455. package/dist/types/twisty/old/dom/TwistyAlgViewerV1.css.d.ts.map +0 -1
  456. package/dist/types/twisty/old/dom/TwistyAlgViewerV1.d.ts +0 -52
  457. package/dist/types/twisty/old/dom/TwistyAlgViewerV1.d.ts.map +0 -1
  458. package/dist/types/twisty/old/dom/TwistyPlayer.css.d.ts +0 -3
  459. package/dist/types/twisty/old/dom/TwistyPlayer.css.d.ts.map +0 -1
  460. package/dist/types/twisty/old/dom/TwistyPlayer.d.ts +0 -92
  461. package/dist/types/twisty/old/dom/TwistyPlayer.d.ts.map +0 -1
  462. package/dist/types/twisty/old/dom/TwistyPlayer.spec.d.ts +0 -5
  463. package/dist/types/twisty/old/dom/TwistyPlayer.spec.d.ts.map +0 -1
  464. package/dist/types/twisty/old/dom/TwistyPlayerConfig.d.ts +0 -165
  465. package/dist/types/twisty/old/dom/TwistyPlayerConfig.d.ts.map +0 -1
  466. package/dist/types/twisty/old/dom/controls/TwistyControlElement.d.ts +0 -2
  467. package/dist/types/twisty/old/dom/controls/TwistyControlElement.d.ts.map +0 -1
  468. package/dist/types/twisty/old/dom/controls/TwistyScrubber.css.d.ts +0 -3
  469. package/dist/types/twisty/old/dom/controls/TwistyScrubber.d.ts +0 -14
  470. package/dist/types/twisty/old/dom/controls/TwistyScrubber.d.ts.map +0 -1
  471. package/dist/types/twisty/old/dom/controls/buttons.css.d.ts +0 -4
  472. package/dist/types/twisty/old/dom/controls/buttons.css.d.ts.map +0 -1
  473. package/dist/types/twisty/old/dom/controls/buttons.d.ts +0 -40
  474. package/dist/types/twisty/old/dom/controls/buttons.d.ts.map +0 -1
  475. package/dist/types/twisty/old/dom/controls/buttons.spec.d.ts +0 -5
  476. package/dist/types/twisty/old/dom/controls/buttons.spec.d.ts.map +0 -1
  477. package/dist/types/twisty/old/dom/element/ClassListManager.d.ts.map +0 -1
  478. package/dist/types/twisty/old/dom/element/ElementConfig.d.ts +0 -49
  479. package/dist/types/twisty/old/dom/element/ElementConfig.d.ts.map +0 -1
  480. package/dist/types/twisty/old/dom/element/ManagedCustomElement.d.ts.map +0 -1
  481. package/dist/types/twisty/old/dom/element/node-custom-element-shims.d.ts.map +0 -1
  482. package/dist/types/twisty/old/dom/stream/TwistyStreamSource.css.d.ts +0 -3
  483. package/dist/types/twisty/old/dom/stream/TwistyStreamSource.css.d.ts.map +0 -1
  484. package/dist/types/twisty/old/dom/stream/TwistyStreamSource.d.ts.map +0 -1
  485. package/dist/types/twisty/old/dom/viewers/Twisty2DSVG.d.ts +0 -26
  486. package/dist/types/twisty/old/dom/viewers/Twisty2DSVG.d.ts.map +0 -1
  487. package/dist/types/twisty/old/dom/viewers/Twisty2DSVGView.css.d.ts +0 -3
  488. package/dist/types/twisty/old/dom/viewers/Twisty2DSVGView.css.d.ts.map +0 -1
  489. package/dist/types/twisty/old/dom/viewers/Twisty3DCanvas.css.d.ts +0 -3
  490. package/dist/types/twisty/old/dom/viewers/Twisty3DCanvas.css.d.ts.map +0 -1
  491. package/dist/types/twisty/old/dom/viewers/Twisty3DCanvas.d.ts +0 -41
  492. package/dist/types/twisty/old/dom/viewers/Twisty3DCanvas.d.ts.map +0 -1
  493. package/dist/types/twisty/old/dom/viewers/TwistyOrbitControls.d.ts +0 -59
  494. package/dist/types/twisty/old/dom/viewers/TwistyOrbitControls.d.ts.map +0 -1
  495. package/dist/types/twisty/old/dom/viewers/TwistyViewerElement.d.ts +0 -4
  496. package/dist/types/twisty/old/dom/viewers/TwistyViewerElement.d.ts.map +0 -1
  497. package/dist/types/twisty/old/dom/viewers/TwistyViewerWrapper.css.d.ts +0 -3
  498. package/dist/types/twisty/old/dom/viewers/TwistyViewerWrapper.css.d.ts.map +0 -1
  499. package/dist/types/twisty/old/dom/viewers/TwistyViewerWrapper.d.ts +0 -18
  500. package/dist/types/twisty/old/dom/viewers/TwistyViewerWrapper.d.ts.map +0 -1
  501. package/dist/types/twisty/old/dom/viewers/canvas.d.ts.map +0 -1
  502. package/dist/types/twisty/views/3D/TwistyOrbitControlsV2.d.ts +0 -41
  503. package/dist/types/twisty/views/3D/TwistyOrbitControlsV2.d.ts.map +0 -1
  504. package/dist/types/twisty/views/3D/TwistyOrbitControlsV2.spec.d.ts +0 -5
  505. package/dist/types/twisty/views/3D/TwistyOrbitControlsV2.spec.d.ts.map +0 -1
  506. package/dist/types/twisty/views/3D/puzzles/TwistyTestBox.d.ts +0 -9
  507. package/dist/types/twisty/views/3D/puzzles/TwistyTestBox.d.ts.map +0 -1
  508. package/src/cubing/search/inside/solve/vendor/random-uint-below/get-random-values.ts +0 -38
  509. package/src/cubing/twisty/old/animation/Timeline.ts +0 -378
  510. package/src/cubing/twisty/old/animation/cursor/AlgCursor.ts +0 -252
  511. package/src/cubing/twisty/old/dom/TwistyAlgViewerV1.css.ts +0 -25
  512. package/src/cubing/twisty/old/dom/TwistyAlgViewerV1.ts +0 -516
  513. package/src/cubing/twisty/old/dom/TwistyPlayer.spec.ts +0 -25
  514. package/src/cubing/twisty/old/dom/TwistyPlayer.ts +0 -927
  515. package/src/cubing/twisty/old/dom/TwistyPlayerConfig.ts +0 -378
  516. package/src/cubing/twisty/old/dom/controls/TwistyControlElement.ts +0 -1
  517. package/src/cubing/twisty/old/dom/controls/TwistyScrubber.ts +0 -53
  518. package/src/cubing/twisty/old/dom/controls/buttons.spec.ts +0 -37
  519. package/src/cubing/twisty/old/dom/controls/buttons.ts +0 -326
  520. package/src/cubing/twisty/old/dom/element/ElementConfig.ts +0 -180
  521. package/src/cubing/twisty/old/dom/viewers/Twisty2DSVG.ts +0 -118
  522. package/src/cubing/twisty/old/dom/viewers/Twisty3DCanvas.ts +0 -256
  523. package/src/cubing/twisty/old/dom/viewers/TwistyOrbitControls.ts +0 -420
  524. package/src/cubing/twisty/old/dom/viewers/TwistyViewerElement.ts +0 -5
  525. package/src/cubing/twisty/old/dom/viewers/TwistyViewerWrapper.ts +0 -45
  526. package/src/cubing/twisty/views/3D/TwistyOrbitControlsV2.spec.ts +0 -209
  527. package/src/cubing/twisty/views/3D/TwistyOrbitControlsV2.ts +0 -270
  528. package/src/cubing/twisty/views/3D/puzzles/TwistyTestBox.ts +0 -22
@@ -0,0 +1,176 @@
1
+ import { Spherical, Vector3 } from "three";
2
+ import type { OrbitCoordinates } from "../../model/props/viewer/OrbitCoordinatesRequestProp";
3
+ import type { TwistyPlayerModel } from "../../model/TwistyPlayerModel";
4
+ import { RenderScheduler } from "../../controllers/RenderScheduler";
5
+ import type { DragMovementInfo, DragTracker } from "./DragTracker";
6
+ import { DEGREES_PER_RADIAN } from "./TAU";
7
+
8
+ const INERTIA_DEFAULT: boolean = true;
9
+
10
+ const INERTIA_DURATION_MS = 500;
11
+ // If the first inertial render is this long after the last move, we assume the
12
+ // user has halted the cursor and we consider inertia to have "timed out". We
13
+ // never begin animating the inertia.
14
+ const INERTIA_TIMEOUT_MS = 50;
15
+
16
+ const VERTICAL_MOVEMENT_BASE_SCALE = 0.75;
17
+
18
+ // progress is from 0 to 1.
19
+ function momentumScale(progress: number) {
20
+ // This is the exponential curve flipped so that
21
+ // - The slope at progress = 0 is 1 (this corresponds to "x = 1" on the normal
22
+ // curve).
23
+ // - The scale exponentially "decays" until progress = 1.
24
+ // This means the scale at the end will be about 0.418
25
+ return (Math.exp(1 - progress) - (1 - progress)) / (1 - Math.E) + 1;
26
+ }
27
+
28
+ class Inertia {
29
+ private scheduler = new RenderScheduler(this.render.bind(this));
30
+ private lastTimestamp: number;
31
+ constructor(
32
+ private startTimestamp: number,
33
+ private momentumX: number,
34
+ private momentumY: number,
35
+ private callback: (movementX: number, movementY: number) => void,
36
+ ) {
37
+ this.scheduler.requestAnimFrame();
38
+ this.lastTimestamp = startTimestamp;
39
+ }
40
+
41
+ private render(now: DOMHighResTimeStamp) {
42
+ const progressBefore =
43
+ (this.lastTimestamp - this.startTimestamp) / INERTIA_DURATION_MS;
44
+ const progressAfter = Math.min(
45
+ 1,
46
+ (now - this.startTimestamp) / INERTIA_DURATION_MS,
47
+ );
48
+
49
+ if (
50
+ progressBefore === 0 &&
51
+ progressAfter > INERTIA_TIMEOUT_MS / INERTIA_DURATION_MS
52
+ ) {
53
+ // The user has already paused for a while. Don't start any inertia.
54
+ return;
55
+ }
56
+
57
+ const delta = momentumScale(progressAfter) - momentumScale(progressBefore);
58
+
59
+ // TODO: For now, we only carry horizontal momentum. If this should stay, we
60
+ // can remove the plumbing for the Y dimension.
61
+ this.callback(this.momentumX * delta * 1000, this.momentumY * delta * 1000);
62
+
63
+ if (progressAfter < 1) {
64
+ this.scheduler.requestAnimFrame();
65
+ }
66
+ this.lastTimestamp = now;
67
+ }
68
+ }
69
+
70
+ export function positionToOrbitCoordinates(
71
+ position: Vector3,
72
+ ): OrbitCoordinates {
73
+ const spherical = new Spherical();
74
+ spherical.setFromVector3(position);
75
+ return {
76
+ latitude: 90 - spherical.phi * DEGREES_PER_RADIAN,
77
+ longitude: spherical.theta * DEGREES_PER_RADIAN,
78
+ distance: spherical.radius,
79
+ };
80
+ }
81
+
82
+ interface TwistyOrbitControlsDragAttachedInfo {
83
+ lastTemperedX: number;
84
+ lastTemperedY: number;
85
+ timestamp: number;
86
+ }
87
+
88
+ // TODO: change mouse cursor while moving.
89
+ export class TwistyOrbitControls {
90
+ /** @deprecated */
91
+ experimentalInertia: boolean = INERTIA_DEFAULT;
92
+ private onMovementBound = this.onMovement.bind(this);
93
+ public experimentalHasBeenMoved: boolean = false;
94
+ constructor(
95
+ private model: TwistyPlayerModel,
96
+ private mirror: boolean,
97
+ private canvas: HTMLCanvasElement,
98
+ private dragTracker: DragTracker,
99
+ ) {
100
+ this.dragTracker.addEventListener("move", this.onMove.bind(this));
101
+ this.dragTracker.addEventListener("up", this.onUp.bind(this));
102
+ }
103
+
104
+ // f is the fraction of the canvas traversed per ms.
105
+ temperMovement(f: number): number {
106
+ // This is scaled to be linear for small values, but to reduce large values
107
+ // by a significant factor.
108
+ return (Math.sign(f) * Math.log(Math.abs(f * 10) + 1)) / 6;
109
+ }
110
+
111
+ onMove(e: CustomEvent<DragMovementInfo>): void {
112
+ e.detail.attachedInfo ??= {};
113
+
114
+ const { temperedX, temperedY } = this.onMovement(
115
+ e.detail.movementX,
116
+ e.detail.movementY,
117
+ );
118
+ const attachedInfo = e.detail
119
+ .attachedInfo as TwistyOrbitControlsDragAttachedInfo;
120
+ attachedInfo.lastTemperedX = temperedX * 10;
121
+ attachedInfo.lastTemperedY = temperedY * 10;
122
+ attachedInfo.timestamp = e.timeStamp; // TODO
123
+ }
124
+
125
+ onMovement(
126
+ movementX: number,
127
+ movementY: number,
128
+ ): {
129
+ temperedX: number;
130
+ temperedY: number;
131
+ } {
132
+ const scale = this.mirror ? -1 : 1;
133
+
134
+ // TODO: refactor
135
+ const minDim = Math.min(this.canvas.offsetWidth, this.canvas.offsetHeight);
136
+
137
+ const temperedX = this.temperMovement(movementX / minDim);
138
+ const temperedY = this.temperMovement(
139
+ (movementY / minDim) * VERTICAL_MOVEMENT_BASE_SCALE,
140
+ );
141
+ this.model.orbitCoordinatesRequestProp.set(
142
+ (async () => {
143
+ const prevCoords = await this.model.orbitCoordinatesProp.get();
144
+
145
+ const newCoords = {
146
+ latitude:
147
+ prevCoords.latitude + 2 * temperedY * DEGREES_PER_RADIAN * scale,
148
+ longitude: prevCoords.longitude - 2 * temperedX * DEGREES_PER_RADIAN,
149
+ };
150
+ return newCoords;
151
+ })(),
152
+ );
153
+ return { temperedX, temperedY };
154
+ }
155
+
156
+ onUp(e: CustomEvent<DragMovementInfo>): void {
157
+ e.preventDefault();
158
+ if (
159
+ "lastTemperedX" in e.detail.attachedInfo &&
160
+ "lastTemperedY" in e.detail.attachedInfo &&
161
+ "timestamp" in e.detail.attachedInfo &&
162
+ e.timeStamp - e.detail.attachedInfo.timestamp < 60 // TODO
163
+ ) {
164
+ new Inertia(
165
+ e.timeStamp, // TODO
166
+ (
167
+ e.detail.attachedInfo as TwistyOrbitControlsDragAttachedInfo
168
+ ).lastTemperedX,
169
+ (
170
+ e.detail.attachedInfo as TwistyOrbitControlsDragAttachedInfo
171
+ ).lastTemperedY,
172
+ this.onMovementBound,
173
+ ); // TODO: cancel inertia
174
+ }
175
+ }
176
+ }
@@ -16,21 +16,20 @@ import {
16
16
  Vector2,
17
17
  Vector3,
18
18
  } from "three";
19
+ import type { ExperimentalStickering } from "../../..";
19
20
  import type { KPuzzleDefinition } from "../../../../kpuzzle";
20
21
  import { puzzles } from "../../../../puzzles";
21
22
  import type {
22
23
  FaceletMeshAppearance,
23
24
  PuzzleAppearance,
24
25
  } from "../../../../puzzles/stickerings/appearance";
25
- import type { AlgCursor } from "../../../old/animation/cursor/AlgCursor";
26
- import type { PuzzlePosition } from "../../../old/animation/cursor/CursorTypes";
27
- import { smootherStep } from "../../../old/animation/easing";
28
26
  import {
29
- ExperimentalStickering,
30
- experimentalStickerings,
31
27
  HintFaceletStyle,
32
28
  hintFaceletStyles,
33
- } from "../../../old/dom/TwistyPlayerConfig";
29
+ } from "../../../model/props/puzzle/display/HintFaceletProp";
30
+ import { experimentalStickerings } from "../../../model/props/puzzle/display/StickeringProp";
31
+ import type { PuzzlePosition } from "../../../controllers/AnimationTypes";
32
+ import { smootherStep } from "../../../controllers/easing";
34
33
  import { TAU } from "../TAU";
35
34
  import type { Twisty3DPuzzle } from "./Twisty3DPuzzle";
36
35
 
@@ -556,7 +555,6 @@ export class Cube3D extends Object3D implements Twisty3DPuzzle {
556
555
 
557
556
  constructor(
558
557
  private def: KPuzzleDefinition,
559
- cursor?: AlgCursor,
560
558
  private scheduleRenderCallback?: () => void,
561
559
  options: Cube3DOptions = {},
562
560
  ) {
@@ -592,8 +590,6 @@ export class Cube3D extends Object3D implements Twisty3DPuzzle {
592
590
  if (this.options.experimentalStickering) {
593
591
  this.setStickering(this.options.experimentalStickering);
594
592
  }
595
-
596
- cursor?.addPositionListener(this);
597
593
  }
598
594
 
599
595
  // Can only be called once.
@@ -13,15 +13,19 @@ import {
13
13
  Texture,
14
14
  Vector3,
15
15
  } from "three";
16
+ import { Move } from "../../../../alg";
16
17
  import {
17
18
  areTransformationsEquivalent,
19
+ KPuzzle,
18
20
  KPuzzleDefinition,
19
21
  Transformation,
22
+ transformationOrder,
20
23
  } from "../../../../kpuzzle";
21
24
  import { experimentalTransformationForQuantumMove } from "../../../../kpuzzle";
22
25
  import type {
23
26
  StickerDat,
24
27
  StickerDatSticker,
28
+ StickerDatAxis,
25
29
  } from "../../../../puzzle-geometry";
26
30
  import type { TextureMapper } from "../../../../puzzle-geometry/PuzzleGeometry";
27
31
  import {
@@ -29,10 +33,9 @@ import {
29
33
  experimentalGetFaceletAppearance,
30
34
  ExperimentalPuzzleAppearance,
31
35
  } from "../../../../puzzles";
32
- import type { AlgCursor } from "../../../old/animation/cursor/AlgCursor";
33
- import type { PuzzlePosition } from "../../../old/animation/cursor/CursorTypes";
34
- import { smootherStep } from "../../../old/animation/easing";
35
- import type { HintFaceletStyle } from "../../../old/dom/TwistyPlayerConfig";
36
+ import type { HintFaceletStyle } from "../../../model/props/puzzle/display/HintFaceletProp";
37
+ import type { PuzzlePosition } from "../../../controllers/AnimationTypes";
38
+ import { smootherStep } from "../../../controllers/easing";
36
39
  import { TAU } from "../TAU";
37
40
 
38
41
  import type { Twisty3DPuzzle } from "./Twisty3DPuzzle";
@@ -430,7 +433,7 @@ class StickerDef {
430
433
  class HitPlaneDef {
431
434
  public cubie: Group;
432
435
  private geo: BufferGeometry;
433
- constructor(hitface: any, tm: TextureMapper) {
436
+ constructor(hitface: any, tm: TextureMapper, stickerDat: StickerDat) {
434
437
  this.cubie = new Group();
435
438
  const coords = hitface.coords as number[];
436
439
  const filler = new Filler(coords.length / 3 - 2, tm);
@@ -442,7 +445,9 @@ class HitPlaneDef {
442
445
  this.geo = new BufferGeometry();
443
446
  filler.setAttributes(this.geo);
444
447
  const obj = new Mesh(this.geo, invisMaterial);
445
- obj.userData.name = hitface.name;
448
+ obj.userData.quantumMove = stickerDat.notationMapper.notationToExternal(
449
+ new Move(hitface.name),
450
+ );
446
451
  this.cubie.scale.setScalar(0.99);
447
452
  this.cubie.add(obj);
448
453
  }
@@ -451,10 +456,10 @@ class HitPlaneDef {
451
456
  class AxisInfo {
452
457
  public axis: Vector3;
453
458
  public order: number;
454
- constructor(axisDat: any) {
455
- const vec = axisDat[0] as number[];
459
+ constructor(axisDat: StickerDatAxis) {
460
+ const vec = axisDat.coordinates;
456
461
  this.axis = new Vector3(vec[0], vec[1], vec[2]);
457
- this.order = axisDat[2];
462
+ this.order = axisDat.order;
458
463
  }
459
464
  }
460
465
 
@@ -512,23 +517,24 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
512
517
  private materialArray1: Material[];
513
518
  private materialArray2: Material[];
514
519
  private textured: boolean = false;
520
+ private showHintStickers: boolean = false;
521
+ private showFoundations: boolean = false;
515
522
  private hintMaterialDisposable: boolean;
516
523
  private stickerMaterialDisposable: boolean;
517
524
 
518
525
  #pendingStickeringUpdate: boolean = false;
519
526
 
520
527
  constructor(
521
- cursor: AlgCursor,
522
528
  private scheduleRenderCallback: () => void,
523
529
  private definition: KPuzzleDefinition,
524
- private pgdat: StickerDat,
525
- private showFoundation: boolean = false,
526
- private showHintStickers: boolean = false,
530
+ private stickerDat: StickerDat,
531
+ enableFoundationOpt: boolean = false,
532
+ enableHintStickersOpt: boolean = false,
527
533
  hintStickerHeightScale: number = 1,
528
534
  private params: PG3DOptions = {},
529
535
  ) {
530
536
  super();
531
- if (pgdat.stickers.length === 0) {
537
+ if (stickerDat.stickers.length === 0) {
532
538
  throw Error("Reuse of stickerdat from pg; please don't do that.");
533
539
  }
534
540
  this.hintMaterial = new MeshBasicMaterial({
@@ -540,27 +546,33 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
540
546
  this.stickerMaterial = basicStickerMaterial;
541
547
  this.stickerMaterialDisposable = false;
542
548
  this.axesInfo = {};
543
- const axesDef = this.pgdat.axis as any[];
549
+ const axesDef = this.stickerDat.axis;
544
550
  for (const axis of axesDef) {
545
- this.axesInfo[axis[1]] = new AxisInfo(axis);
551
+ this.axesInfo[axis.quantumMove.family] = new AxisInfo(axis);
546
552
  }
547
- const stickers = this.pgdat.stickers as any[];
553
+ const stickers = this.stickerDat.stickers as any[];
548
554
  this.stickers = {};
549
555
  this.materialArray1 = new Array(8);
550
556
  this.materialArray2 = new Array(8);
551
- this.enableFoundation(showFoundation);
552
- this.updateMaterialArrays();
557
+ // TODO: the argument enableFoundationOpt really means, do we ever want to display
558
+ // foundations. But it is presently *used* to mean, show foundations initially
559
+ // (and maybe experimentalSetAppearance changes this). So for now we set up the
560
+ // show flag from the enable flag, and turn on the enable flag so later when it's
561
+ // used we will get the foundations. What this means is the geometry always "pays"
562
+ // for foundations, even if they aren't displayed.
563
+ this.showFoundation(enableFoundationOpt);
564
+ enableFoundationOpt = true;
553
565
  let triangleCount = 0;
554
566
  const multiplier = 3;
555
567
  for (const sticker of stickers) {
556
568
  const sides = sticker.coords.length / 3;
557
569
  triangleCount += multiplier * (sides - 2);
558
570
  }
559
- const filler = new Filler(triangleCount, pgdat.textureMapper);
571
+ const filler = new Filler(triangleCount, stickerDat.textureMapper);
560
572
  const black = 0;
561
573
  const normals: number[][] = [];
562
574
  let totArea = 0;
563
- for (const f of pgdat.faces) {
575
+ for (const f of stickerDat.faces) {
564
576
  normals.push(normal(f.coords));
565
577
  totArea += polyarea(f.coords);
566
578
  }
@@ -596,6 +608,14 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
596
608
  const stickerdef = new StickerDef(filler, sticker, trim, options);
597
609
  this.stickers[orbit][ori][ord] = stickerdef;
598
610
  }
611
+ // TODO: the argument enableHintStickersOpt really means, do we ever want to display
612
+ // hint stickers. But it is presently *used* to mean, show hint stickers initially
613
+ // (and maybe experimentalSetAppearance changes this). So for now we set up the
614
+ // show flag from the enable flag, and turn on the enable flag so later when it's
615
+ // used we will get the hint stickers. What this means is the geometry always "pays"
616
+ // for hint stickers, even if they aren't displayed.
617
+ this.showHintStickers = enableHintStickersOpt;
618
+ enableHintStickersOpt = true;
599
619
  for (const sticker of stickers) {
600
620
  const orbit = sticker.orbit;
601
621
  const ord = sticker.ord;
@@ -603,7 +623,7 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
603
623
  this.stickers[orbit][ori][ord].addHint(
604
624
  filler,
605
625
  sticker,
606
- showHintStickers,
626
+ enableHintStickersOpt,
607
627
  hintStickerHeightScale,
608
628
  trim,
609
629
  normals[sticker.face],
@@ -614,7 +634,9 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
614
634
  const orbit = sticker.orbit;
615
635
  const ord = sticker.ord;
616
636
  const ori = sticker.ori;
617
- this.stickers[orbit][ori][ord].addFoundation(filler, sticker, black);
637
+ if (enableFoundationOpt) {
638
+ this.stickers[orbit][ori][ord].addFoundation(filler, sticker, black);
639
+ }
618
640
  }
619
641
  const fixedGeo = new BufferGeometry();
620
642
  filler.setAttributes(fixedGeo);
@@ -625,19 +647,23 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
625
647
  const obj2 = new Mesh(fixedGeo, this.materialArray2);
626
648
  obj2.scale.set(PG_SCALE, PG_SCALE, PG_SCALE);
627
649
  this.add(obj2);
628
- const hitfaces = this.pgdat.faces as any[];
650
+ const hitfaces = this.stickerDat.faces as any[];
629
651
  this.movingObj = obj2;
630
652
  this.fixedGeo = fixedGeo;
631
653
  this.filler = filler;
632
654
  for (const hitface of hitfaces) {
633
- const facedef = new HitPlaneDef(hitface, pgdat.textureMapper);
655
+ const facedef = new HitPlaneDef(
656
+ hitface,
657
+ stickerDat.textureMapper,
658
+ this.stickerDat,
659
+ );
634
660
  facedef.cubie.scale.set(PG_SCALE, PG_SCALE, PG_SCALE);
635
661
  this.add(facedef.cubie);
636
662
  this.controlTargets.push(facedef.cubie.children[0]);
637
663
  }
638
664
  filler.saveOriginalColors();
639
- cursor.addPositionListener(this);
640
- pgdat.stickers = []; // don't need these anymore
665
+ stickerDat.stickers = []; // don't need these anymore
666
+ this.updateMaterialArrays();
641
667
  /*
642
668
  this.experimentalUpdateTexture(
643
669
  true,
@@ -675,6 +701,69 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
675
701
  return this.controlTargets;
676
702
  }
677
703
 
704
+ #cachedKPuzzle: KPuzzle | null;
705
+ get #kpuzzle() {
706
+ return (this.#cachedKPuzzle ??= new KPuzzle(this.definition));
707
+ }
708
+ #isValidMove(move: Move): boolean {
709
+ try {
710
+ this.#kpuzzle.applyMove(move);
711
+ return true;
712
+ } catch (_) {
713
+ return false;
714
+ }
715
+ }
716
+
717
+ getClosestMoveToAxis(
718
+ point: Vector3,
719
+ transformations: {
720
+ invert: boolean;
721
+ depth?: "secondSlice" | "rotation" | "none";
722
+ },
723
+ ): { move: Move; order: number } | null {
724
+ let closestMove: Move | null = null;
725
+ let closestMoveDotProduct: number = 0;
726
+
727
+ let modify: (move: Move) => Move = (m) => m;
728
+ switch (transformations.depth) {
729
+ case "secondSlice":
730
+ modify = (m: Move) => m.modified({ innerLayer: 2 });
731
+ break;
732
+ case "rotation":
733
+ modify = (m: Move) => m.modified({ family: m.family + "v" });
734
+ break;
735
+ }
736
+
737
+ for (const axis of this.stickerDat.axis) {
738
+ const product = point.dot(new Vector3(...axis.coordinates));
739
+ if (product > closestMoveDotProduct) {
740
+ const modified = this.stickerDat.notationMapper.notationToExternal(
741
+ modify(axis.quantumMove),
742
+ );
743
+ if (!modified) {
744
+ continue;
745
+ }
746
+ if (this.#isValidMove(modified)) {
747
+ closestMoveDotProduct = product;
748
+ closestMove = modified;
749
+ }
750
+ }
751
+ }
752
+
753
+ if (!closestMove) {
754
+ return null;
755
+ }
756
+
757
+ if (transformations.invert) {
758
+ closestMove = closestMove.invert();
759
+ }
760
+ // TODO: cache order or make this lookup more efficient.
761
+ this.#kpuzzle.reset();
762
+ this.#kpuzzle.applyMove(closestMove);
763
+ const order = transformationOrder(this.definition, this.#kpuzzle.state);
764
+ return { move: closestMove, order }; // TODO: push this down
765
+ }
766
+
678
767
  experimentalSetAppearance(appearance: ExperimentalPuzzleAppearance): void {
679
768
  this.params.appearance = appearance;
680
769
  for (const orbitName in this.definition.orbits) {
@@ -751,8 +840,9 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
751
840
  const externalMove = moveProgress.move;
752
841
  // TODO: unswizzle goes external to internal, and so does the call after that
753
842
  // and so does the stateForBlockMove call
754
- const unswizzled = this.pgdat.unswizzle(externalMove);
755
- const move = this.pgdat.notationMapper.notationToInternal(externalMove);
843
+ const unswizzled = this.stickerDat.unswizzle(externalMove);
844
+ const move =
845
+ this.stickerDat.notationMapper.notationToInternal(externalMove);
756
846
  if (move === null) {
757
847
  throw Error("Bad blockmove " + externalMove.family);
758
848
  }
@@ -841,9 +931,8 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
841
931
  return smootherStep(fraction);
842
932
  }
843
933
 
844
- private enableHintFacelets(v: boolean) {
934
+ private showHintFacelets(v: boolean) {
845
935
  this.showHintStickers = v;
846
- this.updateMaterialArrays();
847
936
  }
848
937
 
849
938
  private updateMaterialArrays() {
@@ -860,7 +949,7 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
860
949
  this.materialArray1[2] = invisMaterial;
861
950
  this.materialArray2[3] = invisMaterial;
862
951
  }
863
- if (this.showFoundation) {
952
+ if (this.showFoundations) {
864
953
  this.materialArray1[6] = foundationMaterial;
865
954
  this.materialArray2[7] = foundationMaterial;
866
955
  } else {
@@ -869,9 +958,8 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
869
958
  }
870
959
  }
871
960
 
872
- private enableFoundation(v: boolean) {
873
- this.showFoundation = v;
874
- this.updateMaterialArrays();
961
+ private showFoundation(v: boolean) {
962
+ this.showFoundations = v;
875
963
  }
876
964
 
877
965
  private setHintStickerOpacity(v: number): void {
@@ -879,6 +967,7 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
879
967
  this.hintMaterial.dispose();
880
968
  this.hintMaterialDisposable = false;
881
969
  }
970
+ console.log("hint sticker opacity " + v);
882
971
  if (v === 0) {
883
972
  this.hintMaterial = invisMaterial;
884
973
  } else if (v === 1) {
@@ -900,10 +989,10 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
900
989
  hintStickerOpacity?: number;
901
990
  }): void {
902
991
  if (options.hintFacelets !== undefined) {
903
- this.enableHintFacelets(options.hintFacelets !== "none");
992
+ this.showHintFacelets(options.hintFacelets !== "none");
904
993
  }
905
994
  if (options.showFoundation !== undefined) {
906
- this.enableFoundation(options.showFoundation);
995
+ this.showFoundation(options.showFoundation);
907
996
  }
908
997
  if (options.hintStickerOpacity !== undefined) {
909
998
  this.setHintStickerOpacity(options.hintStickerOpacity);
@@ -912,6 +1001,7 @@ export class PG3D extends Object3D implements Twisty3DPuzzle {
912
1001
  if (this.lastPos) {
913
1002
  this.onPositionChange(this.lastPos);
914
1003
  }
1004
+ this.updateMaterialArrays();
915
1005
  this.scheduleRenderCallback();
916
1006
  }
917
1007
 
@@ -1,5 +1,5 @@
1
1
  import type { Object3D } from "three";
2
- import type { PuzzlePosition } from "../../../old/animation/cursor/CursorTypes";
2
+ import type { PuzzlePosition } from "../../../controllers/AnimationTypes";
3
3
 
4
4
  export interface Twisty3DPuzzle extends Object3D {
5
5
  onPositionChange(position: PuzzlePosition): void;
@@ -10,7 +10,7 @@ import {
10
10
  TraversalDownUp,
11
11
  } from "../../../alg";
12
12
  import type { Parsed } from "../../../alg/parse";
13
- import type { AnimatedLeafUnit } from "../../old/animation/indexer/simultaneous-moves/simul-moves";
13
+ import type { AnimatedLeafUnit } from "../../controllers/indexer/simultaneous-moves/simul-moves";
14
14
 
15
15
  export type AnimatedLeafUnitInfo = {
16
16
  leaf: Parsed<AnimatedLeafUnit>;
@@ -1,4 +1,4 @@
1
- import { CSSSource } from "../../old/dom/element/ManagedCustomElement";
1
+ import { CSSSource } from "../ManagedCustomElement";
2
2
 
3
3
  export const twistyAlgEditorCSS = new CSSSource(`
4
4
  :host {
@@ -19,9 +19,9 @@ import type {
19
19
  AlgWithIssues,
20
20
  } from "../../model/props/puzzle/state/AlgProp";
21
21
  import type { CurrentLeavesSimplified } from "../../model/props/puzzle/state/CurrentLeavesSimplified";
22
- import { ClassListManager } from "../../old/dom/element/ClassListManager";
23
- import { ManagedCustomElement } from "../../old/dom/element/ManagedCustomElement";
24
- import { customElementsShim } from "../../old/dom/element/node-custom-element-shims";
22
+ import { ClassListManager } from "../ClassListManager";
23
+ import { ManagedCustomElement } from "../ManagedCustomElement";
24
+ import { customElementsShim } from "../node-custom-element-shims";
25
25
  import { TwistyPlayer } from "../TwistyPlayer";
26
26
  import { HighlightInfo, TwistyAlgEditorModel } from "./model";
27
27
  import { twistyAlgEditorCSS } from "./TwistyAlgEditor.css";
@@ -63,6 +63,9 @@ export class TwistyAlgEditor extends ManagedCustomElement {
63
63
  }
64
64
  }
65
65
 
66
+ // Temporary Workaround for Twizzle Explorer
67
+ debugNeverRequestTimestamp: boolean = false;
68
+
66
69
  constructor(options?: {
67
70
  twistyPlayer?: TwistyPlayer;
68
71
  twistyPlayerProp?: TwistyPlayerAlgProp;
@@ -301,7 +304,11 @@ export class TwistyAlgEditor extends ManagedCustomElement {
301
304
  console.log("invalid where");
302
305
  throw new Error("Invalid where!");
303
306
  }
304
- twistyPlayer.experimentalModel.timestampRequestProp.set(newTimestamp);
307
+ if (!this.debugNeverRequestTimestamp) {
308
+ twistyPlayer.experimentalModel.timestampRequestProp.set(
309
+ newTimestamp,
310
+ );
311
+ }
305
312
  },
306
313
  );
307
314
 
@@ -1,4 +1,4 @@
1
- import { CSSSource } from "../old/dom/element/ManagedCustomElement";
1
+ import { CSSSource } from "./ManagedCustomElement";
2
2
 
3
3
  export const twistyAlgViewerCSS = new CSSSource(`
4
4
  :host {
@@ -15,13 +15,13 @@ import {
15
15
  import type { Parsed } from "../../alg/parse";
16
16
  import type { AlgWithIssues } from "../model/props/puzzle/state/AlgProp";
17
17
  import type { DetailedTimelineInfo } from "../model/props/timeline/DetailedTimelineInfoProp";
18
- import type { MillisecondTimestamp } from "../old/animation/cursor/CursorTypes";
19
- import type { CurrentMoveInfo } from "../old/animation/indexer/AlgIndexer";
20
- import { ManagedCustomElement } from "../old/dom/element/ManagedCustomElement";
18
+ import type { MillisecondTimestamp } from "../controllers/AnimationTypes";
19
+ import type { CurrentMoveInfo } from "../controllers/indexer/AlgIndexer";
20
+ import { ManagedCustomElement } from "./ManagedCustomElement";
21
21
  import {
22
22
  customElementsShim,
23
23
  HTMLElementShim,
24
- } from "../old/dom/element/node-custom-element-shims";
24
+ } from "./node-custom-element-shims";
25
25
  import { twistyAlgViewerCSS } from "./TwistyAlgViewer.css";
26
26
  import { TwistyPlayer } from "./TwistyPlayer";
27
27
 
@@ -1,4 +1,4 @@
1
- import { CSSSource } from "./element/ManagedCustomElement";
1
+ import { CSSSource } from "./ManagedCustomElement";
2
2
 
3
3
  // TODO: figure out why `:host(twisty-player):fullscreen { background-color: white }` doesn't work.
4
4
  export const twistyPlayerCSS = new CSSSource(`
@@ -6,6 +6,9 @@ export const twistyPlayerCSS = new CSSSource(`
6
6
  width: 384px;
7
7
  height: 256px;
8
8
  display: grid;
9
+
10
+ -webkit-user-select: none;
11
+ user-select: none;
9
12
  }
10
13
 
11
14
  .wrapper {