@threlte/theatre 3.0.6 → 3.1.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.
- package/README.md +0 -4
- package/dist/index.d.ts +6 -6
- package/dist/index.js +4 -4
- package/dist/project/Project.svelte +34 -13
- package/dist/project/Project.svelte.d.ts +4 -2
- package/dist/sequence/Sequence.svelte +102 -71
- package/dist/sequence/Sequence.svelte.d.ts +5 -5
- package/dist/sequence/SequenceController.d.ts +2 -2
- package/dist/sequence/SequenceController.js +1 -1
- package/dist/sequence/useSequence.d.ts +1 -1
- package/dist/sheet/Sheet.svelte +34 -16
- package/dist/sheet/Sheet.svelte.d.ts +5 -3
- package/dist/sheet/types.d.ts +1 -1
- package/dist/sheetObject/SheetObject.svelte +108 -75
- package/dist/sheetObject/SheetObject.svelte.d.ts +11 -4
- package/dist/sheetObject/declare/Declare.svelte +23 -14
- package/dist/sheetObject/declare/Declare.svelte.d.ts +11 -4
- package/dist/sheetObject/sync/Sync.svelte +122 -85
- package/dist/sheetObject/sync/Sync.svelte.d.ts +15 -4
- package/dist/sheetObject/sync/types.d.ts +1 -1
- package/dist/sheetObject/sync/utils/getInitialValue.js +2 -2
- package/dist/sheetObject/sync/utils/isComplexProp.d.ts +1 -1
- package/dist/sheetObject/sync/utils/isStringProp.d.ts +1 -1
- package/dist/sheetObject/sync/utils/parsePropLabel.d.ts +1 -1
- package/dist/sheetObject/transfomers/createTransformer.d.ts +1 -1
- package/dist/sheetObject/transfomers/defaults/color.d.ts +1 -1
- package/dist/sheetObject/transfomers/defaults/color.js +2 -2
- package/dist/sheetObject/transfomers/defaults/degrees.d.ts +1 -1
- package/dist/sheetObject/transfomers/defaults/degrees.js +2 -2
- package/dist/sheetObject/transfomers/defaults/euler.d.ts +1 -1
- package/dist/sheetObject/transfomers/defaults/euler.js +2 -2
- package/dist/sheetObject/transfomers/defaults/generic.d.ts +1 -1
- package/dist/sheetObject/transfomers/defaults/generic.js +3 -3
- package/dist/sheetObject/transfomers/defaults/normalized.d.ts +1 -1
- package/dist/sheetObject/transfomers/defaults/normalized.js +2 -2
- package/dist/sheetObject/transfomers/defaults/side.d.ts +1 -1
- package/dist/sheetObject/transfomers/defaults/side.js +2 -2
- package/dist/sheetObject/transfomers/getDefaultTransformer.d.ts +1 -1
- package/dist/sheetObject/transfomers/getDefaultTransformer.js +6 -6
- package/dist/sheetObject/transform/Transform.svelte +145 -120
- package/dist/sheetObject/transform/Transform.svelte.d.ts +11 -4
- package/dist/sheetObject/types.d.ts +1 -1
- package/dist/sheetObject/types.js +1 -1
- package/dist/studio/InnerStudio.svelte +31 -19
- package/dist/studio/InnerStudio.svelte.d.ts +5 -3
- package/dist/studio/Studio.svelte +12 -3
- package/dist/studio/Studio.svelte.d.ts +4 -2
- package/dist/studio/useStudio.js +1 -1
- package/dist/theatre/Theatre.svelte +15 -2
- package/dist/theatre/Theatre.svelte.d.ts +4 -2
- package/package.json +11 -12
package/README.md
CHANGED
|
@@ -48,10 +48,6 @@ Contributions are what make the open source community such an amazing place to l
|
|
|
48
48
|
- **Filing Issues** - if you have feature requestions or you think you spotted a bug, [submit an issue](https://github.com/threlte/threlte/issues/new).
|
|
49
49
|
- **Contributing Code** - if you would like to drop us a PR, read the [contribution guide](https://github.com/threlte/threlte/blob/main/CONTRIBUTING.md) first.
|
|
50
50
|
|
|
51
|
-
## Sponsors
|
|
52
|
-
|
|
53
|
-
[](https://vercel.com/?utm_source=threlte&utm_campaign=oss)
|
|
54
|
-
|
|
55
51
|
---
|
|
56
52
|
|
|
57
53
|
### License
|
package/dist/index.d.ts
CHANGED
|
@@ -4,9 +4,9 @@ export { default as Sequence } from './sequence/Sequence.svelte';
|
|
|
4
4
|
export { default as Sheet } from './sheet/Sheet.svelte';
|
|
5
5
|
export { default as Theatre } from './theatre/Theatre.svelte';
|
|
6
6
|
export { default as SheetObject } from './sheetObject/SheetObject.svelte';
|
|
7
|
-
export { createTransformer } from './sheetObject/transfomers/createTransformer';
|
|
8
|
-
export type { Transformer } from './sheetObject/transfomers/types';
|
|
9
|
-
export { useStudio } from './studio/useStudio';
|
|
10
|
-
export { useSequence } from './sequence/useSequence';
|
|
11
|
-
export { createSheetObjectAction } from './sheet/createSheetObjectAction';
|
|
12
|
-
export type { SequenceController } from './sequence/SequenceController';
|
|
7
|
+
export { createTransformer } from './sheetObject/transfomers/createTransformer.js';
|
|
8
|
+
export type { Transformer } from './sheetObject/transfomers/types.js';
|
|
9
|
+
export { useStudio } from './studio/useStudio.js';
|
|
10
|
+
export { useSequence } from './sequence/useSequence.js';
|
|
11
|
+
export { createSheetObjectAction } from './sheet/createSheetObjectAction.js';
|
|
12
|
+
export type { SequenceController } from './sequence/SequenceController.js';
|
package/dist/index.js
CHANGED
|
@@ -6,9 +6,9 @@ export { default as Sheet } from './sheet/Sheet.svelte';
|
|
|
6
6
|
export { default as Theatre } from './theatre/Theatre.svelte';
|
|
7
7
|
// SheetObject related things
|
|
8
8
|
export { default as SheetObject } from './sheetObject/SheetObject.svelte';
|
|
9
|
-
export { createTransformer } from './sheetObject/transfomers/createTransformer';
|
|
9
|
+
export { createTransformer } from './sheetObject/transfomers/createTransformer.js';
|
|
10
10
|
// hooks
|
|
11
|
-
export { useStudio } from './studio/useStudio';
|
|
12
|
-
export { useSequence } from './sequence/useSequence';
|
|
11
|
+
export { useStudio } from './studio/useStudio.js';
|
|
12
|
+
export { useSequence } from './sequence/useSequence.js';
|
|
13
13
|
// actions
|
|
14
|
-
export { createSheetObjectAction } from './sheet/createSheetObjectAction';
|
|
14
|
+
export { createSheetObjectAction } from './sheet/createSheetObjectAction.js';
|
|
@@ -1,16 +1,37 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { globalProjects } from '../consts.js'
|
|
3
|
+
import { getProject } from '../theatre.js'
|
|
4
|
+
import { setContext, type Snippet } from 'svelte'
|
|
5
|
+
import type { IProject, IProjectConfig } from '@theatre/core'
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
name?: string
|
|
9
|
+
config?: IProjectConfig | undefined
|
|
10
|
+
project?: IProject
|
|
11
|
+
isReady?: boolean
|
|
12
|
+
children?: Snippet<[{ project: IProject }]>
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
let {
|
|
16
|
+
name = 'default',
|
|
17
|
+
config,
|
|
18
|
+
project = $bindable(),
|
|
19
|
+
isReady = $bindable(),
|
|
20
|
+
children
|
|
21
|
+
}: Props = $props()
|
|
22
|
+
|
|
23
|
+
project = globalProjects.get(name) ?? getProject(name, config)
|
|
24
|
+
globalProjects.set(name, project)
|
|
25
|
+
|
|
26
|
+
const syncReady = async () => {
|
|
27
|
+
await project.ready
|
|
28
|
+
isReady = true
|
|
29
|
+
}
|
|
30
|
+
syncReady()
|
|
31
|
+
|
|
32
|
+
// CHILD CONTEXT
|
|
33
|
+
|
|
34
|
+
setContext(`theatre-project`, project)
|
|
14
35
|
</script>
|
|
15
36
|
|
|
16
37
|
{#await project.ready then}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Snippet } from 'svelte';
|
|
2
2
|
import type { IProject, IProjectConfig } from '@theatre/core';
|
|
3
|
-
|
|
3
|
+
interface Props {
|
|
4
4
|
name?: string;
|
|
5
5
|
config?: IProjectConfig | undefined;
|
|
6
6
|
project?: IProject;
|
|
@@ -8,5 +8,7 @@ declare const Project: import("svelte").Component<{
|
|
|
8
8
|
children?: Snippet<[{
|
|
9
9
|
project: IProject;
|
|
10
10
|
}]>;
|
|
11
|
-
}
|
|
11
|
+
}
|
|
12
|
+
declare const Project: import("svelte").Component<Props, {}, "project" | "isReady">;
|
|
13
|
+
type Project = ReturnType<typeof Project>;
|
|
12
14
|
export default Project;
|
|
@@ -1,86 +1,117 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
//
|
|
21
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { IRafDriver, ISequence } from '@theatre/core'
|
|
3
|
+
import { getContext, onDestroy, setContext } from 'svelte'
|
|
4
|
+
import type { SheetContext } from '../sheet/types.js'
|
|
5
|
+
import type {
|
|
6
|
+
Autoreset,
|
|
7
|
+
IterationCount,
|
|
8
|
+
PlaybackDirection,
|
|
9
|
+
PlaybackRange,
|
|
10
|
+
SequenceAudioOptions,
|
|
11
|
+
SequenceOptions
|
|
12
|
+
} from './types.js'
|
|
13
|
+
|
|
14
|
+
// Parent context
|
|
15
|
+
const { sequences } = getContext<SheetContext>('theatre-sheet')
|
|
16
|
+
|
|
17
|
+
// Props
|
|
18
|
+
let key = 'default' // not exposed yet, will be a prop in the future
|
|
19
|
+
|
|
20
|
+
// Theatre's native playback options
|
|
21
|
+
export let rate: number = 1
|
|
22
|
+
export let range: PlaybackRange = undefined
|
|
23
|
+
export let iterationCount: IterationCount = undefined
|
|
24
|
+
export let direction: PlaybackDirection = undefined
|
|
25
|
+
export let rafDriver: IRafDriver | undefined = undefined
|
|
26
|
+
export let audio: SequenceAudioOptions | undefined = undefined
|
|
27
|
+
|
|
28
|
+
// Threlte's custom playback options
|
|
29
|
+
export let autoplay: boolean = false
|
|
30
|
+
export let autoreset: Autoreset = undefined
|
|
31
|
+
export let autopause: boolean = false
|
|
32
|
+
export let delay: number = 0
|
|
33
|
+
|
|
34
|
+
// Get the Sequence instance
|
|
35
|
+
export const sequence = sequences[key]
|
|
36
|
+
|
|
37
|
+
// autoplay logic
|
|
38
|
+
if (!autoplay && delay! > 0) {
|
|
22
39
|
console.warn('Sequence: delay has no effect unless the option autoplay is enabled.', {
|
|
23
|
-
|
|
24
|
-
})
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
sequence
|
|
41
|
+
})
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
let delayTimer: ReturnType<typeof setTimeout>
|
|
45
|
+
|
|
46
|
+
if (autoplay) {
|
|
47
|
+
delayTimer = setTimeout(() => sequence.play(), delay)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
onDestroy(() => {
|
|
51
|
+
clearTimeout(delayTimer)
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
// autopause logic
|
|
55
|
+
onDestroy(() => {
|
|
35
56
|
if (autopause) {
|
|
36
|
-
|
|
57
|
+
sequence.pause()
|
|
37
58
|
}
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
// autoreset logic
|
|
62
|
+
if (autoreset === 'onMount' || autoreset === 'always') {
|
|
63
|
+
sequence.reset()
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
onDestroy(() => {
|
|
44
67
|
if (autoreset === 'onDestroy' || autoreset === 'always') {
|
|
45
|
-
|
|
68
|
+
sequence.reset()
|
|
46
69
|
}
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
// config reactivity
|
|
73
|
+
$: sequence.config({
|
|
50
74
|
audio,
|
|
51
75
|
rate,
|
|
52
76
|
range,
|
|
53
77
|
iterationCount,
|
|
54
78
|
direction,
|
|
55
79
|
rafDriver
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
export
|
|
62
|
-
export
|
|
63
|
-
export const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
// Bindings
|
|
83
|
+
const { position: positionStore, playing: playingStore, length: lengthStore } = sequence
|
|
84
|
+
|
|
85
|
+
export let position = $positionStore
|
|
86
|
+
export let playing = $playingStore
|
|
87
|
+
export const length = $lengthStore
|
|
88
|
+
|
|
89
|
+
export const play: ISequence['play'] = (opts?: SequenceOptions) => sequence.play(opts)
|
|
90
|
+
export const pause: ISequence['pause'] = () => sequence.pause()
|
|
91
|
+
|
|
92
|
+
// position
|
|
93
|
+
let positionChangedBy = 'user'
|
|
94
|
+
positionStore.subscribe((value) => {
|
|
95
|
+
positionChangedBy = 'code'
|
|
96
|
+
position = value
|
|
97
|
+
})
|
|
98
|
+
$: position,
|
|
71
99
|
positionChangedBy === 'user' && ($positionStore = position),
|
|
72
|
-
(positionChangedBy = 'user')
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
// pass to
|
|
83
|
-
|
|
100
|
+
(positionChangedBy = 'user')
|
|
101
|
+
|
|
102
|
+
// playing
|
|
103
|
+
let playingChangedBy = 'user'
|
|
104
|
+
playingStore.subscribe((value) => {
|
|
105
|
+
playingChangedBy = 'code'
|
|
106
|
+
playing = value
|
|
107
|
+
})
|
|
108
|
+
$: playing, playingChangedBy === 'user' && ($playingStore = playing), (playingChangedBy = 'user')
|
|
109
|
+
|
|
110
|
+
// pass sequence to children via context
|
|
111
|
+
setContext('theatre-sequence', sequence)
|
|
112
|
+
|
|
113
|
+
// pass to parent
|
|
114
|
+
sequences[key] = sequence
|
|
84
115
|
</script>
|
|
85
116
|
|
|
86
117
|
<slot
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IRafDriver, ISequence } from '@theatre/core';
|
|
2
|
-
import type { Autoreset, IterationCount, PlaybackDirection, PlaybackRange, SequenceAudioOptions } from './types';
|
|
2
|
+
import type { Autoreset, IterationCount, PlaybackDirection, PlaybackRange, SequenceAudioOptions } from './types.js';
|
|
3
3
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
4
4
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
5
5
|
$$bindings?: Bindings;
|
|
@@ -29,7 +29,7 @@ declare const Sequence: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsW
|
|
|
29
29
|
autoreset?: Autoreset;
|
|
30
30
|
autopause?: boolean;
|
|
31
31
|
delay?: number;
|
|
32
|
-
sequence?: import("./SequenceController").SequenceController;
|
|
32
|
+
sequence?: import("./SequenceController.js").SequenceController;
|
|
33
33
|
position?: number;
|
|
34
34
|
playing?: boolean;
|
|
35
35
|
length?: number;
|
|
@@ -37,7 +37,7 @@ declare const Sequence: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsW
|
|
|
37
37
|
pause?: ISequence["pause"];
|
|
38
38
|
}, {
|
|
39
39
|
default: {
|
|
40
|
-
sequence: import("./SequenceController").SequenceController;
|
|
40
|
+
sequence: import("./SequenceController.js").SequenceController;
|
|
41
41
|
position: number;
|
|
42
42
|
playing: boolean;
|
|
43
43
|
play: (conf?: {
|
|
@@ -53,7 +53,7 @@ declare const Sequence: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsW
|
|
|
53
53
|
[evt: string]: CustomEvent<any>;
|
|
54
54
|
}, {
|
|
55
55
|
default: {
|
|
56
|
-
sequence: import("./SequenceController").SequenceController;
|
|
56
|
+
sequence: import("./SequenceController.js").SequenceController;
|
|
57
57
|
position: number;
|
|
58
58
|
playing: boolean;
|
|
59
59
|
play: (conf?: {
|
|
@@ -66,7 +66,7 @@ declare const Sequence: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsW
|
|
|
66
66
|
pause: () => void;
|
|
67
67
|
};
|
|
68
68
|
}, {
|
|
69
|
-
sequence: import("./SequenceController").SequenceController;
|
|
69
|
+
sequence: import("./SequenceController.js").SequenceController;
|
|
70
70
|
length: number;
|
|
71
71
|
play: ISequence["play"];
|
|
72
72
|
pause: ISequence["pause"];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ISequence } from '@theatre/core';
|
|
2
2
|
import type { Readable, Subscriber, Writable } from 'svelte/store';
|
|
3
|
-
import { onChange } from '../theatre';
|
|
4
|
-
import type { SequenceOptions } from './types';
|
|
3
|
+
import { onChange } from '../theatre.js';
|
|
4
|
+
import type { SequenceOptions } from './types.js';
|
|
5
5
|
/**
|
|
6
6
|
* ### `SequenceController`
|
|
7
7
|
*
|
package/dist/sheet/Sheet.svelte
CHANGED
|
@@ -1,19 +1,37 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
//
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { IProject, ISheet } from '@theatre/core'
|
|
3
|
+
import { getContext, setContext, type Snippet } from 'svelte'
|
|
4
|
+
import { SequenceController } from '../sequence/SequenceController.js'
|
|
5
|
+
import { globalSheets } from '../consts.js'
|
|
6
|
+
import type { SheetContext } from './types.js'
|
|
7
|
+
|
|
8
|
+
// parent context
|
|
9
|
+
export const project = getContext('theatre-project') as IProject
|
|
10
|
+
const projectName = project.address.projectId
|
|
11
|
+
|
|
12
|
+
interface Props {
|
|
13
|
+
// props
|
|
14
|
+
name?: string
|
|
15
|
+
instance?: string | undefined
|
|
16
|
+
sheet?: ISheet
|
|
17
|
+
children?: Snippet<[{ sheet: ISheet }]>
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
let { name = 'default', sheet = $bindable(), instance = undefined, children }: Props = $props()
|
|
21
|
+
|
|
22
|
+
// bindings
|
|
23
|
+
sheet = globalSheets.get(`${projectName}-${name}-${instance}`) ?? project.sheet(name, instance)
|
|
24
|
+
|
|
25
|
+
// register instance logic
|
|
26
|
+
globalSheets.set(`${projectName}-${name}-${instance}`, sheet)
|
|
27
|
+
|
|
28
|
+
// init sequence store
|
|
29
|
+
export const sequence = new SequenceController(sheet.sequence)
|
|
30
|
+
|
|
31
|
+
// child context
|
|
32
|
+
const sequences = { default: sequence }
|
|
33
|
+
|
|
34
|
+
setContext<SheetContext>('theatre-sheet', { sheet, sequences })
|
|
17
35
|
</script>
|
|
18
36
|
|
|
19
37
|
{@render children?.({ sheet })}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import type { IProject, ISheet } from '@theatre/core';
|
|
2
2
|
import { type Snippet } from 'svelte';
|
|
3
|
-
import { SequenceController } from '../sequence/SequenceController';
|
|
4
|
-
|
|
3
|
+
import { SequenceController } from '../sequence/SequenceController.js';
|
|
4
|
+
interface Props {
|
|
5
5
|
name?: string;
|
|
6
6
|
instance?: string | undefined;
|
|
7
7
|
sheet?: ISheet;
|
|
8
8
|
children?: Snippet<[{
|
|
9
9
|
sheet: ISheet;
|
|
10
10
|
}]>;
|
|
11
|
-
}
|
|
11
|
+
}
|
|
12
|
+
declare const Sheet: import("svelte").Component<Props, {
|
|
12
13
|
project: IProject;
|
|
13
14
|
sequence: SequenceController;
|
|
14
15
|
}, "sheet">;
|
|
16
|
+
type Sheet = ReturnType<typeof Sheet>;
|
|
15
17
|
export default Sheet;
|
package/dist/sheet/types.d.ts
CHANGED