@twick/studio 0.15.18 → 0.15.20

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/dist/studio.css CHANGED
@@ -68,6 +68,10 @@ html {
68
68
  color: var(--color-gray-300);
69
69
  }
70
70
 
71
+ .cloud-media-upload-container {
72
+ padding: 0rem 0.25rem;
73
+ }
74
+
71
75
  /* ========================================
72
76
  FILE INPUT UTILITIES
73
77
  ======================================== */
@@ -127,7 +131,8 @@ html {
127
131
  display: flex;
128
132
  flex-direction: column;
129
133
  gap: 0.5rem;
130
- margin-bottom: 0.75rem;
134
+ margin-top: 0.25rem;
135
+ margin-bottom: 0.50rem;
131
136
  }
132
137
 
133
138
  .panel-content {
@@ -0,0 +1,44 @@
1
+ import { IGenerationPollingResponse, ModelInfo } from '@twick/ai-models';
2
+
3
+ /** Parameters for image generation */
4
+ export interface GenerateImageParams {
5
+ provider: "fal" | "runware";
6
+ endpointId: string;
7
+ prompt: string;
8
+ image_url?: string;
9
+ width?: number;
10
+ height?: number;
11
+ steps?: number;
12
+ guidance_scale?: number;
13
+ negative_prompt?: string;
14
+ }
15
+ /** Parameters for video generation */
16
+ export interface GenerateVideoParams {
17
+ provider: "fal" | "runware";
18
+ endpointId: string;
19
+ prompt: string;
20
+ image_url?: string;
21
+ duration?: number;
22
+ fps?: number;
23
+ width?: number;
24
+ height?: number;
25
+ steps?: number;
26
+ guidance_scale?: number;
27
+ negative_prompt?: string;
28
+ }
29
+ export interface IImageGenerationService {
30
+ /** Submit image generation job; returns requestId for polling */
31
+ generateImage: (params: GenerateImageParams) => Promise<string>;
32
+ /** Poll status of generation job */
33
+ getRequestStatus: (reqId: string) => Promise<IGenerationPollingResponse>;
34
+ /** Available image models */
35
+ getAvailableModels?: () => ModelInfo[];
36
+ }
37
+ export interface IVideoGenerationService {
38
+ /** Submit video generation job; returns requestId for polling */
39
+ generateVideo: (params: GenerateVideoParams) => Promise<string>;
40
+ /** Poll status of generation job */
41
+ getRequestStatus: (reqId: string) => Promise<IGenerationPollingResponse>;
42
+ /** Available video models */
43
+ getAvailableModels?: () => ModelInfo[];
44
+ }
@@ -1,6 +1,7 @@
1
1
  import { ProjectJSON, Size, TrackElement, VideoElement } from '@twick/timeline';
2
2
  import { CanvasConfig, VideoEditorConfig } from '@twick/video-editor';
3
3
 
4
+ export type { IImageGenerationService, IVideoGenerationService, GenerateImageParams, GenerateVideoParams, } from './generation';
4
5
  export interface MediaItem {
5
6
  id: string;
6
7
  name: string;
@@ -76,6 +77,11 @@ export interface ICaptionGenerationService {
76
77
  /** Polling interval in milliseconds for caption status checks. Defaults to 5000. */
77
78
  pollingIntervalMs?: number;
78
79
  }
80
+ /** Configuration for cloud media upload (S3 or GCS). Credentials are configured via env on the upload API backend. */
81
+ export interface UploadConfig {
82
+ uploadApiUrl: string;
83
+ provider: "s3" | "gcs";
84
+ }
79
85
  export interface StudioConfig extends VideoEditorConfig {
80
86
  /** Canvas behavior options (e.g. enableShiftAxisLock). Same as editorConfig.canvasConfig in TwickEditor. */
81
87
  canvasConfig?: CanvasConfig;
@@ -86,13 +92,23 @@ export interface StudioConfig extends VideoEditorConfig {
86
92
  * Implement this in your application code to provide API endpoints
87
93
  */
88
94
  captionGenerationService?: ICaptionGenerationService;
95
+ /** Image generation service for polling-based async image generation */
96
+ imageGenerationService?: import('./generation').IImageGenerationService;
97
+ /** Video generation service for polling-based async video generation */
98
+ videoGenerationService?: import('./generation').IVideoGenerationService;
89
99
  exportVideo?: (project: ProjectJSON, videoSettings: VideoSettings) => Promise<Result>;
100
+ /**
101
+ * When set, media panels show cloud upload (S3 or GCS). Backend must be configured with env (e.g. FILE_UPLOADER_S3_* or GOOGLE_CLOUD_*).
102
+ * See cloud-functions/cors/ and file-uploader README for CORS and credentials.
103
+ */
104
+ uploadConfig?: UploadConfig;
90
105
  }
91
106
  export interface PanelProps {
92
107
  selectedElement?: TrackElement | null;
93
108
  videoResolution: Size;
94
109
  addElement?: (item: TrackElement) => void;
95
110
  updateElement?: (item: TrackElement) => void;
111
+ uploadConfig?: UploadConfig;
96
112
  }
97
113
  export interface PropertiesPanelProps {
98
114
  selectedElement?: TrackElement | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twick/studio",
3
- "version": "0.15.18",
3
+ "version": "0.15.20",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",
@@ -33,14 +33,15 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@twick/canvas": "0.15.18",
37
- "@twick/core": "^0.15.18",
38
- "@twick/live-player": "0.15.18",
39
- "@twick/media-utils": "0.15.18",
40
- "@twick/player-react": "^0.15.18",
41
- "@twick/timeline": "0.15.18",
42
- "@twick/video-editor": "0.15.18",
43
- "@twick/visualizer": "0.15.18",
36
+ "@twick/ai-models": "0.15.20",
37
+ "@twick/canvas": "0.15.20",
38
+ "@twick/core": "^0.15.20",
39
+ "@twick/live-player": "0.15.20",
40
+ "@twick/media-utils": "0.15.20",
41
+ "@twick/player-react": "^0.15.20",
42
+ "@twick/timeline": "0.15.20",
43
+ "@twick/video-editor": "0.15.20",
44
+ "@twick/visualizer": "0.15.20",
44
45
  "lucide-react": "^0.511.0"
45
46
  },
46
47
  "peerDependencies": {
@@ -53,9 +54,9 @@
53
54
  "@types/react-dom": "^18.0.0 || ^19.0.0",
54
55
  "react": "^18.0.0 || ^19.0.0",
55
56
  "react-dom": "^18.0.0 || ^19.0.0",
56
- "@twick/timeline": "0.15.18",
57
- "@twick/live-player": "0.15.18",
58
- "@twick/video-editor": "0.15.18",
57
+ "@twick/timeline": "0.15.20",
58
+ "@twick/live-player": "0.15.20",
59
+ "@twick/video-editor": "0.15.20",
59
60
  "rimraf": "^5.0.5",
60
61
  "typedoc": "^0.25.8",
61
62
  "typedoc-plugin-markdown": "^3.17.1",