@adminide-stack/yantra-mobile 12.0.125-alpha.1 → 12.0.125

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.
Files changed (96) hide show
  1. package/lib/features/canvas/AudioEditorExperience.js +207 -109
  2. package/lib/features/canvas/AudioEditorExperience.js.map +1 -1
  3. package/lib/features/canvas/CanvasAgentChatPane.js +87 -72
  4. package/lib/features/canvas/CanvasAgentChatPane.js.map +1 -1
  5. package/lib/features/canvas/CanvasBoardsGrid.js +494 -387
  6. package/lib/features/canvas/CanvasBoardsGrid.js.map +1 -1
  7. package/lib/features/canvas/CanvasChatResultCard.js +78 -59
  8. package/lib/features/canvas/CanvasChatResultCard.js.map +1 -1
  9. package/lib/features/canvas/CanvasEditToolsPanel.js +126 -84
  10. package/lib/features/canvas/CanvasEditToolsPanel.js.map +1 -1
  11. package/lib/features/canvas/CanvasExperience.js +108 -126
  12. package/lib/features/canvas/CanvasExperience.js.map +1 -1
  13. package/lib/features/canvas/CanvasGeneratePanel.js +178 -166
  14. package/lib/features/canvas/CanvasGeneratePanel.js.map +1 -1
  15. package/lib/features/canvas/CanvasLibrarySheet.js +119 -123
  16. package/lib/features/canvas/CanvasLibrarySheet.js.map +1 -1
  17. package/lib/features/canvas/CanvasLooksPanel.js +113 -89
  18. package/lib/features/canvas/CanvasLooksPanel.js.map +1 -1
  19. package/lib/features/canvas/CanvasModelPicker.js +79 -79
  20. package/lib/features/canvas/CanvasModelPicker.js.map +1 -1
  21. package/lib/features/canvas/CanvasTasksPanel.js +193 -128
  22. package/lib/features/canvas/CanvasTasksPanel.js.map +1 -1
  23. package/lib/features/canvas/CanvasTemplatesPanel.js +106 -94
  24. package/lib/features/canvas/CanvasTemplatesPanel.js.map +1 -1
  25. package/lib/features/canvas/CanvasToolDock.js +195 -127
  26. package/lib/features/canvas/CanvasToolDock.js.map +1 -1
  27. package/lib/features/canvas/FrameExtractorExperience.js +163 -100
  28. package/lib/features/canvas/FrameExtractorExperience.js.map +1 -1
  29. package/lib/features/canvas/GeneratorReferenceSlots.js +132 -69
  30. package/lib/features/canvas/GeneratorReferenceSlots.js.map +1 -1
  31. package/lib/features/canvas/ImageEditorExperience.js +278 -209
  32. package/lib/features/canvas/ImageEditorExperience.js.map +1 -1
  33. package/lib/features/canvas/InfluencerStudioExperience.js +167 -125
  34. package/lib/features/canvas/InfluencerStudioExperience.js.map +1 -1
  35. package/lib/features/canvas/MoodboardExperience.js +102 -85
  36. package/lib/features/canvas/MoodboardExperience.js.map +1 -1
  37. package/lib/features/canvas/NativeCanvasViewer.js +203 -192
  38. package/lib/features/canvas/NativeCanvasViewer.js.map +1 -1
  39. package/lib/features/canvas/PromoContextFields.js +125 -92
  40. package/lib/features/canvas/PromoContextFields.js.map +1 -1
  41. package/lib/features/canvas/SetStudioExperience.js +225 -143
  42. package/lib/features/canvas/SetStudioExperience.js.map +1 -1
  43. package/lib/features/canvas/VideoClipsExperience.js +126 -92
  44. package/lib/features/canvas/VideoClipsExperience.js.map +1 -1
  45. package/lib/features/canvas/VideoEditExperience.js +154 -142
  46. package/lib/features/canvas/VideoEditExperience.js.map +1 -1
  47. package/lib/features/canvas/VideoEditorExperience.js +551 -492
  48. package/lib/features/canvas/VideoEditorExperience.js.map +1 -1
  49. package/lib/features/canvas/VideoGeneratorExperience.js +284 -131
  50. package/lib/features/canvas/VideoGeneratorExperience.js.map +1 -1
  51. package/lib/features/canvas/canvasTasks.js +7 -3
  52. package/lib/features/canvas/canvasTasks.js.map +1 -1
  53. package/lib/features/canvas/canvasTheme.js +265 -0
  54. package/lib/features/canvas/canvasTheme.js.map +1 -0
  55. package/lib/features/canvas/canvasUi.js +381 -0
  56. package/lib/features/canvas/canvasUi.js.map +1 -0
  57. package/lib/features/canvas/recorder/CameraRecorderExperience.js +109 -52
  58. package/lib/features/canvas/recorder/CameraRecorderExperience.js.map +1 -1
  59. package/lib/features/canvas/serverTasks.js +1 -1
  60. package/lib/features/canvas/serverTasks.js.map +1 -1
  61. package/lib/features/canvas/set/SetViewportWebView.js +1 -1
  62. package/lib/features/canvas/set/SetViewportWebView.js.map +1 -1
  63. package/lib/features/canvas/videoEditor/BlurBoxOverlay.js +8 -7
  64. package/lib/features/canvas/videoEditor/BlurBoxOverlay.js.map +1 -1
  65. package/lib/features/canvas/videoEditor/ExportTaskCard.js +44 -41
  66. package/lib/features/canvas/videoEditor/ExportTaskCard.js.map +1 -1
  67. package/lib/features/canvas/videoEditor/agent/AgentCutPane.js +50 -45
  68. package/lib/features/canvas/videoEditor/agent/AgentCutPane.js.map +1 -1
  69. package/lib/features/canvas/videoEditor/exportTask.js +3 -2
  70. package/lib/features/canvas/videoEditor/exportTask.js.map +1 -1
  71. package/lib/features/canvas/videoEditor/formWidgets.js +116 -64
  72. package/lib/features/canvas/videoEditor/formWidgets.js.map +1 -1
  73. package/lib/features/canvas/videoEditor/produce/ProduceVideoSheet.js +77 -63
  74. package/lib/features/canvas/videoEditor/produce/ProduceVideoSheet.js.map +1 -1
  75. package/lib/features/canvas/videoEditor/tools/ToolsDrawer.js +95 -79
  76. package/lib/features/canvas/videoEditor/tools/ToolsDrawer.js.map +1 -1
  77. package/lib/features/design/DesignEditorExperience.js +241 -160
  78. package/lib/features/design/DesignEditorExperience.js.map +1 -1
  79. package/lib/features/design/DesignExperience.js +300 -143
  80. package/lib/features/design/DesignExperience.js.map +1 -1
  81. package/lib/features/webbuilder/WebBuilderExperience.js +1 -1
  82. package/lib/features/webbuilder/WebBuilderExperience.js.map +1 -1
  83. package/lib/features/webbuilder/buildFragments.js +3 -2
  84. package/lib/features/webbuilder/buildFragments.js.map +1 -1
  85. package/lib/features/webbuilder/components/PublishSheet.js +1 -1
  86. package/lib/features/webbuilder/components/PublishSheet.js.map +1 -1
  87. package/lib/features/webbuilder/webbuilderPrompts.js +2 -5
  88. package/lib/features/webbuilder/webbuilderPrompts.js.map +1 -1
  89. package/lib/screens/WebBuilderNative/sandboxProxyApi.js +120 -0
  90. package/lib/screens/WebBuilderNative/sandboxProxyApi.js.map +1 -0
  91. package/lib/screens/WebBuilderNative/useRestoredSandboxes.js.map +1 -1
  92. package/lib/screens/WebBuilderNative/useWebBuilderHost.js +26 -4
  93. package/lib/screens/WebBuilderNative/useWebBuilderHost.js.map +1 -1
  94. package/lib/screens/WebBuilderNative/webbuilderTransport.js +110 -7
  95. package/lib/screens/WebBuilderNative/webbuilderTransport.js.map +1 -1
  96. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"VideoClipsExperience.js","sources":["../../../src/features/canvas/VideoClipsExperience.tsx"],"sourcesContent":["/**\n * Native twin of web canvas \"Clips\": `yantra-video-clip` /\n * `YANTRA_VIDEO_CLIP_RUN` turns a long video into ranked short clips.\n */\nimport React, { useState } from 'react';\nimport { ActivityIndicator, Pressable, StyleSheet, Text, TextInput, View } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport type { CanvasItem } from './canvasCore';\nimport { friendlyMediaError, type RunMediaAction } from './videoEditor/mediaActions';\nimport { unwrapProxyUrl } from './videoEditor/remoteMediaClient';\nimport {\n CLIP_ASPECT_RATIOS,\n CLIP_COUNT_CHOICES,\n CLIP_RESOLUTIONS,\n buildClipRunParams,\n parseClipRunResult,\n} from './videoClips';\n\nexport interface VideoClipsExperienceProps {\n item?: CanvasItem | null;\n runAction?: RunMediaAction;\n onClose: () => void;\n onClips: (urls: string[], aspect: string) => void;\n}\n\nexport function VideoClipsExperience({ item, runAction, onClose, onClips }: VideoClipsExperienceProps) {\n const [count, setCount] = useState(3);\n const [aspect, setAspect] = useState<(typeof CLIP_ASPECT_RATIOS)[number]>('9:16');\n const [resolution, setResolution] = useState<(typeof CLIP_RESOLUTIONS)[number]>('720');\n const [videoUrl, setVideoUrl] = useState(item?.src ? unwrapProxyUrl(item.src) : '');\n const [busy, setBusy] = useState(false);\n const [notice, setNotice] = useState<string | null>(null);\n\n const run = () => {\n const source = videoUrl.trim();\n if (!source) {\n setNotice('Paste a video URL, or open Clips from a clip already on the board.');\n return;\n }\n if (!runAction) {\n setNotice('Clips need the host connector — not wired in this host.');\n return;\n }\n if (busy) return;\n setBusy(true);\n setNotice(null);\n runAction(\n 'yantra-video-clip',\n 'YANTRA_VIDEO_CLIP_RUN',\n buildClipRunParams({\n videoUrl: unwrapProxyUrl(source),\n numClips: count,\n aspectRatio: aspect,\n resolution,\n }),\n )\n .then((result) => {\n const urls = parseClipRunResult(result);\n if (!urls.length) throw new Error('The pipeline finished but returned no clips');\n onClips(urls, aspect);\n })\n .catch((err: unknown) => setNotice(friendlyMediaError(err, 'video clips')))\n .finally(() => setBusy(false));\n };\n\n return (\n <View style={styles.root} testID=\"video-clips\">\n <View style={styles.header}>\n <Pressable onPress={onClose} hitSlop={10} accessibilityRole=\"button\" accessibilityLabel=\"Close\">\n <MaterialCommunityIcons name=\"close\" size={22} color=\"#F7F7FA\" />\n </Pressable>\n <Text style={styles.headerTitle}>Clips</Text>\n <View style={{ width: 22 }} />\n </View>\n <View style={styles.body}>\n <Text style={styles.lead}>Cut a long video into AI-ranked short clips — same as web canvas.</Text>\n <Text style={styles.label}>Source URL</Text>\n <TextInput\n value={videoUrl}\n onChangeText={setVideoUrl}\n placeholder=\"https://…\"\n placeholderTextColor=\"#7A7A88\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n style={styles.url}\n editable={!busy}\n />\n <Text style={styles.label}>How many</Text>\n <View style={styles.row}>\n {CLIP_COUNT_CHOICES.map((n) => (\n <Pressable\n key={n}\n onPress={() => setCount(n)}\n style={[styles.chip, count === n && styles.chipOn]}\n >\n <Text style={[styles.chipLabel, count === n && styles.chipLabelOn]}>{n}</Text>\n </Pressable>\n ))}\n </View>\n <Text style={styles.label}>Aspect</Text>\n <View style={styles.row}>\n {CLIP_ASPECT_RATIOS.map((value) => (\n <Pressable\n key={value}\n onPress={() => setAspect(value)}\n style={[styles.chip, aspect === value && styles.chipOn]}\n >\n <Text style={[styles.chipLabel, aspect === value && styles.chipLabelOn]}>{value}</Text>\n </Pressable>\n ))}\n </View>\n <Text style={styles.label}>Resolution</Text>\n <View style={styles.row}>\n {CLIP_RESOLUTIONS.map((value) => (\n <Pressable\n key={value}\n onPress={() => setResolution(value)}\n style={[styles.chip, resolution === value && styles.chipOn]}\n >\n <Text style={[styles.chipLabel, resolution === value && styles.chipLabelOn]}>{value}p</Text>\n </Pressable>\n ))}\n </View>\n <Pressable\n onPress={run}\n disabled={busy}\n style={[styles.go, busy && styles.goDisabled]}\n accessibilityRole=\"button\"\n >\n {busy ? <ActivityIndicator color=\"#0A0A0C\" /> : <Text style={styles.goLabel}>Make clips</Text>}\n </Pressable>\n {busy ? <Text style={styles.wait}>This can take a few minutes…</Text> : null}\n </View>\n {notice ? (\n <View style={styles.notice}>\n <Text style={styles.noticeText}>{notice}</Text>\n <Pressable onPress={() => setNotice(null)} hitSlop={8}>\n <Text style={styles.noticeDismiss}>OK</Text>\n </Pressable>\n </View>\n ) : null}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n root: { flex: 1, backgroundColor: '#0A0A0C' },\n header: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: 16,\n paddingVertical: 12,\n },\n headerTitle: { color: '#F7F7FA', fontSize: 15, fontWeight: '600' },\n body: { paddingHorizontal: 18, paddingTop: 12, gap: 10 },\n lead: { color: '#9A9AA5', fontSize: 13, marginBottom: 8 },\n label: { color: '#7A7A88', fontSize: 11.5, fontWeight: '600', textTransform: 'uppercase', letterSpacing: 0.4 },\n url: {\n borderRadius: 10,\n paddingHorizontal: 12,\n paddingVertical: 10,\n backgroundColor: '#1F1F24',\n color: '#F7F7FA',\n fontSize: 14,\n },\n row: { flexDirection: 'row', gap: 8, flexWrap: 'wrap' },\n chip: { paddingHorizontal: 14, paddingVertical: 8, borderRadius: 9, backgroundColor: '#1F1F24' },\n chipOn: { backgroundColor: '#8B7CFF' },\n chipLabel: { color: '#F7F7FA', fontSize: 13, fontWeight: '500' },\n chipLabelOn: { color: '#0A0A0C' },\n go: {\n marginTop: 16,\n height: 48,\n borderRadius: 12,\n backgroundColor: '#8B7CFF',\n alignItems: 'center',\n justifyContent: 'center',\n },\n goDisabled: { opacity: 0.6 },\n goLabel: { color: '#0A0A0C', fontSize: 15, fontWeight: '700' },\n wait: { color: '#9A9AA5', fontSize: 12.5, textAlign: 'center' },\n notice: {\n position: 'absolute',\n left: 20,\n right: 20,\n bottom: 24,\n flexDirection: 'row',\n alignItems: 'center',\n gap: 12,\n paddingHorizontal: 14,\n paddingVertical: 11,\n borderRadius: 12,\n backgroundColor: 'rgba(248, 250, 252, 0.96)',\n },\n noticeText: { flex: 1, color: '#0f172a', fontSize: 13 },\n noticeDismiss: { color: '#6C5CE7', fontSize: 13, fontWeight: '600' },\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VideoClipsExperience.js","sources":["../../../src/features/canvas/VideoClipsExperience.tsx"],"sourcesContent":["/**\n * Native twin of web canvas \"Clips\": `yantra-video-clip` /\n * `YANTRA_VIDEO_CLIP_RUN` turns a long video into ranked short clips.\n */\nimport React, { useMemo, useState } from 'react';\nimport { ActivityIndicator, StyleSheet, Text, TextInput, View } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport type { CanvasItem } from './canvasCore';\nimport { friendlyMediaError, type RunMediaAction } from './videoEditor/mediaActions';\nimport { unwrapProxyUrl } from './videoEditor/remoteMediaClient';\nimport {\n CLIP_ASPECT_RATIOS,\n CLIP_COUNT_CHOICES,\n CLIP_RESOLUTIONS,\n buildClipRunParams,\n parseClipRunResult,\n} from './videoClips';\nimport { useCanvasTheme, themedStyles, type CanvasPalette } from './canvasTheme';\nimport { Pressable, HIT, RADIUS, SPACE, Segmented, TYPE, pressedStyle } from './canvasUi';\n\nexport interface VideoClipsExperienceProps {\n item?: CanvasItem | null;\n runAction?: RunMediaAction;\n onClose: () => void;\n onClips: (urls: string[], aspect: string) => void;\n}\n\nexport function VideoClipsExperience({ item, runAction, onClose, onClips }: VideoClipsExperienceProps) {\n const theme = useCanvasTheme();\n const styles = useMemo(() => makeStyles(theme), [theme]);\n const [count, setCount] = useState(3);\n const [aspect, setAspect] = useState<(typeof CLIP_ASPECT_RATIOS)[number]>('9:16');\n const [resolution, setResolution] = useState<(typeof CLIP_RESOLUTIONS)[number]>('720');\n const [videoUrl, setVideoUrl] = useState(item?.src ? unwrapProxyUrl(item.src) : '');\n const [busy, setBusy] = useState(false);\n const [notice, setNotice] = useState<string | null>(null);\n\n const run = () => {\n const source = videoUrl.trim();\n if (!source) {\n setNotice('Paste a video URL, or open Clips from a clip already on the board.');\n return;\n }\n if (!runAction) {\n setNotice('Clips need the host connector, which this host has not wired.');\n return;\n }\n if (busy) return;\n setBusy(true);\n setNotice(null);\n runAction(\n 'yantra-video-clip',\n 'YANTRA_VIDEO_CLIP_RUN',\n buildClipRunParams({\n videoUrl: unwrapProxyUrl(source),\n numClips: count,\n aspectRatio: aspect,\n resolution,\n }),\n )\n .then((result) => {\n const urls = parseClipRunResult(result);\n if (!urls.length) throw new Error('The pipeline finished but returned no clips');\n onClips(urls, aspect);\n })\n .catch((err: unknown) => setNotice(friendlyMediaError(err, 'video clips')))\n .finally(() => setBusy(false));\n };\n\n return (\n <View style={styles.root} testID=\"video-clips\">\n <View style={styles.header}>\n <Pressable\n onPress={onClose}\n hitSlop={10}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Close\"\n style={({ pressed }) => [styles.close, pressedStyle(pressed)]}\n >\n <MaterialCommunityIcons name=\"close\" size={22} color={theme.foreground} />\n </Pressable>\n <Text style={styles.headerTitle}>Clips</Text>\n <View style={styles.close} />\n </View>\n <View style={styles.body}>\n <Text style={styles.lead}>Cut a long video into short clips, ranked by AI.</Text>\n <Text style={styles.label}>Source URL</Text>\n <TextInput\n value={videoUrl}\n onChangeText={setVideoUrl}\n placeholder=\"https://…\"\n placeholderTextColor={theme.mutedForeground}\n autoCapitalize=\"none\"\n autoCorrect={false}\n style={styles.url}\n editable={!busy}\n />\n <Text style={styles.label}>How many</Text>\n <Segmented\n options={CLIP_COUNT_CHOICES.map((n) => ({ id: String(n), label: String(n) }))}\n value={String(count)}\n onChange={(id) => setCount(Number(id) as typeof count)}\n />\n <Text style={styles.label}>Aspect</Text>\n <Segmented\n options={CLIP_ASPECT_RATIOS.map((value) => ({ id: value, label: value }))}\n value={aspect}\n onChange={setAspect}\n />\n <Text style={styles.label}>Resolution</Text>\n <Segmented\n options={CLIP_RESOLUTIONS.map((value) => ({ id: value, label: `${value}p` }))}\n value={resolution}\n onChange={setResolution}\n />\n <Pressable\n onPress={run}\n disabled={busy}\n style={({ pressed }) => [styles.go, busy && styles.goDisabled, pressedStyle(pressed && !busy)]}\n accessibilityRole=\"button\"\n >\n {busy ? (\n <ActivityIndicator color={theme.primaryForeground} />\n ) : (\n <Text style={styles.goLabel}>Make clips</Text>\n )}\n </Pressable>\n {busy ? <Text style={styles.wait}>This can take a few minutes…</Text> : null}\n </View>\n {notice ? (\n <View style={styles.notice}>\n <Text style={styles.noticeText}>{notice}</Text>\n <Pressable\n onPress={() => setNotice(null)}\n hitSlop={8}\n style={({ pressed }) => pressedStyle(pressed)}\n >\n <Text style={styles.noticeDismiss}>OK</Text>\n </Pressable>\n </View>\n ) : null}\n </View>\n );\n}\n\nconst makeStyles = themedStyles((theme: CanvasPalette) =>\n StyleSheet.create({\n root: { flex: 1, backgroundColor: theme.background },\n header: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: SPACE.sm,\n minHeight: HIT + SPACE.md,\n },\n close: { width: HIT, height: HIT, borderRadius: HIT / 2, alignItems: 'center', justifyContent: 'center' },\n headerTitle: { ...TYPE.title, color: theme.foreground },\n body: { paddingHorizontal: SPACE.lg, paddingTop: SPACE.sm, gap: SPACE.sm },\n lead: { ...TYPE.body, color: theme.mutedForeground, marginBottom: SPACE.md },\n label: { ...TYPE.label, color: theme.mutedForeground, marginTop: SPACE.lg },\n url: {\n ...TYPE.body,\n minHeight: HIT + 4,\n borderRadius: RADIUS.md,\n paddingHorizontal: SPACE.md + 2,\n paddingVertical: SPACE.md,\n backgroundColor: theme.card,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.border,\n color: theme.foreground,\n },\n row: { flexDirection: 'row', gap: SPACE.sm, flexWrap: 'wrap' },\n chip: {\n minHeight: 38,\n minWidth: 52,\n paddingHorizontal: SPACE.lg,\n borderRadius: RADIUS.pill,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.edRaised,\n },\n chipOn: { backgroundColor: theme.edInk },\n chipLabel: { ...TYPE.label, color: theme.edInk2 },\n chipLabelOn: { color: theme.edOnInk },\n go: {\n marginTop: SPACE.xl,\n minHeight: 52,\n borderRadius: RADIUS.pill,\n backgroundColor: theme.primary,\n alignItems: 'center',\n justifyContent: 'center',\n },\n goDisabled: { opacity: 0.6 },\n goLabel: { ...TYPE.label, fontSize: 16, color: theme.primaryForeground },\n wait: { ...TYPE.caption, color: theme.mutedForeground, textAlign: 'center', marginTop: SPACE.xs },\n notice: {\n position: 'absolute',\n left: SPACE.lg,\n right: SPACE.lg,\n bottom: SPACE.xl,\n flexDirection: 'row',\n alignItems: 'center',\n gap: SPACE.md,\n paddingHorizontal: SPACE.lg,\n paddingVertical: SPACE.md,\n borderRadius: RADIUS.lg,\n backgroundColor: theme.edInk,\n },\n noticeText: { ...TYPE.caption, fontSize: 13, lineHeight: 18, flex: 1, color: theme.edOnInk },\n noticeDismiss: { ...TYPE.label, color: theme.edOnInk, textDecorationLine: 'underline' },\n }),\n);\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import {jsxs,jsx}from'react/jsx-runtime';import {useState,useCallback,useMemo}from'react';import {StyleSheet,View,Pressable,Text,ActivityIndicator,ScrollView}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {resultUrl,friendlyMediaError}from'./videoEditor/mediaActions.js';import {Stepper,Field,PickRow,PickMulti}from'./videoEditor/formWidgets.js';import {VIDEO_EDIT_CATEGORIES,VIDEO_EDIT_ACTIONS,resultKind,INSTANT_HINT}from'./videoEditor/videoEditOps.js';var __defProp = Object.defineProperty;
1
+ import {jsxs,jsx}from'react/jsx-runtime';import {useMemo,useState,useCallback}from'react';import {View,Text,ActivityIndicator,ScrollView,StyleSheet}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {resultUrl,friendlyMediaError}from'./videoEditor/mediaActions.js';import {Stepper,Field,PickRow,PickMulti}from'./videoEditor/formWidgets.js';import {VIDEO_EDIT_CATEGORIES,VIDEO_EDIT_ACTIONS,resultKind,INSTANT_HINT}from'./videoEditor/videoEditOps.js';import {useCanvasTheme,themedStyles}from'./canvasTheme.js';import {Pressable,pressedStyle,RADIUS,SPACE,TYPE}from'./canvasUi.js';var __defProp = Object.defineProperty;
2
2
  var __defProps = Object.defineProperties;
3
3
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
4
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -26,6 +26,8 @@ function VideoEditExperience({
26
26
  onApplied
27
27
  }) {
28
28
  var _a, _b;
29
+ const theme = useCanvasTheme();
30
+ const styles = useMemo(() => makeStyles(theme), [theme]);
29
31
  const [history, setHistory] = useState([src]);
30
32
  const [appliedKind, setAppliedKind] = useState("video");
31
33
  const [busy, setBusy] = useState(null);
@@ -45,7 +47,7 @@ function VideoEditExperience({
45
47
  }, []);
46
48
  const apply = useCallback(() => {
47
49
  if (!runAction) {
48
- setNotice("Editing needs the host connector \u2014 not wired in this host.");
50
+ setNotice("Editing needs the host connector, which this host has not wired.");
49
51
  return;
50
52
  }
51
53
  if (busy) return;
@@ -76,11 +78,13 @@ function VideoEditExperience({
76
78
  const audios = useMemo(() => items.filter((i) => i.type === "audio"), [items]);
77
79
  return /* @__PURE__ */ jsxs(View, { style: styles.root, testID: "video-editor", children: [
78
80
  /* @__PURE__ */ jsxs(View, { style: styles.header, children: [
79
- /* @__PURE__ */ jsx(Pressable, { onPress: onClose, hitSlop: 10, accessibilityRole: "button", accessibilityLabel: "Close editor", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 22, color: "#F7F7FA" }) }),
81
+ /* @__PURE__ */ jsx(Pressable, { onPress: onClose, hitSlop: 10, accessibilityRole: "button", accessibilityLabel: "Close editor", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 22, color: theme.edInk }) }),
80
82
  /* @__PURE__ */ jsx(Text, { style: styles.headerTitle, numberOfLines: 1, children: (name == null ? void 0 : name.trim()) || "Edit video" }),
81
83
  /* @__PURE__ */ jsxs(View, { style: styles.headerActions, children: [
82
- /* @__PURE__ */ jsx(Pressable, { onPress: () => setHistory((h) => h.length > 1 ? h.slice(0, -1) : h), hitSlop: 10, disabled: !edited || busy !== null, accessibilityRole: "button", accessibilityLabel: "Undo", style: !edited || busy ? styles.disabled : null, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "undo-variant", size: 21, color: "#F7F7FA" }) }),
83
- /* @__PURE__ */ jsx(Pressable, { onPress: done, hitSlop: 10, accessibilityRole: "button", accessibilityLabel: "Done", children: /* @__PURE__ */ jsx(Text, { style: styles.done, children: edited ? "Done" : "Close" }) })
84
+ /* @__PURE__ */ jsx(Pressable, { onPress: () => setHistory((h) => h.length > 1 ? h.slice(0, -1) : h), hitSlop: 10, disabled: !edited || busy !== null, accessibilityRole: "button", accessibilityLabel: "Undo", style: !edited || busy ? styles.disabled : null, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "undo-variant", size: 21, color: theme.edInk }) }),
85
+ /* @__PURE__ */ jsx(Pressable, { onPress: done, hitSlop: 10, accessibilityRole: "button", accessibilityLabel: "Done", style: ({
86
+ pressed
87
+ }) => [styles.doneBtn, pressedStyle(pressed)], children: /* @__PURE__ */ jsx(Text, { style: styles.done, children: edited ? "Done" : "Close" }) })
84
88
  ] })
85
89
  ] }),
86
90
  /* @__PURE__ */ jsxs(View, { style: styles.stage, children: [
@@ -101,20 +105,26 @@ function VideoEditExperience({
101
105
  setCategory(cat.id);
102
106
  setOp(cat.ops[0].op);
103
107
  setProbe(null);
104
- }, style: [styles.catChip, active && styles.catChipOn], children: /* @__PURE__ */ jsx(Text, { style: [styles.catLabel, active && styles.catLabelOn], children: cat.label }) }, cat.id);
108
+ }, style: ({
109
+ pressed
110
+ }) => [styles.catChip, active && styles.catChipOn, pressedStyle(pressed)], children: /* @__PURE__ */ jsx(Text, { style: [styles.catLabel, active && styles.catLabelOn], children: cat.label }) }, cat.id);
105
111
  }) }),
