@clipkit/editor 1.0.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/LICENSE +201 -0
- package/README.md +51 -0
- package/dist/Editor.d.ts +3 -0
- package/dist/Editor.d.ts.map +1 -0
- package/dist/Editor.js +73 -0
- package/dist/Editor.js.map +1 -0
- package/dist/ExportDialog.d.ts +12 -0
- package/dist/ExportDialog.d.ts.map +1 -0
- package/dist/ExportDialog.js +30 -0
- package/dist/ExportDialog.js.map +1 -0
- package/dist/MotionPathOverlay.d.ts +5 -0
- package/dist/MotionPathOverlay.d.ts.map +1 -0
- package/dist/MotionPathOverlay.js +156 -0
- package/dist/MotionPathOverlay.js.map +1 -0
- package/dist/PerfHud.d.ts +2 -0
- package/dist/PerfHud.d.ts.map +1 -0
- package/dist/PerfHud.js +85 -0
- package/dist/PerfHud.js.map +1 -0
- package/dist/Stage.d.ts +2 -0
- package/dist/Stage.d.ts.map +1 -0
- package/dist/Stage.js +406 -0
- package/dist/Stage.js.map +1 -0
- package/dist/StageOverlay.d.ts +7 -0
- package/dist/StageOverlay.d.ts.map +1 -0
- package/dist/StageOverlay.js +508 -0
- package/dist/StageOverlay.js.map +1 -0
- package/dist/commands.d.ts +18 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +103 -0
- package/dist/commands.js.map +1 -0
- package/dist/configuration.d.ts +9 -0
- package/dist/configuration.d.ts.map +1 -0
- package/dist/configuration.js +21 -0
- package/dist/configuration.js.map +1 -0
- package/dist/controls/AnimationsStack.d.ts +8 -0
- package/dist/controls/AnimationsStack.d.ts.map +1 -0
- package/dist/controls/AnimationsStack.js +188 -0
- package/dist/controls/AnimationsStack.js.map +1 -0
- package/dist/controls/CameraControl.d.ts +19 -0
- package/dist/controls/CameraControl.d.ts.map +1 -0
- package/dist/controls/CameraControl.js +47 -0
- package/dist/controls/CameraControl.js.map +1 -0
- package/dist/controls/CaptionLengthControl.d.ts +5 -0
- package/dist/controls/CaptionLengthControl.d.ts.map +1 -0
- package/dist/controls/CaptionLengthControl.js +11 -0
- package/dist/controls/CaptionLengthControl.js.map +1 -0
- package/dist/controls/CaptionTranscribe.d.ts +2 -0
- package/dist/controls/CaptionTranscribe.d.ts.map +1 -0
- package/dist/controls/CaptionTranscribe.js +95 -0
- package/dist/controls/CaptionTranscribe.js.map +1 -0
- package/dist/controls/ColorPicker.d.ts +17 -0
- package/dist/controls/ColorPicker.d.ts.map +1 -0
- package/dist/controls/ColorPicker.js +354 -0
- package/dist/controls/ColorPicker.js.map +1 -0
- package/dist/controls/ControlRenderer.d.ts +20 -0
- package/dist/controls/ControlRenderer.d.ts.map +1 -0
- package/dist/controls/ControlRenderer.js +106 -0
- package/dist/controls/ControlRenderer.js.map +1 -0
- package/dist/controls/CropControl.d.ts +2 -0
- package/dist/controls/CropControl.d.ts.map +1 -0
- package/dist/controls/CropControl.js +177 -0
- package/dist/controls/CropControl.js.map +1 -0
- package/dist/controls/EffectsStack.d.ts +8 -0
- package/dist/controls/EffectsStack.d.ts.map +1 -0
- package/dist/controls/EffectsStack.js +89 -0
- package/dist/controls/EffectsStack.js.map +1 -0
- package/dist/controls/GradeControl.d.ts +2 -0
- package/dist/controls/GradeControl.d.ts.map +1 -0
- package/dist/controls/GradeControl.js +120 -0
- package/dist/controls/GradeControl.js.map +1 -0
- package/dist/controls/KeyframeDiamond.d.ts +11 -0
- package/dist/controls/KeyframeDiamond.d.ts.map +1 -0
- package/dist/controls/KeyframeDiamond.js +87 -0
- package/dist/controls/KeyframeDiamond.js.map +1 -0
- package/dist/controls/LightingControls.d.ts +24 -0
- package/dist/controls/LightingControls.d.ts.map +1 -0
- package/dist/controls/LightingControls.js +108 -0
- package/dist/controls/LightingControls.js.map +1 -0
- package/dist/controls/ShapePresetControl.d.ts +4 -0
- package/dist/controls/ShapePresetControl.d.ts.map +1 -0
- package/dist/controls/ShapePresetControl.js +30 -0
- package/dist/controls/ShapePresetControl.js.map +1 -0
- package/dist/controls/ValueField.d.ts +10 -0
- package/dist/controls/ValueField.d.ts.map +1 -0
- package/dist/controls/ValueField.js +158 -0
- package/dist/controls/ValueField.js.map +1 -0
- package/dist/controls/VolumeControl.d.ts +10 -0
- package/dist/controls/VolumeControl.d.ts.map +1 -0
- package/dist/controls/VolumeControl.js +75 -0
- package/dist/controls/VolumeControl.js.map +1 -0
- package/dist/controls/compound.d.ts +46 -0
- package/dist/controls/compound.d.ts.map +1 -0
- package/dist/controls/compound.js +160 -0
- package/dist/controls/compound.js.map +1 -0
- package/dist/controls/layout.d.ts +38 -0
- package/dist/controls/layout.d.ts.map +1 -0
- package/dist/controls/layout.js +162 -0
- package/dist/controls/layout.js.map +1 -0
- package/dist/controls/primitives.d.ts +83 -0
- package/dist/controls/primitives.d.ts.map +1 -0
- package/dist/controls/primitives.js +194 -0
- package/dist/controls/primitives.js.map +1 -0
- package/dist/controls/transcribe.worker.d.ts +2 -0
- package/dist/controls/transcribe.worker.d.ts.map +1 -0
- package/dist/controls/transcribe.worker.js +22 -0
- package/dist/controls/transcribe.worker.js.map +1 -0
- package/dist/frame/AddElementBar.d.ts +2 -0
- package/dist/frame/AddElementBar.d.ts.map +1 -0
- package/dist/frame/AddElementBar.js +103 -0
- package/dist/frame/AddElementBar.js.map +1 -0
- package/dist/frame/Breadcrumbs.d.ts +2 -0
- package/dist/frame/Breadcrumbs.d.ts.map +1 -0
- package/dist/frame/Breadcrumbs.js +32 -0
- package/dist/frame/Breadcrumbs.js.map +1 -0
- package/dist/frame/GroupFlash.d.ts +2 -0
- package/dist/frame/GroupFlash.d.ts.map +1 -0
- package/dist/frame/GroupFlash.js +65 -0
- package/dist/frame/GroupFlash.js.map +1 -0
- package/dist/frame/Resizable.d.ts +12 -0
- package/dist/frame/Resizable.d.ts.map +1 -0
- package/dist/frame/Resizable.js +37 -0
- package/dist/frame/Resizable.js.map +1 -0
- package/dist/frame/Section.d.ts +23 -0
- package/dist/frame/Section.d.ts.map +1 -0
- package/dist/frame/Section.js +23 -0
- package/dist/frame/Section.js.map +1 -0
- package/dist/frame/ZoomControl.d.ts +9 -0
- package/dist/frame/ZoomControl.d.ts.map +1 -0
- package/dist/frame/ZoomControl.js +15 -0
- package/dist/frame/ZoomControl.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/camera-gizmo.d.ts +15 -0
- package/dist/lib/camera-gizmo.d.ts.map +1 -0
- package/dist/lib/camera-gizmo.js +57 -0
- package/dist/lib/camera-gizmo.js.map +1 -0
- package/dist/lib/camera-tool.d.ts +43 -0
- package/dist/lib/camera-tool.d.ts.map +1 -0
- package/dist/lib/camera-tool.js +80 -0
- package/dist/lib/camera-tool.js.map +1 -0
- package/dist/lib/caption-segments.d.ts +17 -0
- package/dist/lib/caption-segments.d.ts.map +1 -0
- package/dist/lib/caption-segments.js +50 -0
- package/dist/lib/caption-segments.js.map +1 -0
- package/dist/lib/group.d.ts +12 -0
- package/dist/lib/group.d.ts.map +1 -0
- package/dist/lib/group.js +61 -0
- package/dist/lib/group.js.map +1 -0
- package/dist/lib/keyframes.d.ts +29 -0
- package/dist/lib/keyframes.d.ts.map +1 -0
- package/dist/lib/keyframes.js +92 -0
- package/dist/lib/keyframes.js.map +1 -0
- package/dist/lib/sfx-preview.d.ts +18 -0
- package/dist/lib/sfx-preview.d.ts.map +1 -0
- package/dist/lib/sfx-preview.js +74 -0
- package/dist/lib/sfx-preview.js.map +1 -0
- package/dist/lib/shape-presets.d.ts +35 -0
- package/dist/lib/shape-presets.d.ts.map +1 -0
- package/dist/lib/shape-presets.js +81 -0
- package/dist/lib/shape-presets.js.map +1 -0
- package/dist/lib/ungroup.d.ts +12 -0
- package/dist/lib/ungroup.d.ts.map +1 -0
- package/dist/lib/ungroup.js +40 -0
- package/dist/lib/ungroup.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/panels/AssetsPanel.d.ts +2 -0
- package/dist/panels/AssetsPanel.d.ts.map +1 -0
- package/dist/panels/AssetsPanel.js +108 -0
- package/dist/panels/AssetsPanel.js.map +1 -0
- package/dist/panels/InspectorPanel.d.ts +2 -0
- package/dist/panels/InspectorPanel.d.ts.map +1 -0
- package/dist/panels/InspectorPanel.js +286 -0
- package/dist/panels/InspectorPanel.js.map +1 -0
- package/dist/panels/InterpolationPanel.d.ts +2 -0
- package/dist/panels/InterpolationPanel.d.ts.map +1 -0
- package/dist/panels/InterpolationPanel.js +226 -0
- package/dist/panels/InterpolationPanel.js.map +1 -0
- package/dist/panels/LayersTree.d.ts +4 -0
- package/dist/panels/LayersTree.d.ts.map +1 -0
- package/dist/panels/LayersTree.js +137 -0
- package/dist/panels/LayersTree.js.map +1 -0
- package/dist/panels/LeftRail.d.ts +6 -0
- package/dist/panels/LeftRail.d.ts.map +1 -0
- package/dist/panels/LeftRail.js +35 -0
- package/dist/panels/LeftRail.js.map +1 -0
- package/dist/panels/SourcePanel.d.ts +2 -0
- package/dist/panels/SourcePanel.d.ts.map +1 -0
- package/dist/panels/SourcePanel.js +470 -0
- package/dist/panels/SourcePanel.js.map +1 -0
- package/dist/panels/TimelinePanel.d.ts +11 -0
- package/dist/panels/TimelinePanel.d.ts.map +1 -0
- package/dist/panels/TimelinePanel.js +98 -0
- package/dist/panels/TimelinePanel.js.map +1 -0
- package/dist/panels/assets/SfxBrowser.d.ts +2 -0
- package/dist/panels/assets/SfxBrowser.d.ts.map +1 -0
- package/dist/panels/assets/SfxBrowser.js +49 -0
- package/dist/panels/assets/SfxBrowser.js.map +1 -0
- package/dist/panels/assets/use-assets.d.ts +11 -0
- package/dist/panels/assets/use-assets.d.ts.map +1 -0
- package/dist/panels/assets/use-assets.js +84 -0
- package/dist/panels/assets/use-assets.js.map +1 -0
- package/dist/panels/assets/use-sfx.d.ts +6 -0
- package/dist/panels/assets/use-sfx.d.ts.map +1 -0
- package/dist/panels/assets/use-sfx.js +47 -0
- package/dist/panels/assets/use-sfx.js.map +1 -0
- package/dist/panels/timeline/CanvasTimeline.d.ts +7 -0
- package/dist/panels/timeline/CanvasTimeline.d.ts.map +1 -0
- package/dist/panels/timeline/CanvasTimeline.js +1536 -0
- package/dist/panels/timeline/CanvasTimeline.js.map +1 -0
- package/dist/panels/timeline/Clip.d.ts +37 -0
- package/dist/panels/timeline/Clip.d.ts.map +1 -0
- package/dist/panels/timeline/Clip.js +176 -0
- package/dist/panels/timeline/Clip.js.map +1 -0
- package/dist/panels/timeline/CurveEditor.d.ts +2 -0
- package/dist/panels/timeline/CurveEditor.d.ts.map +1 -0
- package/dist/panels/timeline/CurveEditor.js +233 -0
- package/dist/panels/timeline/CurveEditor.js.map +1 -0
- package/dist/panels/timeline/MixerRail.d.ts +7 -0
- package/dist/panels/timeline/MixerRail.d.ts.map +1 -0
- package/dist/panels/timeline/MixerRail.js +295 -0
- package/dist/panels/timeline/MixerRail.js.map +1 -0
- package/dist/panels/timeline/Waveform.d.ts +11 -0
- package/dist/panels/timeline/Waveform.d.ts.map +1 -0
- package/dist/panels/timeline/Waveform.js +63 -0
- package/dist/panels/timeline/Waveform.js.map +1 -0
- package/dist/panels/timeline/clip-style.d.ts +10 -0
- package/dist/panels/timeline/clip-style.d.ts.map +1 -0
- package/dist/panels/timeline/clip-style.js +20 -0
- package/dist/panels/timeline/clip-style.js.map +1 -0
- package/dist/panels/timeline/filmstrip.d.ts +7 -0
- package/dist/panels/timeline/filmstrip.d.ts.map +1 -0
- package/dist/panels/timeline/filmstrip.js +135 -0
- package/dist/panels/timeline/filmstrip.js.map +1 -0
- package/dist/panels/timeline/timeline-layout.d.ts +65 -0
- package/dist/panels/timeline/timeline-layout.d.ts.map +1 -0
- package/dist/panels/timeline/timeline-layout.js +118 -0
- package/dist/panels/timeline/timeline-layout.js.map +1 -0
- package/dist/types.d.ts +68 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +56 -0
- package/src/styles.css +185 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyframes.js","sourceRoot":"","sources":["../../src/lib/keyframes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Sfx } from '@clipkit/sfx';
|
|
2
|
+
/** Stop whatever preview is currently playing (no-op if nothing is). */
|
|
3
|
+
export declare function stopSfx(): void;
|
|
4
|
+
/**
|
|
5
|
+
* Play a rendered Sfx once through the shared AudioContext. Cuts off any
|
|
6
|
+
* preview already playing (clicking around the catalog never stacks sounds).
|
|
7
|
+
* Returns the duration in seconds, or 0 if audio isn't available.
|
|
8
|
+
*/
|
|
9
|
+
export declare function playSfx(sfx: Sfx): number;
|
|
10
|
+
/** Length of a rendered Sfx in seconds. */
|
|
11
|
+
export declare function sfxDuration(sfx: Sfx): number;
|
|
12
|
+
/**
|
|
13
|
+
* Encode a rendered Sfx to a WAV blob and return an object-URL usable as an
|
|
14
|
+
* `audio` element's `source`. Caller owns the URL — revoke it when the element
|
|
15
|
+
* that references it is removed (or on unmount) to avoid leaking blobs.
|
|
16
|
+
*/
|
|
17
|
+
export declare function sfxToObjectUrl(sfx: Sfx): string;
|
|
18
|
+
//# sourceMappingURL=sfx-preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sfx-preview.d.ts","sourceRoot":"","sources":["../../src/lib/sfx-preview.ts"],"names":[],"mappings":"AASA,OAAO,EAAa,KAAK,GAAG,EAAE,MAAM,cAAc,CAAC;AAenD,wEAAwE;AACxE,wBAAgB,OAAO,IAAI,IAAI,CAK9B;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAmBxC;AAED,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAK/C"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Browser-side SFX preview + drop helpers. The catalog's renderSfx() gives us
|
|
2
|
+
// raw stereo PCM (a finished Sfx); here we either (a) play it through WebAudio
|
|
3
|
+
// for an instant preview, or (b) encode it to a WAV object-URL so it can be
|
|
4
|
+
// dropped on the timeline as a runtime-native `audio` element.
|
|
5
|
+
//
|
|
6
|
+
// Client-only: AudioContext / Blob / URL exist in the browser. The single
|
|
7
|
+
// shared AudioContext is created lazily on the first user gesture (a click),
|
|
8
|
+
// which is what browsers require for audio to start.
|
|
9
|
+
import { encodeWav } from '@clipkit/sfx';
|
|
10
|
+
let ctx = null;
|
|
11
|
+
let current = null;
|
|
12
|
+
function audioContext() {
|
|
13
|
+
if (typeof window === 'undefined')
|
|
14
|
+
return null;
|
|
15
|
+
if (!ctx) {
|
|
16
|
+
const Ctor = window.AudioContext ?? window.webkitAudioContext;
|
|
17
|
+
if (!Ctor)
|
|
18
|
+
return null;
|
|
19
|
+
ctx = new Ctor();
|
|
20
|
+
}
|
|
21
|
+
return ctx;
|
|
22
|
+
}
|
|
23
|
+
/** Stop whatever preview is currently playing (no-op if nothing is). */
|
|
24
|
+
export function stopSfx() {
|
|
25
|
+
if (current) {
|
|
26
|
+
try {
|
|
27
|
+
current.stop();
|
|
28
|
+
}
|
|
29
|
+
catch { /* already stopped */ }
|
|
30
|
+
current = null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Play a rendered Sfx once through the shared AudioContext. Cuts off any
|
|
35
|
+
* preview already playing (clicking around the catalog never stacks sounds).
|
|
36
|
+
* Returns the duration in seconds, or 0 if audio isn't available.
|
|
37
|
+
*/
|
|
38
|
+
export function playSfx(sfx) {
|
|
39
|
+
const ac = audioContext();
|
|
40
|
+
if (!ac)
|
|
41
|
+
return 0;
|
|
42
|
+
if (ac.state === 'suspended')
|
|
43
|
+
void ac.resume();
|
|
44
|
+
stopSfx();
|
|
45
|
+
const n = Math.min(sfx.left.length, sfx.right.length);
|
|
46
|
+
const buf = ac.createBuffer(2, n, sfx.sampleRate);
|
|
47
|
+
// getChannelData().set() sidesteps copyToChannel's strict typed-array generic.
|
|
48
|
+
buf.getChannelData(0).set(sfx.left.subarray(0, n));
|
|
49
|
+
buf.getChannelData(1).set(sfx.right.subarray(0, n));
|
|
50
|
+
const src = ac.createBufferSource();
|
|
51
|
+
src.buffer = buf;
|
|
52
|
+
src.connect(ac.destination);
|
|
53
|
+
src.onended = () => { if (current === src)
|
|
54
|
+
current = null; };
|
|
55
|
+
src.start();
|
|
56
|
+
current = src;
|
|
57
|
+
return n / sfx.sampleRate;
|
|
58
|
+
}
|
|
59
|
+
/** Length of a rendered Sfx in seconds. */
|
|
60
|
+
export function sfxDuration(sfx) {
|
|
61
|
+
return Math.min(sfx.left.length, sfx.right.length) / sfx.sampleRate;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Encode a rendered Sfx to a WAV blob and return an object-URL usable as an
|
|
65
|
+
* `audio` element's `source`. Caller owns the URL — revoke it when the element
|
|
66
|
+
* that references it is removed (or on unmount) to avoid leaking blobs.
|
|
67
|
+
*/
|
|
68
|
+
export function sfxToObjectUrl(sfx) {
|
|
69
|
+
const wav = encodeWav(sfx);
|
|
70
|
+
// Copy into a fresh ArrayBuffer so the Blob owns contiguous bytes.
|
|
71
|
+
const blob = new Blob([wav.slice().buffer], { type: 'audio/wav' });
|
|
72
|
+
return URL.createObjectURL(blob);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=sfx-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sfx-preview.js","sourceRoot":"","sources":["../../src/lib/sfx-preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ShapeElement } from '@clipkit/protocol';
|
|
2
|
+
export type ShapePreset = {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
} & ({
|
|
6
|
+
form: 'rect';
|
|
7
|
+
radius: number;
|
|
8
|
+
} | {
|
|
9
|
+
form: 'ellipse';
|
|
10
|
+
} | {
|
|
11
|
+
form: 'fill';
|
|
12
|
+
d: string;
|
|
13
|
+
vb: [number, number, number, number];
|
|
14
|
+
} | {
|
|
15
|
+
form: 'stroke';
|
|
16
|
+
d: string;
|
|
17
|
+
vb: [number, number, number, number];
|
|
18
|
+
});
|
|
19
|
+
export declare const SHAPE_PRESETS: ShapePreset[];
|
|
20
|
+
/** The shape-specific fields for a preset — primitive (`shape`) or path form. */
|
|
21
|
+
export declare function presetFields(p: ShapePreset, color: string): Partial<ShapeElement>;
|
|
22
|
+
/** Detect a shape element's current preset id (by `shape` or matching path `d`). */
|
|
23
|
+
export declare function detectPreset(el: {
|
|
24
|
+
shape?: string;
|
|
25
|
+
border_radius?: unknown;
|
|
26
|
+
paths?: Array<{
|
|
27
|
+
d?: unknown;
|
|
28
|
+
}>;
|
|
29
|
+
} | undefined): string;
|
|
30
|
+
/** A clean designed icon for the preset (24 grid, stroked). */
|
|
31
|
+
export declare function PresetIcon({ p, className }: {
|
|
32
|
+
p: ShapePreset;
|
|
33
|
+
className?: string;
|
|
34
|
+
}): import("react").JSX.Element;
|
|
35
|
+
//# sourceMappingURL=shape-presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape-presets.d.ts","sourceRoot":"","sources":["../../src/lib/shape-presets.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AA+BtD,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,CACtD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CACtE,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,WAAW,EAWtC,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAKjF;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,CAAC,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,SAAS,GAAG,MAAM,CAMhI;AAiBD,+DAA+D;AAC/D,wBAAgB,UAAU,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,CAAC,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAMlF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from './utils.js';
|
|
3
|
+
const r0 = (n) => Math.round(n);
|
|
4
|
+
function geom(pts) {
|
|
5
|
+
const xs = pts.map((p) => p[0]);
|
|
6
|
+
const ys = pts.map((p) => p[1]);
|
|
7
|
+
const minX = Math.min(...xs), maxX = Math.max(...xs), minY = Math.min(...ys), maxY = Math.max(...ys);
|
|
8
|
+
const d = `M ${pts.map((p) => `${r0(p[0])} ${r0(p[1])}`).join(' L ')} Z`;
|
|
9
|
+
return { d, vb: [r0(minX), r0(minY), r0(maxX - minX), r0(maxY - minY)] };
|
|
10
|
+
}
|
|
11
|
+
function polyPts(n, rotDeg = -90, r = 50) {
|
|
12
|
+
const out = [];
|
|
13
|
+
for (let i = 0; i < n; i++) {
|
|
14
|
+
const a = ((rotDeg + (i * 360) / n) * Math.PI) / 180;
|
|
15
|
+
out.push([50 + r * Math.cos(a), 50 + r * Math.sin(a)]);
|
|
16
|
+
}
|
|
17
|
+
return out;
|
|
18
|
+
}
|
|
19
|
+
function starPts(points = 5, rotDeg = -90, ro = 50, ri = 23) {
|
|
20
|
+
const out = [];
|
|
21
|
+
for (let i = 0; i < points * 2; i++) {
|
|
22
|
+
const r = i % 2 ? ri : ro;
|
|
23
|
+
const a = ((rotDeg + (i * 180) / points) * Math.PI) / 180;
|
|
24
|
+
out.push([50 + r * Math.cos(a), 50 + r * Math.sin(a)]);
|
|
25
|
+
}
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
28
|
+
const ARROW = [[10, 38], [58, 38], [58, 20], [92, 50], [58, 80], [58, 62], [10, 62]];
|
|
29
|
+
const fill = (pts) => geom(pts);
|
|
30
|
+
export const SHAPE_PRESETS = [
|
|
31
|
+
{ id: 'rectangle', label: 'Rectangle', form: 'rect', radius: 0 },
|
|
32
|
+
{ id: 'rounded', label: 'Rounded', form: 'rect', radius: 32 },
|
|
33
|
+
{ id: 'ellipse', label: 'Ellipse', form: 'ellipse' },
|
|
34
|
+
{ id: 'triangle', label: 'Triangle', form: 'fill', ...fill(polyPts(3)) },
|
|
35
|
+
{ id: 'diamond', label: 'Diamond', form: 'fill', ...fill(polyPts(4)) },
|
|
36
|
+
{ id: 'pentagon', label: 'Pentagon', form: 'fill', ...fill(polyPts(5)) },
|
|
37
|
+
{ id: 'hexagon', label: 'Hexagon', form: 'fill', ...fill(polyPts(6, 0)) },
|
|
38
|
+
{ id: 'star', label: 'Star', form: 'fill', ...fill(starPts(5)) },
|
|
39
|
+
{ id: 'arrow', label: 'Arrow', form: 'fill', ...fill(ARROW) },
|
|
40
|
+
{ id: 'line', label: 'Line', form: 'stroke', d: 'M 0 50 L 100 50', vb: [0, 46.5, 100, 7] },
|
|
41
|
+
];
|
|
42
|
+
/** The shape-specific fields for a preset — primitive (`shape`) or path form. */
|
|
43
|
+
export function presetFields(p, color) {
|
|
44
|
+
if (p.form === 'rect')
|
|
45
|
+
return { shape: 'rectangle', border_radius: p.radius, fill_color: color, paths: undefined, view_box: undefined };
|
|
46
|
+
if (p.form === 'ellipse')
|
|
47
|
+
return { shape: 'ellipse', fill_color: color, paths: undefined, view_box: undefined };
|
|
48
|
+
if (p.form === 'stroke')
|
|
49
|
+
return { paths: [{ d: p.d, stroke: color, stroke_width: 7, stroke_linecap: 'round' }], view_box: p.vb, shape: undefined, border_radius: undefined };
|
|
50
|
+
return { paths: [{ d: p.d, fill: color }], view_box: p.vb, shape: undefined, border_radius: undefined };
|
|
51
|
+
}
|
|
52
|
+
/** Detect a shape element's current preset id (by `shape` or matching path `d`). */
|
|
53
|
+
export function detectPreset(el) {
|
|
54
|
+
if (!el)
|
|
55
|
+
return 'rectangle';
|
|
56
|
+
const d = el.paths?.[0]?.d;
|
|
57
|
+
if (typeof d === 'string')
|
|
58
|
+
return SHAPE_PRESETS.find((p) => 'd' in p && p.d === d)?.id ?? 'rectangle';
|
|
59
|
+
if (el.shape === 'ellipse')
|
|
60
|
+
return 'ellipse';
|
|
61
|
+
return typeof el.border_radius === 'number' && el.border_radius > 0 ? 'rounded' : 'rectangle';
|
|
62
|
+
}
|
|
63
|
+
// Hand-tuned icons on a 24 grid — crisp at small sizes (unlike the raw element
|
|
64
|
+
// geometry, which is built for a 100-unit viewBox).
|
|
65
|
+
const ICONS = {
|
|
66
|
+
rectangle: _jsx("rect", { x: "4", y: "4", width: "16", height: "16", rx: "2.5" }),
|
|
67
|
+
rounded: _jsx("rect", { x: "4", y: "4", width: "16", height: "16", rx: "6" }),
|
|
68
|
+
ellipse: _jsx("ellipse", { cx: "12", cy: "12", rx: "9", ry: "6.5" }),
|
|
69
|
+
triangle: _jsx("path", { d: "M12 4 L20 19 L4 19 Z" }),
|
|
70
|
+
diamond: _jsx("path", { d: "M12 3 L21 12 L12 21 L3 12 Z" }),
|
|
71
|
+
pentagon: _jsx("path", { d: "M12 3 L20.6 9.2 L17.3 20 L6.7 20 L3.4 9.2 Z" }),
|
|
72
|
+
hexagon: _jsx("path", { d: "M8 3.8 L16 3.8 L21 12 L16 20.2 L8 20.2 L3 12 Z" }),
|
|
73
|
+
star: _jsx("path", { d: "M12 2.5 L14.5 9 L21.5 9.2 L16 13.5 L17.8 20.3 L12 16.3 L6.2 20.3 L8 13.5 L2.5 9.2 L9.5 9 Z" }),
|
|
74
|
+
arrow: _jsx("path", { d: "M3.5 12 H16 M11 6.5 L17 12 L11 17.5" }),
|
|
75
|
+
line: _jsx("path", { d: "M4 18 L20 6" }),
|
|
76
|
+
};
|
|
77
|
+
/** A clean designed icon for the preset (24 grid, stroked). */
|
|
78
|
+
export function PresetIcon({ p, className }) {
|
|
79
|
+
return (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 1.6, strokeLinejoin: "round", strokeLinecap: "round", className: cn('shrink-0', className ?? 'size-4'), children: ICONS[p.id] ?? ICONS.rectangle }));
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=shape-presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape-presets.js","sourceRoot":"","sources":["../../src/lib/shape-presets.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Element } from '@clipkit/protocol';
|
|
2
|
+
export interface UngroupResult {
|
|
3
|
+
elements: Element[];
|
|
4
|
+
liftedIds: string[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Replace the top-level group `groupId` with its children, in place. Returns the
|
|
8
|
+
* new top-level elements array + the lifted children's ids (for re-selection),
|
|
9
|
+
* or null if `groupId` is not a top-level group.
|
|
10
|
+
*/
|
|
11
|
+
export declare function ungroupInElements(elements: readonly Element[], groupId: string): UngroupResult | null;
|
|
12
|
+
//# sourceMappingURL=ungroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ungroup.d.ts","sourceRoot":"","sources":["../../src/lib/ungroup.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,mBAAmB,CAAC;AAK/D,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAuBrG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Ungroup — lift a top-level group's children back to the top level.
|
|
2
|
+
//
|
|
3
|
+
// Bakes the group's time offset onto each child (so timing is preserved), plus
|
|
4
|
+
// a simple static translate when the group has no scale/rotation (the common
|
|
5
|
+
// "organizational" group ungroups cleanly). Groups with scale/rotation/keyframed
|
|
6
|
+
// transforms lift without spatial baking — a best-effort that may shift the
|
|
7
|
+
// children; full matrix baking is out of scope for v1.
|
|
8
|
+
const numberOr = (v, d) => (typeof v === 'number' && Number.isFinite(v) ? v : d);
|
|
9
|
+
const round3 = (n) => Math.round(n * 1000) / 1000;
|
|
10
|
+
/**
|
|
11
|
+
* Replace the top-level group `groupId` with its children, in place. Returns the
|
|
12
|
+
* new top-level elements array + the lifted children's ids (for re-selection),
|
|
13
|
+
* or null if `groupId` is not a top-level group.
|
|
14
|
+
*/
|
|
15
|
+
export function ungroupInElements(elements, groupId) {
|
|
16
|
+
const idx = elements.findIndex((e) => e.id === groupId && e.type === 'group');
|
|
17
|
+
if (idx < 0)
|
|
18
|
+
return null;
|
|
19
|
+
const group = elements[idx];
|
|
20
|
+
const g = group;
|
|
21
|
+
const groupTime = numberOr(group.time, 0);
|
|
22
|
+
const warped = g.rotation !== undefined || g.scale !== undefined || g.x_scale !== undefined || g.y_scale !== undefined;
|
|
23
|
+
const gx = !warped && typeof g.x === 'number' ? g.x : 0;
|
|
24
|
+
const gy = !warped && typeof g.y === 'number' ? g.y : 0;
|
|
25
|
+
const liftedIds = [];
|
|
26
|
+
const lifted = group.elements.map((child, i) => {
|
|
27
|
+
const out = { ...child };
|
|
28
|
+
out.time = round3(groupTime + numberOr(child.time, 0));
|
|
29
|
+
if (gx && typeof out.x === 'number')
|
|
30
|
+
out.x = out.x + gx;
|
|
31
|
+
if (gy && typeof out.y === 'number')
|
|
32
|
+
out.y = out.y + gy;
|
|
33
|
+
if (!out.id)
|
|
34
|
+
out.id = `${group.id ?? 'group'}-${i}`;
|
|
35
|
+
liftedIds.push(out.id);
|
|
36
|
+
return out;
|
|
37
|
+
});
|
|
38
|
+
return { elements: [...elements.slice(0, idx), ...lifted, ...elements.slice(idx + 1)], liftedIds };
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=ungroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ungroup.js","sourceRoot":"","sources":["../../src/lib/ungroup.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,iFAAiF;AACjF,4EAA4E;AAC5E,uDAAuD;AAIvD,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1G,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AAOlE;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA4B,EAAE,OAAe;IAC7E,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC9E,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAiB,CAAC;IAE5C,MAAM,CAAC,GAAG,KAA+H,CAAC;IAC1I,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC;IACvH,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAExD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAc,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAyE,CAAC;QAChG,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAE,KAA4B,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/E,IAAI,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACxD,IAAI,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,EAAE,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACpD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvB,OAAO,GAAc,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;AACrG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAElD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Standard shadcn `cn` helper — merges Tailwind classes intelligently.
|
|
2
|
+
// `clsx` handles falsy values + arrays + objects; `twMerge` resolves
|
|
3
|
+
// conflicts (e.g. `px-2` then `px-4` keeps the second one).
|
|
4
|
+
import { clsx } from 'clsx';
|
|
5
|
+
import { twMerge } from 'tailwind-merge';
|
|
6
|
+
export function cn(...inputs) {
|
|
7
|
+
return twMerge(clsx(inputs));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,qEAAqE;AACrE,4DAA4D;AAE5D,OAAO,EAAE,IAAI,EAAmB,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetsPanel.d.ts","sourceRoot":"","sources":["../../src/panels/AssetsPanel.tsx"],"names":[],"mappings":"AAuBA,wBAAgB,WAAW,gCAyC1B"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// Assets tab — the "stuff you can put on the timeline" hub. Organized into
|
|
2
|
+
// sections (Your media / Sound effects / Music…), each a compact inline preview
|
|
3
|
+
// with a "See all" that expands to a full browser. This matches how common
|
|
4
|
+
// editors present a media area: a project bin alongside libraries you
|
|
5
|
+
// pull from. Your media is backed by the injected AssetStore; Sound effects is
|
|
6
|
+
// the @clipkit/sfx catalog (drops runtime-native `audio` elements).
|
|
7
|
+
'use client';
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { useRef, useState } from 'react';
|
|
10
|
+
import { Play, Upload, X, Film, Music, Image as ImageIcon } from 'lucide-react';
|
|
11
|
+
import { listSfx } from '@clipkit/sfx';
|
|
12
|
+
import { cn } from '../lib/utils.js';
|
|
13
|
+
import { SfxBrowser } from './assets/SfxBrowser.js';
|
|
14
|
+
import { useSfxActions } from './assets/use-sfx.js';
|
|
15
|
+
import { useAssets } from './assets/use-assets.js';
|
|
16
|
+
// A spread of categories for the inline strip (the full list lives behind "See all").
|
|
17
|
+
const FEATURED = ['whoosh', 'impact', 'riser', 'pop', 'ding-correct', 'shimmer'];
|
|
18
|
+
// Media tiles shown inline before "See all" takes over (3 rows of 3).
|
|
19
|
+
const MEDIA_CAP = 9;
|
|
20
|
+
export function AssetsPanel() {
|
|
21
|
+
const [view, setView] = useState('home');
|
|
22
|
+
if (view === 'media') {
|
|
23
|
+
return _jsx(MediaBrowser, { onBack: () => setView('home') });
|
|
24
|
+
}
|
|
25
|
+
if (view === 'sfx') {
|
|
26
|
+
return (_jsxs("div", { className: "flex flex-col h-full", children: [_jsxs("div", { className: "flex items-center gap-1.5 h-7 px-2 border-b border-border shrink-0", children: [_jsx("button", { type: "button", onClick: () => setView('home'), className: "text-[11px] text-muted-foreground hover:text-foreground transition-colors", children: "\u2039 Assets" }), _jsx("span", { className: "text-[11px] text-foreground/90", children: "Sound effects" })] }), _jsx("div", { className: "flex-1 min-h-0", children: _jsx(SfxBrowser, {}) })] }));
|
|
27
|
+
}
|
|
28
|
+
return (_jsxs("div", { className: "flex flex-col h-full overflow-y-auto", children: [_jsx(MediaSection, { onSeeAll: () => setView('media') }), _jsx(Section, { title: "Sound effects", action: { label: 'See all', onClick: () => setView('sfx') }, children: _jsx(SfxStrip, {}) })] }));
|
|
29
|
+
}
|
|
30
|
+
// ── Media bin ─────────────────────────────────────────────────────────────────
|
|
31
|
+
/** Drag-and-drop import handlers + the dragging highlight flag. */
|
|
32
|
+
function useDropImport(importFiles) {
|
|
33
|
+
const [dragOver, setDragOver] = useState(false);
|
|
34
|
+
const handlers = {
|
|
35
|
+
onDragOver: (e) => {
|
|
36
|
+
e.preventDefault();
|
|
37
|
+
setDragOver(true);
|
|
38
|
+
},
|
|
39
|
+
onDragLeave: () => setDragOver(false),
|
|
40
|
+
onDrop: (e) => {
|
|
41
|
+
e.preventDefault();
|
|
42
|
+
setDragOver(false);
|
|
43
|
+
if (e.dataTransfer.files.length)
|
|
44
|
+
importFiles(e.dataTransfer.files);
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
return { dragOver, handlers };
|
|
48
|
+
}
|
|
49
|
+
function FilePicker({ inputRef, onFiles, }) {
|
|
50
|
+
return (_jsx("input", { ref: inputRef, type: "file", multiple: true, accept: "image/*,video/*,audio/*", className: "hidden", onChange: (e) => {
|
|
51
|
+
if (e.target.files)
|
|
52
|
+
onFiles(e.target.files);
|
|
53
|
+
e.target.value = '';
|
|
54
|
+
} }));
|
|
55
|
+
}
|
|
56
|
+
function UploadButton({ onClick, label }) {
|
|
57
|
+
return (_jsxs("button", { type: "button", onClick: onClick, title: "Import media", className: "flex items-center gap-1 h-5 px-1.5 rounded text-[10px] text-muted-foreground hover:text-foreground hover:bg-card transition-colors", children: [_jsx(Upload, { size: 11 }), label && 'Upload'] }));
|
|
58
|
+
}
|
|
59
|
+
function Dropzone({ dragOver, busy, onClick, }) {
|
|
60
|
+
return (_jsxs("button", { type: "button", onClick: onClick, className: cn('w-full grid place-items-center gap-1 h-20 rounded border border-dashed transition-colors', dragOver ? 'border-primary/60 bg-primary/5' : 'border-popover-border hover:border-primary/40'), children: [_jsx(Upload, { size: 14, className: "text-muted-foreground" }), _jsx("span", { className: "text-[10px] text-muted-foreground/70", children: busy ? 'Importing…' : 'Drop or click — image · video · audio' })] }));
|
|
61
|
+
}
|
|
62
|
+
/** The inline "Your media" section — preview tiles capped at MEDIA_CAP. */
|
|
63
|
+
function MediaSection({ onSeeAll }) {
|
|
64
|
+
const { assets, busy, error, importFiles, remove, addToTimeline } = useAssets();
|
|
65
|
+
const inputRef = useRef(null);
|
|
66
|
+
const { dragOver, handlers } = useDropImport(importFiles);
|
|
67
|
+
const pick = () => inputRef.current?.click();
|
|
68
|
+
const shown = assets.slice(0, MEDIA_CAP);
|
|
69
|
+
const overflow = assets.length - shown.length;
|
|
70
|
+
return (_jsxs("div", { className: "px-2 py-2.5 border-b border-border/40", ...handlers, children: [_jsxs("div", { className: "flex items-center justify-between mb-2", children: [_jsx("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: "Your media" }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx(UploadButton, { onClick: pick }), assets.length > MEDIA_CAP && (_jsx("button", { type: "button", onClick: onSeeAll, className: "text-[10px] text-primary/80 hover:text-primary transition-colors", children: "See all \u203A" }))] })] }), _jsx(FilePicker, { inputRef: inputRef, onFiles: importFiles }), assets.length === 0 ? (_jsx(Dropzone, { dragOver: dragOver, busy: busy, onClick: pick })) : (_jsx("div", { className: "grid grid-cols-3 gap-1.5", children: shown.map((a) => (_jsx(AssetTile, { asset: a, onAdd: () => addToTimeline(a), onRemove: () => void remove(a.id) }, a.id))) })), overflow > 0 && (_jsxs("button", { type: "button", onClick: onSeeAll, className: "mt-1.5 text-[9px] text-muted-foreground/60 hover:text-foreground transition-colors", children: ["+", overflow, " more"] })), busy && assets.length > 0 && (_jsx("div", { className: "mt-1.5 text-[9px] text-muted-foreground/60", children: "Importing\u2026" })), error && _jsx("div", { className: "mt-1.5 text-[9px] text-red-400/80", children: error })] }));
|
|
71
|
+
}
|
|
72
|
+
/** The full "See all" media view — every asset, searchable/filterable, scrollable. */
|
|
73
|
+
function MediaBrowser({ onBack }) {
|
|
74
|
+
const { assets, busy, error, importFiles, remove, addToTimeline } = useAssets();
|
|
75
|
+
const inputRef = useRef(null);
|
|
76
|
+
const { dragOver, handlers } = useDropImport(importFiles);
|
|
77
|
+
const pick = () => inputRef.current?.click();
|
|
78
|
+
const [query, setQuery] = useState('');
|
|
79
|
+
const [kind, setKind] = useState(null);
|
|
80
|
+
const kinds = [...new Set(assets.map((a) => a.kind))];
|
|
81
|
+
const q = query.trim().toLowerCase();
|
|
82
|
+
const results = assets.filter((a) => (!kind || a.kind === kind) && (!q || a.name.toLowerCase().includes(q)));
|
|
83
|
+
return (_jsxs("div", { className: "flex flex-col h-full", ...handlers, children: [_jsxs("div", { className: "flex items-center gap-1.5 h-7 px-2 border-b border-border shrink-0", children: [_jsx("button", { type: "button", onClick: onBack, className: "text-[11px] text-muted-foreground hover:text-foreground transition-colors", children: "\u2039 Assets" }), _jsx("span", { className: "text-[11px] text-foreground/90", children: "Your media" }), _jsx("span", { className: "flex-1" }), _jsx(UploadButton, { onClick: pick, label: true })] }), _jsxs("div", { className: "px-2 py-2 border-b border-border shrink-0", children: [_jsx("input", { value: query, onChange: (e) => setQuery(e.target.value), placeholder: "Search media\u2026", className: "w-full h-7 bg-card border border-border rounded px-2 text-[11px] text-foreground placeholder:text-muted-foreground/60 outline-none focus:border-primary/50" }), _jsxs("div", { className: "flex flex-wrap gap-1 mt-2", children: [_jsx(FilterChip, { active: kind === null, onClick: () => setKind(null), children: "All" }), kinds.map((k) => (_jsx(FilterChip, { active: kind === k, onClick: () => setKind(k), children: k }, k)))] })] }), _jsx(FilePicker, { inputRef: inputRef, onFiles: importFiles }), _jsxs("div", { className: "flex-1 min-h-0 overflow-y-auto p-2", children: [assets.length === 0 ? (_jsx(Dropzone, { dragOver: dragOver, busy: busy, onClick: pick })) : results.length === 0 ? (_jsx("div", { className: "grid place-items-center h-20", children: _jsx("span", { className: "text-[11px] text-muted-foreground/60", children: "No matches" }) })) : (_jsx("div", { className: "grid grid-cols-3 gap-1.5", children: results.map((a) => (_jsx(AssetTile, { asset: a, onAdd: () => addToTimeline(a), onRemove: () => void remove(a.id) }, a.id))) })), error && _jsx("div", { className: "mt-1.5 text-[9px] text-red-400/80", children: error })] }), _jsxs("div", { className: "flex items-center justify-between h-6 px-2 border-t border-border text-[9px] text-muted-foreground/60 shrink-0", children: [_jsxs("span", { children: [results.length, " item", results.length === 1 ? '' : 's', results.length !== assets.length && ` of ${assets.length}`] }), _jsx("span", { children: busy ? 'importing…' : 'click to add · × to remove' })] })] }));
|
|
84
|
+
}
|
|
85
|
+
function FilterChip({ active, onClick, children, }) {
|
|
86
|
+
return (_jsx("button", { type: "button", onClick: onClick, className: cn('h-5 px-1.5 rounded text-[9px] capitalize transition-colors', active
|
|
87
|
+
? 'bg-primary/20 text-foreground'
|
|
88
|
+
: 'text-muted-foreground hover:text-foreground hover:bg-card'), children: children }));
|
|
89
|
+
}
|
|
90
|
+
const KIND_ICON = { image: ImageIcon, video: Film, audio: Music };
|
|
91
|
+
function AssetTile({ asset, onAdd, onRemove }) {
|
|
92
|
+
const Icon = KIND_ICON[asset.kind];
|
|
93
|
+
return (_jsxs("div", { className: "group/tile relative aspect-square rounded border border-border bg-card overflow-hidden cursor-default", title: `${asset.name} — click to add at playhead`, onClick: onAdd, children: [asset.kind === 'image' ? (_jsx("img", { src: asset.url, alt: asset.name, className: "w-full h-full object-cover" })) : asset.kind === 'video' ? (_jsx("video", { src: asset.url, className: "w-full h-full object-cover", muted: true, preload: "metadata" })) : (_jsx("div", { className: "w-full h-full grid place-items-center", children: _jsx(Icon, { size: 16, className: "text-muted-foreground" }) })), _jsxs("div", { className: "absolute inset-x-0 bottom-0 px-1 py-0.5 bg-background/70 flex items-center gap-1", children: [_jsx(Icon, { size: 8, className: "shrink-0 text-muted-foreground" }), _jsx("span", { className: "truncate text-[8px] text-foreground/80", children: asset.name })] }), _jsx("button", { type: "button", title: "Remove from media", className: "absolute top-0.5 right-0.5 w-4 h-4 grid place-items-center rounded bg-background/70 text-muted-foreground/70 opacity-0 group-hover/tile:opacity-100 hover:text-foreground transition", onClick: (e) => { e.stopPropagation(); onRemove(); }, children: _jsx(X, { size: 10 }) })] }));
|
|
94
|
+
}
|
|
95
|
+
function SfxStrip() {
|
|
96
|
+
const { preview, addToTimeline } = useSfxActions();
|
|
97
|
+
const [playing, setPlaying] = useState(null);
|
|
98
|
+
const byName = new Map(listSfx().map((e) => [e.name, e]));
|
|
99
|
+
const items = FEATURED.map((n) => byName.get(n)).filter((e) => !!e);
|
|
100
|
+
return (_jsx("div", { className: "flex flex-wrap gap-1.5", children: items.map((e) => (_jsxs("button", { type: "button", title: `Preview ${e.label} · double-click to add`, onClick: () => {
|
|
101
|
+
setPlaying(e.name);
|
|
102
|
+
preview(e);
|
|
103
|
+
}, onDoubleClick: () => addToTimeline(e), className: cn('group/chip flex items-center gap-1 h-6 pl-1.5 pr-2 rounded border border-border bg-card text-[10px] text-foreground/80 hover:border-primary/50 transition-colors', playing === e.name && 'border-primary/60 text-foreground'), children: [_jsx(Play, { size: 9, fill: "currentColor", className: "text-muted-foreground group-hover/chip:text-foreground" }), e.label] }, e.name))) }));
|
|
104
|
+
}
|
|
105
|
+
function Section({ title, action, children, }) {
|
|
106
|
+
return (_jsxs("div", { className: "px-2 py-2.5 border-b border-border/40", children: [_jsxs("div", { className: "flex items-center justify-between mb-2", children: [_jsx("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: title }), action && (_jsxs("button", { type: "button", onClick: action.onClick, className: "text-[10px] text-primary/80 hover:text-primary transition-colors", children: [action.label, " \u203A"] }))] }), children] }));
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=AssetsPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetsPanel.js","sourceRoot":"","sources":["../../src/panels/AssetsPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InspectorPanel.d.ts","sourceRoot":"","sources":["../../src/panels/InspectorPanel.tsx"],"names":[],"mappings":"AA2GA,wBAAgB,cAAc,uCAiW7B"}
|