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.
- package/README.md +4 -7
- package/{src/cubing/kpuzzle → dist}/.DS_Store +0 -0
- package/dist/bin/order.js +16675 -0
- package/dist/bin/order.js.map +7 -0
- package/dist/bin/puzzle-geometry-bin.js +13 -9
- package/dist/bin/puzzle-geometry-bin.js.map +2 -2
- package/dist/bundle-global/cubing.bundle-global.js +555 -298
- package/dist/esm/3d-M7GBIT3X.js +21 -0
- package/dist/esm/3d-M7GBIT3X.js.map +7 -0
- package/dist/esm/alg/index.js +1 -1
- package/dist/esm/bluetooth/index.js +10 -8
- package/dist/esm/bluetooth/index.js.map +3 -3
- package/dist/esm/{chunk-RE7MIN5R.js → chunk-4IUYLRHT.js} +2 -2
- package/dist/esm/{chunk-RE7MIN5R.js.map → chunk-4IUYLRHT.js.map} +0 -0
- package/dist/esm/{chunk-CSVAFZSB.js → chunk-6BZSKSG7.js} +724 -735
- package/dist/esm/chunk-6BZSKSG7.js.map +7 -0
- package/dist/esm/{chunk-BU5PUJK3.js → chunk-EWRBHQFX.js} +1 -1
- package/dist/esm/{chunk-BU5PUJK3.js.map → chunk-EWRBHQFX.js.map} +1 -1
- package/dist/esm/{chunk-APIIMJG6.js → chunk-GF76PWEV.js} +450 -1052
- package/dist/esm/chunk-GF76PWEV.js.map +7 -0
- package/dist/esm/{chunk-MUQMBH2S.js → chunk-R3HRHYIW.js} +16 -4
- package/dist/esm/chunk-R3HRHYIW.js.map +7 -0
- package/dist/esm/{chunk-YV3RT5PX.js → chunk-X6JHXPDX.js} +2 -2
- package/dist/esm/{chunk-YV3RT5PX.js.map → chunk-X6JHXPDX.js.map} +0 -0
- package/dist/esm/esm-test-worker.js +2 -2
- package/dist/esm/esm-test-worker.js.map +2 -2
- package/dist/esm/kpuzzle/index.js +2 -2
- package/dist/esm/{node-WEHVBEKP.js → node-HFBX5WHK.js} +2 -2
- package/dist/esm/{node-WEHVBEKP.js.map → node-HFBX5WHK.js.map} +1 -1
- package/dist/esm/{node-BSAQKO3G.js → node-SP4L2AKI.js} +2 -2
- package/dist/esm/{node-BSAQKO3G.js.map → node-SP4L2AKI.js.map} +1 -1
- package/dist/esm/notation/index.js +2 -2
- package/dist/esm/protocol/index.js +2 -2
- package/dist/esm/puzzle-geometry/index.js +14 -10
- package/dist/esm/puzzle-geometry/index.js.map +2 -2
- package/dist/esm/puzzles/index.js +3 -3
- package/dist/esm/scramble/index.js +4 -4
- package/dist/esm/search/index.js +4 -4
- package/dist/esm/stream/index.js +1 -1
- package/dist/esm/twisty/index.js +729 -2346
- package/dist/esm/twisty/index.js.map +3 -3
- package/dist/esm/worker-inside-generated-string-RQYYANYQ.js +3107 -0
- package/dist/esm/worker-inside-generated-string-RQYYANYQ.js.map +7 -0
- package/dist/types/alg/index.d.ts +1 -0
- package/dist/types/alg/index.d.ts.map +1 -1
- package/dist/types/alg/units/leaves/Move.d.ts +1 -1
- package/dist/types/alg/units/leaves/Move.d.ts.map +1 -1
- package/dist/types/bluetooth/smart-puzzle/gan.d.ts.map +1 -1
- package/dist/types/cubing.bundle-global.d.ts +1 -24
- package/dist/types/cubing.bundle-global.d.ts.map +1 -1
- package/dist/types/cubing.bundle-global.exports.d.ts +25 -0
- package/dist/types/cubing.bundle-global.exports.d.ts.map +1 -0
- package/dist/types/puzzle-geometry/PGPuzzles.spec.d.ts +3 -0
- package/dist/types/puzzle-geometry/PGPuzzles.spec.d.ts.map +1 -1
- package/dist/types/puzzle-geometry/PuzzleGeometry.d.ts +7 -3
- package/dist/types/puzzle-geometry/PuzzleGeometry.d.ts.map +1 -1
- package/dist/types/puzzle-geometry/index.d.ts +1 -1
- package/dist/types/puzzle-geometry/index.d.ts.map +1 -1
- package/dist/types/puzzles/index.d.ts +1 -1
- package/dist/types/puzzles/index.d.ts.map +1 -1
- package/dist/types/puzzles/stickerings/cube-stickerings.d.ts.map +1 -1
- package/dist/types/search/inside/api.d.ts.map +1 -1
- package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts +1 -1
- package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts.map +1 -1
- package/dist/types/search/inside/solve/puzzles/fto.d.ts +6 -0
- package/dist/types/search/inside/solve/puzzles/fto.d.ts.map +1 -0
- package/dist/types/search/inside/solve/puzzles/fto.sgs.json.d.ts +5 -0
- package/dist/types/search/inside/solve/puzzles/fto.sgs.json.d.ts.map +1 -0
- package/dist/types/search/inside/solve/tremble.d.ts.map +1 -1
- package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
- package/dist/types/search/worker-inside-generated-string.d.ts.map +1 -1
- package/dist/types/twisty/{old/animation/cursor/CursorTypes.d.ts → controllers/AnimationTypes.d.ts} +10 -3
- package/dist/types/twisty/controllers/AnimationTypes.d.ts.map +1 -0
- package/dist/types/twisty/{old/animation → controllers}/RenderScheduler.d.ts +0 -0
- package/dist/types/twisty/controllers/RenderScheduler.d.ts.map +1 -0
- package/dist/types/twisty/controllers/TwistyAnimationController.d.ts +1 -1
- package/dist/types/twisty/controllers/TwistyAnimationController.d.ts.map +1 -1
- package/dist/types/twisty/{old/animation → controllers}/easing.d.ts +0 -0
- package/dist/types/twisty/controllers/easing.d.ts.map +1 -0
- package/dist/types/twisty/{old/animation → controllers}/indexer/AlgDuration.d.ts +2 -2
- package/dist/types/twisty/controllers/indexer/AlgDuration.d.ts.map +1 -0
- package/dist/types/twisty/{old/animation → controllers}/indexer/AlgIndexer.d.ts +3 -3
- package/dist/types/twisty/controllers/indexer/AlgIndexer.d.ts.map +1 -0
- package/dist/types/twisty/{old/animation → controllers}/indexer/SimpleAlgIndexer.d.ts +3 -3
- package/dist/types/twisty/controllers/indexer/SimpleAlgIndexer.d.ts.map +1 -0
- package/dist/types/twisty/{old/animation → controllers}/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts +3 -3
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts.map +1 -0
- package/dist/types/twisty/{old/animation → controllers}/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.d.ts +3 -3
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.d.ts.map +1 -0
- package/dist/types/twisty/{old/animation → controllers}/indexer/simultaneous-moves/simul-moves.d.ts +2 -2
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/simul-moves.d.ts.map +1 -0
- package/dist/types/twisty/{old/animation → controllers}/indexer/tree/AlgWalker.d.ts +2 -2
- package/dist/types/twisty/controllers/indexer/tree/AlgWalker.d.ts.map +1 -0
- package/dist/types/twisty/{old/animation → controllers}/indexer/tree/TreeAlgIndexer.d.ts +3 -3
- package/dist/types/twisty/controllers/indexer/tree/TreeAlgIndexer.d.ts.map +1 -0
- package/dist/types/twisty/controllers/indexer/tree/chunkAlgs.d.ts +3 -0
- package/dist/types/twisty/controllers/indexer/tree/chunkAlgs.d.ts.map +1 -0
- package/dist/types/twisty/{old/animation → controllers}/stream/timeline-move-calculation-draft.d.ts +2 -2
- package/dist/types/twisty/controllers/stream/timeline-move-calculation-draft.d.ts.map +1 -0
- package/dist/types/twisty/heavy-code-imports/dynamic-entries/3d.d.ts +1 -2
- package/dist/types/twisty/heavy-code-imports/dynamic-entries/3d.d.ts.map +1 -1
- package/dist/types/twisty/index.d.ts +9 -12
- package/dist/types/twisty/index.d.ts.map +1 -1
- package/dist/types/twisty/model/TwistyPlayerModel.d.ts +11 -0
- package/dist/types/twisty/model/TwistyPlayerModel.d.ts.map +1 -1
- package/dist/types/twisty/model/props/TwistyPropDebugger.d.ts +1 -1
- package/dist/types/twisty/model/props/TwistyPropDebugger.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts +6 -0
- package/dist/types/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts.map +1 -0
- package/dist/types/twisty/model/props/puzzle/display/HintFaceletProp.d.ts +5 -1
- package/dist/types/twisty/model/props/puzzle/display/HintFaceletProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/display/StickeringProp.d.ts +46 -1
- package/dist/types/twisty/model/props/puzzle/display/StickeringProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/state/AnchoredStartProp.d.ts +2 -2
- package/dist/types/twisty/model/props/puzzle/state/AnchoredStartProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesProp.d.ts +1 -1
- package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts +1 -1
- package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/state/CurrentTransformationProp.d.ts +1 -1
- package/dist/types/twisty/model/props/puzzle/state/CurrentTransformationProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts +5 -2
- package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/state/IndexerProp.d.ts +2 -2
- package/dist/types/twisty/model/props/puzzle/state/IndexerProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts +2 -2
- package/dist/types/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/state/MovePressInputProp.d.ts +11 -0
- package/dist/types/twisty/model/props/puzzle/state/MovePressInputProp.d.ts.map +1 -0
- package/dist/types/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts +10 -0
- package/dist/types/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts.map +1 -0
- package/dist/types/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts +5 -1
- package/dist/types/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts +1 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts +19 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts +1 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts +2 -3
- package/dist/types/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/timeline/PlayingInfoProp.d.ts +1 -1
- package/dist/types/twisty/model/props/timeline/PlayingInfoProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/timeline/TimestampRequestProp.d.ts +1 -1
- package/dist/types/twisty/model/props/timeline/TimestampRequestProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/viewer/BackViewProp.d.ts +6 -1
- package/dist/types/twisty/model/props/viewer/BackViewProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/viewer/BackgroundProp.d.ts +5 -1
- package/dist/types/twisty/model/props/viewer/BackgroundProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/viewer/ControlPanelProp.d.ts +5 -1
- package/dist/types/twisty/model/props/viewer/ControlPanelProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts +18 -5
- package/dist/types/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts +6 -6
- package/dist/types/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/viewer/TimeRangeProp.d.ts +2 -2
- package/dist/types/twisty/model/props/viewer/TimeRangeProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/viewer/ViewerLinkProp.d.ts +5 -1
- package/dist/types/twisty/model/props/viewer/ViewerLinkProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/viewer/VisualizationProp.d.ts +7 -1
- package/dist/types/twisty/model/props/viewer/VisualizationProp.d.ts.map +1 -1
- package/dist/types/twisty/model/props/viewer/VisualizationStrategyProp.d.ts +1 -1
- package/dist/types/twisty/model/props/viewer/VisualizationStrategyProp.d.ts.map +1 -1
- package/dist/types/twisty/views/2D/Twisty2DPuzzle.css.d.ts +3 -0
- package/dist/types/twisty/views/2D/Twisty2DPuzzle.css.d.ts.map +1 -0
- package/dist/types/twisty/views/2D/Twisty2DPuzzle.d.ts +4 -6
- package/dist/types/twisty/views/2D/Twisty2DPuzzle.d.ts.map +1 -1
- package/dist/types/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts +1 -1
- package/dist/types/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts.map +1 -1
- package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts +2 -2
- package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts.map +1 -1
- package/dist/types/twisty/views/3D/DragTracker.d.ts +28 -0
- package/dist/types/twisty/views/3D/DragTracker.d.ts.map +1 -0
- package/dist/types/twisty/views/3D/RendererPool.d.ts.map +1 -1
- package/dist/types/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts +6 -1
- package/dist/types/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts.map +1 -1
- package/dist/types/twisty/views/3D/Twisty3DSceneWrapper.d.ts +9 -4
- package/dist/types/twisty/views/3D/Twisty3DSceneWrapper.d.ts.map +1 -1
- package/dist/types/twisty/views/3D/Twisty3DVantage.css.d.ts +3 -0
- package/dist/types/twisty/views/3D/Twisty3DVantage.css.d.ts.map +1 -0
- package/dist/types/twisty/views/3D/Twisty3DVantage.d.ts +12 -8
- package/dist/types/twisty/views/3D/Twisty3DVantage.d.ts.map +1 -1
- package/dist/types/twisty/views/3D/TwistyOrbitControls.d.ts +24 -0
- package/dist/types/twisty/views/3D/TwistyOrbitControls.d.ts.map +1 -0
- package/dist/types/twisty/views/3D/TwistyOrbitControls.spec.d.ts +5 -0
- package/dist/types/twisty/views/3D/TwistyOrbitControls.spec.d.ts.map +1 -0
- package/dist/types/twisty/views/3D/puzzles/Cube3D.d.ts +4 -4
- package/dist/types/twisty/views/3D/puzzles/Cube3D.d.ts.map +1 -1
- package/dist/types/twisty/views/3D/puzzles/PG3D.d.ts +17 -10
- package/dist/types/twisty/views/3D/puzzles/PG3D.d.ts.map +1 -1
- package/dist/types/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts +1 -1
- package/dist/types/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts.map +1 -1
- package/dist/types/twisty/{old/dom/element → views}/ClassListManager.d.ts +0 -0
- package/dist/types/twisty/views/ClassListManager.d.ts.map +1 -0
- package/dist/types/twisty/{old/dom/element → views}/ManagedCustomElement.d.ts +0 -0
- package/dist/types/twisty/views/ManagedCustomElement.d.ts.map +1 -0
- package/dist/types/twisty/views/TwistyAlgEditor/LeafTokens.d.ts +1 -1
- package/dist/types/twisty/views/TwistyAlgEditor/LeafTokens.d.ts.map +1 -1
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts +1 -1
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts.map +1 -1
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts +2 -1
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts.map +1 -1
- package/dist/types/twisty/views/TwistyAlgViewer.css.d.ts +1 -1
- package/dist/types/twisty/views/TwistyAlgViewer.css.d.ts.map +1 -1
- package/dist/types/twisty/views/TwistyAlgViewer.d.ts +2 -2
- package/dist/types/twisty/views/TwistyAlgViewer.d.ts.map +1 -1
- package/dist/types/twisty/views/TwistyPlayer.css.d.ts +3 -0
- package/dist/types/twisty/views/TwistyPlayer.css.d.ts.map +1 -0
- package/dist/types/twisty/views/TwistyPlayer.d.ts +7 -3
- package/dist/types/twisty/views/TwistyPlayer.d.ts.map +1 -1
- package/dist/types/twisty/views/TwistyPlayerSettable.d.ts +7 -4
- package/dist/types/twisty/views/TwistyPlayerSettable.d.ts.map +1 -1
- package/dist/types/twisty/views/TwistyViewerWrapper.css.d.ts +3 -0
- package/dist/types/twisty/views/TwistyViewerWrapper.css.d.ts.map +1 -0
- package/dist/types/twisty/{old/dom/viewers → views}/canvas.d.ts +0 -0
- package/dist/types/twisty/views/canvas.d.ts.map +1 -0
- package/dist/types/twisty/views/control-panel/TwistyButtonsV2.css.d.ts +4 -0
- package/dist/types/twisty/views/control-panel/TwistyButtonsV2.css.d.ts.map +1 -0
- package/dist/types/twisty/views/control-panel/TwistyButtonsV2.d.ts +1 -1
- package/dist/types/twisty/views/control-panel/TwistyButtonsV2.d.ts.map +1 -1
- package/dist/types/twisty/views/control-panel/TwistyScrubber.css.d.ts +3 -0
- package/dist/types/twisty/{old/dom/controls → views/control-panel}/TwistyScrubber.css.d.ts.map +1 -1
- package/dist/types/twisty/views/control-panel/TwistyScrubberV2.d.ts +1 -1
- package/dist/types/twisty/views/control-panel/TwistyScrubberV2.d.ts.map +1 -1
- package/dist/types/twisty/{old/dom/element → views}/node-custom-element-shims.d.ts +0 -0
- package/dist/types/twisty/views/node-custom-element-shims.d.ts.map +1 -0
- package/dist/types/twisty/views/stream/TwistyStreamSource.css.d.ts +3 -0
- package/dist/types/twisty/views/stream/TwistyStreamSource.css.d.ts.map +1 -0
- package/dist/types/twisty/{old/dom → views}/stream/TwistyStreamSource.d.ts +1 -1
- package/dist/types/twisty/views/stream/TwistyStreamSource.d.ts.map +1 -0
- package/dist/types/{search/vendor → vendor}/comlink-everywhere/inside/index.d.ts +0 -0
- package/dist/types/vendor/comlink-everywhere/inside/index.d.ts.map +1 -0
- package/dist/types/{search/vendor → vendor}/comlink-everywhere/inside/node.d.ts +0 -0
- package/dist/types/vendor/comlink-everywhere/inside/node.d.ts.map +1 -0
- package/dist/types/{search/vendor → vendor}/comlink-everywhere/outside/index.d.ts +0 -0
- package/dist/types/vendor/comlink-everywhere/outside/index.d.ts.map +1 -0
- package/dist/types/{search/vendor → vendor}/comlink-everywhere/outside/node.d.ts +0 -0
- package/dist/types/vendor/comlink-everywhere/outside/node.d.ts.map +1 -0
- package/dist/types/{search/inside/solve/vendor → vendor}/cstimer/src/js/lib/mathlib.d.ts +0 -0
- package/dist/types/vendor/cstimer/src/js/lib/mathlib.d.ts.map +1 -0
- package/dist/types/{search/inside/solve/vendor → vendor}/cstimer/src/js/scramble/scramble_444.d.ts +1 -1
- package/dist/types/vendor/cstimer/src/js/scramble/scramble_444.d.ts.map +1 -0
- package/dist/types/{search/inside/solve/vendor → vendor}/min2phase/gwt.d.ts +0 -0
- package/dist/types/vendor/min2phase/gwt.d.ts.map +1 -0
- package/dist/types/{search/inside/solve/vendor → vendor}/random-uint-below/get-random-values.d.ts +0 -0
- package/dist/types/vendor/random-uint-below/get-random-values.d.ts.map +1 -0
- package/dist/types/{search/inside/solve/vendor → vendor}/random-uint-below/index.d.ts +1 -1
- package/dist/types/vendor/random-uint-below/index.d.ts.map +1 -0
- package/dist/types/{search/inside/solve/vendor → vendor}/random-uint-below/random-choice.d.ts +0 -0
- package/dist/types/vendor/random-uint-below/random-choice.d.ts.map +1 -0
- package/dist/types/{search/inside/solve/vendor/random-uint-below/random-int.d.ts → vendor/random-uint-below/random53BitValue.d.ts} +1 -1
- package/dist/types/vendor/random-uint-below/random53BitValue.d.ts.map +1 -0
- package/dist/types/{search/inside/solve/vendor → vendor}/sq12phase/scramble_sq1.d.ts +0 -0
- package/dist/types/vendor/sq12phase/scramble_sq1.d.ts.map +1 -0
- package/dist/types/{bluetooth/smart-puzzle → vendor/unsafe-raw-aes}/unsafe-raw-aes.d.ts +0 -0
- package/dist/types/vendor/unsafe-raw-aes/unsafe-raw-aes.d.ts.map +1 -0
- package/docs/.DS_Store +0 -0
- package/docs/cubing/.DS_Store +0 -0
- package/docs/cubing/api/index.html +11 -52
- package/docs/cubing/index.html +67 -27
- package/docs/main.css +7 -6
- package/package.json +8 -9
- package/src/cubing/.DS_Store +0 -0
- package/src/cubing/alg/index.ts +1 -0
- package/src/cubing/alg/units/leaves/Move.ts +1 -1
- package/src/cubing/bluetooth/smart-puzzle/gan.ts +4 -1
- package/src/cubing/bluetooth/smart-timer/GanTimer.ts +1 -1
- package/src/cubing/cubing.bundle-global.exports.ts +25 -0
- package/src/cubing/cubing.bundle-global.ts +3 -27
- package/src/cubing/puzzle-geometry/PGPuzzles.spec.ts +4 -0
- package/src/cubing/puzzle-geometry/PuzzleGeometry.ts +20 -8
- package/src/cubing/puzzle-geometry/index.ts +2 -2
- package/src/cubing/puzzles/.DS_Store +0 -0
- package/src/cubing/puzzles/implementations/.DS_Store +0 -0
- package/src/cubing/puzzles/index.ts +1 -1
- package/src/cubing/puzzles/stickerings/cube-stickerings.ts +18 -0
- package/src/cubing/puzzles/stickerings/global-custom-stickering-hack.ts +1 -1
- package/src/cubing/search/.DS_Store +0 -0
- package/src/cubing/search/esm-test-worker.js +1 -1
- package/src/cubing/search/inside/.DS_Store +0 -0
- package/src/cubing/search/inside/api.ts +3 -0
- package/src/cubing/search/inside/entry.js +1 -1
- package/src/cubing/search/inside/inside-worker.ts +1 -1
- package/src/cubing/search/inside/solve/.DS_Store +0 -0
- package/src/cubing/search/inside/solve/addOrientationSuffix.ts +1 -1
- package/src/cubing/{alg → search/inside/solve/puzzles}/.DS_Store +0 -0
- package/src/cubing/search/inside/solve/puzzles/2x2x2.ts +1 -1
- package/src/cubing/search/inside/solve/puzzles/3x3x3/index.ts +2 -2
- package/src/cubing/search/inside/solve/puzzles/4x4x4.ts +2 -2
- package/src/cubing/search/inside/solve/puzzles/big-cubes.ts +1 -1
- package/src/cubing/search/inside/solve/puzzles/clock.ts +1 -1
- package/src/cubing/search/inside/solve/puzzles/{FTO.sgs → fto.sgs.json.ts} +116 -80
- package/src/cubing/search/inside/solve/puzzles/fto.ts +58 -0
- package/src/cubing/search/inside/solve/puzzles/sq1.ts +1 -1
- package/src/cubing/search/inside/solve/puzzles/wca-minx.ts +1 -1
- package/src/cubing/search/inside/solve/tremble.ts +2 -1
- package/src/cubing/search/inside/solve/vendor/.DS_Store +0 -0
- package/src/cubing/search/instantiator.ts +1 -1
- package/src/cubing/search/worker-inside-generated-string.js +1 -1
- package/src/cubing/twisty/.DS_Store +0 -0
- package/src/cubing/{alg/units → twisty/controllers}/.DS_Store +0 -0
- package/src/cubing/twisty/{old/animation/cursor/CursorTypes.ts → controllers/AnimationTypes.ts} +11 -2
- package/src/cubing/twisty/{old/animation → controllers}/RenderScheduler.ts +0 -0
- package/src/cubing/twisty/controllers/TwistyAnimationController.ts +4 -4
- package/src/cubing/twisty/controllers/animation/.DS_Store +0 -0
- package/src/cubing/twisty/{old/animation → controllers}/easing.ts +0 -0
- package/src/cubing/{stream → twisty/controllers/indexer}/.DS_Store +0 -0
- package/src/cubing/twisty/{old/animation → controllers}/indexer/AlgDuration.ts +2 -2
- package/src/cubing/twisty/{old/animation → controllers}/indexer/AlgIndexer.ts +4 -4
- package/src/cubing/twisty/{old/animation → controllers}/indexer/SimpleAlgIndexer.ts +4 -4
- package/src/cubing/twisty/{old/animation → controllers}/indexer/simultaneous-moves/SimultaneousMoveIndexer.ts +3 -3
- package/src/cubing/twisty/{old/animation → controllers}/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.ts +3 -3
- package/src/cubing/twisty/{old/animation → controllers}/indexer/simultaneous-moves/simul-moves.ts +2 -2
- package/src/cubing/twisty/{old/animation → controllers}/indexer/tree/AlgWalker.ts +4 -4
- package/src/cubing/twisty/{old/animation → controllers}/indexer/tree/TreeAlgIndexer.ts +3 -3
- package/src/cubing/twisty/{old/animation → controllers}/indexer/tree/chunkAlgs.ts +2 -2
- package/src/cubing/twisty/{old/animation → controllers}/stream/timeline-move-calculation-draft.spec.ts.TODO +0 -0
- package/src/cubing/twisty/{old/animation → controllers}/stream/timeline-move-calculation-draft.ts +2 -2
- package/src/cubing/twisty/heavy-code-imports/.DS_Store +0 -0
- package/src/cubing/twisty/heavy-code-imports/dynamic-entries/3d.ts +2 -12
- package/src/cubing/twisty/index.ts +12 -19
- package/src/cubing/twisty/model/.DS_Store +0 -0
- package/src/cubing/twisty/model/TwistyPlayerModel.ts +38 -7
- package/src/cubing/twisty/model/props/.DS_Store +0 -0
- package/src/cubing/twisty/model/props/TwistyPropDebugger.ts +3 -3
- package/src/cubing/twisty/model/props/puzzle/.DS_Store +0 -0
- package/src/cubing/twisty/model/props/puzzle/display/FoundationDisplayProp.ts +9 -0
- package/src/cubing/twisty/model/props/puzzle/display/HintFaceletProp.ts +6 -1
- package/src/cubing/twisty/model/props/puzzle/display/StickeringProp.ts +49 -1
- package/src/cubing/twisty/model/props/puzzle/state/AlgTransformationProp.ts +1 -1
- package/src/cubing/twisty/model/props/puzzle/state/AnchoredStartProp.ts +2 -2
- package/src/cubing/twisty/model/props/puzzle/state/CurrentLeavesProp.ts +2 -2
- package/src/cubing/twisty/model/props/puzzle/state/CurrentLeavesSimplified.ts +1 -1
- package/src/cubing/twisty/model/props/puzzle/state/CurrentTransformationProp.ts +1 -1
- package/src/cubing/twisty/model/props/puzzle/state/IndexerConstructorProp.ts +12 -5
- package/src/cubing/twisty/model/props/puzzle/state/IndexerProp.ts +2 -2
- package/src/cubing/twisty/model/props/puzzle/state/LegacyPositionProp.ts +2 -2
- package/src/cubing/twisty/model/props/puzzle/state/MovePressInputProp.ts +14 -0
- package/src/cubing/twisty/model/props/puzzle/state/NaiveMoveCountProp.ts +20 -0
- package/src/cubing/twisty/model/props/puzzle/state/SetupAnchorProp.ts +7 -1
- package/src/cubing/twisty/model/props/puzzle/structure/PuzzleIDProp.ts +1 -1
- package/src/cubing/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.ts +20 -1
- package/src/cubing/twisty/model/props/puzzle/structure/PuzzleLoaderProp.ts +1 -1
- package/src/cubing/twisty/model/props/timeline/DetailedTimelineInfoProp.ts +5 -3
- package/src/cubing/twisty/model/props/timeline/PlayingInfoProp.ts +1 -4
- package/src/cubing/twisty/model/props/timeline/TimestampRequestProp.ts +1 -1
- package/src/cubing/twisty/model/props/viewer/BackViewProp.ts +7 -1
- package/src/cubing/twisty/model/props/viewer/BackgroundProp.ts +6 -1
- package/src/cubing/twisty/model/props/viewer/ControlPanelProp.ts +5 -1
- package/src/cubing/twisty/model/props/viewer/OrbitCoordinatesProp.ts +83 -12
- package/src/cubing/twisty/model/props/viewer/OrbitCoordinatesRequestProp.ts +8 -8
- package/src/cubing/twisty/model/props/viewer/TimeRangeProp.ts +2 -2
- package/src/cubing/twisty/model/props/viewer/ViewerLinkProp.ts +5 -1
- package/src/cubing/twisty/model/props/viewer/VisualizationProp.ts +8 -1
- package/src/cubing/twisty/model/props/viewer/VisualizationStrategyProp.ts +1 -1
- package/src/cubing/twisty/old/.DS_Store +0 -0
- package/src/cubing/twisty/old/animation/.DS_Store +0 -0
- package/src/cubing/twisty/old/dom/.DS_Store +0 -0
- package/src/cubing/twisty/views/.DS_Store +0 -0
- package/src/cubing/twisty/{old/dom/viewers/Twisty2DSVGView.css.ts → views/2D/Twisty2DPuzzle.css.ts} +1 -1
- package/src/cubing/twisty/views/2D/Twisty2DPuzzle.ts +8 -12
- package/src/cubing/twisty/views/2D/Twisty2DPuzzleWrapper.ts +1 -1
- package/src/cubing/twisty/views/2D/Twisty2DSceneWrapper.ts +4 -4
- package/src/cubing/{bluetooth → twisty/views/3D}/.DS_Store +0 -0
- package/src/cubing/twisty/views/3D/DragTracker.ts +184 -0
- package/src/cubing/twisty/views/3D/RendererPool.ts +2 -1
- package/src/cubing/twisty/views/3D/Twisty3DPuzzleWrapper.ts +51 -5
- package/src/cubing/twisty/views/3D/Twisty3DSceneWrapper.ts +51 -10
- package/src/cubing/twisty/{old/dom/viewers/Twisty3DCanvas.css.ts → views/3D/Twisty3DVantage.css.ts} +2 -2
- package/src/cubing/twisty/views/3D/Twisty3DVantage.ts +103 -35
- package/src/cubing/twisty/views/3D/TwistyOrbitControls.spec.ts +213 -0
- package/src/cubing/twisty/views/3D/TwistyOrbitControls.ts +176 -0
- package/src/cubing/twisty/views/3D/puzzles/Cube3D.ts +5 -9
- package/src/cubing/twisty/views/3D/puzzles/PG3D.ts +127 -37
- package/src/cubing/twisty/views/3D/puzzles/Twisty3DPuzzle.ts +1 -1
- package/src/cubing/twisty/{old/dom/element → views}/ClassListManager.ts +0 -0
- package/src/cubing/twisty/{old/dom/element → views}/ManagedCustomElement.ts +0 -0
- package/src/cubing/twisty/views/TwistyAlgEditor/LeafTokens.ts +1 -1
- package/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.ts +1 -1
- package/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.ts +11 -4
- package/src/cubing/twisty/views/TwistyAlgViewer.css.ts +1 -1
- package/src/cubing/twisty/views/TwistyAlgViewer.ts +4 -4
- package/src/cubing/twisty/{old/dom → views}/TwistyPlayer.css.ts +4 -1
- package/src/cubing/twisty/views/TwistyPlayer.ts +16 -25
- package/src/cubing/twisty/views/TwistyPlayerSettable.ts +14 -10
- package/src/cubing/twisty/{old/dom/viewers → views}/TwistyViewerWrapper.css.ts +1 -1
- package/src/cubing/twisty/{old/dom/viewers → views}/canvas.ts +0 -0
- package/src/cubing/twisty/{old/dom/controls/buttons.css.ts → views/control-panel/TwistyButtonsV2.css.ts} +1 -1
- package/src/cubing/twisty/views/control-panel/TwistyButtonsV2.ts +5 -8
- package/src/cubing/twisty/{old/dom/controls → views/control-panel}/TwistyScrubber.css.ts +1 -1
- package/src/cubing/twisty/views/control-panel/TwistyScrubberV2.ts +3 -3
- package/src/cubing/twisty/{old/dom/element → views}/node-custom-element-shims.ts +2 -2
- package/src/cubing/twisty/{old/dom → views}/stream/TwistyStreamSource.css.ts +1 -1
- package/src/cubing/twisty/{old/dom → views}/stream/TwistyStreamSource.ts +9 -9
- package/src/cubing/vendor/.DS_Store +0 -0
- package/src/cubing/{twisty/old/animation/indexer → vendor/comlink-everywhere}/.DS_Store +0 -0
- package/src/cubing/{search/vendor → vendor}/comlink-everywhere/comlink-everywhere.webloc +0 -0
- package/src/cubing/{search/vendor → vendor}/comlink-everywhere/inside/index.d.ts +0 -0
- package/src/cubing/{search/vendor → vendor}/comlink-everywhere/inside/index.js +0 -0
- package/src/cubing/{search/vendor → vendor}/comlink-everywhere/inside/node.js +0 -0
- package/src/cubing/{search/vendor → vendor}/comlink-everywhere/outside/index.d.ts +0 -0
- package/src/cubing/{search/vendor → vendor}/comlink-everywhere/outside/index.js +0 -0
- package/src/cubing/{search/vendor → vendor}/comlink-everywhere/outside/node.js +0 -0
- package/src/cubing/vendor/cstimer/.DS_Store +0 -0
- package/src/cubing/{search/inside/solve/vendor → vendor}/cstimer/LICENSE +0 -0
- package/src/cubing/{search/inside/solve/vendor → vendor}/cstimer/src/js/lib/mathlib.ts +0 -0
- package/src/cubing/{search/inside/solve/vendor → vendor}/cstimer/src/js/scramble/scramble_444.ts +3 -3
- package/src/cubing/{search/inside/solve/vendor → vendor}/min2phase/gwt.d.ts +0 -0
- package/src/cubing/{search/inside/solve/vendor → vendor}/min2phase/gwt.js +0 -0
- package/src/cubing/vendor/random-uint-below/get-random-values.ts +23 -0
- package/src/cubing/{search/inside/solve/vendor → vendor}/random-uint-below/index.ts +2 -2
- package/src/cubing/{search/inside/solve/vendor → vendor}/random-uint-below/random-choice.ts +1 -1
- package/src/cubing/{search/inside/solve/vendor/random-uint-below/random-int.ts → vendor/random-uint-below/random53BitValue.ts} +0 -0
- package/src/cubing/{search/inside/solve/vendor → vendor}/sq12phase/scramble_sq1.js +0 -0
- package/src/cubing/{bluetooth/smart-puzzle → vendor/unsafe-raw-aes}/unsafe-raw-aes.ts +18 -20
- package/dist/esm/3d-B25DP5PE.js +0 -39
- package/dist/esm/3d-B25DP5PE.js.map +0 -7
- package/dist/esm/chunk-APIIMJG6.js.map +0 -7
- package/dist/esm/chunk-CSVAFZSB.js.map +0 -7
- package/dist/esm/chunk-MUQMBH2S.js.map +0 -7
- package/dist/esm/worker-inside-generated-string-KDZOUGJF.js +0 -2831
- package/dist/esm/worker-inside-generated-string-KDZOUGJF.js.map +0 -7
- package/dist/types/bluetooth/smart-puzzle/unsafe-raw-aes.d.ts.map +0 -1
- package/dist/types/search/inside/solve/vendor/cstimer/src/js/lib/mathlib.d.ts.map +0 -1
- package/dist/types/search/inside/solve/vendor/cstimer/src/js/scramble/scramble_444.d.ts.map +0 -1
- package/dist/types/search/inside/solve/vendor/min2phase/gwt.d.ts.map +0 -1
- package/dist/types/search/inside/solve/vendor/random-uint-below/get-random-values.d.ts.map +0 -1
- package/dist/types/search/inside/solve/vendor/random-uint-below/index.d.ts.map +0 -1
- package/dist/types/search/inside/solve/vendor/random-uint-below/random-choice.d.ts.map +0 -1
- package/dist/types/search/inside/solve/vendor/random-uint-below/random-int.d.ts.map +0 -1
- package/dist/types/search/inside/solve/vendor/sq12phase/scramble_sq1.d.ts.map +0 -1
- package/dist/types/search/vendor/comlink-everywhere/inside/index.d.ts.map +0 -1
- package/dist/types/search/vendor/comlink-everywhere/inside/node.d.ts.map +0 -1
- package/dist/types/search/vendor/comlink-everywhere/outside/index.d.ts.map +0 -1
- package/dist/types/search/vendor/comlink-everywhere/outside/node.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/RenderScheduler.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/Timeline.d.ts +0 -72
- package/dist/types/twisty/old/animation/Timeline.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/cursor/AlgCursor.d.ts +0 -53
- package/dist/types/twisty/old/animation/cursor/AlgCursor.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/cursor/CursorTypes.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/easing.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/indexer/AlgDuration.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/indexer/AlgIndexer.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/indexer/SimpleAlgIndexer.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/indexer/simultaneous-moves/simul-moves.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/indexer/tree/AlgWalker.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/indexer/tree/TreeAlgIndexer.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/indexer/tree/chunkAlgs.d.ts +0 -3
- package/dist/types/twisty/old/animation/indexer/tree/chunkAlgs.d.ts.map +0 -1
- package/dist/types/twisty/old/animation/stream/timeline-move-calculation-draft.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/TwistyAlgViewerV1.css.d.ts +0 -3
- package/dist/types/twisty/old/dom/TwistyAlgViewerV1.css.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/TwistyAlgViewerV1.d.ts +0 -52
- package/dist/types/twisty/old/dom/TwistyAlgViewerV1.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/TwistyPlayer.css.d.ts +0 -3
- package/dist/types/twisty/old/dom/TwistyPlayer.css.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/TwistyPlayer.d.ts +0 -92
- package/dist/types/twisty/old/dom/TwistyPlayer.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/TwistyPlayer.spec.d.ts +0 -5
- package/dist/types/twisty/old/dom/TwistyPlayer.spec.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/TwistyPlayerConfig.d.ts +0 -165
- package/dist/types/twisty/old/dom/TwistyPlayerConfig.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/controls/TwistyControlElement.d.ts +0 -2
- package/dist/types/twisty/old/dom/controls/TwistyControlElement.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/controls/TwistyScrubber.css.d.ts +0 -3
- package/dist/types/twisty/old/dom/controls/TwistyScrubber.d.ts +0 -14
- package/dist/types/twisty/old/dom/controls/TwistyScrubber.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/controls/buttons.css.d.ts +0 -4
- package/dist/types/twisty/old/dom/controls/buttons.css.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/controls/buttons.d.ts +0 -40
- package/dist/types/twisty/old/dom/controls/buttons.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/controls/buttons.spec.d.ts +0 -5
- package/dist/types/twisty/old/dom/controls/buttons.spec.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/element/ClassListManager.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/element/ElementConfig.d.ts +0 -49
- package/dist/types/twisty/old/dom/element/ElementConfig.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/element/ManagedCustomElement.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/element/node-custom-element-shims.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/stream/TwistyStreamSource.css.d.ts +0 -3
- package/dist/types/twisty/old/dom/stream/TwistyStreamSource.css.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/stream/TwistyStreamSource.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/viewers/Twisty2DSVG.d.ts +0 -26
- package/dist/types/twisty/old/dom/viewers/Twisty2DSVG.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/viewers/Twisty2DSVGView.css.d.ts +0 -3
- package/dist/types/twisty/old/dom/viewers/Twisty2DSVGView.css.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/viewers/Twisty3DCanvas.css.d.ts +0 -3
- package/dist/types/twisty/old/dom/viewers/Twisty3DCanvas.css.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/viewers/Twisty3DCanvas.d.ts +0 -41
- package/dist/types/twisty/old/dom/viewers/Twisty3DCanvas.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/viewers/TwistyOrbitControls.d.ts +0 -59
- package/dist/types/twisty/old/dom/viewers/TwistyOrbitControls.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/viewers/TwistyViewerElement.d.ts +0 -4
- package/dist/types/twisty/old/dom/viewers/TwistyViewerElement.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/viewers/TwistyViewerWrapper.css.d.ts +0 -3
- package/dist/types/twisty/old/dom/viewers/TwistyViewerWrapper.css.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/viewers/TwistyViewerWrapper.d.ts +0 -18
- package/dist/types/twisty/old/dom/viewers/TwistyViewerWrapper.d.ts.map +0 -1
- package/dist/types/twisty/old/dom/viewers/canvas.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/TwistyOrbitControlsV2.d.ts +0 -41
- package/dist/types/twisty/views/3D/TwistyOrbitControlsV2.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/TwistyOrbitControlsV2.spec.d.ts +0 -5
- package/dist/types/twisty/views/3D/TwistyOrbitControlsV2.spec.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/puzzles/TwistyTestBox.d.ts +0 -9
- package/dist/types/twisty/views/3D/puzzles/TwistyTestBox.d.ts.map +0 -1
- package/src/cubing/search/inside/solve/vendor/random-uint-below/get-random-values.ts +0 -38
- package/src/cubing/twisty/old/animation/Timeline.ts +0 -378
- package/src/cubing/twisty/old/animation/cursor/AlgCursor.ts +0 -252
- package/src/cubing/twisty/old/dom/TwistyAlgViewerV1.css.ts +0 -25
- package/src/cubing/twisty/old/dom/TwistyAlgViewerV1.ts +0 -516
- package/src/cubing/twisty/old/dom/TwistyPlayer.spec.ts +0 -25
- package/src/cubing/twisty/old/dom/TwistyPlayer.ts +0 -927
- package/src/cubing/twisty/old/dom/TwistyPlayerConfig.ts +0 -378
- package/src/cubing/twisty/old/dom/controls/TwistyControlElement.ts +0 -1
- package/src/cubing/twisty/old/dom/controls/TwistyScrubber.ts +0 -53
- package/src/cubing/twisty/old/dom/controls/buttons.spec.ts +0 -37
- package/src/cubing/twisty/old/dom/controls/buttons.ts +0 -326
- package/src/cubing/twisty/old/dom/element/ElementConfig.ts +0 -180
- package/src/cubing/twisty/old/dom/viewers/Twisty2DSVG.ts +0 -118
- package/src/cubing/twisty/old/dom/viewers/Twisty3DCanvas.ts +0 -256
- package/src/cubing/twisty/old/dom/viewers/TwistyOrbitControls.ts +0 -420
- package/src/cubing/twisty/old/dom/viewers/TwistyViewerElement.ts +0 -5
- package/src/cubing/twisty/old/dom/viewers/TwistyViewerWrapper.ts +0 -45
- package/src/cubing/twisty/views/3D/TwistyOrbitControlsV2.spec.ts +0 -209
- package/src/cubing/twisty/views/3D/TwistyOrbitControlsV2.ts +0 -270
- 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 "../../../
|
|
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 {
|
|
33
|
-
import type { PuzzlePosition } from "../../../
|
|
34
|
-
import { smootherStep } from "../../../
|
|
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.
|
|
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:
|
|
455
|
-
const vec = axisDat
|
|
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
|
|
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
|
|
525
|
-
|
|
526
|
-
|
|
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 (
|
|
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.
|
|
549
|
+
const axesDef = this.stickerDat.axis;
|
|
544
550
|
for (const axis of axesDef) {
|
|
545
|
-
this.axesInfo[axis
|
|
551
|
+
this.axesInfo[axis.quantumMove.family] = new AxisInfo(axis);
|
|
546
552
|
}
|
|
547
|
-
const stickers = this.
|
|
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
|
-
|
|
552
|
-
|
|
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,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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(
|
|
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
|
-
|
|
640
|
-
|
|
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.
|
|
755
|
-
const move =
|
|
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
|
|
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.
|
|
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
|
|
873
|
-
this.
|
|
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.
|
|
992
|
+
this.showHintFacelets(options.hintFacelets !== "none");
|
|
904
993
|
}
|
|
905
994
|
if (options.showFoundation !== undefined) {
|
|
906
|
-
this.
|
|
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 "../../../
|
|
2
|
+
import type { PuzzlePosition } from "../../../controllers/AnimationTypes";
|
|
3
3
|
|
|
4
4
|
export interface Twisty3DPuzzle extends Object3D {
|
|
5
5
|
onPositionChange(position: PuzzlePosition): void;
|
|
File without changes
|
|
File without changes
|
|
@@ -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 "../../
|
|
13
|
+
import type { AnimatedLeafUnit } from "../../controllers/indexer/simultaneous-moves/simul-moves";
|
|
14
14
|
|
|
15
15
|
export type AnimatedLeafUnitInfo = {
|
|
16
16
|
leaf: Parsed<AnimatedLeafUnit>;
|
|
@@ -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 "
|
|
23
|
-
import { ManagedCustomElement } from "
|
|
24
|
-
import { customElementsShim } from "
|
|
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
|
-
|
|
307
|
+
if (!this.debugNeverRequestTimestamp) {
|
|
308
|
+
twistyPlayer.experimentalModel.timestampRequestProp.set(
|
|
309
|
+
newTimestamp,
|
|
310
|
+
);
|
|
311
|
+
}
|
|
305
312
|
},
|
|
306
313
|
);
|
|
307
314
|
|
|
@@ -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 "../
|
|
19
|
-
import type { CurrentMoveInfo } from "../
|
|
20
|
-
import { ManagedCustomElement } from "
|
|
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 "
|
|
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 "./
|
|
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 {
|