106
112
  /* @__PURE__ */ jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, contentContainerStyle: styles.chipRow, style: styles.chipScroll, children: ops.map((entry) => {
107
113
  const active = op === entry.op;
108
114
  return /* @__PURE__ */ jsx(Pressable, { onPress: () => {
109
115
  setOp(entry.op);
110
116
  setProbe(null);
111
- }, style: [styles.opChip, active && styles.opChipOn], children: /* @__PURE__ */ jsx(Text, { style: [styles.opLabel, active && styles.opLabelOn], children: entry.label }) }, entry.op);
117
+ }, style: ({
118
+ pressed
119
+ }) => [styles.opChip, active && styles.opChipOn, pressedStyle(pressed)], children: /* @__PURE__ */ jsx(Text, { style: [styles.opLabel, active && styles.opLabelOn], children: entry.label }) }, entry.op);
112
120
  }) }),
113
121
  /* @__PURE__ */ jsxs(ScrollView, { style: styles.controls, contentContainerStyle: styles.controlsInner, children: [
114
122
  /* @__PURE__ */ jsx(OpControls, { op, form, patch, videos, images, audios }),
115
123
  probe ? /* @__PURE__ */ jsx(Text, { style: styles.probe, children: probe }) : null
116
124
  ] }),
117
- /* @__PURE__ */ jsx(Pressable, { onPress: apply, disabled: busy !== null, style: [styles.apply, busy && styles.disabled], accessibilityRole: "button", accessibilityLabel: "Apply edit", children: /* @__PURE__ */ jsxs(Text, { style: styles.applyLabel, children: [
125
+ /* @__PURE__ */ jsx(Pressable, { onPress: apply, disabled: busy !== null, style: ({
126
+ pressed
127
+ }) => [styles.apply, busy && styles.disabled, pressedStyle(pressed)], accessibilityRole: "button", accessibilityLabel: "Apply edit", children: /* @__PURE__ */ jsxs(Text, { style: styles.applyLabel, children: [
118
128
  "Apply ",
119
129
  opLabel(op)
120
130
  ] }) })
@@ -361,6 +371,8 @@ function OpControls({
361
371
  images,
362
372
  audios
363
373
  }) {
374
+ const theme = useCanvasTheme();
375
+ const styles = useMemo(() => makeStyles(theme), [theme]);
364
376
  const hint = INSTANT_HINT[op];
365
377
  if (hint) return /* @__PURE__ */ jsx(Text, { style: styles.hint, children: hint });
366
378
  if (op === "trim") {
@@ -530,243 +542,243 @@ function OpControls({
530
542
  }
531
543
  return /* @__PURE__ */ jsx(Text, { style: styles.hint, children: "Apply to run this edit." });
532
544
  }
533
- const styles = StyleSheet.create({
545
+ const makeStyles = themedStyles((theme) => StyleSheet.create({
534
546
  root: {
535
547
  flex: 1,
536
- backgroundColor: "#0A0A0C"
548
+ backgroundColor: theme.edBg
537
549
  },
538
550
  header: {
539
551
  flexDirection: "row",
540
552
  alignItems: "center",
541
553
  justifyContent: "space-between",
542
- paddingHorizontal: 16,
543
- paddingVertical: 12,
544
- gap: 12
554
+ paddingHorizontal: SPACE.lg,
555
+ paddingVertical: SPACE.sm,
556
+ minHeight: 56,
557
+ gap: SPACE.md
545
558
  },
546
- headerTitle: {
559
+ headerTitle: __spreadProps(__spreadValues({}, TYPE.title), {
547
560
  flex: 1,
548
- color: "#F7F7FA",
549
- fontSize: 15,
550
- fontWeight: "600",
561
+ color: theme.edInk,
551
562
  textAlign: "center"
552
- },
563
+ }),
553
564
  headerActions: {
554
565
  flexDirection: "row",
555
566
  alignItems: "center",
556
- gap: 16
567
+ gap: SPACE.lg
557
568
  },
558
- done: {
559
- color: "#8B7CFF",
560
- fontSize: 15,
561
- fontWeight: "600"
569
+ doneBtn: {
570
+ minHeight: 36,
571
+ paddingHorizontal: SPACE.lg,
572
+ borderRadius: RADIUS.pill,
573
+ backgroundColor: theme.primary,
574
+ alignItems: "center",
575
+ justifyContent: "center"
562
576
  },
577
+ done: __spreadProps(__spreadValues({}, TYPE.label), {
578
+ color: theme.primaryForeground
579
+ }),
563
580
  disabled: {
564
581
  opacity: 0.35
565
582
  },
566
583
  stage: {
567
584
  flex: 1,
568
- marginHorizontal: 14,
569
- borderRadius: 18,
585
+ marginHorizontal: SPACE.md,
586
+ borderRadius: RADIUS.lg,
570
587
  backgroundColor: "#0F0F14",
588
+ // media stage stays dark
571
589
  overflow: "hidden",
572
590
  alignItems: "center",
573
591
  justifyContent: "center"
574
592
  },
575
593
  playBtn: {
576
594
  position: "absolute",
577
- width: 52,
578
- height: 52,
579
- borderRadius: 26,
595
+ width: 56,
596
+ height: 56,
597
+ borderRadius: RADIUS.pill,
580
598
  backgroundColor: "#F7F7FA",
581
599
  alignItems: "center",
582
600
  justifyContent: "center"
583
601
  },
584
602
  busyVeil: __spreadProps(__spreadValues({}, StyleSheet.absoluteFillObject), {
585
- borderRadius: 18,
603
+ borderRadius: RADIUS.lg,
586
604
  alignItems: "center",
587
605
  justifyContent: "center",
588
- gap: 10,
606
+ gap: SPACE.sm,
589
607
  backgroundColor: "rgba(10, 10, 12, 0.55)"
590
608
  }),
591
- busyLabel: {
592
- color: "#E8E8EE",
593
- fontSize: 12.5
594
- },
609
+ busyLabel: __spreadProps(__spreadValues({}, TYPE.caption), {
610
+ color: "#E8E8EE"
611
+ }),
595
612
  panel: {
596
613
  maxHeight: "48%",
597
- borderTopWidth: StyleSheet.hairlineWidth,
598
- borderTopColor: "rgba(255,255,255,0.08)",
599
- paddingBottom: 10
614
+ marginTop: SPACE.md,
615
+ paddingTop: SPACE.xs,
616
+ paddingBottom: SPACE.md,
617
+ borderTopLeftRadius: RADIUS.xl,
618
+ borderTopRightRadius: RADIUS.xl,
619
+ backgroundColor: theme.edPanel
600
620
  },
601
621
  chipScroll: {
602
622
  flexGrow: 0
603
623
  },
604
624
  chipRow: {
605
- paddingHorizontal: 12,
606
- paddingTop: 8,
607
- gap: 6,
625
+ paddingHorizontal: SPACE.md,
626
+ paddingTop: SPACE.sm,
627
+ gap: SPACE.sm,
608
628
  flexDirection: "row"
609
629
  },
610
630
  catChip: {
611
- paddingHorizontal: 10,
612
- paddingVertical: 6,
613
- borderRadius: 999,
614
- backgroundColor: "#1F1F24"
631
+ minHeight: 32,
632
+ justifyContent: "center",
633
+ paddingHorizontal: SPACE.md,
634
+ borderRadius: RADIUS.pill,
635
+ backgroundColor: theme.edRaised
615
636
  },
616
637
  catChipOn: {
617
- backgroundColor: "#F7F7FA"
618
- },
619
- catLabel: {
620
- color: "#9A9AA5",
621
- fontSize: 11,
622
- fontWeight: "600"
638
+ backgroundColor: theme.edInk
623
639
  },
640
+ catLabel: __spreadProps(__spreadValues({}, TYPE.label), {
641
+ color: theme.edInk2
642
+ }),
624
643
  catLabelOn: {
625
- color: "#0A0A0C"
644
+ color: theme.edOnInk
626
645
  },
627
646
  opChip: {
628
- paddingHorizontal: 10,
629
- paddingVertical: 5,
630
- borderRadius: 999,
631
- backgroundColor: "#16161A"
647
+ minHeight: 30,
648
+ justifyContent: "center",
649
+ paddingHorizontal: SPACE.md,
650
+ borderRadius: RADIUS.pill,
651
+ backgroundColor: "transparent"
632
652
  },
633
653
  opChipOn: {
634
- backgroundColor: "#8B7CFF"
635
- },
636
- opLabel: {
637
- color: "#C8C8D0",
638
- fontSize: 12,
639
- fontWeight: "500"
654
+ backgroundColor: theme.edAccentSoft
640
655
  },
656
+ opLabel: __spreadProps(__spreadValues({}, TYPE.caption), {
657
+ color: theme.edInk2
658
+ }),
641
659
  opLabelOn: {
642
- color: "#0A0A0C"
660
+ color: theme.edAccent,
661
+ fontWeight: "600"
643
662
  },
644
663
  controls: {
645
- maxHeight: 140,
646
- marginTop: 6
664
+ maxHeight: 150,
665
+ marginTop: SPACE.sm
647
666
  },
648
667
  controlsInner: {
649
- paddingHorizontal: 14,
650
- paddingBottom: 8,
651
- gap: 8
668
+ paddingHorizontal: SPACE.lg,
669
+ paddingBottom: SPACE.sm,
670
+ gap: SPACE.sm
652
671
  },
653
672
  apply: {
654
- marginHorizontal: 14,
655
- marginTop: 4,
656
- height: 40,
657
- borderRadius: 10,
658
- backgroundColor: "#8B7CFF",
673
+ marginHorizontal: SPACE.lg,
674
+ marginTop: SPACE.sm,
675
+ height: 44,
676
+ borderRadius: RADIUS.md,
677
+ backgroundColor: theme.edAccent,
659
678
  alignItems: "center",
660
679
  justifyContent: "center"
661
680
  },
662
- applyLabel: {
663
- color: "#0A0A0C",
681
+ applyLabel: __spreadProps(__spreadValues({}, TYPE.label), {
664
682
  fontSize: 14,
665
- fontWeight: "700"
666
- },
683
+ color: theme.edOnInk
684
+ }),
667
685
  row: {
668
686
  flexDirection: "row",
669
687
  alignItems: "center",
670
- gap: 8,
688
+ gap: SPACE.sm,
671
689
  flexWrap: "wrap",
672
- paddingVertical: 4
690
+ paddingVertical: SPACE.xs
673
691
  },
674
692
  grid: {
675
693
  flexDirection: "row",
676
694
  flexWrap: "wrap",
677
- gap: 8
678
- },
679
- hint: {
680
- color: "#9A9AA5",
681
- fontSize: 13,
682
- lineHeight: 18
695
+ gap: SPACE.sm
683
696
  },
697
+ hint: __spreadProps(__spreadValues({}, TYPE.label), {
698
+ fontWeight: "400",
699
+ color: theme.edInk2
700
+ }),
684
701
  probe: {
685
- color: "#C8C8D0",
702
+ color: theme.edInk2,
686
703
  fontSize: 11,
687
704
  fontFamily: "Menlo",
688
- marginTop: 6
705
+ marginTop: SPACE.sm
689
706
  },
690
707
  choice: {
691
- paddingHorizontal: 12,
692
- paddingVertical: 8,
693
- borderRadius: 9,
694
- backgroundColor: "#1F1F24",
708
+ minHeight: 34,
709
+ justifyContent: "center",
710
+ paddingHorizontal: SPACE.md,
711
+ borderRadius: RADIUS.pill,
712
+ backgroundColor: theme.edRaised,
695
713
  maxWidth: 140
696
714
  },
697
715
  choiceOn: {
698
- backgroundColor: "#8B7CFF"
699
- },
700
- choiceLabel: {
701
- color: "#F7F7FA",
702
- fontSize: 12.5,
703
- fontWeight: "500"
716
+ backgroundColor: theme.edInk
704
717
  },
718
+ choiceLabel: __spreadProps(__spreadValues({}, TYPE.caption), {
719
+ color: theme.edInk
720
+ }),
705
721
  choiceLabelOn: {
706
- color: "#0A0A0C"
722
+ color: theme.edOnInk,
723
+ fontWeight: "600"
707
724
  },
708
725
  field: {
709
726
  minWidth: 88,
710
727
  flexGrow: 1
711
728
  },
712
- fieldLabel: {
713
- color: "#9A9AA5",
714
- fontSize: 11,
715
- marginBottom: 4
716
- },
729
+ fieldLabel: __spreadProps(__spreadValues({}, TYPE.caption), {
730
+ color: theme.edInk2,
731
+ marginBottom: SPACE.xs
732
+ }),
717
733
  fieldInput: {
718
- color: "#F7F7FA",
719
- fontSize: 13,
720
- paddingHorizontal: 10,
721
- paddingVertical: 8,
722
- borderRadius: 9,
723
- backgroundColor: "#1F1F24"
734
+ color: theme.edInk,
735
+ fontSize: 14,
736
+ paddingHorizontal: SPACE.md,
737
+ paddingVertical: 10,
738
+ borderRadius: RADIUS.md,
739
+ backgroundColor: theme.edRaised
724
740
  },
725
741
  fieldMulti: {
726
- minHeight: 56,
742
+ minHeight: 64,
727
743
  textAlignVertical: "top"
728
744
  },
729
745
  stepper: {
730
746
  flexDirection: "row",
731
747
  alignItems: "center",
732
- gap: 9,
733
- paddingHorizontal: 12,
734
- paddingVertical: 8,
735
- borderRadius: 9,
736
- backgroundColor: "#1F1F24"
737
- },
738
- stepperLabel: {
739
- color: "#9A9AA5",
740
- fontSize: 11.5
741
- },
742
- stepperValue: {
743
- color: "#F7F7FA",
744
- fontSize: 12.5,
748
+ gap: SPACE.sm,
749
+ paddingHorizontal: SPACE.md,
750
+ minHeight: 40,
751
+ borderRadius: RADIUS.md,
752
+ backgroundColor: theme.edRaised
753
+ },
754
+ stepperLabel: __spreadProps(__spreadValues({}, TYPE.caption), {
755
+ color: theme.edInk2
756
+ }),
757
+ stepperValue: __spreadProps(__spreadValues({}, TYPE.label), {
758
+ color: theme.edInk,
745
759
  fontVariant: ["tabular-nums"],
746
760
  minWidth: 44,
747
761
  textAlign: "center"
748
- },
762
+ }),
749
763
  notice: {
750
764
  position: "absolute",
751
- left: 20,
752
- right: 20,
753
- bottom: 24,
765
+ left: SPACE.lg,
766
+ right: SPACE.lg,
767
+ bottom: SPACE.xl,
754
768
  flexDirection: "row",
755
769
  alignItems: "center",
756
- gap: 12,
757
- paddingHorizontal: 14,
758
- paddingVertical: 11,
759
- borderRadius: 12,
760
- backgroundColor: "rgba(248, 250, 252, 0.96)"
761
- },
762
- noticeText: {
770
+ gap: SPACE.md,
771
+ paddingHorizontal: SPACE.lg,
772
+ paddingVertical: SPACE.md,
773
+ borderRadius: RADIUS.md,
774
+ backgroundColor: theme.edInk
775
+ },
776
+ noticeText: __spreadProps(__spreadValues({}, TYPE.label), {
777
+ fontWeight: "400",
763
778
  flex: 1,
764
- color: "#0f172a",
765
- fontSize: 13
766
- },
767
- noticeDismiss: {
768
- color: "#6C5CE7",
769
- fontSize: 13,
770
- fontWeight: "600"
771
- }
772
- });export{VideoEditExperience};//# sourceMappingURL=VideoEditExperience.js.map
779
+ color: theme.edOnInk
780
+ }),
781
+ noticeDismiss: __spreadProps(__spreadValues({}, TYPE.label), {
782
+ color: theme.edAccent
783
+ })
784
+ }));export{VideoEditExperience};//# sourceMappingURL=VideoEditExperience.js.map