cubing 0.21.3 → 0.22.0

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 (406) hide show
  1. package/dist/.DS_Store +0 -0
  2. package/dist/bin/puzzle-geometry-bin.js +9 -5
  3. package/dist/bin/puzzle-geometry-bin.js.map +2 -2
  4. package/dist/bundle-global/cubing.bundle-global.js +284 -303
  5. package/dist/esm/.DS_Store +0 -0
  6. package/dist/esm/3d-3WQVOHX5.js +21 -0
  7. package/dist/esm/3d-3WQVOHX5.js.map +7 -0
  8. package/dist/esm/alg/index.js +1 -1
  9. package/dist/esm/bluetooth/index.js +3 -3
  10. package/dist/esm/bluetooth/index.js.map +1 -1
  11. package/dist/esm/{chunk-RE7MIN5R.js → chunk-4IUYLRHT.js} +2 -2
  12. package/dist/esm/{chunk-RE7MIN5R.js.map → chunk-4IUYLRHT.js.map} +0 -0
  13. package/dist/esm/{chunk-CSVAFZSB.js → chunk-7KI3I3Y7.js} +5 -5
  14. package/dist/esm/{chunk-CSVAFZSB.js.map → chunk-7KI3I3Y7.js.map} +0 -0
  15. package/dist/esm/{chunk-APIIMJG6.js → chunk-DLN5QS4V.js} +448 -1052
  16. package/dist/esm/chunk-DLN5QS4V.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-MUQMBH2S.js → chunk-HXKINJ7U.js} +3 -3
  20. package/dist/esm/{chunk-MUQMBH2S.js.map → chunk-HXKINJ7U.js.map} +1 -1
  21. package/dist/esm/{chunk-YV3RT5PX.js → chunk-X6JHXPDX.js} +2 -2
  22. package/dist/esm/{chunk-YV3RT5PX.js.map → chunk-X6JHXPDX.js.map} +0 -0
  23. package/dist/esm/kpuzzle/index.js +2 -2
  24. package/dist/esm/notation/index.js +2 -2
  25. package/dist/esm/protocol/index.js +2 -2
  26. package/dist/esm/puzzle-geometry/index.js +10 -6
  27. package/dist/esm/puzzle-geometry/index.js.map +2 -2
  28. package/dist/esm/puzzles/index.js +3 -3
  29. package/dist/esm/scramble/index.js +4 -4
  30. package/dist/esm/search/index.js +4 -4
  31. package/dist/esm/stream/index.js +1 -1
  32. package/dist/esm/twisty/index.js +715 -2341
  33. package/dist/esm/twisty/index.js.map +3 -3
  34. package/dist/esm/{worker-inside-generated-string-KDZOUGJF.js → worker-inside-generated-string-ZA6E6672.js} +21 -21
  35. package/dist/esm/worker-inside-generated-string-ZA6E6672.js.map +7 -0
  36. package/dist/types/alg/index.d.ts +1 -0
  37. package/dist/types/alg/index.d.ts.map +1 -1
  38. package/dist/types/alg/units/leaves/Move.d.ts +1 -1
  39. package/dist/types/alg/units/leaves/Move.d.ts.map +1 -1
  40. package/dist/types/puzzle-geometry/PGPuzzles.spec.d.ts +3 -0
  41. package/dist/types/puzzle-geometry/PGPuzzles.spec.d.ts.map +1 -1
  42. package/dist/types/puzzle-geometry/PuzzleGeometry.d.ts +5 -1
  43. package/dist/types/puzzle-geometry/PuzzleGeometry.d.ts.map +1 -1
  44. package/dist/types/puzzles/index.d.ts +1 -1
  45. package/dist/types/puzzles/index.d.ts.map +1 -1
  46. package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
  47. package/dist/types/search/worker-inside-generated-string.d.ts.map +1 -1
  48. package/dist/types/twisty/{old/animation/cursor/CursorTypes.d.ts → controllers/AnimationTypes.d.ts} +10 -3
  49. package/dist/types/twisty/controllers/AnimationTypes.d.ts.map +1 -0
  50. package/dist/types/twisty/{old/animation → controllers}/RenderScheduler.d.ts +0 -0
  51. package/dist/types/twisty/controllers/RenderScheduler.d.ts.map +1 -0
  52. package/dist/types/twisty/controllers/TwistyAnimationController.d.ts +1 -1
  53. package/dist/types/twisty/controllers/TwistyAnimationController.d.ts.map +1 -1
  54. package/dist/types/twisty/{old/animation → controllers}/easing.d.ts +0 -0
  55. package/dist/types/twisty/controllers/easing.d.ts.map +1 -0
  56. package/dist/types/twisty/{old/animation → controllers}/indexer/AlgDuration.d.ts +2 -2
  57. package/dist/types/twisty/controllers/indexer/AlgDuration.d.ts.map +1 -0
  58. package/dist/types/twisty/{old/animation → controllers}/indexer/AlgIndexer.d.ts +3 -3
  59. package/dist/types/twisty/controllers/indexer/AlgIndexer.d.ts.map +1 -0
  60. package/dist/types/twisty/{old/animation → controllers}/indexer/SimpleAlgIndexer.d.ts +3 -3
  61. package/dist/types/twisty/controllers/indexer/SimpleAlgIndexer.d.ts.map +1 -0
  62. package/dist/types/twisty/{old/animation → controllers}/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts +3 -3
  63. package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts.map +1 -0
  64. package/dist/types/twisty/{old/animation → controllers}/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.d.ts +3 -3
  65. package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.d.ts.map +1 -0
  66. package/dist/types/twisty/{old/animation → controllers}/indexer/simultaneous-moves/simul-moves.d.ts +2 -2
  67. package/dist/types/twisty/controllers/indexer/simultaneous-moves/simul-moves.d.ts.map +1 -0
  68. package/dist/types/twisty/{old/animation → controllers}/indexer/tree/AlgWalker.d.ts +2 -2
  69. package/dist/types/twisty/controllers/indexer/tree/AlgWalker.d.ts.map +1 -0
  70. package/dist/types/twisty/{old/animation → controllers}/indexer/tree/TreeAlgIndexer.d.ts +3 -3
  71. package/dist/types/twisty/controllers/indexer/tree/TreeAlgIndexer.d.ts.map +1 -0
  72. package/dist/types/twisty/controllers/indexer/tree/chunkAlgs.d.ts +3 -0
  73. package/dist/types/twisty/controllers/indexer/tree/chunkAlgs.d.ts.map +1 -0
  74. package/dist/types/twisty/{old/animation → controllers}/stream/timeline-move-calculation-draft.d.ts +2 -2
  75. package/dist/types/twisty/controllers/stream/timeline-move-calculation-draft.d.ts.map +1 -0
  76. package/dist/types/twisty/heavy-code-imports/dynamic-entries/3d.d.ts +1 -2
  77. package/dist/types/twisty/heavy-code-imports/dynamic-entries/3d.d.ts.map +1 -1
  78. package/dist/types/twisty/index.d.ts +8 -11
  79. package/dist/types/twisty/index.d.ts.map +1 -1
  80. package/dist/types/twisty/model/TwistyPlayerModel.d.ts +11 -0
  81. package/dist/types/twisty/model/TwistyPlayerModel.d.ts.map +1 -1
  82. package/dist/types/twisty/model/props/TwistyPropDebugger.d.ts +1 -1
  83. package/dist/types/twisty/model/props/TwistyPropDebugger.d.ts.map +1 -1
  84. package/dist/types/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts +6 -0
  85. package/dist/types/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts.map +1 -0
  86. package/dist/types/twisty/model/props/puzzle/display/HintFaceletProp.d.ts +5 -1
  87. package/dist/types/twisty/model/props/puzzle/display/HintFaceletProp.d.ts.map +1 -1
  88. package/dist/types/twisty/model/props/puzzle/display/StickeringProp.d.ts +44 -1
  89. package/dist/types/twisty/model/props/puzzle/display/StickeringProp.d.ts.map +1 -1
  90. package/dist/types/twisty/model/props/puzzle/state/AnchoredStartProp.d.ts +2 -2
  91. package/dist/types/twisty/model/props/puzzle/state/AnchoredStartProp.d.ts.map +1 -1
  92. package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesProp.d.ts +1 -1
  93. package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesProp.d.ts.map +1 -1
  94. package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts +1 -1
  95. package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts.map +1 -1
  96. package/dist/types/twisty/model/props/puzzle/state/CurrentTransformationProp.d.ts +1 -1
  97. package/dist/types/twisty/model/props/puzzle/state/CurrentTransformationProp.d.ts.map +1 -1
  98. package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts +5 -2
  99. package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts.map +1 -1
  100. package/dist/types/twisty/model/props/puzzle/state/IndexerProp.d.ts +2 -2
  101. package/dist/types/twisty/model/props/puzzle/state/IndexerProp.d.ts.map +1 -1
  102. package/dist/types/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts +2 -2
  103. package/dist/types/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts.map +1 -1
  104. package/dist/types/twisty/model/props/puzzle/state/MovePressInputProp.d.ts +6 -0
  105. package/dist/types/twisty/model/props/puzzle/state/MovePressInputProp.d.ts.map +1 -0
  106. package/dist/types/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts +10 -0
  107. package/dist/types/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts.map +1 -0
  108. package/dist/types/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts +5 -1
  109. package/dist/types/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts.map +1 -1
  110. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts +1 -1
  111. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts.map +1 -1
  112. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts +19 -1
  113. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts.map +1 -1
  114. package/dist/types/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts +1 -1
  115. package/dist/types/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts.map +1 -1
  116. package/dist/types/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts +2 -3
  117. package/dist/types/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts.map +1 -1
  118. package/dist/types/twisty/model/props/timeline/PlayingInfoProp.d.ts +1 -1
  119. package/dist/types/twisty/model/props/timeline/PlayingInfoProp.d.ts.map +1 -1
  120. package/dist/types/twisty/model/props/timeline/TimestampRequestProp.d.ts +1 -1
  121. package/dist/types/twisty/model/props/timeline/TimestampRequestProp.d.ts.map +1 -1
  122. package/dist/types/twisty/model/props/viewer/BackViewProp.d.ts +6 -1
  123. package/dist/types/twisty/model/props/viewer/BackViewProp.d.ts.map +1 -1
  124. package/dist/types/twisty/model/props/viewer/BackgroundProp.d.ts +5 -1
  125. package/dist/types/twisty/model/props/viewer/BackgroundProp.d.ts.map +1 -1
  126. package/dist/types/twisty/model/props/viewer/ControlPanelProp.d.ts +5 -1
  127. package/dist/types/twisty/model/props/viewer/ControlPanelProp.d.ts.map +1 -1
  128. package/dist/types/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts +18 -5
  129. package/dist/types/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts.map +1 -1
  130. package/dist/types/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts +6 -6
  131. package/dist/types/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts.map +1 -1
  132. package/dist/types/twisty/model/props/viewer/TimeRangeProp.d.ts +2 -2
  133. package/dist/types/twisty/model/props/viewer/TimeRangeProp.d.ts.map +1 -1
  134. package/dist/types/twisty/model/props/viewer/ViewerLinkProp.d.ts +5 -1
  135. package/dist/types/twisty/model/props/viewer/ViewerLinkProp.d.ts.map +1 -1
  136. package/dist/types/twisty/model/props/viewer/VisualizationProp.d.ts +7 -1
  137. package/dist/types/twisty/model/props/viewer/VisualizationProp.d.ts.map +1 -1
  138. package/dist/types/twisty/model/props/viewer/VisualizationStrategyProp.d.ts +1 -1
  139. package/dist/types/twisty/model/props/viewer/VisualizationStrategyProp.d.ts.map +1 -1
  140. package/dist/types/twisty/views/2D/Twisty2DPuzzle.css.d.ts +3 -0
  141. package/dist/types/twisty/views/2D/Twisty2DPuzzle.css.d.ts.map +1 -0
  142. package/dist/types/twisty/views/2D/Twisty2DPuzzle.d.ts +4 -6
  143. package/dist/types/twisty/views/2D/Twisty2DPuzzle.d.ts.map +1 -1
  144. package/dist/types/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts +1 -1
  145. package/dist/types/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts.map +1 -1
  146. package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts +2 -2
  147. package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts.map +1 -1
  148. package/dist/types/twisty/views/3D/DragTracker.d.ts +28 -0
  149. package/dist/types/twisty/views/3D/DragTracker.d.ts.map +1 -0
  150. package/dist/types/twisty/views/3D/RendererPool.d.ts.map +1 -1
  151. package/dist/types/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts +6 -1
  152. package/dist/types/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts.map +1 -1
  153. package/dist/types/twisty/views/3D/Twisty3DSceneWrapper.d.ts +9 -4
  154. package/dist/types/twisty/views/3D/Twisty3DSceneWrapper.d.ts.map +1 -1
  155. package/dist/types/twisty/views/3D/Twisty3DVantage.css.d.ts +3 -0
  156. package/dist/types/twisty/views/3D/Twisty3DVantage.css.d.ts.map +1 -0
  157. package/dist/types/twisty/views/3D/Twisty3DVantage.d.ts +11 -7
  158. package/dist/types/twisty/views/3D/Twisty3DVantage.d.ts.map +1 -1
  159. package/dist/types/twisty/views/3D/TwistyOrbitControls.d.ts +24 -0
  160. package/dist/types/twisty/views/3D/TwistyOrbitControls.d.ts.map +1 -0
  161. package/dist/types/twisty/views/3D/TwistyOrbitControls.spec.d.ts +5 -0
  162. package/dist/types/twisty/views/3D/TwistyOrbitControls.spec.d.ts.map +1 -0
  163. package/dist/types/twisty/views/3D/puzzles/Cube3D.d.ts +4 -4
  164. package/dist/types/twisty/views/3D/puzzles/Cube3D.d.ts.map +1 -1
  165. package/dist/types/twisty/views/3D/puzzles/PG3D.d.ts +17 -10
  166. package/dist/types/twisty/views/3D/puzzles/PG3D.d.ts.map +1 -1
  167. package/dist/types/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts +1 -1
  168. package/dist/types/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts.map +1 -1
  169. package/dist/types/twisty/{old/dom/element → views}/ClassListManager.d.ts +0 -0
  170. package/dist/types/twisty/views/ClassListManager.d.ts.map +1 -0
  171. package/dist/types/twisty/{old/dom/element → views}/ManagedCustomElement.d.ts +0 -0
  172. package/dist/types/twisty/views/ManagedCustomElement.d.ts.map +1 -0
  173. package/dist/types/twisty/views/TwistyAlgEditor/LeafTokens.d.ts +1 -1
  174. package/dist/types/twisty/views/TwistyAlgEditor/LeafTokens.d.ts.map +1 -1
  175. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts +1 -1
  176. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts.map +1 -1
  177. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts +2 -1
  178. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts.map +1 -1
  179. package/dist/types/twisty/views/TwistyAlgViewer.css.d.ts +1 -1
  180. package/dist/types/twisty/views/TwistyAlgViewer.css.d.ts.map +1 -1
  181. package/dist/types/twisty/views/TwistyAlgViewer.d.ts +2 -2
  182. package/dist/types/twisty/views/TwistyAlgViewer.d.ts.map +1 -1
  183. package/dist/types/twisty/views/TwistyPlayer.css.d.ts +3 -0
  184. package/dist/types/twisty/views/TwistyPlayer.css.d.ts.map +1 -0
  185. package/dist/types/twisty/views/TwistyPlayer.d.ts +7 -3
  186. package/dist/types/twisty/views/TwistyPlayer.d.ts.map +1 -1
  187. package/dist/types/twisty/views/TwistyPlayerSettable.d.ts +7 -4
  188. package/dist/types/twisty/views/TwistyPlayerSettable.d.ts.map +1 -1
  189. package/dist/types/twisty/views/TwistyViewerWrapper.css.d.ts +3 -0
  190. package/dist/types/twisty/views/TwistyViewerWrapper.css.d.ts.map +1 -0
  191. package/dist/types/twisty/{old/dom/viewers → views}/canvas.d.ts +0 -0
  192. package/dist/types/twisty/views/canvas.d.ts.map +1 -0
  193. package/dist/types/twisty/views/control-panel/TwistyButtonsV2.css.d.ts +4 -0
  194. package/dist/types/twisty/views/control-panel/TwistyButtonsV2.css.d.ts.map +1 -0
  195. package/dist/types/twisty/views/control-panel/TwistyButtonsV2.d.ts +1 -1
  196. package/dist/types/twisty/views/control-panel/TwistyButtonsV2.d.ts.map +1 -1
  197. package/dist/types/twisty/views/control-panel/TwistyScrubber.css.d.ts +3 -0
  198. package/dist/types/twisty/{old/dom/controls → views/control-panel}/TwistyScrubber.css.d.ts.map +1 -1
  199. package/dist/types/twisty/views/control-panel/TwistyScrubberV2.d.ts +1 -1
  200. package/dist/types/twisty/views/control-panel/TwistyScrubberV2.d.ts.map +1 -1
  201. package/dist/types/twisty/{old/dom/element → views}/node-custom-element-shims.d.ts +0 -0
  202. package/dist/types/twisty/views/node-custom-element-shims.d.ts.map +1 -0
  203. package/dist/types/twisty/views/stream/TwistyStreamSource.css.d.ts +3 -0
  204. package/dist/types/twisty/views/stream/TwistyStreamSource.css.d.ts.map +1 -0
  205. package/dist/types/twisty/{old/dom → views}/stream/TwistyStreamSource.d.ts +1 -1
  206. package/dist/types/twisty/views/stream/TwistyStreamSource.d.ts.map +1 -0
  207. package/docs/.DS_Store +0 -0
  208. package/docs/cubing/.DS_Store +0 -0
  209. package/docs/cubing/api/index.html +11 -52
  210. package/package.json +1 -1
  211. package/src/cubing/.DS_Store +0 -0
  212. package/src/cubing/alg/index.ts +1 -0
  213. package/src/cubing/alg/units/leaves/Move.ts +1 -1
  214. package/src/cubing/bluetooth/smart-timer/GanTimer.ts +1 -1
  215. package/src/cubing/puzzle-geometry/PGPuzzles.spec.ts +4 -0
  216. package/src/cubing/puzzle-geometry/PuzzleGeometry.ts +14 -6
  217. package/src/cubing/puzzles/index.ts +1 -1
  218. package/src/cubing/search/worker-inside-generated-string.js +1 -1
  219. package/src/cubing/twisty/.DS_Store +0 -0
  220. package/{dist/types → src/cubing/twisty/controllers}/.DS_Store +0 -0
  221. package/src/cubing/twisty/{old/animation/cursor/CursorTypes.ts → controllers/AnimationTypes.ts} +11 -2
  222. package/src/cubing/twisty/{old/animation → controllers}/RenderScheduler.ts +0 -0
  223. package/src/cubing/twisty/controllers/TwistyAnimationController.ts +4 -4
  224. package/src/cubing/twisty/controllers/animation/.DS_Store +0 -0
  225. package/src/cubing/twisty/{old/animation → controllers}/easing.ts +0 -0
  226. package/src/cubing/twisty/controllers/indexer/.DS_Store +0 -0
  227. package/src/cubing/twisty/{old/animation → controllers}/indexer/AlgDuration.ts +2 -2
  228. package/src/cubing/twisty/{old/animation → controllers}/indexer/AlgIndexer.ts +4 -4
  229. package/src/cubing/twisty/{old/animation → controllers}/indexer/SimpleAlgIndexer.ts +4 -4
  230. package/src/cubing/twisty/{old/animation → controllers}/indexer/simultaneous-moves/SimultaneousMoveIndexer.ts +3 -3
  231. package/src/cubing/twisty/{old/animation → controllers}/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.ts +3 -3
  232. package/src/cubing/twisty/{old/animation → controllers}/indexer/simultaneous-moves/simul-moves.ts +2 -2
  233. package/src/cubing/twisty/{old/animation → controllers}/indexer/tree/AlgWalker.ts +4 -4
  234. package/src/cubing/twisty/{old/animation → controllers}/indexer/tree/TreeAlgIndexer.ts +3 -3
  235. package/src/cubing/twisty/{old/animation → controllers}/indexer/tree/chunkAlgs.ts +2 -2
  236. package/src/cubing/twisty/{old/animation → controllers}/stream/timeline-move-calculation-draft.spec.ts.TODO +0 -0
  237. package/src/cubing/twisty/{old/animation → controllers}/stream/timeline-move-calculation-draft.ts +2 -2
  238. package/src/cubing/twisty/heavy-code-imports/.DS_Store +0 -0
  239. package/src/cubing/twisty/heavy-code-imports/dynamic-entries/3d.ts +2 -12
  240. package/src/cubing/twisty/index.ts +11 -18
  241. package/src/cubing/twisty/model/.DS_Store +0 -0
  242. package/src/cubing/twisty/model/TwistyPlayerModel.ts +30 -1
  243. package/src/cubing/twisty/model/props/.DS_Store +0 -0
  244. package/src/cubing/twisty/model/props/TwistyPropDebugger.ts +3 -3
  245. package/src/cubing/twisty/model/props/puzzle/.DS_Store +0 -0
  246. package/src/cubing/twisty/model/props/puzzle/display/FoundationDisplayProp.ts +9 -0
  247. package/src/cubing/twisty/model/props/puzzle/display/HintFaceletProp.ts +6 -1
  248. package/src/cubing/twisty/model/props/puzzle/display/StickeringProp.ts +47 -1
  249. package/src/cubing/twisty/model/props/puzzle/state/AlgTransformationProp.ts +1 -1
  250. package/src/cubing/twisty/model/props/puzzle/state/AnchoredStartProp.ts +2 -2
  251. package/src/cubing/twisty/model/props/puzzle/state/CurrentLeavesProp.ts +2 -2
  252. package/src/cubing/twisty/model/props/puzzle/state/CurrentLeavesSimplified.ts +1 -1
  253. package/src/cubing/twisty/model/props/puzzle/state/CurrentTransformationProp.ts +1 -1
  254. package/src/cubing/twisty/model/props/puzzle/state/IndexerConstructorProp.ts +12 -5
  255. package/src/cubing/twisty/model/props/puzzle/state/IndexerProp.ts +2 -2
  256. package/src/cubing/twisty/model/props/puzzle/state/LegacyPositionProp.ts +2 -2
  257. package/src/cubing/twisty/model/props/puzzle/state/MovePressInputProp.ts +9 -0
  258. package/src/cubing/twisty/model/props/puzzle/state/NaiveMoveCountProp.ts +20 -0
  259. package/src/cubing/twisty/model/props/puzzle/state/SetupAnchorProp.ts +7 -1
  260. package/src/cubing/twisty/model/props/puzzle/structure/PuzzleIDProp.ts +1 -1
  261. package/src/cubing/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.ts +20 -1
  262. package/src/cubing/twisty/model/props/puzzle/structure/PuzzleLoaderProp.ts +1 -1
  263. package/src/cubing/twisty/model/props/timeline/DetailedTimelineInfoProp.ts +5 -3
  264. package/src/cubing/twisty/model/props/timeline/PlayingInfoProp.ts +1 -4
  265. package/src/cubing/twisty/model/props/timeline/TimestampRequestProp.ts +1 -1
  266. package/src/cubing/twisty/model/props/viewer/BackViewProp.ts +7 -1
  267. package/src/cubing/twisty/model/props/viewer/BackgroundProp.ts +6 -1
  268. package/src/cubing/twisty/model/props/viewer/ControlPanelProp.ts +5 -1
  269. package/src/cubing/twisty/model/props/viewer/OrbitCoordinatesProp.ts +83 -12
  270. package/src/cubing/twisty/model/props/viewer/OrbitCoordinatesRequestProp.ts +8 -8
  271. package/src/cubing/twisty/model/props/viewer/TimeRangeProp.ts +2 -2
  272. package/src/cubing/twisty/model/props/viewer/ViewerLinkProp.ts +5 -1
  273. package/src/cubing/twisty/model/props/viewer/VisualizationProp.ts +8 -1
  274. package/src/cubing/twisty/model/props/viewer/VisualizationStrategyProp.ts +1 -1
  275. package/src/cubing/twisty/old/.DS_Store +0 -0
  276. package/src/cubing/twisty/old/animation/.DS_Store +0 -0
  277. package/src/cubing/twisty/old/dom/.DS_Store +0 -0
  278. package/src/cubing/twisty/views/.DS_Store +0 -0
  279. package/src/cubing/twisty/{old/dom/viewers/Twisty2DSVGView.css.ts → views/2D/Twisty2DPuzzle.css.ts} +1 -1
  280. package/src/cubing/twisty/views/2D/Twisty2DPuzzle.ts +8 -12
  281. package/src/cubing/twisty/views/2D/Twisty2DPuzzleWrapper.ts +1 -1
  282. package/src/cubing/twisty/views/2D/Twisty2DSceneWrapper.ts +4 -4
  283. package/src/cubing/twisty/views/3D/.DS_Store +0 -0
  284. package/src/cubing/twisty/views/3D/DragTracker.ts +184 -0
  285. package/src/cubing/twisty/views/3D/RendererPool.ts +2 -1
  286. package/src/cubing/twisty/views/3D/Twisty3DPuzzleWrapper.ts +51 -5
  287. package/src/cubing/twisty/views/3D/Twisty3DSceneWrapper.ts +51 -10
  288. package/src/cubing/twisty/{old/dom/viewers/Twisty3DCanvas.css.ts → views/3D/Twisty3DVantage.css.ts} +2 -2
  289. package/src/cubing/twisty/views/3D/Twisty3DVantage.ts +88 -30
  290. package/src/cubing/twisty/views/3D/TwistyOrbitControls.spec.ts +213 -0
  291. package/src/cubing/twisty/views/3D/TwistyOrbitControls.ts +176 -0
  292. package/src/cubing/twisty/views/3D/puzzles/Cube3D.ts +5 -9
  293. package/src/cubing/twisty/views/3D/puzzles/PG3D.ts +127 -37
  294. package/src/cubing/twisty/views/3D/puzzles/Twisty3DPuzzle.ts +1 -1
  295. package/src/cubing/twisty/{old/dom/element → views}/ClassListManager.ts +0 -0
  296. package/src/cubing/twisty/{old/dom/element → views}/ManagedCustomElement.ts +0 -0
  297. package/src/cubing/twisty/views/TwistyAlgEditor/LeafTokens.ts +1 -1
  298. package/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.ts +1 -1
  299. package/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.ts +11 -4
  300. package/src/cubing/twisty/views/TwistyAlgViewer.css.ts +1 -1
  301. package/src/cubing/twisty/views/TwistyAlgViewer.ts +4 -4
  302. package/src/cubing/twisty/{old/dom → views}/TwistyPlayer.css.ts +4 -1
  303. package/src/cubing/twisty/views/TwistyPlayer.ts +16 -25
  304. package/src/cubing/twisty/views/TwistyPlayerSettable.ts +14 -10
  305. package/src/cubing/twisty/{old/dom/viewers → views}/TwistyViewerWrapper.css.ts +1 -1
  306. package/src/cubing/twisty/{old/dom/viewers → views}/canvas.ts +0 -0
  307. package/src/cubing/twisty/{old/dom/controls/buttons.css.ts → views/control-panel/TwistyButtonsV2.css.ts} +1 -1
  308. package/src/cubing/twisty/views/control-panel/TwistyButtonsV2.ts +5 -8
  309. package/src/cubing/twisty/{old/dom/controls → views/control-panel}/TwistyScrubber.css.ts +1 -1
  310. package/src/cubing/twisty/views/control-panel/TwistyScrubberV2.ts +3 -3
  311. package/src/cubing/twisty/{old/dom/element → views}/node-custom-element-shims.ts +0 -0
  312. package/src/cubing/twisty/{old/dom → views}/stream/TwistyStreamSource.css.ts +1 -1
  313. package/src/cubing/twisty/{old/dom → views}/stream/TwistyStreamSource.ts +9 -9
  314. package/dist/esm/3d-B25DP5PE.js +0 -39
  315. package/dist/esm/3d-B25DP5PE.js.map +0 -7
  316. package/dist/esm/chunk-APIIMJG6.js.map +0 -7
  317. package/dist/esm/worker-inside-generated-string-KDZOUGJF.js.map +0 -7
  318. package/dist/types/twisty/old/animation/RenderScheduler.d.ts.map +0 -1
  319. package/dist/types/twisty/old/animation/Timeline.d.ts +0 -72
  320. package/dist/types/twisty/old/animation/Timeline.d.ts.map +0 -1
  321. package/dist/types/twisty/old/animation/cursor/AlgCursor.d.ts +0 -53
  322. package/dist/types/twisty/old/animation/cursor/AlgCursor.d.ts.map +0 -1
  323. package/dist/types/twisty/old/animation/cursor/CursorTypes.d.ts.map +0 -1
  324. package/dist/types/twisty/old/animation/easing.d.ts.map +0 -1
  325. package/dist/types/twisty/old/animation/indexer/AlgDuration.d.ts.map +0 -1
  326. package/dist/types/twisty/old/animation/indexer/AlgIndexer.d.ts.map +0 -1
  327. package/dist/types/twisty/old/animation/indexer/SimpleAlgIndexer.d.ts.map +0 -1
  328. package/dist/types/twisty/old/animation/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts.map +0 -1
  329. package/dist/types/twisty/old/animation/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.d.ts.map +0 -1
  330. package/dist/types/twisty/old/animation/indexer/simultaneous-moves/simul-moves.d.ts.map +0 -1
  331. package/dist/types/twisty/old/animation/indexer/tree/AlgWalker.d.ts.map +0 -1
  332. package/dist/types/twisty/old/animation/indexer/tree/TreeAlgIndexer.d.ts.map +0 -1
  333. package/dist/types/twisty/old/animation/indexer/tree/chunkAlgs.d.ts +0 -3
  334. package/dist/types/twisty/old/animation/indexer/tree/chunkAlgs.d.ts.map +0 -1
  335. package/dist/types/twisty/old/animation/stream/timeline-move-calculation-draft.d.ts.map +0 -1
  336. package/dist/types/twisty/old/dom/TwistyAlgViewerV1.css.d.ts +0 -3
  337. package/dist/types/twisty/old/dom/TwistyAlgViewerV1.css.d.ts.map +0 -1
  338. package/dist/types/twisty/old/dom/TwistyAlgViewerV1.d.ts +0 -52
  339. package/dist/types/twisty/old/dom/TwistyAlgViewerV1.d.ts.map +0 -1
  340. package/dist/types/twisty/old/dom/TwistyPlayer.css.d.ts +0 -3
  341. package/dist/types/twisty/old/dom/TwistyPlayer.css.d.ts.map +0 -1
  342. package/dist/types/twisty/old/dom/TwistyPlayer.d.ts +0 -92
  343. package/dist/types/twisty/old/dom/TwistyPlayer.d.ts.map +0 -1
  344. package/dist/types/twisty/old/dom/TwistyPlayer.spec.d.ts +0 -5
  345. package/dist/types/twisty/old/dom/TwistyPlayer.spec.d.ts.map +0 -1
  346. package/dist/types/twisty/old/dom/TwistyPlayerConfig.d.ts +0 -165
  347. package/dist/types/twisty/old/dom/TwistyPlayerConfig.d.ts.map +0 -1
  348. package/dist/types/twisty/old/dom/controls/TwistyControlElement.d.ts +0 -2
  349. package/dist/types/twisty/old/dom/controls/TwistyControlElement.d.ts.map +0 -1
  350. package/dist/types/twisty/old/dom/controls/TwistyScrubber.css.d.ts +0 -3
  351. package/dist/types/twisty/old/dom/controls/TwistyScrubber.d.ts +0 -14
  352. package/dist/types/twisty/old/dom/controls/TwistyScrubber.d.ts.map +0 -1
  353. package/dist/types/twisty/old/dom/controls/buttons.css.d.ts +0 -4
  354. package/dist/types/twisty/old/dom/controls/buttons.css.d.ts.map +0 -1
  355. package/dist/types/twisty/old/dom/controls/buttons.d.ts +0 -40
  356. package/dist/types/twisty/old/dom/controls/buttons.d.ts.map +0 -1
  357. package/dist/types/twisty/old/dom/controls/buttons.spec.d.ts +0 -5
  358. package/dist/types/twisty/old/dom/controls/buttons.spec.d.ts.map +0 -1
  359. package/dist/types/twisty/old/dom/element/ClassListManager.d.ts.map +0 -1
  360. package/dist/types/twisty/old/dom/element/ElementConfig.d.ts +0 -49
  361. package/dist/types/twisty/old/dom/element/ElementConfig.d.ts.map +0 -1
  362. package/dist/types/twisty/old/dom/element/ManagedCustomElement.d.ts.map +0 -1
  363. package/dist/types/twisty/old/dom/element/node-custom-element-shims.d.ts.map +0 -1
  364. package/dist/types/twisty/old/dom/stream/TwistyStreamSource.css.d.ts +0 -3
  365. package/dist/types/twisty/old/dom/stream/TwistyStreamSource.css.d.ts.map +0 -1
  366. package/dist/types/twisty/old/dom/stream/TwistyStreamSource.d.ts.map +0 -1
  367. package/dist/types/twisty/old/dom/viewers/Twisty2DSVG.d.ts +0 -26
  368. package/dist/types/twisty/old/dom/viewers/Twisty2DSVG.d.ts.map +0 -1
  369. package/dist/types/twisty/old/dom/viewers/Twisty2DSVGView.css.d.ts +0 -3
  370. package/dist/types/twisty/old/dom/viewers/Twisty2DSVGView.css.d.ts.map +0 -1
  371. package/dist/types/twisty/old/dom/viewers/Twisty3DCanvas.css.d.ts +0 -3
  372. package/dist/types/twisty/old/dom/viewers/Twisty3DCanvas.css.d.ts.map +0 -1
  373. package/dist/types/twisty/old/dom/viewers/Twisty3DCanvas.d.ts +0 -41
  374. package/dist/types/twisty/old/dom/viewers/Twisty3DCanvas.d.ts.map +0 -1
  375. package/dist/types/twisty/old/dom/viewers/TwistyOrbitControls.d.ts +0 -59
  376. package/dist/types/twisty/old/dom/viewers/TwistyOrbitControls.d.ts.map +0 -1
  377. package/dist/types/twisty/old/dom/viewers/TwistyViewerElement.d.ts +0 -4
  378. package/dist/types/twisty/old/dom/viewers/TwistyViewerElement.d.ts.map +0 -1
  379. package/dist/types/twisty/old/dom/viewers/TwistyViewerWrapper.css.d.ts +0 -3
  380. package/dist/types/twisty/old/dom/viewers/TwistyViewerWrapper.css.d.ts.map +0 -1
  381. package/dist/types/twisty/old/dom/viewers/TwistyViewerWrapper.d.ts +0 -18
  382. package/dist/types/twisty/old/dom/viewers/TwistyViewerWrapper.d.ts.map +0 -1
  383. package/dist/types/twisty/old/dom/viewers/canvas.d.ts.map +0 -1
  384. package/dist/types/twisty/views/3D/TwistyOrbitControlsV2.d.ts +0 -41
  385. package/dist/types/twisty/views/3D/TwistyOrbitControlsV2.d.ts.map +0 -1
  386. package/dist/types/twisty/views/3D/TwistyOrbitControlsV2.spec.d.ts +0 -5
  387. package/dist/types/twisty/views/3D/TwistyOrbitControlsV2.spec.d.ts.map +0 -1
  388. package/src/cubing/twisty/old/animation/Timeline.ts +0 -378
  389. package/src/cubing/twisty/old/animation/cursor/AlgCursor.ts +0 -252
  390. package/src/cubing/twisty/old/dom/TwistyAlgViewerV1.css.ts +0 -25
  391. package/src/cubing/twisty/old/dom/TwistyAlgViewerV1.ts +0 -516
  392. package/src/cubing/twisty/old/dom/TwistyPlayer.spec.ts +0 -25
  393. package/src/cubing/twisty/old/dom/TwistyPlayer.ts +0 -927
  394. package/src/cubing/twisty/old/dom/TwistyPlayerConfig.ts +0 -378
  395. package/src/cubing/twisty/old/dom/controls/TwistyControlElement.ts +0 -1
  396. package/src/cubing/twisty/old/dom/controls/TwistyScrubber.ts +0 -53
  397. package/src/cubing/twisty/old/dom/controls/buttons.spec.ts +0 -37
  398. package/src/cubing/twisty/old/dom/controls/buttons.ts +0 -326
  399. package/src/cubing/twisty/old/dom/element/ElementConfig.ts +0 -180
  400. package/src/cubing/twisty/old/dom/viewers/Twisty2DSVG.ts +0 -118
  401. package/src/cubing/twisty/old/dom/viewers/Twisty3DCanvas.ts +0 -256
  402. package/src/cubing/twisty/old/dom/viewers/TwistyOrbitControls.ts +0 -420
  403. package/src/cubing/twisty/old/dom/viewers/TwistyViewerElement.ts +0 -5
  404. package/src/cubing/twisty/old/dom/viewers/TwistyViewerWrapper.ts +0 -45
  405. package/src/cubing/twisty/views/3D/TwistyOrbitControlsV2.spec.ts +0 -209
  406. package/src/cubing/twisty/views/3D/TwistyOrbitControlsV2.ts +0 -270
