ugcinc-render 1.8.6 → 1.8.8

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.
@@ -278,7 +278,7 @@ interface CropBounds {
278
278
  /**
279
279
  * Dimension preset keys for image editor
280
280
  */
281
- type DimensionPresetKey = 'tiktok' | 'instagram-square' | 'instagram-post' | 'youtube' | 'twitter' | 'custom';
281
+ type DimensionPresetKey = '9:16' | '1:1' | '4:5' | '16:9' | 'custom';
282
282
  /**
283
283
  * Dimension preset configuration
284
284
  */
@@ -278,7 +278,7 @@ interface CropBounds {
278
278
  /**
279
279
  * Dimension preset keys for image editor
280
280
  */
281
- type DimensionPresetKey = 'tiktok' | 'instagram-square' | 'instagram-post' | 'youtube' | 'twitter' | 'custom';
281
+ type DimensionPresetKey = '9:16' | '1:1' | '4:5' | '16:9' | 'custom';
282
282
  /**
283
283
  * Dimension preset configuration
284
284
  */
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { S as SegmentType, T as TimeValue, R as RelativePositionConfigX, a as RelativePositionConfigY, F as FitMode, B as BorderRadiusConfig, b as TextStyleProperties, D as DynamicCropConfig, I as ImageEditorElement, A as AutoCaptionCompositionProps, C as CaptionOverlayProps, P as PositionResolutionResult } from './index-C5NlUiZT.mjs';
2
- export { Y as APPLE_EMOJI_FONT, aB as CAPTION_PRESETS, Q as CaptionFontWeight, M as CaptionPage, O as CaptionPosition, N as CaptionPreset, U as CaptionStyle, L as CaptionWord, J as CropAxisConfig, G as CropBoundary, K as CropBounds, aC as DEFAULT_CAPTION_STYLE, p as DIMENSION_PRESETS, o as DimensionPreset, n as DimensionPresetKey, X as FONT_FAMILIES, $ as FONT_URLS, a4 as FitDimensions, c as FontType, d as FontWeight, j as HorizontalAnchor, k as HorizontalSelfAnchor, H as Hyphenation, a6 as IMAGE_DEFAULTS, m as ImageEditorNodeConfig, an as PositionResolutionError, E as SegmentTimelinePosition, a5 as TEXT_DEFAULTS, e as TextAlignment, f as TextDirection, h as TextOverflow, g as TextWrap, q as TimeMode, a7 as VIDEO_DEFAULTS, a8 as VISUAL_DEFAULTS, V as VerticalAlignment, i as VerticalAnchor, l as VerticalSelfAnchor, u as VideoEditorAudioSegment, r as VideoEditorBaseSegment, y as VideoEditorChannel, v as VideoEditorImageSegment, z as VideoEditorNodeConfig, x as VideoEditorSegment, w as VideoEditorTextSegment, t as VideoEditorVideoSegment, s as VideoEditorVisualSegment, W as WordBreak, aa as applyImageDefaults, a9 as applyTextDefaults, ab as applyVideoDefaults, a1 as areFontsLoaded, _ as buildFontString, ai as calculateAutoWidthDimensions, ao as calculateCropBounds, av as calculateEstimatedDuration, a3 as calculateFitDimensions, ad as calculateLineWidth, aw as calculateTimelineContentEnd, aj as canSetAsReference, a2 as debugFontStatus, aq as defaultOffset, ax as formatTime, aA as generateOverlayId, az as generateSegmentId, ar as getBaseSegments, ae as getBorderRadii, aE as getCaptionPresetNames, ak as getDependentElements, Z as getFontFamily, as as getOverlays, al as getReferenceElementX, am as getReferenceElementY, at as getSegmentTimelinePosition, ag as hexToRgba, ap as isDynamicCropEnabled, au as isSegmentVisibleAtTime, aF as isValidCaptionPreset, af as parseHexColor, ay as parseTime, a0 as preloadFonts, aD as resolveCaptionStyle, ah as resolveElementPositions, ac as wrapText } from './index-C5NlUiZT.mjs';
1
+ import { S as SegmentType, T as TimeValue, R as RelativePositionConfigX, a as RelativePositionConfigY, F as FitMode, B as BorderRadiusConfig, b as TextStyleProperties, D as DynamicCropConfig, I as ImageEditorElement, A as AutoCaptionCompositionProps, C as CaptionOverlayProps, P as PositionResolutionResult } from './index-DB7cs12s.mjs';
2
+ export { Y as APPLE_EMOJI_FONT, aB as CAPTION_PRESETS, Q as CaptionFontWeight, M as CaptionPage, O as CaptionPosition, N as CaptionPreset, U as CaptionStyle, L as CaptionWord, J as CropAxisConfig, G as CropBoundary, K as CropBounds, aC as DEFAULT_CAPTION_STYLE, p as DIMENSION_PRESETS, o as DimensionPreset, n as DimensionPresetKey, X as FONT_FAMILIES, $ as FONT_URLS, a4 as FitDimensions, c as FontType, d as FontWeight, j as HorizontalAnchor, k as HorizontalSelfAnchor, H as Hyphenation, a6 as IMAGE_DEFAULTS, m as ImageEditorNodeConfig, an as PositionResolutionError, E as SegmentTimelinePosition, a5 as TEXT_DEFAULTS, e as TextAlignment, f as TextDirection, h as TextOverflow, g as TextWrap, q as TimeMode, a7 as VIDEO_DEFAULTS, a8 as VISUAL_DEFAULTS, V as VerticalAlignment, i as VerticalAnchor, l as VerticalSelfAnchor, u as VideoEditorAudioSegment, r as VideoEditorBaseSegment, y as VideoEditorChannel, v as VideoEditorImageSegment, z as VideoEditorNodeConfig, x as VideoEditorSegment, w as VideoEditorTextSegment, t as VideoEditorVideoSegment, s as VideoEditorVisualSegment, W as WordBreak, aa as applyImageDefaults, a9 as applyTextDefaults, ab as applyVideoDefaults, a1 as areFontsLoaded, _ as buildFontString, ai as calculateAutoWidthDimensions, ao as calculateCropBounds, av as calculateEstimatedDuration, a3 as calculateFitDimensions, ad as calculateLineWidth, aw as calculateTimelineContentEnd, aj as canSetAsReference, a2 as debugFontStatus, aq as defaultOffset, ax as formatTime, aA as generateOverlayId, az as generateSegmentId, ar as getBaseSegments, ae as getBorderRadii, aE as getCaptionPresetNames, ak as getDependentElements, Z as getFontFamily, as as getOverlays, al as getReferenceElementX, am as getReferenceElementY, at as getSegmentTimelinePosition, ag as hexToRgba, ap as isDynamicCropEnabled, au as isSegmentVisibleAtTime, aF as isValidCaptionPreset, af as parseHexColor, ay as parseTime, a0 as preloadFonts, aD as resolveCaptionStyle, ah as resolveElementPositions, ac as wrapText } from './index-DB7cs12s.mjs';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import React from 'react';
5
5
 
@@ -620,6 +620,26 @@ declare function AutoCaptionComposition({ videoUrl, captions, style, }: AutoCapt
620
620
  */
621
621
  declare function AutoCaptionCompositionWithVideo({ videoUrl, captions, style, }: AutoCaptionCompositionProps): react_jsx_runtime.JSX.Element;
622
622
 
623
+ /**
624
+ * ScreenshotAnimationComposition
625
+ *
626
+ * Simulates an iPhone screenshot animation:
627
+ * 1. Flash - Screen flashes white
628
+ * 2. Shrink - Content scales down to a thumbnail
629
+ * 3. Slide - Thumbnail moves to bottom-left corner
630
+ * 4. Pause - Thumbnail sits briefly
631
+ * 5. Dismiss - Thumbnail slides off-screen to the left
632
+ */
633
+ interface ScreenshotAnimationCompositionProps {
634
+ /** The image URL to show being "screenshotted" */
635
+ imageUrl: string;
636
+ /** Canvas width */
637
+ width?: number;
638
+ /** Canvas height */
639
+ height?: number;
640
+ }
641
+ declare function ScreenshotAnimationComposition({ imageUrl, width, height, }: ScreenshotAnimationCompositionProps): react_jsx_runtime.JSX.Element;
642
+
623
643
  interface TextElementProps {
624
644
  segment: TextSegment;
625
645
  /** Optional scale for high-DPI rendering */
@@ -752,4 +772,4 @@ declare function useResolvedPositions(elements: ImageEditorElement[], textValues
752
772
 
753
773
  declare const RenderRoot: React.FC;
754
774
 
755
- export { type Acceleration, type AudioConfig, type AudioSegment, AutoCaptionComposition, AutoCaptionCompositionProps, AutoCaptionCompositionWithVideo, type BaseEditorConfig, type BaseSegment, type BlendMode, BorderRadiusConfig, CaptionOverlay, CaptionOverlayProps, type Channel, type ColorFilterConfig, type ColorShiftConfig, type CropConfig, type CuttingConfig, DEDUPLICATION_LEVELS, type DeduplicationConfig, type DeduplicationInput, type DeduplicationLevel, type DiagonalFilterConfig, type DiagonalFilterType, DynamicCropConfig, type EditorConfig, type EditorSegment, type EnhanceLevel, type EnhancementConfig, FitMode, type FrameManipulationConfig, type GifOverlayConfig, type GifSource, type GradientOverlayConfig, ImageEditorComposition, type ImageEditorCompositionProps, type ImageEditorConfig, ImageEditorElement, ImageElement, type ImageElementProps, type ImageSegment, LEVEL_1_CONFIG, LEVEL_2_CONFIG, LEVEL_3_CONFIG, LEVEL_4_CONFIG, LEVEL_5_CONFIG, type LensCorrectionConfig, type MobileEncodingConfig, type ParticleOverlayConfig, type PhoneConfig, type PhoneModel, type PhoneType, type PictureSegment, PositionResolutionResult, RelativePositionConfigX, RelativePositionConfigY, RenderRoot, type Segment, SegmentType, type SpeedConfig, type StaticSegment, TextElement, type TextElementProps, type TextSegment, TextStyleProperties, TimeValue, type TraceRemovalConfig, type VideoCodec, VideoEditorComposition, type VideoEditorCompositionProps, type VideoEditorConfig, VideoElement, type VideoElementProps, type VideoExtension, type VideoSegment, type VisualAdjustmentsConfig, type VisualSegment, type VisualSegmentUnion, isDeduplicationLevel, resolveDeduplicationConfig, useFontsLoaded, useImageLoader, useImagePreloader, useResolvedPositions };
775
+ export { type Acceleration, type AudioConfig, type AudioSegment, AutoCaptionComposition, AutoCaptionCompositionProps, AutoCaptionCompositionWithVideo, type BaseEditorConfig, type BaseSegment, type BlendMode, BorderRadiusConfig, CaptionOverlay, CaptionOverlayProps, type Channel, type ColorFilterConfig, type ColorShiftConfig, type CropConfig, type CuttingConfig, DEDUPLICATION_LEVELS, type DeduplicationConfig, type DeduplicationInput, type DeduplicationLevel, type DiagonalFilterConfig, type DiagonalFilterType, DynamicCropConfig, type EditorConfig, type EditorSegment, type EnhanceLevel, type EnhancementConfig, FitMode, type FrameManipulationConfig, type GifOverlayConfig, type GifSource, type GradientOverlayConfig, ImageEditorComposition, type ImageEditorCompositionProps, type ImageEditorConfig, ImageEditorElement, ImageElement, type ImageElementProps, type ImageSegment, LEVEL_1_CONFIG, LEVEL_2_CONFIG, LEVEL_3_CONFIG, LEVEL_4_CONFIG, LEVEL_5_CONFIG, type LensCorrectionConfig, type MobileEncodingConfig, type ParticleOverlayConfig, type PhoneConfig, type PhoneModel, type PhoneType, type PictureSegment, PositionResolutionResult, RelativePositionConfigX, RelativePositionConfigY, RenderRoot, ScreenshotAnimationComposition, type ScreenshotAnimationCompositionProps, type Segment, SegmentType, type SpeedConfig, type StaticSegment, TextElement, type TextElementProps, type TextSegment, TextStyleProperties, TimeValue, type TraceRemovalConfig, type VideoCodec, VideoEditorComposition, type VideoEditorCompositionProps, type VideoEditorConfig, VideoElement, type VideoElementProps, type VideoExtension, type VideoSegment, type VisualAdjustmentsConfig, type VisualSegment, type VisualSegmentUnion, isDeduplicationLevel, resolveDeduplicationConfig, useFontsLoaded, useImageLoader, useImagePreloader, useResolvedPositions };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { S as SegmentType, T as TimeValue, R as RelativePositionConfigX, a as RelativePositionConfigY, F as FitMode, B as BorderRadiusConfig, b as TextStyleProperties, D as DynamicCropConfig, I as ImageEditorElement, A as AutoCaptionCompositionProps, C as CaptionOverlayProps, P as PositionResolutionResult } from './index-C5NlUiZT.js';
2
- export { Y as APPLE_EMOJI_FONT, aB as CAPTION_PRESETS, Q as CaptionFontWeight, M as CaptionPage, O as CaptionPosition, N as CaptionPreset, U as CaptionStyle, L as CaptionWord, J as CropAxisConfig, G as CropBoundary, K as CropBounds, aC as DEFAULT_CAPTION_STYLE, p as DIMENSION_PRESETS, o as DimensionPreset, n as DimensionPresetKey, X as FONT_FAMILIES, $ as FONT_URLS, a4 as FitDimensions, c as FontType, d as FontWeight, j as HorizontalAnchor, k as HorizontalSelfAnchor, H as Hyphenation, a6 as IMAGE_DEFAULTS, m as ImageEditorNodeConfig, an as PositionResolutionError, E as SegmentTimelinePosition, a5 as TEXT_DEFAULTS, e as TextAlignment, f as TextDirection, h as TextOverflow, g as TextWrap, q as TimeMode, a7 as VIDEO_DEFAULTS, a8 as VISUAL_DEFAULTS, V as VerticalAlignment, i as VerticalAnchor, l as VerticalSelfAnchor, u as VideoEditorAudioSegment, r as VideoEditorBaseSegment, y as VideoEditorChannel, v as VideoEditorImageSegment, z as VideoEditorNodeConfig, x as VideoEditorSegment, w as VideoEditorTextSegment, t as VideoEditorVideoSegment, s as VideoEditorVisualSegment, W as WordBreak, aa as applyImageDefaults, a9 as applyTextDefaults, ab as applyVideoDefaults, a1 as areFontsLoaded, _ as buildFontString, ai as calculateAutoWidthDimensions, ao as calculateCropBounds, av as calculateEstimatedDuration, a3 as calculateFitDimensions, ad as calculateLineWidth, aw as calculateTimelineContentEnd, aj as canSetAsReference, a2 as debugFontStatus, aq as defaultOffset, ax as formatTime, aA as generateOverlayId, az as generateSegmentId, ar as getBaseSegments, ae as getBorderRadii, aE as getCaptionPresetNames, ak as getDependentElements, Z as getFontFamily, as as getOverlays, al as getReferenceElementX, am as getReferenceElementY, at as getSegmentTimelinePosition, ag as hexToRgba, ap as isDynamicCropEnabled, au as isSegmentVisibleAtTime, aF as isValidCaptionPreset, af as parseHexColor, ay as parseTime, a0 as preloadFonts, aD as resolveCaptionStyle, ah as resolveElementPositions, ac as wrapText } from './index-C5NlUiZT.js';
1
+ import { S as SegmentType, T as TimeValue, R as RelativePositionConfigX, a as RelativePositionConfigY, F as FitMode, B as BorderRadiusConfig, b as TextStyleProperties, D as DynamicCropConfig, I as ImageEditorElement, A as AutoCaptionCompositionProps, C as CaptionOverlayProps, P as PositionResolutionResult } from './index-DB7cs12s.js';
2
+ export { Y as APPLE_EMOJI_FONT, aB as CAPTION_PRESETS, Q as CaptionFontWeight, M as CaptionPage, O as CaptionPosition, N as CaptionPreset, U as CaptionStyle, L as CaptionWord, J as CropAxisConfig, G as CropBoundary, K as CropBounds, aC as DEFAULT_CAPTION_STYLE, p as DIMENSION_PRESETS, o as DimensionPreset, n as DimensionPresetKey, X as FONT_FAMILIES, $ as FONT_URLS, a4 as FitDimensions, c as FontType, d as FontWeight, j as HorizontalAnchor, k as HorizontalSelfAnchor, H as Hyphenation, a6 as IMAGE_DEFAULTS, m as ImageEditorNodeConfig, an as PositionResolutionError, E as SegmentTimelinePosition, a5 as TEXT_DEFAULTS, e as TextAlignment, f as TextDirection, h as TextOverflow, g as TextWrap, q as TimeMode, a7 as VIDEO_DEFAULTS, a8 as VISUAL_DEFAULTS, V as VerticalAlignment, i as VerticalAnchor, l as VerticalSelfAnchor, u as VideoEditorAudioSegment, r as VideoEditorBaseSegment, y as VideoEditorChannel, v as VideoEditorImageSegment, z as VideoEditorNodeConfig, x as VideoEditorSegment, w as VideoEditorTextSegment, t as VideoEditorVideoSegment, s as VideoEditorVisualSegment, W as WordBreak, aa as applyImageDefaults, a9 as applyTextDefaults, ab as applyVideoDefaults, a1 as areFontsLoaded, _ as buildFontString, ai as calculateAutoWidthDimensions, ao as calculateCropBounds, av as calculateEstimatedDuration, a3 as calculateFitDimensions, ad as calculateLineWidth, aw as calculateTimelineContentEnd, aj as canSetAsReference, a2 as debugFontStatus, aq as defaultOffset, ax as formatTime, aA as generateOverlayId, az as generateSegmentId, ar as getBaseSegments, ae as getBorderRadii, aE as getCaptionPresetNames, ak as getDependentElements, Z as getFontFamily, as as getOverlays, al as getReferenceElementX, am as getReferenceElementY, at as getSegmentTimelinePosition, ag as hexToRgba, ap as isDynamicCropEnabled, au as isSegmentVisibleAtTime, aF as isValidCaptionPreset, af as parseHexColor, ay as parseTime, a0 as preloadFonts, aD as resolveCaptionStyle, ah as resolveElementPositions, ac as wrapText } from './index-DB7cs12s.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import React from 'react';
5
5
 
@@ -620,6 +620,26 @@ declare function AutoCaptionComposition({ videoUrl, captions, style, }: AutoCapt
620
620
  */
621
621
  declare function AutoCaptionCompositionWithVideo({ videoUrl, captions, style, }: AutoCaptionCompositionProps): react_jsx_runtime.JSX.Element;
622
622
 
623
+ /**
624
+ * ScreenshotAnimationComposition
625
+ *
626
+ * Simulates an iPhone screenshot animation:
627
+ * 1. Flash - Screen flashes white
628
+ * 2. Shrink - Content scales down to a thumbnail
629
+ * 3. Slide - Thumbnail moves to bottom-left corner
630
+ * 4. Pause - Thumbnail sits briefly
631
+ * 5. Dismiss - Thumbnail slides off-screen to the left
632
+ */
633
+ interface ScreenshotAnimationCompositionProps {
634
+ /** The image URL to show being "screenshotted" */
635
+ imageUrl: string;
636
+ /** Canvas width */
637
+ width?: number;
638
+ /** Canvas height */
639
+ height?: number;
640
+ }
641
+ declare function ScreenshotAnimationComposition({ imageUrl, width, height, }: ScreenshotAnimationCompositionProps): react_jsx_runtime.JSX.Element;
642
+
623
643
  interface TextElementProps {
624
644
  segment: TextSegment;
625
645
  /** Optional scale for high-DPI rendering */
@@ -752,4 +772,4 @@ declare function useResolvedPositions(elements: ImageEditorElement[], textValues
752
772
 
753
773
  declare const RenderRoot: React.FC;
754
774
 
755
- export { type Acceleration, type AudioConfig, type AudioSegment, AutoCaptionComposition, AutoCaptionCompositionProps, AutoCaptionCompositionWithVideo, type BaseEditorConfig, type BaseSegment, type BlendMode, BorderRadiusConfig, CaptionOverlay, CaptionOverlayProps, type Channel, type ColorFilterConfig, type ColorShiftConfig, type CropConfig, type CuttingConfig, DEDUPLICATION_LEVELS, type DeduplicationConfig, type DeduplicationInput, type DeduplicationLevel, type DiagonalFilterConfig, type DiagonalFilterType, DynamicCropConfig, type EditorConfig, type EditorSegment, type EnhanceLevel, type EnhancementConfig, FitMode, type FrameManipulationConfig, type GifOverlayConfig, type GifSource, type GradientOverlayConfig, ImageEditorComposition, type ImageEditorCompositionProps, type ImageEditorConfig, ImageEditorElement, ImageElement, type ImageElementProps, type ImageSegment, LEVEL_1_CONFIG, LEVEL_2_CONFIG, LEVEL_3_CONFIG, LEVEL_4_CONFIG, LEVEL_5_CONFIG, type LensCorrectionConfig, type MobileEncodingConfig, type ParticleOverlayConfig, type PhoneConfig, type PhoneModel, type PhoneType, type PictureSegment, PositionResolutionResult, RelativePositionConfigX, RelativePositionConfigY, RenderRoot, type Segment, SegmentType, type SpeedConfig, type StaticSegment, TextElement, type TextElementProps, type TextSegment, TextStyleProperties, TimeValue, type TraceRemovalConfig, type VideoCodec, VideoEditorComposition, type VideoEditorCompositionProps, type VideoEditorConfig, VideoElement, type VideoElementProps, type VideoExtension, type VideoSegment, type VisualAdjustmentsConfig, type VisualSegment, type VisualSegmentUnion, isDeduplicationLevel, resolveDeduplicationConfig, useFontsLoaded, useImageLoader, useImagePreloader, useResolvedPositions };
775
+ export { type Acceleration, type AudioConfig, type AudioSegment, AutoCaptionComposition, AutoCaptionCompositionProps, AutoCaptionCompositionWithVideo, type BaseEditorConfig, type BaseSegment, type BlendMode, BorderRadiusConfig, CaptionOverlay, CaptionOverlayProps, type Channel, type ColorFilterConfig, type ColorShiftConfig, type CropConfig, type CuttingConfig, DEDUPLICATION_LEVELS, type DeduplicationConfig, type DeduplicationInput, type DeduplicationLevel, type DiagonalFilterConfig, type DiagonalFilterType, DynamicCropConfig, type EditorConfig, type EditorSegment, type EnhanceLevel, type EnhancementConfig, FitMode, type FrameManipulationConfig, type GifOverlayConfig, type GifSource, type GradientOverlayConfig, ImageEditorComposition, type ImageEditorCompositionProps, type ImageEditorConfig, ImageEditorElement, ImageElement, type ImageElementProps, type ImageSegment, LEVEL_1_CONFIG, LEVEL_2_CONFIG, LEVEL_3_CONFIG, LEVEL_4_CONFIG, LEVEL_5_CONFIG, type LensCorrectionConfig, type MobileEncodingConfig, type ParticleOverlayConfig, type PhoneConfig, type PhoneModel, type PhoneType, type PictureSegment, PositionResolutionResult, RelativePositionConfigX, RelativePositionConfigY, RenderRoot, ScreenshotAnimationComposition, type ScreenshotAnimationCompositionProps, type Segment, SegmentType, type SpeedConfig, type StaticSegment, TextElement, type TextElementProps, type TextSegment, TextStyleProperties, TimeValue, type TraceRemovalConfig, type VideoCodec, VideoEditorComposition, type VideoEditorCompositionProps, type VideoEditorConfig, VideoElement, type VideoElementProps, type VideoExtension, type VideoSegment, type VisualAdjustmentsConfig, type VisualSegment, type VisualSegmentUnion, isDeduplicationLevel, resolveDeduplicationConfig, useFontsLoaded, useImageLoader, useImagePreloader, useResolvedPositions };
package/dist/index.js CHANGED
@@ -49,6 +49,7 @@ __export(index_exports, {
49
49
  LEVEL_4_CONFIG: () => LEVEL_4_CONFIG,
50
50
  LEVEL_5_CONFIG: () => LEVEL_5_CONFIG,
51
51
  RenderRoot: () => RenderRoot,
52
+ ScreenshotAnimationComposition: () => ScreenshotAnimationComposition,
52
53
  TEXT_DEFAULTS: () => TEXT_DEFAULTS,
53
54
  TextElement: () => TextElement,
54
55
  VIDEO_DEFAULTS: () => VIDEO_DEFAULTS,
@@ -102,11 +103,10 @@ module.exports = __toCommonJS(index_exports);
102
103
 
103
104
  // src/types/element.ts
104
105
  var DIMENSION_PRESETS = {
105
- "tiktok": { width: 1080, height: 1920, label: "TikTok/Reels (1080\xD71920)", ratio: "9:16" },
106
- "instagram-square": { width: 1080, height: 1080, label: "Instagram Square (1080\xD71080)", ratio: "1:1" },
107
- "instagram-post": { width: 1080, height: 1350, label: "Instagram Post (1080\xD71350)", ratio: "4:5" },
108
- "youtube": { width: 1280, height: 720, label: "YouTube Thumbnail (1280\xD7720)", ratio: "16:9" },
109
- "twitter": { width: 1200, height: 675, label: "Twitter/X (1200\xD7675)", ratio: "16:9" }
106
+ "9:16": { width: 1080, height: 1920, label: "Portrait (1080\xD71920)", ratio: "9:16" },
107
+ "1:1": { width: 1080, height: 1080, label: "Square (1080\xD71080)", ratio: "1:1" },
108
+ "4:5": { width: 1080, height: 1350, label: "Portrait 4:5 (1080\xD71350)", ratio: "4:5" },
109
+ "16:9": { width: 1920, height: 1080, label: "Landscape (1920\xD71080)", ratio: "16:9" }
110
110
  };
111
111
 
112
112
  // src/types/deduplication.ts
@@ -2246,6 +2246,133 @@ function AutoCaptionCompositionWithVideo({
2246
2246
  ] });
2247
2247
  }
2248
2248
 
2249
+ // src/compositions/ScreenshotAnimationComposition.tsx
2250
+ var import_remotion7 = require("remotion");
2251
+ var import_jsx_runtime8 = require("react/jsx-runtime");
2252
+ function ScreenshotAnimationComposition({
2253
+ imageUrl,
2254
+ width = 1080,
2255
+ height = 1920
2256
+ }) {
2257
+ const frame = (0, import_remotion7.useCurrentFrame)();
2258
+ const { fps } = (0, import_remotion7.useVideoConfig)();
2259
+ const flashDuration = Math.round(fps * 0.1);
2260
+ const shrinkDuration = Math.round(fps * 0.3);
2261
+ const pauseDuration = Math.round(fps * 0.8);
2262
+ const dismissDuration = Math.round(fps * 0.25);
2263
+ const flashStart = 0;
2264
+ const flashEnd = flashDuration;
2265
+ const shrinkStart = flashEnd;
2266
+ const shrinkEnd = shrinkStart + shrinkDuration;
2267
+ const pauseEnd = shrinkEnd + pauseDuration;
2268
+ const dismissEnd = pauseEnd + dismissDuration;
2269
+ const flashOpacity = (0, import_remotion7.interpolate)(
2270
+ frame,
2271
+ [flashStart, flashEnd],
2272
+ [1, 0],
2273
+ { extrapolateRight: "clamp" }
2274
+ );
2275
+ const shrinkProgress = (0, import_remotion7.spring)({
2276
+ frame: frame - shrinkStart,
2277
+ fps,
2278
+ config: {
2279
+ damping: 15,
2280
+ stiffness: 120,
2281
+ mass: 0.8
2282
+ },
2283
+ durationInFrames: shrinkDuration
2284
+ });
2285
+ const scale = (0, import_remotion7.interpolate)(
2286
+ shrinkProgress,
2287
+ [0, 1],
2288
+ [1, 0.15],
2289
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
2290
+ );
2291
+ const thumbnailPadding = 20;
2292
+ const thumbnailWidth = width * 0.15;
2293
+ const thumbnailHeight = height * 0.15;
2294
+ const finalX = thumbnailPadding + thumbnailWidth / 2 - width / 2;
2295
+ const finalY = height / 2 - thumbnailHeight / 2 - thumbnailPadding - 80;
2296
+ const translateX = (0, import_remotion7.interpolate)(
2297
+ shrinkProgress,
2298
+ [0, 1],
2299
+ [0, finalX],
2300
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
2301
+ );
2302
+ const translateY = (0, import_remotion7.interpolate)(
2303
+ shrinkProgress,
2304
+ [0, 1],
2305
+ [0, finalY],
2306
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
2307
+ );
2308
+ const dismissProgress = (0, import_remotion7.interpolate)(
2309
+ frame,
2310
+ [pauseEnd, dismissEnd],
2311
+ [0, 1],
2312
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
2313
+ );
2314
+ const dismissX = (0, import_remotion7.interpolate)(
2315
+ dismissProgress,
2316
+ [0, 1],
2317
+ [0, -thumbnailWidth - thumbnailPadding - 50],
2318
+ // Slide fully off screen
2319
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
2320
+ );
2321
+ const borderRadius = (0, import_remotion7.interpolate)(
2322
+ shrinkProgress,
2323
+ [0, 0.5, 1],
2324
+ [0, 20, 24],
2325
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
2326
+ );
2327
+ const shadowOpacity = (0, import_remotion7.interpolate)(
2328
+ shrinkProgress,
2329
+ [0, 0.5, 1],
2330
+ [0, 0.3, 0.5],
2331
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
2332
+ );
2333
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_remotion7.AbsoluteFill, { style: { backgroundColor: "#000" }, children: [
2334
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2335
+ "div",
2336
+ {
2337
+ style: {
2338
+ position: "absolute",
2339
+ left: "50%",
2340
+ top: "50%",
2341
+ width,
2342
+ height,
2343
+ marginLeft: -width / 2,
2344
+ marginTop: -height / 2,
2345
+ transform: `translate(${translateX + dismissX}px, ${translateY}px) scale(${scale})`,
2346
+ transformOrigin: "center center",
2347
+ borderRadius,
2348
+ overflow: "hidden",
2349
+ boxShadow: `0 10px 60px rgba(0, 0, 0, ${shadowOpacity})`
2350
+ },
2351
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2352
+ import_remotion7.Img,
2353
+ {
2354
+ src: imageUrl,
2355
+ style: {
2356
+ width: "100%",
2357
+ height: "100%",
2358
+ objectFit: "cover"
2359
+ }
2360
+ }
2361
+ )
2362
+ }
2363
+ ),
2364
+ frame < flashEnd && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2365
+ import_remotion7.AbsoluteFill,
2366
+ {
2367
+ style: {
2368
+ backgroundColor: "#fff",
2369
+ opacity: flashOpacity
2370
+ }
2371
+ }
2372
+ )
2373
+ ] });
2374
+ }
2375
+
2249
2376
  // src/utils/fit.ts
2250
2377
  function calculateFitDimensions({
2251
2378
  sourceWidth,
@@ -2611,8 +2738,8 @@ function useResolvedPositions(elements, textValues) {
2611
2738
  }
2612
2739
 
2613
2740
  // src/Root.tsx
2614
- var import_remotion7 = require("remotion");
2615
- var import_jsx_runtime8 = require("react/jsx-runtime");
2741
+ var import_remotion8 = require("remotion");
2742
+ var import_jsx_runtime9 = require("react/jsx-runtime");
2616
2743
  var defaultImageProps = {
2617
2744
  config: {
2618
2745
  width: 1080,
@@ -2654,9 +2781,15 @@ var defaultAutoCaptionProps = {
2654
2781
  wordsPerPage: 3
2655
2782
  }
2656
2783
  };
2784
+ var defaultScreenshotAnimationProps = {
2785
+ imageUrl: "https://images.unsplash.com/photo-1611162617474-5b21e879e113?w=1080&h=1920&fit=crop",
2786
+ width: 1080,
2787
+ height: 1920
2788
+ };
2657
2789
  var ImageComp = ImageEditorComposition;
2658
2790
  var VideoComp = VideoEditorComposition;
2659
2791
  var AutoCaptionComp = AutoCaptionComposition;
2792
+ var ScreenshotAnimationComp = ScreenshotAnimationComposition;
2660
2793
  var calculateImageMetadata = async ({ props }) => {
2661
2794
  console.log("[calculateMetadata] Starting metadata calculation...");
2662
2795
  const canvasWidth = props.width ?? props.config?.width ?? 1080;
@@ -2707,9 +2840,9 @@ var calculateImageMetadata = async ({ props }) => {
2707
2840
  };
2708
2841
  };
2709
2842
  var RenderRoot = () => {
2710
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
2711
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2712
- import_remotion7.Composition,
2843
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2844
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2845
+ import_remotion8.Composition,
2713
2846
  {
2714
2847
  id: "ImageEditorComposition",
2715
2848
  component: ImageComp,
@@ -2721,8 +2854,8 @@ var RenderRoot = () => {
2721
2854
  defaultProps: defaultImageProps
2722
2855
  }
2723
2856
  ),
2724
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2725
- import_remotion7.Composition,
2857
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2858
+ import_remotion8.Composition,
2726
2859
  {
2727
2860
  id: "VideoEditorComposition",
2728
2861
  component: VideoComp,
@@ -2733,8 +2866,8 @@ var RenderRoot = () => {
2733
2866
  defaultProps: defaultVideoProps
2734
2867
  }
2735
2868
  ),
2736
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2737
- import_remotion7.Composition,
2869
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2870
+ import_remotion8.Composition,
2738
2871
  {
2739
2872
  id: "AutoCaptionComposition",
2740
2873
  component: AutoCaptionComp,
@@ -2744,6 +2877,18 @@ var RenderRoot = () => {
2744
2877
  height: 1920,
2745
2878
  defaultProps: defaultAutoCaptionProps
2746
2879
  }
2880
+ ),
2881
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2882
+ import_remotion8.Composition,
2883
+ {
2884
+ id: "ScreenshotAnimationComposition",
2885
+ component: ScreenshotAnimationComp,
2886
+ durationInFrames: 60,
2887
+ fps: 30,
2888
+ width: 1080,
2889
+ height: 1920,
2890
+ defaultProps: defaultScreenshotAnimationProps
2891
+ }
2747
2892
  )
2748
2893
  ] });
2749
2894
  };
@@ -2768,6 +2913,7 @@ var RenderRoot = () => {
2768
2913
  LEVEL_4_CONFIG,
2769
2914
  LEVEL_5_CONFIG,
2770
2915
  RenderRoot,
2916
+ ScreenshotAnimationComposition,
2771
2917
  TEXT_DEFAULTS,
2772
2918
  TextElement,
2773
2919
  VIDEO_DEFAULTS,
package/dist/index.mjs CHANGED
@@ -48,11 +48,10 @@ import {
48
48
 
49
49
  // src/types/element.ts
50
50
  var DIMENSION_PRESETS = {
51
- "tiktok": { width: 1080, height: 1920, label: "TikTok/Reels (1080\xD71920)", ratio: "9:16" },
52
- "instagram-square": { width: 1080, height: 1080, label: "Instagram Square (1080\xD71080)", ratio: "1:1" },
53
- "instagram-post": { width: 1080, height: 1350, label: "Instagram Post (1080\xD71350)", ratio: "4:5" },
54
- "youtube": { width: 1280, height: 720, label: "YouTube Thumbnail (1280\xD7720)", ratio: "16:9" },
55
- "twitter": { width: 1200, height: 675, label: "Twitter/X (1200\xD7675)", ratio: "16:9" }
51
+ "9:16": { width: 1080, height: 1920, label: "Portrait (1080\xD71920)", ratio: "9:16" },
52
+ "1:1": { width: 1080, height: 1080, label: "Square (1080\xD71080)", ratio: "1:1" },
53
+ "4:5": { width: 1080, height: 1350, label: "Portrait 4:5 (1080\xD71350)", ratio: "4:5" },
54
+ "16:9": { width: 1920, height: 1080, label: "Landscape (1920\xD71080)", ratio: "16:9" }
56
55
  };
57
56
 
58
57
  // src/types/deduplication.ts
@@ -1384,6 +1383,133 @@ function AutoCaptionCompositionWithVideo({
1384
1383
  ] });
1385
1384
  }
1386
1385
 
1386
+ // src/compositions/ScreenshotAnimationComposition.tsx
1387
+ import { AbsoluteFill as AbsoluteFill4, Img as Img3, interpolate as interpolate2, spring, useCurrentFrame as useCurrentFrame5, useVideoConfig as useVideoConfig5 } from "remotion";
1388
+ import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
1389
+ function ScreenshotAnimationComposition({
1390
+ imageUrl,
1391
+ width = 1080,
1392
+ height = 1920
1393
+ }) {
1394
+ const frame = useCurrentFrame5();
1395
+ const { fps } = useVideoConfig5();
1396
+ const flashDuration = Math.round(fps * 0.1);
1397
+ const shrinkDuration = Math.round(fps * 0.3);
1398
+ const pauseDuration = Math.round(fps * 0.8);
1399
+ const dismissDuration = Math.round(fps * 0.25);
1400
+ const flashStart = 0;
1401
+ const flashEnd = flashDuration;
1402
+ const shrinkStart = flashEnd;
1403
+ const shrinkEnd = shrinkStart + shrinkDuration;
1404
+ const pauseEnd = shrinkEnd + pauseDuration;
1405
+ const dismissEnd = pauseEnd + dismissDuration;
1406
+ const flashOpacity = interpolate2(
1407
+ frame,
1408
+ [flashStart, flashEnd],
1409
+ [1, 0],
1410
+ { extrapolateRight: "clamp" }
1411
+ );
1412
+ const shrinkProgress = spring({
1413
+ frame: frame - shrinkStart,
1414
+ fps,
1415
+ config: {
1416
+ damping: 15,
1417
+ stiffness: 120,
1418
+ mass: 0.8
1419
+ },
1420
+ durationInFrames: shrinkDuration
1421
+ });
1422
+ const scale = interpolate2(
1423
+ shrinkProgress,
1424
+ [0, 1],
1425
+ [1, 0.15],
1426
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
1427
+ );
1428
+ const thumbnailPadding = 20;
1429
+ const thumbnailWidth = width * 0.15;
1430
+ const thumbnailHeight = height * 0.15;
1431
+ const finalX = thumbnailPadding + thumbnailWidth / 2 - width / 2;
1432
+ const finalY = height / 2 - thumbnailHeight / 2 - thumbnailPadding - 80;
1433
+ const translateX = interpolate2(
1434
+ shrinkProgress,
1435
+ [0, 1],
1436
+ [0, finalX],
1437
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
1438
+ );
1439
+ const translateY = interpolate2(
1440
+ shrinkProgress,
1441
+ [0, 1],
1442
+ [0, finalY],
1443
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
1444
+ );
1445
+ const dismissProgress = interpolate2(
1446
+ frame,
1447
+ [pauseEnd, dismissEnd],
1448
+ [0, 1],
1449
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
1450
+ );
1451
+ const dismissX = interpolate2(
1452
+ dismissProgress,
1453
+ [0, 1],
1454
+ [0, -thumbnailWidth - thumbnailPadding - 50],
1455
+ // Slide fully off screen
1456
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
1457
+ );
1458
+ const borderRadius = interpolate2(
1459
+ shrinkProgress,
1460
+ [0, 0.5, 1],
1461
+ [0, 20, 24],
1462
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
1463
+ );
1464
+ const shadowOpacity = interpolate2(
1465
+ shrinkProgress,
1466
+ [0, 0.5, 1],
1467
+ [0, 0.3, 0.5],
1468
+ { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
1469
+ );
1470
+ return /* @__PURE__ */ jsxs6(AbsoluteFill4, { style: { backgroundColor: "#000" }, children: [
1471
+ /* @__PURE__ */ jsx8(
1472
+ "div",
1473
+ {
1474
+ style: {
1475
+ position: "absolute",
1476
+ left: "50%",
1477
+ top: "50%",
1478
+ width,
1479
+ height,
1480
+ marginLeft: -width / 2,
1481
+ marginTop: -height / 2,
1482
+ transform: `translate(${translateX + dismissX}px, ${translateY}px) scale(${scale})`,
1483
+ transformOrigin: "center center",
1484
+ borderRadius,
1485
+ overflow: "hidden",
1486
+ boxShadow: `0 10px 60px rgba(0, 0, 0, ${shadowOpacity})`
1487
+ },
1488
+ children: /* @__PURE__ */ jsx8(
1489
+ Img3,
1490
+ {
1491
+ src: imageUrl,
1492
+ style: {
1493
+ width: "100%",
1494
+ height: "100%",
1495
+ objectFit: "cover"
1496
+ }
1497
+ }
1498
+ )
1499
+ }
1500
+ ),
1501
+ frame < flashEnd && /* @__PURE__ */ jsx8(
1502
+ AbsoluteFill4,
1503
+ {
1504
+ style: {
1505
+ backgroundColor: "#fff",
1506
+ opacity: flashOpacity
1507
+ }
1508
+ }
1509
+ )
1510
+ ] });
1511
+ }
1512
+
1387
1513
  // src/hooks/index.ts
1388
1514
  import { useEffect as useEffect2, useState as useState2, useMemo as useMemo7 } from "react";
1389
1515
  function useFontsLoaded() {
@@ -1467,7 +1593,7 @@ function useResolvedPositions(elements, textValues) {
1467
1593
 
1468
1594
  // src/Root.tsx
1469
1595
  import { Composition } from "remotion";
1470
- import { Fragment, jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
1596
+ import { Fragment, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
1471
1597
  var defaultImageProps = {
1472
1598
  config: {
1473
1599
  width: 1080,
@@ -1509,9 +1635,15 @@ var defaultAutoCaptionProps = {
1509
1635
  wordsPerPage: 3
1510
1636
  }
1511
1637
  };
1638
+ var defaultScreenshotAnimationProps = {
1639
+ imageUrl: "https://images.unsplash.com/photo-1611162617474-5b21e879e113?w=1080&h=1920&fit=crop",
1640
+ width: 1080,
1641
+ height: 1920
1642
+ };
1512
1643
  var ImageComp = ImageEditorComposition;
1513
1644
  var VideoComp = VideoEditorComposition;
1514
1645
  var AutoCaptionComp = AutoCaptionComposition;
1646
+ var ScreenshotAnimationComp = ScreenshotAnimationComposition;
1515
1647
  var calculateImageMetadata = async ({ props }) => {
1516
1648
  console.log("[calculateMetadata] Starting metadata calculation...");
1517
1649
  const canvasWidth = props.width ?? props.config?.width ?? 1080;
@@ -1562,8 +1694,8 @@ var calculateImageMetadata = async ({ props }) => {
1562
1694
  };
1563
1695
  };
1564
1696
  var RenderRoot = () => {
1565
- return /* @__PURE__ */ jsxs6(Fragment, { children: [
1566
- /* @__PURE__ */ jsx8(
1697
+ return /* @__PURE__ */ jsxs7(Fragment, { children: [
1698
+ /* @__PURE__ */ jsx9(
1567
1699
  Composition,
1568
1700
  {
1569
1701
  id: "ImageEditorComposition",
@@ -1576,7 +1708,7 @@ var RenderRoot = () => {
1576
1708
  defaultProps: defaultImageProps
1577
1709
  }
1578
1710
  ),
1579
- /* @__PURE__ */ jsx8(
1711
+ /* @__PURE__ */ jsx9(
1580
1712
  Composition,
1581
1713
  {
1582
1714
  id: "VideoEditorComposition",
@@ -1588,7 +1720,7 @@ var RenderRoot = () => {
1588
1720
  defaultProps: defaultVideoProps
1589
1721
  }
1590
1722
  ),
1591
- /* @__PURE__ */ jsx8(
1723
+ /* @__PURE__ */ jsx9(
1592
1724
  Composition,
1593
1725
  {
1594
1726
  id: "AutoCaptionComposition",
@@ -1599,6 +1731,18 @@ var RenderRoot = () => {
1599
1731
  height: 1920,
1600
1732
  defaultProps: defaultAutoCaptionProps
1601
1733
  }
1734
+ ),
1735
+ /* @__PURE__ */ jsx9(
1736
+ Composition,
1737
+ {
1738
+ id: "ScreenshotAnimationComposition",
1739
+ component: ScreenshotAnimationComp,
1740
+ durationInFrames: 60,
1741
+ fps: 30,
1742
+ width: 1080,
1743
+ height: 1920,
1744
+ defaultProps: defaultScreenshotAnimationProps
1745
+ }
1602
1746
  )
1603
1747
  ] });
1604
1748
  };
@@ -1622,6 +1766,7 @@ export {
1622
1766
  LEVEL_4_CONFIG,
1623
1767
  LEVEL_5_CONFIG,
1624
1768
  RenderRoot,
1769
+ ScreenshotAnimationComposition,
1625
1770
  TEXT_DEFAULTS,
1626
1771
  TextElement,
1627
1772
  VIDEO_DEFAULTS,
@@ -1 +1 @@
1
- export { Y as APPLE_EMOJI_FONT, aB as CAPTION_PRESETS, Q as CaptionFontWeight, M as CaptionPage, O as CaptionPosition, N as CaptionPreset, U as CaptionStyle, L as CaptionWord, aC as DEFAULT_CAPTION_STYLE, X as FONT_FAMILIES, $ as FONT_URLS, a4 as FitDimensions, a6 as IMAGE_DEFAULTS, an as PositionResolutionError, P as PositionResolutionResult, a5 as TEXT_DEFAULTS, a7 as VIDEO_DEFAULTS, a8 as VISUAL_DEFAULTS, aa as applyImageDefaults, a9 as applyTextDefaults, ab as applyVideoDefaults, a1 as areFontsLoaded, _ as buildFontString, ai as calculateAutoWidthDimensions, ao as calculateCropBounds, av as calculateEstimatedDuration, a3 as calculateFitDimensions, ad as calculateLineWidth, aw as calculateTimelineContentEnd, aj as canSetAsReference, a2 as debugFontStatus, aq as defaultOffset, ax as formatTime, aA as generateOverlayId, az as generateSegmentId, ar as getBaseSegments, ae as getBorderRadii, aE as getCaptionPresetNames, ak as getDependentElements, Z as getFontFamily, as as getOverlays, al as getReferenceElementX, am as getReferenceElementY, at as getSegmentTimelinePosition, ag as hexToRgba, ap as isDynamicCropEnabled, au as isSegmentVisibleAtTime, aF as isValidCaptionPreset, af as parseHexColor, ay as parseTime, a0 as preloadFonts, aD as resolveCaptionStyle, ah as resolveElementPositions, ac as wrapText } from '../index-C5NlUiZT.mjs';
1
+ export { Y as APPLE_EMOJI_FONT, aB as CAPTION_PRESETS, Q as CaptionFontWeight, M as CaptionPage, O as CaptionPosition, N as CaptionPreset, U as CaptionStyle, L as CaptionWord, aC as DEFAULT_CAPTION_STYLE, X as FONT_FAMILIES, $ as FONT_URLS, a4 as FitDimensions, a6 as IMAGE_DEFAULTS, an as PositionResolutionError, P as PositionResolutionResult, a5 as TEXT_DEFAULTS, a7 as VIDEO_DEFAULTS, a8 as VISUAL_DEFAULTS, aa as applyImageDefaults, a9 as applyTextDefaults, ab as applyVideoDefaults, a1 as areFontsLoaded, _ as buildFontString, ai as calculateAutoWidthDimensions, ao as calculateCropBounds, av as calculateEstimatedDuration, a3 as calculateFitDimensions, ad as calculateLineWidth, aw as calculateTimelineContentEnd, aj as canSetAsReference, a2 as debugFontStatus, aq as defaultOffset, ax as formatTime, aA as generateOverlayId, az as generateSegmentId, ar as getBaseSegments, ae as getBorderRadii, aE as getCaptionPresetNames, ak as getDependentElements, Z as getFontFamily, as as getOverlays, al as getReferenceElementX, am as getReferenceElementY, at as getSegmentTimelinePosition, ag as hexToRgba, ap as isDynamicCropEnabled, au as isSegmentVisibleAtTime, aF as isValidCaptionPreset, af as parseHexColor, ay as parseTime, a0 as preloadFonts, aD as resolveCaptionStyle, ah as resolveElementPositions, ac as wrapText } from '../index-DB7cs12s.mjs';
@@ -1 +1 @@
1
- export { Y as APPLE_EMOJI_FONT, aB as CAPTION_PRESETS, Q as CaptionFontWeight, M as CaptionPage, O as CaptionPosition, N as CaptionPreset, U as CaptionStyle, L as CaptionWord, aC as DEFAULT_CAPTION_STYLE, X as FONT_FAMILIES, $ as FONT_URLS, a4 as FitDimensions, a6 as IMAGE_DEFAULTS, an as PositionResolutionError, P as PositionResolutionResult, a5 as TEXT_DEFAULTS, a7 as VIDEO_DEFAULTS, a8 as VISUAL_DEFAULTS, aa as applyImageDefaults, a9 as applyTextDefaults, ab as applyVideoDefaults, a1 as areFontsLoaded, _ as buildFontString, ai as calculateAutoWidthDimensions, ao as calculateCropBounds, av as calculateEstimatedDuration, a3 as calculateFitDimensions, ad as calculateLineWidth, aw as calculateTimelineContentEnd, aj as canSetAsReference, a2 as debugFontStatus, aq as defaultOffset, ax as formatTime, aA as generateOverlayId, az as generateSegmentId, ar as getBaseSegments, ae as getBorderRadii, aE as getCaptionPresetNames, ak as getDependentElements, Z as getFontFamily, as as getOverlays, al as getReferenceElementX, am as getReferenceElementY, at as getSegmentTimelinePosition, ag as hexToRgba, ap as isDynamicCropEnabled, au as isSegmentVisibleAtTime, aF as isValidCaptionPreset, af as parseHexColor, ay as parseTime, a0 as preloadFonts, aD as resolveCaptionStyle, ah as resolveElementPositions, ac as wrapText } from '../index-C5NlUiZT.js';
1
+ export { Y as APPLE_EMOJI_FONT, aB as CAPTION_PRESETS, Q as CaptionFontWeight, M as CaptionPage, O as CaptionPosition, N as CaptionPreset, U as CaptionStyle, L as CaptionWord, aC as DEFAULT_CAPTION_STYLE, X as FONT_FAMILIES, $ as FONT_URLS, a4 as FitDimensions, a6 as IMAGE_DEFAULTS, an as PositionResolutionError, P as PositionResolutionResult, a5 as TEXT_DEFAULTS, a7 as VIDEO_DEFAULTS, a8 as VISUAL_DEFAULTS, aa as applyImageDefaults, a9 as applyTextDefaults, ab as applyVideoDefaults, a1 as areFontsLoaded, _ as buildFontString, ai as calculateAutoWidthDimensions, ao as calculateCropBounds, av as calculateEstimatedDuration, a3 as calculateFitDimensions, ad as calculateLineWidth, aw as calculateTimelineContentEnd, aj as canSetAsReference, a2 as debugFontStatus, aq as defaultOffset, ax as formatTime, aA as generateOverlayId, az as generateSegmentId, ar as getBaseSegments, ae as getBorderRadii, aE as getCaptionPresetNames, ak as getDependentElements, Z as getFontFamily, as as getOverlays, al as getReferenceElementX, am as getReferenceElementY, at as getSegmentTimelinePosition, ag as hexToRgba, ap as isDynamicCropEnabled, au as isSegmentVisibleAtTime, aF as isValidCaptionPreset, af as parseHexColor, ay as parseTime, a0 as preloadFonts, aD as resolveCaptionStyle, ah as resolveElementPositions, ac as wrapText } from '../index-DB7cs12s.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugcinc-render",
3
- "version": "1.8.6",
3
+ "version": "1.8.8",
4
4
  "description": "Unified rendering package for UGC Inc - shared types, components, and compositions for pixel-perfect client/server rendering",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",