@linker-design-plus/timeline-track 2.0.21 → 2.0.22

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.
@@ -13,6 +13,17 @@ export interface ClipConfigPanelTheme {
13
13
  buttonActiveBorder: string;
14
14
  buttonActiveText: string;
15
15
  }
16
+ export type ClipConfigPanelGroupKind = 'video' | 'audio' | 'text' | 'mixed' | 'empty';
17
+ export interface ClipConfigPanelSelectionState {
18
+ primaryClip: Clip | null;
19
+ selectedClips: Clip[];
20
+ selectionCount: number;
21
+ groupKind: ClipConfigPanelGroupKind;
22
+ supportsVoiceBatch: boolean;
23
+ supportsTextContentBatch: boolean;
24
+ supportsVisualBatch: boolean;
25
+ supportsVolumeBatch: boolean;
26
+ }
16
27
  export declare const defaultDarkTheme: ClipConfigPanelTheme;
17
28
  export interface ClipConfigPanelConfig {
18
29
  container: HTMLElement;
@@ -75,6 +86,7 @@ export declare class ClipConfigPanel {
75
86
  private readonly onGenerateVoice?;
76
87
  private readonly voiceCatalog;
77
88
  private currentClip;
89
+ private selectionState;
78
90
  private activeTab;
79
91
  private readonly iconCache;
80
92
  private pendingPreferredTab;
@@ -91,13 +103,15 @@ export declare class ClipConfigPanel {
91
103
  private previewingVoiceId;
92
104
  constructor(config: ClipConfigPanelConfig);
93
105
  setClip(clip: Clip | null): void;
106
+ setSelectionState(selectionState: ClipConfigPanelSelectionState): void;
94
107
  setPreferredTab(tab: 'voice' | null): void;
95
108
  setVoiceGenerationBusy(isBusy: boolean): void;
96
109
  destroy(): void;
97
110
  private render;
98
111
  private getAvailableTabs;
112
+ private getEmptyStateMessage;
99
113
  private resetVoiceState;
100
- private syncVoiceStateForClip;
114
+ private syncVoiceStateForSelection;
101
115
  private syncActiveTab;
102
116
  private supportsVoicePanel;
103
117
  private ensureVoiceFilters;
@@ -1,7 +1,7 @@
1
1
  import { type TemplateResult } from 'lit';
2
2
  import { type Clip, type VoiceOption } from '../../core/models';
3
3
  import { LitDomRenderer } from '../../core/renderers/domRenderer';
4
- import type { ClipConfigPanelTheme } from './ClipConfigPanel';
4
+ import type { ClipConfigPanelSelectionState, ClipConfigPanelTheme } from './ClipConfigPanel';
5
5
  export type ClipConfigPanelTabKey = 'visual' | 'audio' | 'text' | 'voice';
6
6
  export interface ClipConfigPanelCallbacks {
7
7
  onTabChange: (tab: ClipConfigPanelTabKey) => void;
@@ -18,9 +18,12 @@ export interface ClipConfigPanelCallbacks {
18
18
  }
19
19
  export interface ClipConfigPanelViewModel {
20
20
  clip: Clip | null;
21
+ selectionState: ClipConfigPanelSelectionState;
21
22
  activeTab: ClipConfigPanelTabKey;
23
+ availableTabs: ClipConfigPanelTabKey[];
22
24
  theme: ClipConfigPanelTheme;
23
- emptyStateIconSvg: string;
25
+ emptyStateMessage: string | null;
26
+ isTextContentEditable: boolean;
24
27
  loadingIconSvg: string;
25
28
  selectedIconSvg: string;
26
29
  textDraftContent: string;
@@ -107,7 +110,6 @@ export declare class ClipConfigPanelRenderer extends LitDomRenderer<ClipConfigPa
107
110
  private renderLabeledNumberInput;
108
111
  private getContainerStyle;
109
112
  private getSliderStyle;
110
- private getAvailableTabs;
111
113
  private supportsVoicePanel;
112
114
  private getTransform;
113
115
  private calculatePresetPosition;
@@ -133,7 +133,7 @@ export declare class Track {
133
133
  private buildPreviewClip;
134
134
  private constrainResizePreviewToTrackBounds;
135
135
  private getResizeLeftBoundaryStart;
136
- private getResizeRightBoundaryEnd;
136
+ private computeResizeRightPushFollowers;
137
137
  private buildResizeLeftPreviewClip;
138
138
  private buildResizeRightPreviewClip;
139
139
  private applyClipSnap;
@@ -3,6 +3,7 @@ export interface TimelineClipConfigControllerConfig {
3
3
  container: HTMLElement;
4
4
  theme: Theme;
5
5
  getPrimarySelectedClip: () => Clip | null;
6
+ getSelectedClips: () => Clip[];
6
7
  voiceCatalog: VoiceOption[];
7
8
  updateClip: (clipId: string, updates: Partial<Clip>) => void;
8
9
  onGenerateVoice?: (clip: Clip, voice: VoiceOption, followTextUpdates: boolean) => Promise<void>;
@@ -10,6 +11,7 @@ export interface TimelineClipConfigControllerConfig {
10
11
  export declare class TimelineClipConfigController {
11
12
  private panel;
12
13
  private config;
14
+ private currentSelectionState;
13
15
  private isInternalUpdate;
14
16
  init(config: TimelineClipConfigControllerConfig): void;
15
17
  update(): void;
@@ -17,5 +19,7 @@ export declare class TimelineClipConfigController {
17
19
  destroy(): void;
18
20
  setPreferredTab(tab: 'voice' | null): void;
19
21
  setVoiceGenerationBusy(isBusy: boolean): void;
22
+ private buildSelectionState;
23
+ private resolveUpdateTargets;
20
24
  private convertTheme;
21
25
  }
@@ -81,6 +81,7 @@ export declare class TimelineManager {
81
81
  private lastSteadyPlaybackPreviewSyncAt;
82
82
  private previewSyncInteractionMode;
83
83
  private readonly resourceCacheManager;
84
+ private voiceLinkedTextRegenerationTimer;
84
85
  constructor(config?: Partial<TimelineConfig>);
85
86
  private createPlaybackAttemptId;
86
87
  private refreshPlaybackAttempt;
@@ -356,6 +357,7 @@ export declare class TimelineManager {
356
357
  private relocateClipIfNeeded;
357
358
  private regenerateVoiceLinkedAudioClips;
358
359
  private getSelectedTextClipsForVoiceGeneration;
360
+ private getSelectedTtsAudioClipsForVoiceGeneration;
359
361
  private handleVoiceGenerateAction;
360
362
  private primeOrLoadClipThumbnails;
361
363
  private markClipThumbnailLoadCompleted;
@@ -1,6 +1,6 @@
1
1
  import type { Theme } from '../models/types';
2
2
  import { type TimelineManagerLayoutElements } from './TimelineManagerLayoutRenderer';
3
- export declare const TIMELINE_MANAGER_LEFT_PANEL_WIDTH = 200;
3
+ export declare const TIMELINE_MANAGER_LEFT_PANEL_WIDTH = 80;
4
4
  export declare const TIMELINE_MANAGER_SCROLLBAR_SIZE = 8;
5
5
  export type { TimelineManagerLayoutElements };
6
6
  export interface CreateTimelineManagerLayoutOptions {