@@ -1,378 +0,0 @@
1
- import { Vector3 } from "three";
2
- import type { Alg } from "../../../alg";
3
- import type { VisualizationStrategy } from "../../model/props/viewer/VisualizationStrategyProp";
4
- import { DEGREES_PER_RADIAN } from "../../views/3D/TAU";
5
- import {
6
- AlgAttribute,
7
- RangedFloatAttribute,
8
- StringEnumAttribute,
9
- } from "./element/ElementConfig";
10
- import type { TwistyPlayerV1 } from "./TwistyPlayer";
11
- import type { OrbitCoordinates } from "./viewers/TwistyOrbitControls";
12
- import { BackViewLayout, backViewLayouts } from "./viewers/TwistyViewerWrapper";
13
-
14
- // const DEFAULT_CAMERA_Z = 5;
15
- // // Golden ratio is perfect for FTO and Megaminx.
16
- // const DEFAULT_CAMERA_Y = DEFAULT_CAMERA_Z * (2 / (1 + Math.sqrt(5)));
17
- export const centeredCameraOrbitCoordinates: OrbitCoordinates = {
18
- latitude: 31.717474411461005,
19
- longitude: 0,
20
- distance: 5.877852522924731,
21
- };
22
-
23
- // This is tuned so that the hint facelets for 3x3x3 always fit in the canvas.
24
- export const cubeCube3DCameraOrbitCoordinates: OrbitCoordinates = {
25
- latitude: 35,
26
- longitude: 30,
27
- distance: 6,
28
- };
29
-
30
- // This is tuned so that the hint facelets always fit in the canvas.
31
- export const cubePG3DCameraOrbitCoordinates: OrbitCoordinates = {
32
- latitude: 35,
33
- longitude: 30,
34
- distance: 6.25,
35
- };
36
-
37
- export const megaminxCameraOrbitCoordinates: OrbitCoordinates = {
38
- latitude: Math.atan(1 / 2) * DEGREES_PER_RADIAN,
39
- longitude: 0,
40
- distance: 6.7,
41
- };
42
-
43
- export const pyraminxCameraOrbitCoordinates: OrbitCoordinates = {
44
- latitude: 26.56505117707799,
45
- longitude: 0,
46
- distance: 6,
47
- };
48
-
49
- export const cornerCameraOrbitCoordinates: OrbitCoordinates = {
50
- latitude: 35.264389682754654,
51
- longitude: 45,
52
- distance: 6.928203230275509,
53
- };
54
-
55
- export const pyraminxLookAt = new Vector3(0, 1 / 6, 0);
56
-
57
- // TODO
58
- export function defaultCameraOrbitCoordinates(
59
- puzzleID: PuzzleID,
60
- strategy: VisualizationStrategy,
61
- ): OrbitCoordinates {
62
- if (puzzleID[1] === "x") {
63
- if (strategy === "Cube3D") {
64
- return cubeCube3DCameraOrbitCoordinates;
65
- } else {
66
- return cubePG3DCameraOrbitCoordinates;
67
- }
68
- } else {
69
- switch (puzzleID) {
70
- case "megaminx":
71
- case "gigaminx":
72
- return megaminxCameraOrbitCoordinates;
73
- case "pyraminx":
74
- case "master_tetraminx":
75
- return pyraminxCameraOrbitCoordinates;
76
- case "skewb":
77
- return cubePG3DCameraOrbitCoordinates;
78
- default:
79
- return centeredCameraOrbitCoordinates;
80
- }
81
- }
82
- }
83
-
84
- // TODO: turn these maps into lists?
85
- export const setupToLocations = {
86
- start: true, // default // TODO: "beginning"
87
- end: true,
88
- };
89
- export type SetupToLocation = keyof typeof setupToLocations;
90
-
91
- // TODO: turn these maps into lists?
92
- export const visualizationFormats = {
93
- "3D": true, // default
94
- "2D": true,
95
- "experimental-2D-LL": true, // TODO
96
- "PG3D": true,
97
- };
98
- export type VisualizationFormat = keyof typeof visualizationFormats;
99
-
100
- export const backgroundThemes = {
101
- checkered: true, // default
102
- none: true,
103
- };
104
- export type BackgroundTheme = keyof typeof backgroundThemes;
105
-
106
- // TODO: turn these maps into lists?
107
- export const hintFaceletStyles = {
108
- floating: true, // default
109
- none: true,
110
- };
111
- export type HintFaceletStyle = keyof typeof hintFaceletStyles;
112
-
113
- // TODO: turn these maps into lists?
114
- // TODO: alg.cubing.net parity
115
- export const experimentalStickerings = {
116
- "full": true, // default
117
- "centers-only": true, // TODO
118
- "PLL": true,
119
- "CLS": true,
120
- "OLL": true,
121
- "COLL": true,
122
- "OCLL": true,
123
- "CLL": true,
124
- "ELL": true,
125
- "ELS": true,
126
- "LL": true,
127
- "F2L": true,
128
- "ZBLL": true,
129
- "ZBLS": true,
130
- "WVLS": true,
131
- "VLS": true,
132
- "LS": true,
133
- "EO": true,
134
- "CMLL": true,
135
- "L6E": true,
136
- "L6EO": true,
137
- "Daisy": true,
138
- "Cross": true,
139
- "2x2x2": true,
140
- "2x2x3": true,
141
- "Void Cube": true,
142
- "invisible": true,
143
- "picture": true,
144
- "experimental-centers-U": true,
145
- "experimental-centers-U-D": true,
146
- "experimental-centers-U-L-D": true,
147
- "experimental-centers-U-L-B-D": true,
148
- "experimental-centers": true,
149
- "experimental-fto-fc": true,
150
- "experimental-fto-f2t": true,
151
- "experimental-fto-sc": true,
152
- "experimental-fto-l2c": true,
153
- "experimental-fto-lbt": true,
154
- "experimental-fto-l3t": true,
155
- "experimental-global-custom-1": true,
156
- "experimental-global-custom-2": true,
157
- };
158
- export type ExperimentalStickering = keyof typeof experimentalStickerings;
159
-
160
- export const controlsLocations = {
161
- "bottom-row": true, // default
162
- "none": true,
163
- };
164
- export type ControlsLocation = keyof typeof controlsLocations;
165
-
166
- export const puzzleIDs = {
167
- "3x3x3": true, // default
168
- "custom": true,
169
- "2x2x2": true,
170
- "4x4x4": true,
171
- "5x5x5": true,
172
- "6x6x6": true,
173
- "7x7x7": true,
174
- "40x40x40": true,
175
- "megaminx": true,
176
- "pyraminx": true,
177
- "square1": true,
178
- "clock": true,
179
- "skewb": true,
180
- "fto": true,
181
- "gigaminx": true,
182
- "master_tetraminx": true,
183
- };
184
- export type PuzzleID = keyof typeof puzzleIDs;
185
-
186
- export const viewerLinkPages = {
187
- twizzle: true, // default
188
- none: true,
189
- };
190
- export type ViewerLinkPage = keyof typeof viewerLinkPages;
191
-
192
- // TODO: templatize
193
- export interface ManagedAttribute<K> {
194
- string: string;
195
- value: K;
196
- setString(s: string): boolean;
197
- setValue(v: K): boolean;
198
- }
199
-
200
- export const cameraLatitudeLimits = {
201
- auto: true, // default
202
- none: true,
203
- };
204
- export type CameraLatitudeLimits = keyof typeof cameraLatitudeLimits;
205
-
206
- type AnyManagedAttribute = ManagedAttribute<any>;
207
-
208
- interface TwistyPlayerAttributes extends Record<string, AnyManagedAttribute> {
209
- // Alg
210
- "alg": AlgAttribute;
211
- "experimental-setup-alg": AlgAttribute;
212
- "experimental-setup-anchor": StringEnumAttribute<SetupToLocation>;
213
-
214
- // Puzzle
215
- "puzzle": StringEnumAttribute<PuzzleID>;
216
- "visualization": StringEnumAttribute<VisualizationFormat>;
217
- "hint-facelets": StringEnumAttribute<HintFaceletStyle>;
218
- "experimental-stickering": StringEnumAttribute<ExperimentalStickering>;
219
-
220
- // Background
221
- "background": StringEnumAttribute<BackgroundTheme>;
222
- "control-panel": StringEnumAttribute<ControlsLocation>;
223
-
224
- // 3D config
225
- "back-view": StringEnumAttribute<BackViewLayout>;
226
- "experimental-camera-latitude": RangedFloatAttribute;
227
- "experimental-camera-longitude": RangedFloatAttribute;
228
- "experimental-camera-latitude-limits": StringEnumAttribute<CameraLatitudeLimits>;
229
-
230
- // Interaction
231
- "viewer-link": StringEnumAttribute<ViewerLinkPage>;
232
- }
233
-
234
- export interface TwistyPlayerConfigValues {
235
- alg: Alg | string;
236
- experimentalSetupAlg: Alg | string;
237
- experimentalSetupAnchor: SetupToLocation;
238
-
239
- puzzle: PuzzleID;
240
- visualization: VisualizationFormat;
241
- hintFacelets: HintFaceletStyle;
242
- experimentalStickering: ExperimentalStickering;
243
-
244
- background: BackgroundTheme;
245
- controlPanel: ControlsLocation;
246
-
247
- backView: BackViewLayout;
248
- experimentalCameraLatitude: number;
249
- experimentalCameraLongitude: number;
250
- experimentalCameraLatitudeLimits: CameraLatitudeLimits;
251
-
252
- viewerLink: ViewerLinkPage;
253
- }
254
-
255
- export type TwistyPlayerInitialConfig = Partial<TwistyPlayerConfigValues>;
256
-
257
- const twistyPlayerAttributeMap: Record<
258
- keyof TwistyPlayerAttributes,
259
- keyof TwistyPlayerConfigValues
260
- > = {
261
- "alg": "alg",
262
- "experimental-setup-alg": "experimentalSetupAlg",
263
- "experimental-setup-anchor": "experimentalSetupAnchor",
264
-
265
- "puzzle": "puzzle",
266
- "visualization": "visualization",
267
- "hint-facelets": "hintFacelets",
268
- "experimental-stickering": "experimentalStickering",
269
-
270
- "background": "background",
271
- "control-panel": "controlPanel",
272
-
273
- "back-view": "backView",
274
- "experimental-camera-latitude": "experimentalCameraLatitude",
275
- "experimental-camera-longitude": "experimentalCameraLongitude",
276
- "experimental-camera-latitude-limits": "experimentalCameraLatitudeLimits",
277
-
278
- "viewer-link": "viewerLink",
279
- };
280
-
281
- // TODO: Can we avoid instantiating a new class for each attribute, and would it help performance?
282
- export class TwistyPlayerConfig {
283
- attributes: TwistyPlayerAttributes;
284
- constructor(
285
- private twistyPlayer: TwistyPlayerV1, // TODO
286
- initialValues: TwistyPlayerInitialConfig,
287
- ) {
288
- this.attributes = {
289
- "alg": new AlgAttribute(initialValues.alg),
290
- "experimental-setup-alg": new AlgAttribute(
291
- initialValues.experimentalSetupAlg,
292
- ),
293
- "experimental-setup-anchor": new StringEnumAttribute(
294
- setupToLocations,
295
- initialValues.experimentalSetupAnchor,
296
- ),
297
-
298
- "puzzle": new StringEnumAttribute(puzzleIDs, initialValues.puzzle),
299
- "visualization": new StringEnumAttribute(
300
- visualizationFormats,
301
- initialValues.visualization,
302
- ),
303
- "hint-facelets": new StringEnumAttribute(
304
- hintFaceletStyles,
305
- initialValues.hintFacelets,
306
- ),
307
- "experimental-stickering": new StringEnumAttribute(
308
- experimentalStickerings,
309
- initialValues.experimentalStickering,
310
- ),
311
-
312
- "background": new StringEnumAttribute(
313
- backgroundThemes,
314
- initialValues.background,
315
- ),
316
- "control-panel": new StringEnumAttribute(
317
- controlsLocations,
318
- initialValues.controlPanel,
319
- ),
320
- "back-view": new StringEnumAttribute(
321
- backViewLayouts,
322
- initialValues["backView"],
323
- ),
324
- "experimental-camera-latitude": new RangedFloatAttribute(
325
- null,
326
- -90,
327
- 90,
328
- initialValues["experimentalCameraLatitude"],
329
- ),
330
- "experimental-camera-longitude": new RangedFloatAttribute(
331
- null,
332
- -180,
333
- 180,
334
- initialValues["experimentalCameraLongitude"],
335
- ),
336
- "experimental-camera-latitude-limits": new StringEnumAttribute(
337
- cameraLatitudeLimits,
338
- initialValues["experimentalCameraLatitudeLimits"],
339
- ),
340
- "viewer-link": new StringEnumAttribute(
341
- viewerLinkPages,
342
- initialValues.viewerLink,
343
- ),
344
- };
345
- }
346
-
347
- static get observedAttributes(): (keyof TwistyPlayerAttributes & string)[] {
348
- return Object.keys(twistyPlayerAttributeMap);
349
- }
350
-
351
- attributeChangedCallback(
352
- attributeName: string,
353
- oldValue: string,
354
- newValue: string,
355
- ): void {
356
- const managedAttribute = this.attributes[attributeName];
357
- if (managedAttribute) {
358
- // TODO: Handle `null` better.
359
- if (oldValue !== null && managedAttribute.string !== oldValue) {
360
- console.warn(
361
- "Attribute out of sync!",
362
- attributeName,
363
- managedAttribute.string,
364
- oldValue,
365
- );
366
- }
367
- managedAttribute.setString(newValue);
368
-
369
- // TODO: can we make this type-safe?
370
- // TODO: avoid double-setting in recursive calls
371
- const propertyName: keyof TwistyPlayerConfigValues =
372
- twistyPlayerAttributeMap[attributeName];
373
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
374
- // @ts-ignore
375
- this.twistyPlayer[propertyName] = managedAttribute.value;
376
- }
377
- }
378
- }
@@ -1 +0,0 @@
1
- export type TwistyControlElement = Element;
@@ -1,53 +0,0 @@
1
- // <twisty-scrubber>
2
-
3
- import type { TimeRange } from "../../animation/cursor/AlgCursor";
4
- import type { MillisecondTimestamp } from "../../animation/cursor/CursorTypes";
5
- import type {
6
- Timeline,
7
- TimelineTimestampListener,
8
- } from "../../animation/Timeline";
9
- import { ManagedCustomElement } from "../element/ManagedCustomElement";
10
- import { customElementsShim } from "../element/node-custom-element-shims";
11
- import type { TwistyControlElement } from "./TwistyControlElement";
12
- import { twistyScrubberCSS } from "./TwistyScrubber.css";
13
-
14
- // Usually a horizontal line.
15
- export class TwistyScrubber
16
- extends ManagedCustomElement
17
- implements TwistyControlElement, TimelineTimestampListener
18
- {
19
- private timeline: Timeline;
20
- range: HTMLInputElement = document.createElement("input"); // type="range"
21
- constructor(timeline?: Timeline) {
22
- super();
23
- this.timeline = timeline!; // TODO
24
-
25
- this.addCSS(twistyScrubberCSS);
26
-
27
- this.timeline?.addTimestampListener(this); // TODO
28
- this.range.type = "range";
29
-
30
- this.range.step = (1).toString();
31
- this.range.min = this.timeline?.minTimestamp().toString(); // TODO
32
- this.range.max = this.timeline?.maxTimestamp().toString(); // TODO
33
- this.range.value = this.timeline?.timestamp.toString(); // TODO
34
- this.range.addEventListener("input", this.onInput.bind(this));
35
-
36
- this.addElement(this.range);
37
- }
38
-
39
- onTimelineTimestampChange(timestamp: MillisecondTimestamp): void {
40
- this.range.value = timestamp.toString();
41
- }
42
-
43
- onTimeRangeChange(timeRange: TimeRange): void {
44
- this.range.min = timeRange.start.toString();
45
- this.range.max = timeRange.end.toString();
46
- }
47
-
48
- private onInput(): void {
49
- this.timeline.setTimestamp(parseInt(this.range.value, 10));
50
- }
51
- }
52
-
53
- customElementsShim.define("twisty-scrubber", TwistyScrubber);
@@ -1,37 +0,0 @@
1
- /**
2
- * @jest-environment jsdom
3
- */
4
-
5
- import { Timeline } from "../../animation/Timeline";
6
- import { TwistyControlButton } from "./buttons";
7
- import { ManagedCustomElement } from "../element/ManagedCustomElement";
8
- import { customElementsShim } from "../element/node-custom-element-shims";
9
-
10
- // function getButtonElem(
11
- // twistyControlButton: TwistyControlButton,
12
- // ): HTMLButtonElement {
13
- // return (twistyControlButton as any).button as HTMLButtonElement;
14
- // }
15
-
16
- class MockFullscreenElement extends ManagedCustomElement {
17
- public fullscreenRequested: boolean = false;
18
- public async requestFullscreen(): Promise<void> {
19
- this.fullscreenRequested = true;
20
- }
21
- }
22
-
23
- customElementsShim.define("mock-fullscreen-element", MockFullscreenElement);
24
-
25
- describe("TwistyControlButton", () => {
26
- it("requests fullscreen", () => {
27
- const timeline = new Timeline();
28
- const mockFullscreenElement = new MockFullscreenElement();
29
- const twistyControlButton = new TwistyControlButton(
30
- timeline,
31
- "fullscreen",
32
- { fullscreenElement: mockFullscreenElement },
33
- );
34
- twistyControlButton.click();
35
- expect(mockFullscreenElement.fullscreenRequested).toBe(true);
36
- });
37
- });