A temporary API for disabling play/pause via the space key (#386)
This commit is contained in:
parent
e3a3e0124c
commit
1bac84bbfc
2 changed files with 45 additions and 0 deletions
|
@ -15,6 +15,10 @@ import getStudio from './getStudio'
|
||||||
import {debounce} from 'lodash-es'
|
import {debounce} from 'lodash-es'
|
||||||
import type Sheet from '@theatre/core/sheets/Sheet'
|
import type Sheet from '@theatre/core/sheets/Sheet'
|
||||||
import type {PaneInstanceId, ProjectId} from '@theatre/shared/utils/ids'
|
import type {PaneInstanceId, ProjectId} from '@theatre/shared/utils/ids'
|
||||||
|
import {
|
||||||
|
__experimental_disblePlayPauseKeyboardShortcut,
|
||||||
|
__experimental_enablePlayPauseKeyboardShortcut,
|
||||||
|
} from './UIRoot/useKeyboardShortcuts'
|
||||||
|
|
||||||
export interface ITransactionAPI {
|
export interface ITransactionAPI {
|
||||||
/**
|
/**
|
||||||
|
@ -390,6 +394,22 @@ export interface IStudio {
|
||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
createContentOfSaveFile(projectId: string): Record<string, unknown>
|
createContentOfSaveFile(projectId: string): Record<string, unknown>
|
||||||
|
|
||||||
|
__experimental: {
|
||||||
|
/**
|
||||||
|
* Warning: This is an experimental API and will change in the future.
|
||||||
|
*
|
||||||
|
* Disables the play/pause keyboard shortcut (spacebar)
|
||||||
|
* Also see `__experimental_enablePlayPauseKeyboardShortcut()` to re-enable it.
|
||||||
|
*/
|
||||||
|
__experimental_disblePlayPauseKeyboardShortcut(): void
|
||||||
|
/**
|
||||||
|
* Warning: This is an experimental API and will change in the future.
|
||||||
|
*
|
||||||
|
* Disables the play/pause keyboard shortcut (spacebar)
|
||||||
|
*/
|
||||||
|
__experimental_enablePlayPauseKeyboardShortcut(): void
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default class TheatreStudio implements IStudio {
|
export default class TheatreStudio implements IStudio {
|
||||||
|
@ -413,6 +433,21 @@ export default class TheatreStudio implements IStudio {
|
||||||
|
|
||||||
private readonly _cache = new SimpleCache()
|
private readonly _cache = new SimpleCache()
|
||||||
|
|
||||||
|
__experimental = {
|
||||||
|
__experimental_disblePlayPauseKeyboardShortcut(): void {
|
||||||
|
// This is an experimental API to respond to this issue: https://discord.com/channels/870988717190426644/870988717190426647/1067906775602430062
|
||||||
|
// Ideally we need a coherent way for the user to control keyboard inputs, so we will remove this method in the future.
|
||||||
|
// Here is the procedure for removing it:
|
||||||
|
// 1. Replace this code with a `throw new Error("This is experimental method is now deprecated, and here is how to migrate: ...")`
|
||||||
|
// 2. Then keep it for a few months, and then remove it.
|
||||||
|
__experimental_disblePlayPauseKeyboardShortcut()
|
||||||
|
},
|
||||||
|
__experimental_enablePlayPauseKeyboardShortcut(): void {
|
||||||
|
// see __experimental_disblePlayPauseKeyboardShortcut()
|
||||||
|
__experimental_enablePlayPauseKeyboardShortcut()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -9,6 +9,15 @@ import type {IPlaybackRange} from '@theatre/core/sequences/Sequence'
|
||||||
import type Sequence from '@theatre/core/sequences/Sequence'
|
import type Sequence from '@theatre/core/sequences/Sequence'
|
||||||
import memoizeFn from '@theatre/shared/utils/memoizeFn'
|
import memoizeFn from '@theatre/shared/utils/memoizeFn'
|
||||||
|
|
||||||
|
let playPauseKeyboardShortcutIsEnabled = true
|
||||||
|
export function __experimental_disblePlayPauseKeyboardShortcut() {
|
||||||
|
playPauseKeyboardShortcutIsEnabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __experimental_enablePlayPauseKeyboardShortcut() {
|
||||||
|
playPauseKeyboardShortcutIsEnabled = true
|
||||||
|
}
|
||||||
|
|
||||||
export default function useKeyboardShortcuts() {
|
export default function useKeyboardShortcuts() {
|
||||||
const studio = getStudio()
|
const studio = getStudio()
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -39,6 +48,7 @@ export default function useKeyboardShortcuts() {
|
||||||
!e.altKey &&
|
!e.altKey &&
|
||||||
!e.ctrlKey
|
!e.ctrlKey
|
||||||
) {
|
) {
|
||||||
|
if (!playPauseKeyboardShortcutIsEnabled) return
|
||||||
// Control the playback using the `Space` key
|
// Control the playback using the `Space` key
|
||||||
const seq = getSelectedSequence()
|
const seq = getSelectedSequence()
|
||||||
if (seq) {
|
if (seq) {
|
||||||
|
|
Loading…
Reference in a new issue