@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.
- package/lib/features/canvas/AudioEditorExperience.js +207 -109
- package/lib/features/canvas/AudioEditorExperience.js.map +1 -1
- package/lib/features/canvas/CanvasAgentChatPane.js +87 -72
- package/lib/features/canvas/CanvasAgentChatPane.js.map +1 -1
- package/lib/features/canvas/CanvasBoardsGrid.js +494 -387
- package/lib/features/canvas/CanvasBoardsGrid.js.map +1 -1
- package/lib/features/canvas/CanvasChatResultCard.js +78 -59
- package/lib/features/canvas/CanvasChatResultCard.js.map +1 -1
- package/lib/features/canvas/CanvasEditToolsPanel.js +126 -84
- package/lib/features/canvas/CanvasEditToolsPanel.js.map +1 -1
- package/lib/features/canvas/CanvasExperience.js +108 -126
- package/lib/features/canvas/CanvasExperience.js.map +1 -1
- package/lib/features/canvas/CanvasGeneratePanel.js +178 -166
- package/lib/features/canvas/CanvasGeneratePanel.js.map +1 -1
- package/lib/features/canvas/CanvasLibrarySheet.js +119 -123
- package/lib/features/canvas/CanvasLibrarySheet.js.map +1 -1
- package/lib/features/canvas/CanvasLooksPanel.js +113 -89
- package/lib/features/canvas/CanvasLooksPanel.js.map +1 -1
- package/lib/features/canvas/CanvasModelPicker.js +79 -79
- package/lib/features/canvas/CanvasModelPicker.js.map +1 -1
- package/lib/features/canvas/CanvasTasksPanel.js +193 -128
- package/lib/features/canvas/CanvasTasksPanel.js.map +1 -1
- package/lib/features/canvas/CanvasTemplatesPanel.js +106 -94
- package/lib/features/canvas/CanvasTemplatesPanel.js.map +1 -1
- package/lib/features/canvas/CanvasToolDock.js +195 -127
- package/lib/features/canvas/CanvasToolDock.js.map +1 -1
- package/lib/features/canvas/FrameExtractorExperience.js +163 -100
- package/lib/features/canvas/FrameExtractorExperience.js.map +1 -1
- package/lib/features/canvas/GeneratorReferenceSlots.js +132 -69
- package/lib/features/canvas/GeneratorReferenceSlots.js.map +1 -1
- package/lib/features/canvas/ImageEditorExperience.js +278 -209
- package/lib/features/canvas/ImageEditorExperience.js.map +1 -1
- package/lib/features/canvas/InfluencerStudioExperience.js +167 -125
- package/lib/features/canvas/InfluencerStudioExperience.js.map +1 -1
- package/lib/features/canvas/MoodboardExperience.js +102 -85
- package/lib/features/canvas/MoodboardExperience.js.map +1 -1
- package/lib/features/canvas/NativeCanvasViewer.js +203 -192
- package/lib/features/canvas/NativeCanvasViewer.js.map +1 -1
- package/lib/features/canvas/PromoContextFields.js +125 -92
- package/lib/features/canvas/PromoContextFields.js.map +1 -1
- package/lib/features/canvas/SetStudioExperience.js +225 -143
- package/lib/features/canvas/SetStudioExperience.js.map +1 -1
- package/lib/features/canvas/VideoClipsExperience.js +126 -92
- package/lib/features/canvas/VideoClipsExperience.js.map +1 -1
- package/lib/features/canvas/VideoEditExperience.js +154 -142
- package/lib/features/canvas/VideoEditExperience.js.map +1 -1
- package/lib/features/canvas/VideoEditorExperience.js +551 -492
- package/lib/features/canvas/VideoEditorExperience.js.map +1 -1
- package/lib/features/canvas/VideoGeneratorExperience.js +284 -131
- package/lib/features/canvas/VideoGeneratorExperience.js.map +1 -1
- package/lib/features/canvas/canvasTasks.js +7 -3
- package/lib/features/canvas/canvasTasks.js.map +1 -1
- package/lib/features/canvas/canvasTheme.js +265 -0
- package/lib/features/canvas/canvasTheme.js.map +1 -0
- package/lib/features/canvas/canvasUi.js +381 -0
- package/lib/features/canvas/canvasUi.js.map +1 -0
- package/lib/features/canvas/recorder/CameraRecorderExperience.js +109 -52
- package/lib/features/canvas/recorder/CameraRecorderExperience.js.map +1 -1
- package/lib/features/canvas/serverTasks.js +1 -1
- package/lib/features/canvas/serverTasks.js.map +1 -1
- package/lib/features/canvas/set/SetViewportWebView.js +1 -1
- package/lib/features/canvas/set/SetViewportWebView.js.map +1 -1
- package/lib/features/canvas/videoEditor/BlurBoxOverlay.js +8 -7
- package/lib/features/canvas/videoEditor/BlurBoxOverlay.js.map +1 -1
- package/lib/features/canvas/videoEditor/ExportTaskCard.js +44 -41
- package/lib/features/canvas/videoEditor/ExportTaskCard.js.map +1 -1
- package/lib/features/canvas/videoEditor/agent/AgentCutPane.js +50 -45
- package/lib/features/canvas/videoEditor/agent/AgentCutPane.js.map +1 -1
- package/lib/features/canvas/videoEditor/exportTask.js +3 -2
- package/lib/features/canvas/videoEditor/exportTask.js.map +1 -1
- package/lib/features/canvas/videoEditor/formWidgets.js +116 -64
- package/lib/features/canvas/videoEditor/formWidgets.js.map +1 -1
- package/lib/features/canvas/videoEditor/produce/ProduceVideoSheet.js +77 -63
- package/lib/features/canvas/videoEditor/produce/ProduceVideoSheet.js.map +1 -1
- package/lib/features/canvas/videoEditor/tools/ToolsDrawer.js +95 -79
- package/lib/features/canvas/videoEditor/tools/ToolsDrawer.js.map +1 -1
- package/lib/features/design/DesignEditorExperience.js +241 -160
- package/lib/features/design/DesignEditorExperience.js.map +1 -1
- package/lib/features/design/DesignExperience.js +300 -143
- package/lib/features/design/DesignExperience.js.map +1 -1
- package/lib/features/webbuilder/WebBuilderExperience.js +1 -1
- package/lib/features/webbuilder/WebBuilderExperience.js.map +1 -1
- package/lib/features/webbuilder/buildFragments.js +3 -2
- package/lib/features/webbuilder/buildFragments.js.map +1 -1
- package/lib/features/webbuilder/components/PublishSheet.js +1 -1
- package/lib/features/webbuilder/components/PublishSheet.js.map +1 -1
- package/lib/features/webbuilder/webbuilderPrompts.js +2 -5
- package/lib/features/webbuilder/webbuilderPrompts.js.map +1 -1
- package/lib/screens/WebBuilderNative/sandboxProxyApi.js +120 -0
- package/lib/screens/WebBuilderNative/sandboxProxyApi.js.map +1 -0
- package/lib/screens/WebBuilderNative/useRestoredSandboxes.js.map +1 -1
- package/lib/screens/WebBuilderNative/useWebBuilderHost.js +26 -4
- package/lib/screens/WebBuilderNative/useWebBuilderHost.js.map +1 -1
- package/lib/screens/WebBuilderNative/webbuilderTransport.js +110 -7
- package/lib/screens/WebBuilderNative/webbuilderTransport.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsxs,jsx}from'react/jsx-runtime';import {useMemo,useState}from'react';import {
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';import {useMemo,useState}from'react';import {useWindowDimensions,View,Text,FlatList,Image,TextInput,StyleSheet}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {useSafeAreaInsets}from'react-native-safe-area-context';import {newMoodboard,styleBrief}from'./moodboardCore.js';import {unwrapProxyUrl}from'./videoEditor/remoteMediaClient.js';import {useCanvasTheme,themedStyles}from'./canvasTheme.js';import {Pressable,pressedStyle,RADIUS,SPACE,HIT,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;
|
|
@@ -23,6 +23,8 @@ function MoodboardExperience({
|
|
|
23
23
|
onClose,
|
|
24
24
|
onUseBrief
|
|
25
25
|
}) {
|
|
26
|
+
const theme = useCanvasTheme();
|
|
27
|
+
const styles = useMemo(() => makeStyles(theme), [theme]);
|
|
26
28
|
const insets = useSafeAreaInsets();
|
|
27
29
|
const {
|
|
28
30
|
width
|
|
@@ -51,9 +53,13 @@ function MoodboardExperience({
|
|
|
51
53
|
paddingBottom: insets.bottom + 12
|
|
52
54
|
}], children: [
|
|
53
55
|
/* @__PURE__ */ jsxs(View, { style: styles.head, children: [
|
|
54
|
-
/* @__PURE__ */ jsx(Pressable, { onPress: onClose, hitSlop: 10, accessibilityLabel: "Close moodboard",
|
|
56
|
+
/* @__PURE__ */ jsx(Pressable, { onPress: onClose, hitSlop: 10, accessibilityLabel: "Close moodboard", style: ({
|
|
57
|
+
pressed
|
|
58
|
+
}) => [styles.close, pressedStyle(pressed)], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 22, color: theme.edInk }) }),
|
|
55
59
|
/* @__PURE__ */ jsx(Text, { style: styles.title, children: "Moodboard" }),
|
|
56
|
-
/* @__PURE__ */ jsx(Pressable, { onPress: () => onUseBrief(brief, doc.references.map((r) => r.src)), disabled: !brief.trim(), style:
|
|
60
|
+
/* @__PURE__ */ jsx(Pressable, { onPress: () => onUseBrief(brief, doc.references.map((r) => r.src)), disabled: !brief.trim(), style: ({
|
|
61
|
+
pressed
|
|
62
|
+
}) => [styles.useBtn, !brief.trim() && styles.useOff, pressedStyle(pressed && !!brief.trim())], accessibilityRole: "button", children: /* @__PURE__ */ jsx(Text, { style: styles.useLabel, children: "Use brief" }) })
|
|
57
63
|
] }),
|
|
58
64
|
/* @__PURE__ */ jsx(Text, { style: styles.section, children: "Board stills" }),
|
|
59
65
|
boardImages.length === 0 ? /* @__PURE__ */ jsx(Text, { style: styles.hint, children: "Place images on the board to pin them as references." }) : /* @__PURE__ */ jsx(FlatList, { horizontal: true, data: boardImages, keyExtractor: (item) => item.id, showsHorizontalScrollIndicator: false, contentContainerStyle: styles.row, renderItem: ({
|
|
@@ -62,11 +68,13 @@ function MoodboardExperience({
|
|
|
62
68
|
id: `mb-${item.id}`,
|
|
63
69
|
src: item.src,
|
|
64
70
|
label: item.label
|
|
65
|
-
}), style:
|
|
71
|
+
}), style: ({
|
|
72
|
+
pressed
|
|
73
|
+
}) => [styles.addCard, pressedStyle(pressed)], children: [
|
|
66
74
|
/* @__PURE__ */ jsx(Image, { source: {
|
|
67
75
|
uri: item.src
|
|
68
76
|
}, style: styles.addThumb }),
|
|
69
|
-
/* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size:
|
|
77
|
+
/* @__PURE__ */ jsx(View, { style: styles.addIcon, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 14, color: theme.primaryForeground }) })
|
|
70
78
|
] }) }),
|
|
71
79
|
/* @__PURE__ */ jsx(Text, { style: styles.section, children: "References" }),
|
|
72
80
|
doc.references.length === 0 ? /* @__PURE__ */ jsx(Text, { style: styles.hint, children: "Tap a board still above to pin it." }) : /* @__PURE__ */ jsx(FlatList, { data: doc.references, keyExtractor: (item) => item.id, numColumns: 3, contentContainerStyle: styles.grid, renderItem: ({
|
|
@@ -78,72 +86,77 @@ function MoodboardExperience({
|
|
|
78
86
|
/* @__PURE__ */ jsx(Image, { source: {
|
|
79
87
|
uri: item.src
|
|
80
88
|
}, style: styles.refThumb }),
|
|
81
|
-
/* @__PURE__ */ jsx(Pressable, { onPress: () => remove(item.id), style: styles.trash, hitSlop: 6, accessibilityLabel: "Remove reference", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 14, color:
|
|
89
|
+
/* @__PURE__ */ jsx(Pressable, { onPress: () => remove(item.id), style: styles.trash, hitSlop: 6, accessibilityLabel: "Remove reference", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 14, color: theme.edOnInk }) })
|
|
82
90
|
] }) }),
|
|
83
91
|
/* @__PURE__ */ jsx(Text, { style: styles.section, children: "Notes" }),
|
|
84
92
|
/* @__PURE__ */ jsx(TextInput, { value: doc.notes, onChangeText: (notes) => setDoc(__spreadProps(__spreadValues({}, doc), {
|
|
85
93
|
notes
|
|
86
|
-
})), placeholder: "Soft daylight, muted teal, quiet luxury\u2026", placeholderTextColor:
|
|
94
|
+
})), placeholder: "Soft daylight, muted teal, quiet luxury\u2026", placeholderTextColor: theme.edInk3, style: styles.notes, multiline: true }),
|
|
87
95
|
/* @__PURE__ */ jsx(Text, { style: styles.section, children: "Style brief" }),
|
|
88
96
|
/* @__PURE__ */ jsx(Text, { style: styles.brief, children: brief || "Add notes or references to build a brief." })
|
|
89
97
|
] });
|
|
90
98
|
}
|
|
91
|
-
const
|
|
99
|
+
const makeStyles = themedStyles((theme) => StyleSheet.create({
|
|
92
100
|
root: {
|
|
93
101
|
flex: 1,
|
|
94
|
-
backgroundColor:
|
|
102
|
+
backgroundColor: theme.edBg
|
|
95
103
|
},
|
|
96
104
|
head: {
|
|
97
105
|
flexDirection: "row",
|
|
98
106
|
alignItems: "center",
|
|
99
107
|
justifyContent: "space-between",
|
|
100
|
-
paddingHorizontal:
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
108
|
+
paddingHorizontal: SPACE.sm,
|
|
109
|
+
minHeight: HIT + SPACE.xs,
|
|
110
|
+
marginBottom: SPACE.sm
|
|
111
|
+
},
|
|
112
|
+
close: {
|
|
113
|
+
width: HIT,
|
|
114
|
+
height: HIT,
|
|
115
|
+
borderRadius: HIT / 2,
|
|
116
|
+
alignItems: "center",
|
|
117
|
+
justifyContent: "center"
|
|
107
118
|
},
|
|
119
|
+
title: __spreadProps(__spreadValues({}, TYPE.title), {
|
|
120
|
+
color: theme.edInk
|
|
121
|
+
}),
|
|
108
122
|
useBtn: {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
123
|
+
minHeight: 36,
|
|
124
|
+
paddingHorizontal: SPACE.lg,
|
|
125
|
+
marginRight: SPACE.sm,
|
|
126
|
+
borderRadius: RADIUS.pill,
|
|
127
|
+
alignItems: "center",
|
|
128
|
+
justifyContent: "center",
|
|
129
|
+
backgroundColor: theme.primary
|
|
113
130
|
},
|
|
114
131
|
useOff: {
|
|
115
|
-
opacity: 0.
|
|
116
|
-
},
|
|
117
|
-
useLabel: {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
fontSize: 13,
|
|
132
|
-
paddingHorizontal: 16,
|
|
133
|
-
paddingBottom: 8
|
|
134
|
-
},
|
|
132
|
+
opacity: 0.4
|
|
133
|
+
},
|
|
134
|
+
useLabel: __spreadProps(__spreadValues({}, TYPE.label), {
|
|
135
|
+
color: theme.primaryForeground
|
|
136
|
+
}),
|
|
137
|
+
section: __spreadProps(__spreadValues({}, TYPE.label), {
|
|
138
|
+
color: theme.edInk,
|
|
139
|
+
paddingHorizontal: SPACE.lg,
|
|
140
|
+
marginTop: SPACE.lg,
|
|
141
|
+
marginBottom: SPACE.sm
|
|
142
|
+
}),
|
|
143
|
+
hint: __spreadProps(__spreadValues({}, TYPE.caption), {
|
|
144
|
+
color: theme.edInk3,
|
|
145
|
+
paddingHorizontal: SPACE.lg,
|
|
146
|
+
paddingBottom: SPACE.sm
|
|
147
|
+
}),
|
|
135
148
|
row: {
|
|
136
|
-
paddingHorizontal:
|
|
137
|
-
gap:
|
|
138
|
-
paddingBottom:
|
|
149
|
+
paddingHorizontal: SPACE.md,
|
|
150
|
+
gap: SPACE.sm,
|
|
151
|
+
paddingBottom: SPACE.xs
|
|
139
152
|
},
|
|
140
153
|
addCard: {
|
|
141
|
-
width:
|
|
142
|
-
height:
|
|
143
|
-
borderRadius:
|
|
154
|
+
width: 76,
|
|
155
|
+
height: 76,
|
|
156
|
+
borderRadius: RADIUS.md,
|
|
144
157
|
overflow: "hidden",
|
|
145
|
-
marginHorizontal:
|
|
146
|
-
backgroundColor:
|
|
158
|
+
marginHorizontal: SPACE.xs,
|
|
159
|
+
backgroundColor: theme.edRaised
|
|
147
160
|
},
|
|
148
161
|
addThumb: {
|
|
149
162
|
width: "100%",
|
|
@@ -151,21 +164,24 @@ const styles = StyleSheet.create({
|
|
|
151
164
|
},
|
|
152
165
|
addIcon: {
|
|
153
166
|
position: "absolute",
|
|
154
|
-
right:
|
|
155
|
-
bottom:
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
167
|
+
right: 6,
|
|
168
|
+
bottom: 6,
|
|
169
|
+
width: 22,
|
|
170
|
+
height: 22,
|
|
171
|
+
borderRadius: 11,
|
|
172
|
+
alignItems: "center",
|
|
173
|
+
justifyContent: "center",
|
|
174
|
+
backgroundColor: theme.primary
|
|
159
175
|
},
|
|
160
176
|
grid: {
|
|
161
|
-
paddingHorizontal:
|
|
162
|
-
paddingBottom:
|
|
177
|
+
paddingHorizontal: SPACE.md,
|
|
178
|
+
paddingBottom: SPACE.sm
|
|
163
179
|
},
|
|
164
180
|
refTile: {
|
|
165
|
-
margin:
|
|
166
|
-
borderRadius:
|
|
181
|
+
margin: SPACE.xs,
|
|
182
|
+
borderRadius: RADIUS.md,
|
|
167
183
|
overflow: "hidden",
|
|
168
|
-
backgroundColor:
|
|
184
|
+
backgroundColor: theme.edRaised
|
|
169
185
|
},
|
|
170
186
|
refThumb: {
|
|
171
187
|
width: "100%",
|
|
@@ -173,33 +189,34 @@ const styles = StyleSheet.create({
|
|
|
173
189
|
},
|
|
174
190
|
trash: {
|
|
175
191
|
position: "absolute",
|
|
176
|
-
top:
|
|
177
|
-
right:
|
|
178
|
-
width:
|
|
179
|
-
height:
|
|
180
|
-
borderRadius:
|
|
192
|
+
top: 6,
|
|
193
|
+
right: 6,
|
|
194
|
+
width: 24,
|
|
195
|
+
height: 24,
|
|
196
|
+
borderRadius: 12,
|
|
181
197
|
alignItems: "center",
|
|
182
198
|
justifyContent: "center",
|
|
183
|
-
backgroundColor:
|
|
184
|
-
},
|
|
185
|
-
notes: {
|
|
186
|
-
marginHorizontal:
|
|
187
|
-
minHeight:
|
|
188
|
-
borderRadius:
|
|
189
|
-
paddingHorizontal:
|
|
190
|
-
paddingVertical:
|
|
191
|
-
backgroundColor:
|
|
192
|
-
|
|
193
|
-
|
|
199
|
+
backgroundColor: theme.edInk
|
|
200
|
+
},
|
|
201
|
+
notes: __spreadProps(__spreadValues({}, TYPE.body), {
|
|
202
|
+
marginHorizontal: SPACE.lg,
|
|
203
|
+
minHeight: 96,
|
|
204
|
+
borderRadius: RADIUS.lg,
|
|
205
|
+
paddingHorizontal: SPACE.md + 2,
|
|
206
|
+
paddingVertical: SPACE.md,
|
|
207
|
+
backgroundColor: theme.edRaised,
|
|
208
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
209
|
+
borderColor: theme.edLine,
|
|
210
|
+
color: theme.edInk,
|
|
194
211
|
textAlignVertical: "top"
|
|
195
|
-
},
|
|
196
|
-
brief: {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
}
|
|
205
|
-
});export{MoodboardExperience};//# sourceMappingURL=MoodboardExperience.js.map
|
|
212
|
+
}),
|
|
213
|
+
brief: __spreadProps(__spreadValues({}, TYPE.body), {
|
|
214
|
+
fontSize: 14,
|
|
215
|
+
lineHeight: 20,
|
|
216
|
+
marginHorizontal: SPACE.lg,
|
|
217
|
+
padding: SPACE.md + 2,
|
|
218
|
+
borderRadius: RADIUS.lg,
|
|
219
|
+
backgroundColor: theme.edPanel,
|
|
220
|
+
color: theme.edInk2
|
|
221
|
+
})
|
|
222
|
+
}));export{MoodboardExperience};//# sourceMappingURL=MoodboardExperience.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoodboardExperience.js","sources":["../../../src/features/canvas/MoodboardExperience.tsx"],"sourcesContent":["/**\n * Native twin of canvas-surface Moodboard — references + notes → style brief\n * that seeds Generate. Palette sampling needs a DOM canvas; phone skips it.\n */\nimport React, { useMemo, useState } from 'react';\nimport { FlatList, Image, Pressable, StyleSheet, Text, TextInput, View, useWindowDimensions } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport type { CanvasItem } from './canvasCore';\nimport { newMoodboard, styleBrief, type MoodboardDoc, type MoodboardReference } from './moodboardCore';\nimport { unwrapProxyUrl } from './videoEditor/remoteMediaClient';\n\nexport function MoodboardExperience({\n boardItems,\n initial,\n onClose,\n onUseBrief,\n}: {\n boardItems: CanvasItem[];\n initial?: MoodboardDoc | null;\n onClose: () => void;\n onUseBrief: (brief: string, refs: string[]) => void;\n}) {\n const insets = useSafeAreaInsets();\n const { width } = useWindowDimensions();\n const tile = Math.max(96, Math.floor((width - 48) / 3));\n const boardImages = useMemo(\n () =>\n boardItems\n .filter((item) => item.type === 'image')\n .map((item) => ({\n id: item.id,\n src: unwrapProxyUrl(item.src),\n label: item.generatedAssetName,\n })),\n [boardItems],\n );\n const [doc, setDoc] = useState<MoodboardDoc>(initial ?? newMoodboard());\n const brief = styleBrief(doc.notes, doc.references.length);\n\n const add = (reference: MoodboardReference) => {\n if (doc.references.some((existing) => existing.src === reference.src)) return;\n setDoc({ ...doc, references: [...doc.references, reference] });\n };\n\n const remove = (id: string) => {\n setDoc({ ...doc, references: doc.references.filter((reference) => reference.id !== id) });\n };\n\n return (\n <View style={[styles.root, { paddingTop: insets.top + 8, paddingBottom: insets.bottom + 12 }]}>\n <View style={styles.head}>\n <Pressable onPress={onClose} hitSlop={10} accessibilityLabel=\"Close moodboard\">\n <MaterialCommunityIcons name=\"close\" size={22} color=\"#e2e8f0\" />\n </Pressable>\n <Text style={styles.title}>Moodboard</Text>\n <Pressable\n onPress={() =>\n onUseBrief(\n brief,\n doc.references.map((r) => r.src),\n )\n }\n disabled={!brief.trim()}\n style={[styles.useBtn, !brief.trim() && styles.useOff]}\n accessibilityRole=\"button\"\n >\n <Text style={styles.useLabel}>Use brief</Text>\n </Pressable>\n </View>\n\n <Text style={styles.section}>Board stills</Text>\n {boardImages.length === 0 ? (\n <Text style={styles.hint}>Place images on the board to pin them as references.</Text>\n ) : (\n <FlatList\n horizontal\n data={boardImages}\n keyExtractor={(item) => item.id}\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={styles.row}\n renderItem={({ item }) => (\n <Pressable\n onPress={() => add({ id: `mb-${item.id}`, src: item.src, label: item.label })}\n style={styles.addCard}\n >\n <Image source={{ uri: item.src }} style={styles.addThumb} />\n <MaterialCommunityIcons name=\"plus\" size={16} color=\"#F7F7FA\" style={styles.addIcon} />\n </Pressable>\n )}\n />\n )}\n\n <Text style={styles.section}>References</Text>\n {doc.references.length === 0 ? (\n <Text style={styles.hint}>Tap a board still above to pin it.</Text>\n ) : (\n <FlatList\n data={doc.references}\n keyExtractor={(item) => item.id}\n numColumns={3}\n contentContainerStyle={styles.grid}\n renderItem={({ item }) => (\n <View style={[styles.refTile, { width: tile, height: tile }]}>\n <Image source={{ uri: item.src }} style={styles.refThumb} />\n <Pressable\n onPress={() => remove(item.id)}\n style={styles.trash}\n hitSlop={6}\n accessibilityLabel=\"Remove reference\"\n >\n <MaterialCommunityIcons name=\"close\" size={14} color=\"#0f172a\" />\n </Pressable>\n </View>\n )}\n />\n )}\n\n <Text style={styles.section}>Notes</Text>\n <TextInput\n value={doc.notes}\n onChangeText={(notes) => setDoc({ ...doc, notes })}\n placeholder=\"Soft daylight, muted teal, quiet luxury…\"\n placeholderTextColor=\"#7A7A88\"\n style={styles.notes}\n multiline\n />\n\n <Text style={styles.section}>Style brief</Text>\n <Text style={styles.brief}>{brief || 'Add notes or references to build a brief.'}</Text>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n root: { flex: 1, backgroundColor: '#0B0B0E' },\n head: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: 16,\n marginBottom: 12,\n },\n title: { fontSize: 17, fontWeight: '700', color: '#F7F7FA' },\n useBtn: {\n paddingHorizontal: 12,\n paddingVertical: 7,\n borderRadius: 9,\n backgroundColor: '#8B7CFF',\n },\n useOff: { opacity: 0.35 },\n useLabel: { fontSize: 13, fontWeight: '700', color: '#0A0A0C' },\n section: { color: '#9A9AA5', fontSize: 11, paddingHorizontal: 16, marginTop: 8, marginBottom: 6 },\n hint: { color: '#7A7A88', fontSize: 13, paddingHorizontal: 16, paddingBottom: 8 },\n row: { paddingHorizontal: 12, gap: 8, paddingBottom: 4 },\n addCard: {\n width: 72,\n height: 72,\n borderRadius: 10,\n overflow: 'hidden',\n marginHorizontal: 4,\n backgroundColor: '#1F1F24',\n },\n addThumb: { width: '100%', height: '100%' },\n addIcon: {\n position: 'absolute',\n right: 4,\n bottom: 4,\n backgroundColor: 'rgba(15,23,42,0.65)',\n borderRadius: 8,\n overflow: 'hidden',\n },\n grid: { paddingHorizontal: 12, paddingBottom: 8 },\n refTile: { margin: 4, borderRadius: 10, overflow: 'hidden', backgroundColor: '#1F1F24' },\n refThumb: { width: '100%', height: '100%' },\n trash: {\n position: 'absolute',\n top: 4,\n right: 4,\n width: 22,\n height: 22,\n borderRadius: 11,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#F7F7FA',\n },\n notes: {\n marginHorizontal: 16,\n minHeight: 88,\n borderRadius: 12,\n paddingHorizontal: 12,\n paddingVertical: 10,\n backgroundColor: '#1F1F24',\n color: '#F7F7FA',\n fontSize: 14,\n textAlignVertical: 'top',\n },\n brief: {\n marginHorizontal: 16,\n padding: 12,\n borderRadius: 12,\n backgroundColor: '#14141A',\n color: '#D4D4DD',\n fontSize: 13,\n lineHeight: 18,\n },\n});\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MoodboardExperience.js","sources":["../../../src/features/canvas/MoodboardExperience.tsx"],"sourcesContent":["/**\n * Native twin of canvas-surface Moodboard — references + notes → style brief\n * that seeds Generate. Palette sampling needs a DOM canvas; phone skips it.\n */\nimport React, { useMemo, useState } from 'react';\nimport { FlatList, Image, StyleSheet, Text, TextInput, View, useWindowDimensions } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport type { CanvasItem } from './canvasCore';\nimport { newMoodboard, styleBrief, type MoodboardDoc, type MoodboardReference } from './moodboardCore';\nimport { unwrapProxyUrl } from './videoEditor/remoteMediaClient';\nimport { useCanvasTheme, themedStyles, type CanvasPalette } from './canvasTheme';\nimport { Pressable, HIT, RADIUS, SPACE, TYPE, pressedStyle } from './canvasUi';\n\nexport function MoodboardExperience({\n boardItems,\n initial,\n onClose,\n onUseBrief,\n}: {\n boardItems: CanvasItem[];\n initial?: MoodboardDoc | null;\n onClose: () => void;\n onUseBrief: (brief: string, refs: string[]) => void;\n}) {\n const theme = useCanvasTheme();\n const styles = useMemo(() => makeStyles(theme), [theme]);\n const insets = useSafeAreaInsets();\n const { width } = useWindowDimensions();\n const tile = Math.max(96, Math.floor((width - 48) / 3));\n const boardImages = useMemo(\n () =>\n boardItems\n .filter((item) => item.type === 'image')\n .map((item) => ({\n id: item.id,\n src: unwrapProxyUrl(item.src),\n label: item.generatedAssetName,\n })),\n [boardItems],\n );\n const [doc, setDoc] = useState<MoodboardDoc>(initial ?? newMoodboard());\n const brief = styleBrief(doc.notes, doc.references.length);\n\n const add = (reference: MoodboardReference) => {\n if (doc.references.some((existing) => existing.src === reference.src)) return;\n setDoc({ ...doc, references: [...doc.references, reference] });\n };\n\n const remove = (id: string) => {\n setDoc({ ...doc, references: doc.references.filter((reference) => reference.id !== id) });\n };\n\n return (\n <View style={[styles.root, { paddingTop: insets.top + 8, paddingBottom: insets.bottom + 12 }]}>\n <View style={styles.head}>\n <Pressable\n onPress={onClose}\n hitSlop={10}\n accessibilityLabel=\"Close moodboard\"\n style={({ pressed }) => [styles.close, pressedStyle(pressed)]}\n >\n <MaterialCommunityIcons name=\"close\" size={22} color={theme.edInk} />\n </Pressable>\n <Text style={styles.title}>Moodboard</Text>\n <Pressable\n onPress={() =>\n onUseBrief(\n brief,\n doc.references.map((r) => r.src),\n )\n }\n disabled={!brief.trim()}\n style={({ pressed }) => [\n styles.useBtn,\n !brief.trim() && styles.useOff,\n pressedStyle(pressed && !!brief.trim()),\n ]}\n accessibilityRole=\"button\"\n >\n <Text style={styles.useLabel}>Use brief</Text>\n </Pressable>\n </View>\n\n <Text style={styles.section}>Board stills</Text>\n {boardImages.length === 0 ? (\n <Text style={styles.hint}>Place images on the board to pin them as references.</Text>\n ) : (\n <FlatList\n horizontal\n data={boardImages}\n keyExtractor={(item) => item.id}\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={styles.row}\n renderItem={({ item }) => (\n <Pressable\n onPress={() => add({ id: `mb-${item.id}`, src: item.src, label: item.label })}\n style={({ pressed }) => [styles.addCard, pressedStyle(pressed)]}\n >\n <Image source={{ uri: item.src }} style={styles.addThumb} />\n <View style={styles.addIcon}>\n <MaterialCommunityIcons name=\"plus\" size={14} color={theme.primaryForeground} />\n </View>\n </Pressable>\n )}\n />\n )}\n\n <Text style={styles.section}>References</Text>\n {doc.references.length === 0 ? (\n <Text style={styles.hint}>Tap a board still above to pin it.</Text>\n ) : (\n <FlatList\n data={doc.references}\n keyExtractor={(item) => item.id}\n numColumns={3}\n contentContainerStyle={styles.grid}\n renderItem={({ item }) => (\n <View style={[styles.refTile, { width: tile, height: tile }]}>\n <Image source={{ uri: item.src }} style={styles.refThumb} />\n <Pressable\n onPress={() => remove(item.id)}\n style={styles.trash}\n hitSlop={6}\n accessibilityLabel=\"Remove reference\"\n >\n <MaterialCommunityIcons name=\"close\" size={14} color={theme.edOnInk} />\n </Pressable>\n </View>\n )}\n />\n )}\n\n <Text style={styles.section}>Notes</Text>\n <TextInput\n value={doc.notes}\n onChangeText={(notes) => setDoc({ ...doc, notes })}\n placeholder=\"Soft daylight, muted teal, quiet luxury…\"\n placeholderTextColor={theme.edInk3}\n style={styles.notes}\n multiline\n />\n\n <Text style={styles.section}>Style brief</Text>\n <Text style={styles.brief}>{brief || 'Add notes or references to build a brief.'}</Text>\n </View>\n );\n}\n\nconst makeStyles = themedStyles((theme: CanvasPalette) =>\n StyleSheet.create({\n root: { flex: 1, backgroundColor: theme.edBg },\n head: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: SPACE.sm,\n minHeight: HIT + SPACE.xs,\n marginBottom: SPACE.sm,\n },\n close: { width: HIT, height: HIT, borderRadius: HIT / 2, alignItems: 'center', justifyContent: 'center' },\n title: { ...TYPE.title, color: theme.edInk },\n useBtn: {\n minHeight: 36,\n paddingHorizontal: SPACE.lg,\n marginRight: SPACE.sm,\n borderRadius: RADIUS.pill,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.primary,\n },\n useOff: { opacity: 0.4 },\n useLabel: { ...TYPE.label, color: theme.primaryForeground },\n section: {\n ...TYPE.label,\n color: theme.edInk,\n paddingHorizontal: SPACE.lg,\n marginTop: SPACE.lg,\n marginBottom: SPACE.sm,\n },\n hint: { ...TYPE.caption, color: theme.edInk3, paddingHorizontal: SPACE.lg, paddingBottom: SPACE.sm },\n row: { paddingHorizontal: SPACE.md, gap: SPACE.sm, paddingBottom: SPACE.xs },\n addCard: {\n width: 76,\n height: 76,\n borderRadius: RADIUS.md,\n overflow: 'hidden',\n marginHorizontal: SPACE.xs,\n backgroundColor: theme.edRaised,\n },\n addThumb: { width: '100%', height: '100%' },\n addIcon: {\n position: 'absolute',\n right: 6,\n bottom: 6,\n width: 22,\n height: 22,\n borderRadius: 11,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.primary,\n },\n grid: { paddingHorizontal: SPACE.md, paddingBottom: SPACE.sm },\n refTile: { margin: SPACE.xs, borderRadius: RADIUS.md, overflow: 'hidden', backgroundColor: theme.edRaised },\n refThumb: { width: '100%', height: '100%' },\n trash: {\n position: 'absolute',\n top: 6,\n right: 6,\n width: 24,\n height: 24,\n borderRadius: 12,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.edInk,\n },\n notes: {\n ...TYPE.body,\n marginHorizontal: SPACE.lg,\n minHeight: 96,\n borderRadius: RADIUS.lg,\n paddingHorizontal: SPACE.md + 2,\n paddingVertical: SPACE.md,\n backgroundColor: theme.edRaised,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.edLine,\n color: theme.edInk,\n textAlignVertical: 'top',\n },\n brief: {\n ...TYPE.body,\n fontSize: 14,\n lineHeight: 20,\n marginHorizontal: SPACE.lg,\n padding: SPACE.md + 2,\n borderRadius: RADIUS.lg,\n backgroundColor: theme.edPanel,\n color: theme.edInk2,\n },\n }),\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAaO,SAAS,mBAAoB,CAAA;AAAA,EAClC,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAKG,EAAA;AACD,EAAA,MAAM,QAAQ,cAAe,EAAA;AAC7B,EAAM,MAAA,MAAA,GAAS,QAAQ,MAAM,UAAA,CAAW,KAAK,CAAG,EAAA,CAAC,KAAK,CAAC,CAAA;AACvD,EAAA,MAAM,SAAS,iBAAkB,EAAA;AACjC,EAAM,MAAA;AAAA,IACJ;AAAA,MACE,mBAAoB,EAAA;AACxB,EAAM,MAAA,IAAA,GAAO,KAAK,GAAI,CAAA,EAAA,EAAI,KAAK,KAAO,CAAA,CAAA,KAAA,GAAQ,EAAM,IAAA,CAAC,CAAC,CAAA;AACtD,EAAM,MAAA,WAAA,GAAc,OAAQ,CAAA,MAAM,UAAW,CAAA,MAAA,CAAO,CAAQ,IAAA,KAAA,IAAA,CAAK,IAAS,KAAA,OAAO,CAAE,CAAA,GAAA,CAAI,CAAS,IAAA,MAAA;AAAA,IAC9F,IAAI,IAAK,CAAA,EAAA;AAAA,IACT,GAAA,EAAK,cAAe,CAAA,IAAA,CAAK,GAAG,CAAA;AAAA,IAC5B,OAAO,IAAK,CAAA;AAAA,GACZ,CAAA,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AACjB,EAAA,MAAM,CAAC,GAAK,EAAA,MAAM,IAAI,QAAuB,CAAA,OAAA,IAAA,IAAA,GAAA,OAAA,GAAW,cAAc,CAAA;AACtE,EAAA,MAAM,QAAQ,UAAW,CAAA,GAAA,CAAI,KAAO,EAAA,GAAA,CAAI,WAAW,MAAM,CAAA;AACzD,EAAM,MAAA,GAAA,GAAM,CAAC,SAAkC,KAAA;AAC7C,IAAI,IAAA,GAAA,CAAI,WAAW,IAAK,CAAA,CAAA,QAAA,KAAY,SAAS,GAAQ,KAAA,SAAA,CAAU,GAAG,CAAG,EAAA;AACrE,IAAA,MAAA,CAAO,iCACF,GADE,CAAA,EAAA;AAAA,MAEL,UAAY,EAAA,CAAC,GAAG,GAAA,CAAI,YAAY,SAAS;AAAA,KAC1C,CAAA,CAAA;AAAA,GACH;AACA,EAAM,MAAA,MAAA,GAAS,CAAC,EAAe,KAAA;AAC7B,IAAA,MAAA,CAAO,iCACF,GADE,CAAA,EAAA;AAAA,MAEL,YAAY,GAAI,CAAA,UAAA,CAAW,OAAO,CAAa,SAAA,KAAA,SAAA,CAAU,OAAO,EAAE;AAAA,KACnE,CAAA,CAAA;AAAA,GACH;AACA,EAAA,uBAAQ,IAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,CAAC,OAAO,IAAM,EAAA;AAAA,IAChC,UAAA,EAAY,OAAO,GAAM,GAAA,CAAA;AAAA,IACzB,aAAA,EAAe,OAAO,MAAS,GAAA;AAAA,GAChC,CACS,EAAA,QAAA,EAAA;AAAA,oBAAC,IAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,IAChB,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,SAAA,EAAA,EAAU,SAAS,OAAS,EAAA,OAAA,EAAS,IAAI,kBAAmB,EAAA,iBAAA,EAAkB,OAAO,CAAC;AAAA,QAC/F;AAAA,YACI,CAAC,MAAA,CAAO,KAAO,EAAA,YAAA,CAAa,OAAO,CAAC,CAAA,EAC5B,QAAC,kBAAA,GAAA,CAAA,sBAAA,EAAA,EAAuB,MAAK,OAAQ,EAAA,IAAA,EAAM,IAAI,KAAO,EAAA,KAAA,CAAM,OAAO,CACvE,EAAA,CAAA;AAAA,sBACC,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,OAAO,QAAS,EAAA,WAAA,EAAA,CAAA;AAAA,sBACpC,GAAA,CAAC,aAAU,OAAS,EAAA,MAAM,WAAW,KAAO,EAAA,GAAA,CAAI,WAAW,GAAI,CAAA,CAAA,CAAA,KAAK,EAAE,GAAG,CAAC,GAAG,QAAU,EAAA,CAAC,MAAM,IAAK,EAAA,EAAG,OAAO,CAAC;AAAA,QACtH;AAAA,OACF,KAAM,CAAC,MAAA,CAAO,MAAQ,EAAA,CAAC,KAAM,CAAA,IAAA,EAAU,IAAA,MAAA,CAAO,MAAQ,EAAA,YAAA,CAAa,OAAW,IAAA,CAAC,CAAC,KAAA,CAAM,IAAK,EAAC,CAAC,CAAA,EAAG,iBAAkB,EAAA,QAAA,EACpG,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,QAAU,EAAA,QAAA,EAAA,WAAA,EAAS,CAC3C,EAAA;AAAA,KACJ,EAAA,CAAA;AAAA,oBAEC,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,SAAS,QAAY,EAAA,cAAA,EAAA,CAAA;AAAA,IACxC,WAAA,CAAY,MAAW,KAAA,CAAA,mBAAK,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,IAAM,EAAA,QAAA,EAAA,sDAAA,EAAoD,CAAU,mBAAA,GAAA,CAAC,QAAS,EAAA,EAAA,UAAA,EAAU,MAAC,IAAM,EAAA,WAAA,EAAa,YAAc,EAAA,CAAA,IAAA,KAAQ,IAAK,CAAA,EAAA,EAAI,8BAAgC,EAAA,KAAA,EAAO,qBAAuB,EAAA,MAAA,CAAO,GAAK,EAAA,UAAA,EAAY,CAAC;AAAA,MACxR;AAAA,KACI,qBAAA,IAAA,CAAC,SAAU,EAAA,EAAA,OAAA,EAAS,MAAM,GAAI,CAAA;AAAA,MAClC,EAAA,EAAI,CAAM,GAAA,EAAA,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,MACjB,KAAK,IAAK,CAAA,GAAA;AAAA,MACV,OAAO,IAAK,CAAA;AAAA,KACb,CAAG,EAAA,KAAA,EAAO,CAAC;AAAA,MACV;AAAA,UACI,CAAC,MAAA,CAAO,SAAS,YAAa,CAAA,OAAO,CAAC,CACpB,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,SAAM,MAAQ,EAAA;AAAA,QACnC,KAAK,IAAK,CAAA;AAAA,OACZ,EAAG,KAAO,EAAA,MAAA,CAAO,QAAU,EAAA,CAAA;AAAA,sBACJ,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,SAChB,QAAC,kBAAA,GAAA,CAAA,sBAAA,EAAA,EAAuB,IAAK,EAAA,MAAA,EAAO,IAAM,EAAA,EAAA,EAAI,KAAO,EAAA,KAAA,CAAM,mBAAmB,CAClF,EAAA;AAAA,KAAA,EACJ,CAAc,EAAA,CAAA;AAAA,oBAEzB,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,SAAS,QAAU,EAAA,YAAA,EAAA,CAAA;AAAA,IACtC,GAAA,CAAI,UAAW,CAAA,MAAA,KAAW,CAAI,mBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAO,MAAO,CAAA,IAAA,EAAM,QAAkC,EAAA,oCAAA,EAAA,CAAA,mBAAW,GAAA,CAAA,QAAA,EAAA,EAAS,MAAM,GAAI,CAAA,UAAA,EAAY,YAAc,EAAA,CAAA,IAAA,KAAQ,IAAK,CAAA,EAAA,EAAI,UAAY,EAAA,CAAA,EAAG,qBAAuB,EAAA,MAAA,CAAO,IAAM,EAAA,UAAA,EAAY,CAAC;AAAA,MAC1O;AAAA,0BACK,IAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,CAAC,OAAO,OAAS,EAAA;AAAA,MAClC,KAAO,EAAA,IAAA;AAAA,MACP,MAAQ,EAAA;AAAA,KACT,CACuB,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,SAAM,MAAQ,EAAA;AAAA,QACnC,KAAK,IAAK,CAAA;AAAA,OACZ,EAAG,KAAO,EAAA,MAAA,CAAO,QAAU,EAAA,CAAA;AAAA,sBACL,GAAA,CAAC,SAAU,EAAA,EAAA,OAAA,EAAS,MAAM,MAAA,CAAO,KAAK,EAAE,CAAA,EAAG,KAAO,EAAA,MAAA,CAAO,KAAO,EAAA,OAAA,EAAS,GAAG,kBAAmB,EAAA,kBAAA,EAC3F,QAAC,kBAAA,GAAA,CAAA,sBAAA,EAAA,EAAuB,IAAK,EAAA,OAAA,EAAQ,MAAM,EAAI,EAAA,KAAA,EAAO,KAAM,CAAA,OAAA,EAAS,CACzE,EAAA;AAAA,KAAA,EACJ,CAAS,EAAA,CAAA;AAAA,oBAEpB,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,SAAS,QAAK,EAAA,OAAA,EAAA,CAAA;AAAA,oBAClC,GAAA,CAAC,aAAU,KAAO,EAAA,GAAA,CAAI,OAAO,YAAc,EAAA,CAAA,KAAA,KAAS,MAAO,CAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAC9D,GAD8D,CAAA,EAAA;AAAA,MAEjE;AAAA,KACF,CAAC,CAAG,EAAA,WAAA,EAAY,+CAA2C,EAAA,oBAAA,EAAsB,KAAM,CAAA,MAAA,EAAQ,KAAO,EAAA,MAAA,CAAO,KAAO,EAAA,SAAA,EAAS,IAAC,EAAA,CAAA;AAAA,oBAErH,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,SAAS,QAAW,EAAA,aAAA,EAAA,CAAA;AAAA,wBACvC,IAAK,EAAA,EAAA,KAAA,EAAO,MAAO,CAAA,KAAA,EAAQ,mBAAS,2CAA4C,EAAA;AAAA,GACrF,EAAA,CAAA;AACR;AACA,MAAM,UAAa,GAAA,YAAA,CAAa,CAAC,KAAA,KAAyB,WAAW,MAAO,CAAA;AAAA,EAC1E,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,CAAA;AAAA,IACN,iBAAiB,KAAM,CAAA;AAAA,GACzB;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,aAAe,EAAA,KAAA;AAAA,IACf,UAAY,EAAA,QAAA;AAAA,IACZ,cAAgB,EAAA,eAAA;AAAA,IAChB,mBAAmB,KAAM,CAAA,EAAA;AAAA,IACzB,SAAA,EAAW,MAAM,KAAM,CAAA,EAAA;AAAA,IACvB,cAAc,KAAM,CAAA;AAAA,GACtB;AAAA,EACA,KAAO,EAAA;AAAA,IACL,KAAO,EAAA,GAAA;AAAA,IACP,MAAQ,EAAA,GAAA;AAAA,IACR,cAAc,GAAM,GAAA,CAAA;AAAA,IACpB,UAAY,EAAA,QAAA;AAAA,IACZ,cAAgB,EAAA;AAAA,GAClB;AAAA,EACA,KAAA,EAAO,aACF,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAK,KADH,CAAA,EAAA;AAAA,IAEL,OAAO,KAAM,CAAA;AAAA,GACf,CAAA;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,SAAW,EAAA,EAAA;AAAA,IACX,mBAAmB,KAAM,CAAA,EAAA;AAAA,IACzB,aAAa,KAAM,CAAA,EAAA;AAAA,IACnB,cAAc,MAAO,CAAA,IAAA;AAAA,IACrB,UAAY,EAAA,QAAA;AAAA,IACZ,cAAgB,EAAA,QAAA;AAAA,IAChB,iBAAiB,KAAM,CAAA;AAAA,GACzB;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA,EACA,QAAA,EAAU,aACL,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAK,KADA,CAAA,EAAA;AAAA,IAER,OAAO,KAAM,CAAA;AAAA,GACf,CAAA;AAAA,EACA,OAAA,EAAS,aACJ,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAK,KADD,CAAA,EAAA;AAAA,IAEP,OAAO,KAAM,CAAA,KAAA;AAAA,IACb,mBAAmB,KAAM,CAAA,EAAA;AAAA,IACzB,WAAW,KAAM,CAAA,EAAA;AAAA,IACjB,cAAc,KAAM,CAAA;AAAA,GACtB,CAAA;AAAA,EACA,IAAA,EAAM,aACD,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAK,OADJ,CAAA,EAAA;AAAA,IAEJ,OAAO,KAAM,CAAA,MAAA;AAAA,IACb,mBAAmB,KAAM,CAAA,EAAA;AAAA,IACzB,eAAe,KAAM,CAAA;AAAA,GACvB,CAAA;AAAA,EACA,GAAK,EAAA;AAAA,IACH,mBAAmB,KAAM,CAAA,EAAA;AAAA,IACzB,KAAK,KAAM,CAAA,EAAA;AAAA,IACX,eAAe,KAAM,CAAA;AAAA,GACvB;AAAA,EACA,OAAS,EAAA;AAAA,IACP,KAAO,EAAA,EAAA;AAAA,IACP,MAAQ,EAAA,EAAA;AAAA,IACR,cAAc,MAAO,CAAA,EAAA;AAAA,IACrB,QAAU,EAAA,QAAA;AAAA,IACV,kBAAkB,KAAM,CAAA,EAAA;AAAA,IACxB,iBAAiB,KAAM,CAAA;AAAA,GACzB;AAAA,EACA,QAAU,EAAA;AAAA,IACR,KAAO,EAAA,MAAA;AAAA,IACP,MAAQ,EAAA;AAAA,GACV;AAAA,EACA,OAAS,EAAA;AAAA,IACP,QAAU,EAAA,UAAA;AAAA,IACV,KAAO,EAAA,CAAA;AAAA,IACP,MAAQ,EAAA,CAAA;AAAA,IACR,KAAO,EAAA,EAAA;AAAA,IACP,MAAQ,EAAA,EAAA;AAAA,IACR,YAAc,EAAA,EAAA;AAAA,IACd,UAAY,EAAA,QAAA;AAAA,IACZ,cAAgB,EAAA,QAAA;AAAA,IAChB,iBAAiB,KAAM,CAAA;AAAA,GACzB;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,mBAAmB,KAAM,CAAA,EAAA;AAAA,IACzB,eAAe,KAAM,CAAA;AAAA,GACvB;AAAA,EACA,OAAS,EAAA;AAAA,IACP,QAAQ,KAAM,CAAA,EAAA;AAAA,IACd,cAAc,MAAO,CAAA,EAAA;AAAA,IACrB,QAAU,EAAA,QAAA;AAAA,IACV,iBAAiB,KAAM,CAAA;AAAA,GACzB;AAAA,EACA,QAAU,EAAA;AAAA,IACR,KAAO,EAAA,MAAA;AAAA,IACP,MAAQ,EAAA;AAAA,GACV;AAAA,EACA,KAAO,EAAA;AAAA,IACL,QAAU,EAAA,UAAA;AAAA,IACV,GAAK,EAAA,CAAA;AAAA,IACL,KAAO,EAAA,CAAA;AAAA,IACP,KAAO,EAAA,EAAA;AAAA,IACP,MAAQ,EAAA,EAAA;AAAA,IACR,YAAc,EAAA,EAAA;AAAA,IACd,UAAY,EAAA,QAAA;AAAA,IACZ,cAAgB,EAAA,QAAA;AAAA,IAChB,iBAAiB,KAAM,CAAA;AAAA,GACzB;AAAA,EACA,KAAA,EAAO,aACF,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAK,IADH,CAAA,EAAA;AAAA,IAEL,kBAAkB,KAAM,CAAA,EAAA;AAAA,IACxB,SAAW,EAAA,EAAA;AAAA,IACX,cAAc,MAAO,CAAA,EAAA;AAAA,IACrB,iBAAA,EAAmB,MAAM,EAAK,GAAA,CAAA;AAAA,IAC9B,iBAAiB,KAAM,CAAA,EAAA;AAAA,IACvB,iBAAiB,KAAM,CAAA,QAAA;AAAA,IACvB,aAAa,UAAW,CAAA,aAAA;AAAA,IACxB,aAAa,KAAM,CAAA,MAAA;AAAA,IACnB,OAAO,KAAM,CAAA,KAAA;AAAA,IACb,iBAAmB,EAAA;AAAA,GACrB,CAAA;AAAA,EACA,KAAA,EAAO,aACF,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAK,IADH,CAAA,EAAA;AAAA,IAEL,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,EAAA;AAAA,IACZ,kBAAkB,KAAM,CAAA,EAAA;AAAA,IACxB,OAAA,EAAS,MAAM,EAAK,GAAA,CAAA;AAAA,IACpB,cAAc,MAAO,CAAA,EAAA;AAAA,IACrB,iBAAiB,KAAM,CAAA,OAAA;AAAA,IACvB,OAAO,KAAM,CAAA;AAAA,GACf;AACF,CAAC,CAAC,CAAA"}
|