@agimon-ai/po-style-system 0.0.0-alpha.21 → 0.0.0-alpha.23
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.
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createApiClient, defineActivityGroup, defineFill, defineNativePlugin, nativeApiTransport, sessionApiAddress } from "@agimon-ai/po-core/native";
|
|
2
|
+
import { Button, Input, Label, ListRow, PaletteIcon, Sheet, SheetBody, SheetContent, SheetHeader, SheetTitle, Textarea, fontOf } from "@agimon-ai/po-native-components";
|
|
3
|
+
import { createElement, useEffect, useRef, useState } from "react";
|
|
2
4
|
import { View } from "react-native-unistyles/components/native/View";
|
|
3
5
|
import { Text } from "react-native-unistyles/components/native/Text";
|
|
4
6
|
import { ScrollView } from "react-native-unistyles/components/native/ScrollView";
|
|
5
|
-
import { Button, Input, Label, ListRow, Sheet, SheetBody, SheetContent, SheetHeader, SheetTitle, Textarea, fontOf } from "@agimon-ai/po-native-components";
|
|
6
|
-
import { useEffect, useRef, useState } from "react";
|
|
7
7
|
import { StyleSheet } from "react-native-unistyles";
|
|
8
8
|
import { Image } from "react-native-unistyles/components/native/Image";
|
|
9
9
|
import { Share } from "react-native";
|
|
@@ -852,6 +852,7 @@ const styles = StyleSheet.create((theme) => ({
|
|
|
852
852
|
var style_system_native_default = defineActivityGroup({
|
|
853
853
|
name: "style system",
|
|
854
854
|
keys: "",
|
|
855
|
+
icon: () => createElement(PaletteIcon),
|
|
855
856
|
activeSource: {
|
|
856
857
|
subscribe: () => () => void 0,
|
|
857
858
|
isActive: () => false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.mjs","names":["WebPluginSlotProps","Button","fontOf","Input","Label","Textarea","PoNativeTheme","useEffect","useRef","useState","Share","StyleSheet","PREVIEW_THEMES","BuildStoryPreviewView","ExportStoryPreviewImageView","StoryPreviewSeed","buildPreview","disposePreview","exportPreviewImage","storyMetadata","isolatedPreviewHtml","normalizedAnnotationRect","PreviewPoint","PreviewAnnotationRect","StoryPreviewPanel","props","seed","source","appPath","setAppPath","preview","storyPath","setStoryPath","path","storyExport","setStoryExport","previewTheme","setPreviewTheme","revision","setRevision","setPreview","image","setImage","status","setStatus","working","setWorking","feedback","setFeedback","region","setRegion","annotationStart","undefined","imageBounds","width","height","generation","builtProject","snapshot","dirty","hasUnsavedChanges","sessionId","imageContext","kind","id","captureId","label","content","current","sourceSha256","trim","handle","run","metadata","ok","Error","error","exports","some","entry","exportName","request","theme","result","reason","message","String","prepareImage","operation","styles","panel","value","themes","name","map","selected","meta","renderStoryPreview","key","html","title","event","nativeEvent","layout","x","Math","min","max","locationX","y","locationY","start","end","next","uri","mimeType","data","aspectRatio","left","top","share","url","catch","attachComposerCapture","context","contextActionsFor","action","submitCapture","toFixed","join","then","create","flex","gap","spacing","backgroundColor","colors","bg","uni__dependencies","position","borderWidth","borderColor","yellow","color","dim","fontFamily","sans","fontSize","sm","flexDirection","flexWrap","styles","WebPluginSlotProps","fontOf","Button","Input","ListRow","Sheet","SheetBody","SheetContent","SheetHeader","SheetTitle","PoNativeTheme","useEffect","useState","StyleSheet","StyleSystemCatalogView","styleSystemCatalog","authorSourceActionSlot","browserSelection","componentKeywords","filteredComponents","forgetBrowserSelection","matchesQuery","rememberBrowserSelection","storyFolders","BrowserSelection","StoryPreviewPanel","Picker","styleSystemTab","id","label","panel","StyleSystemBrowser","onClose","props","initialCatalog","selection","setSelection","sessionId","catalog","setCatalog","loading","setLoading","undefined","error","setError","revision","setRevision","picker","setPicker","query","setQuery","current","refresh","then","result","ok","catch","reason","Error","message","String","finally","update","patch","Partial","next","component","components","find","entry","storyPath","project","projects","appPath","action","slotData","data","options","value","map","path","count","title","keywords","Set","flatMap","tags","sort","tag","exports","exportName","disabled","select","folder","chosen","projectPath","storyExport","includes","filter","choose","kind","styles","meta","controls","length","join","truncated","diagnostics","openTransientTab","createTab","preview","snapshot","bundler","source","hasUnsavedChanges","open","create","theme","flex","gap","spacing","padding","backgroundColor","colors","bg","uni__dependencies","color","hi","fontWeight","fontFamily","sans","fontSize","base","dim","sm","lineHeight","red","activityGroupStyleSystem","fillStyleSystem","fillStyleSystem2"],"sources":["../../src/types/apiRoutes.ts","../../generated/client.native.ts","../../src/extensions/workspaces/sessions/(frontend)/_lib/previewApi.native.ts","../../src/extensions/workspaces/sessions/(frontend)/_lib/styleSystemBrowser.ts","../../src/constants/previewThemes.ts","../../src/extensions/workspaces/sessions/(frontend)/_lib/previewFrame.ts","../../src/extensions/workspaces/sessions/(frontend)/_components/StoryPreviewPanel.native.tsx","../../src/extensions/workspaces/sessions/(frontend)/_components/StyleSystemBrowser.native.tsx","../../src/extensions/workspaces/sessions/(frontend)/activity-group/style-system.native.ts","../../src/extensions/workspaces/sessions/(frontend)/fill/StyleSystem.activity.style-system.native.tsx","../../src/extensions/workspaces/sessions/(frontend)/_components/StoryPreviewLauncher.native.tsx","../../src/extensions/workspaces/sessions/(frontend)/fill/StyleSystem.author.preview-action.native.tsx","../../generated/native.ts"],"sourcesContent":["import type { ApiResponseOf, ApiRoutes } from '@agimon-ai/po-core/web';\n\nimport type {\n BuildStoryPreviewView,\n DisposeStoryPreviewView,\n ExportStoryPreviewImageView,\n StoryPreviewMetadataView,\n} from './previewApi';\nimport type { StyleSystemCatalogView } from './styleSystemCatalog';\n\nconst routes = {\n catalog: {\n method: 'POST',\n path: '/catalog',\n response: undefined as unknown as ApiResponseOf<StyleSystemCatalogView>,\n },\n metadata: {\n method: 'POST',\n path: '/metadata',\n response: undefined as unknown as ApiResponseOf<StoryPreviewMetadataView>,\n },\n build: {\n method: 'POST',\n path: '/build',\n response: undefined as unknown as ApiResponseOf<BuildStoryPreviewView>,\n },\n image: {\n method: 'POST',\n path: '/image',\n response: undefined as unknown as ApiResponseOf<ExportStoryPreviewImageView>,\n },\n dispose: {\n method: 'DELETE',\n path: '/artifact',\n response: undefined as unknown as ApiResponseOf<DisposeStoryPreviewView>,\n },\n} as const satisfies ApiRoutes;\n\nexport default routes;\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { createApiClient, nativeApiTransport, sessionApiAddress } from '@agimon-ai/po-core/native';\n\nimport routes from '../src/types/apiRoutes';\n\n/** Scopes the tree mounts 'style-system-preview' at. */\nexport const apiScopes = ['session'] as const;\n\nexport const api = createApiClient(routes, {\n scopes: apiScopes,\n basePath: 'style-system-preview',\n transport: nativeApiTransport,\n sessionAddress: sessionApiAddress,\n});\n","import { api } from '../../../../../../generated/client.native';\nimport type {\n BuildStoryPreviewRequest,\n BuildStoryPreviewView,\n ExportStoryPreviewImageView,\n StoryPreviewMetadataRequest,\n StoryPreviewMetadataView,\n} from '../../../../../types/previewApi';\nimport type { StyleSystemCatalogRequest, StyleSystemCatalogView } from '../../../../../types/styleSystemCatalog';\n\nfunction errorMessage(result: { status: number; error: string }): string {\n if (result.status === 0) return 'The preview service is unreachable.';\n return result.error === '' ? `The preview service answered ${String(result.status)}.` : result.error;\n}\n\nexport async function styleSystemCatalog(\n sessionId: string,\n request: StyleSystemCatalogRequest = {},\n): Promise<{ ok: true; catalog: StyleSystemCatalogView } | { ok: false; error: string }> {\n const result = await api.session(sessionId).catalog({ body: request });\n return result.ok ? { ok: true, catalog: result.data } : { ok: false, error: errorMessage(result) };\n}\n\nexport async function storyMetadata(\n sessionId: string,\n request: StoryPreviewMetadataRequest,\n): Promise<{ ok: true; metadata: StoryPreviewMetadataView } | { ok: false; error: string }> {\n const result = await api.session(sessionId).metadata({ body: request });\n return result.ok ? { ok: true, metadata: result.data } : { ok: false, error: errorMessage(result) };\n}\n\nexport async function buildPreview(\n sessionId: string,\n request: BuildStoryPreviewRequest,\n): Promise<{ ok: true; preview: BuildStoryPreviewView } | { ok: false; error: string }> {\n const result = await api.session(sessionId).build({ body: request });\n return result.ok ? { ok: true, preview: result.data } : { ok: false, error: errorMessage(result) };\n}\n\nexport async function exportPreviewImage(\n sessionId: string,\n request: BuildStoryPreviewRequest,\n): Promise<{ ok: true; image: ExportStoryPreviewImageView } | { ok: false; error: string }> {\n const result = await api.session(sessionId).image({ body: request });\n return result.ok ? { ok: true, image: result.data } : { ok: false, error: errorMessage(result) };\n}\n\nexport async function disposePreview(sessionId: string, handle: string): Promise<void> {\n await api.session(sessionId).dispose({ body: { handle } });\n}\n","import type { SlotDeclaration, TransientTab } from '@agimon-ai/po-core/web';\n\nimport type { StyleSystemCatalogComponent, StyleSystemCatalogView } from '../../../../../types/styleSystemCatalog';\n\nexport interface BrowserSelection {\n /** A story directory prefix; '' browses every folder. */\n folder: string;\n tags: string[];\n storyPath: string;\n appPath: string;\n storyExport: string;\n}\n\nexport interface StoryFolder {\n path: string;\n /** The folder's own segments, compacted with any single-child chain below it. */\n label: string;\n depth: number;\n count: number;\n}\n\nconst selections = new Map<string, BrowserSelection>();\nexport const maxFolderDepth = 5;\n/** Monorepo group, category and package stay separate rows; deeper single-child chains such as src/extensions/... collapse. */\nconst uncompactedFolderDepth = 3;\nexport function initialBrowserSelection(): BrowserSelection {\n return { folder: '', tags: [], storyPath: '', appPath: '', storyExport: '' };\n}\nexport function browserSelection(sessionId: string | null): BrowserSelection {\n return sessionId === null ? initialBrowserSelection() : (selections.get(sessionId) ?? initialBrowserSelection());\n}\nexport function rememberBrowserSelection(sessionId: string | null, selection: BrowserSelection): void {\n if (sessionId !== null) selections.set(sessionId, selection);\n}\nexport function forgetBrowserSelection(sessionId: string): void {\n selections.delete(sessionId);\n}\nexport function matchesQuery(text: string, query: string): boolean {\n const haystack = text.toLowerCase();\n return query\n .toLowerCase()\n .split(/\\s+/u)\n .filter(Boolean)\n .every((term) => haystack.includes(term));\n}\nexport function componentKeywords(component: StyleSystemCatalogComponent): string {\n return [\n component.title,\n component.storyPath,\n ...component.tags,\n ...component.exports.map((entry) => `${entry.exportName} ${entry.label ?? ''}`),\n ].join(' ');\n}\nexport function filteredComponents(catalog: StyleSystemCatalogView, selection: BrowserSelection) {\n return catalog.components.filter(\n (component) =>\n (selection.folder === '' || component.storyPath.startsWith(`${selection.folder}/`)) &&\n selection.tags.every((tag) => component.tags.includes(tag)),\n );\n}\n\ninterface FolderNode {\n children: Map<string, FolderNode>;\n own: number;\n count: number;\n}\n/** Only folders holding stories somewhere below appear, deep single-child chains collapse, and nesting stops at maxFolderDepth. */\nexport function storyFolders(components: readonly StyleSystemCatalogComponent[]): StoryFolder[] {\n const root: FolderNode = { children: new Map(), own: 0, count: 0 };\n for (const component of components) {\n const end = component.storyPath.lastIndexOf('/');\n if (end <= 0) continue;\n let node = root;\n for (const segment of component.storyPath.slice(0, end).split('/')) {\n let child = node.children.get(segment);\n if (child === undefined) {\n child = { children: new Map(), own: 0, count: 0 };\n node.children.set(segment, child);\n }\n child.count += 1;\n node = child;\n }\n node.own += 1;\n }\n const folders: StoryFolder[] = [];\n const onlyChild = (node: FolderNode, depth: number) =>\n depth >= uncompactedFolderDepth && node.own === 0 && node.children.size === 1 ? [...node.children][0] : undefined;\n const walk = (node: FolderNode, prefix: string, depth: number): void => {\n for (const [segment, start] of [...node.children].sort(([a], [b]) => a.localeCompare(b))) {\n let child = start;\n let label = segment;\n for (let only = onlyChild(child, depth); only !== undefined; only = onlyChild(child, depth)) {\n label = `${label}/${only[0]}`;\n child = only[1];\n }\n const path = `${prefix}${label}`;\n folders.push({ path, label, depth, count: child.count });\n if (depth + 1 < maxFolderDepth) walk(child, `${path}/`, depth + 1);\n }\n };\n walk(root, '', 0);\n return folders;\n}\n\ninterface AuthorSourceAction {\n version: 1;\n createTab(input: {\n sessionId: string;\n path: string;\n preview?: { appPath: string; storyExport: string; snapshot?: boolean };\n }): TransientTab;\n}\nexport const authorSourceActionSlot: SlotDeclaration<AuthorSourceAction> = {\n slot: 'author.open-source',\n parse(input) {\n if (typeof input !== 'object' || input === null) return null;\n const action = input as Partial<AuthorSourceAction>;\n return action.version === 1 && typeof action.createTab === 'function' ? (action as AuthorSourceAction) : null;\n },\n};\n","/**\n * The shipped Po themes a story preview can render under. Plugin frontends may not\n * import the theme module, so this mirrors BUILTIN_THEMES; tests/previewThemes.test.ts\n * fails when they drift, and the server rejects any name it does not ship.\n */\nexport const PREVIEW_THEMES: readonly { name: string; label: string }[] = [\n { name: 'po-one-light', label: 'Po Bloom (light)' },\n { name: 'po-nord-dark', label: 'Po Nord (dark)' },\n];\n","const PREVIEW_CSP =\n \"default-src 'none'; base-uri 'none'; connect-src 'none'; font-src data:; form-action 'none'; frame-src 'none'; img-src data: blob:; media-src data: blob:; object-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'\";\n\nexport interface PreviewPoint {\n x: number;\n y: number;\n}\n\nexport interface PreviewAnnotationRect extends PreviewPoint {\n width: number;\n height: number;\n}\n\nfunction findHeadInsertion(html: string): number | undefined {\n const lower = html.toLowerCase();\n let index = 0;\n while (index < html.length) {\n if (lower.startsWith('<!--', index)) {\n const end = lower.indexOf('-->', index + 4);\n index = end < 0 ? html.length : end + 3;\n continue;\n }\n if (html[index] !== '<') {\n index += 1;\n continue;\n }\n const tag = html.slice(index).match(/^<([a-z][a-z0-9:-]*)(?:\\s[^>]*)?>/i);\n if (tag === null) {\n index += 1;\n continue;\n }\n const name = tag[1]!.toLowerCase();\n const end = index + tag[0].length;\n if (name === 'head') return end;\n if (name === 'script' || name === 'style' || name === 'template' || name === 'textarea' || name === 'title') {\n const closing = lower.indexOf(`</${name}`, end);\n index = closing < 0 ? html.length : closing;\n continue;\n }\n index = end;\n }\n return undefined;\n}\n\nexport function isolatedPreviewHtml(html: string): string {\n const policy = `<meta http-equiv=\"Content-Security-Policy\" content=\"${PREVIEW_CSP}\">`;\n const headInsertion = findHeadInsertion(html);\n if (headInsertion !== undefined) return `${html.slice(0, headInsertion)}${policy}${html.slice(headInsertion)}`;\n const doctype = html.match(/^\\s*<!doctype[^>]*>/i);\n if (doctype !== null) return `${doctype[0]}<head>${policy}</head>${html.slice(doctype[0].length)}`;\n return `<head>${policy}</head>${html}`;\n}\n\nexport function normalizedAnnotationRect(start: PreviewPoint, end: PreviewPoint): PreviewAnnotationRect {\n return {\n x: Math.min(start.x, end.x),\n y: Math.min(start.y, end.y),\n width: Math.abs(end.x - start.x),\n height: Math.abs(end.y - start.y),\n };\n}\n\nexport function previewAnnotationLocation(\n tool: 'mark' | 'comment',\n start: PreviewPoint,\n end: PreviewPoint,\n):\n | { mode: 'region'; point: PreviewPoint; rect: PreviewAnnotationRect }\n | { mode: 'point'; point: PreviewPoint }\n | null {\n if (tool === 'comment') return { mode: 'point', point: end };\n const rect = normalizedAnnotationRect(start, end);\n return rect.width === 0 || rect.height === 0 ? null : { mode: 'region', point: rect, rect };\n}\n","import type { WebPluginSlotProps } from '@agimon-ai/po-core/native';\nimport { Button, fontOf, Input, Label, Textarea } from '@agimon-ai/po-native-components';\nimport type { PoNativeTheme } from '@agimon-ai/po-web-components/nativeTheme';\nimport { useEffect, useRef, useState } from 'react';\nimport { Image, Share, Text, View } from 'react-native';\nimport { StyleSheet } from 'react-native-unistyles';\n\nimport { PREVIEW_THEMES } from '../../../../../constants/previewThemes';\nimport type {\n BuildStoryPreviewView,\n ExportStoryPreviewImageView,\n StoryPreviewSeed,\n} from '../../../../../types/previewApi';\nimport { buildPreview, disposePreview, exportPreviewImage, storyMetadata } from '../_lib/previewApi.native';\nimport {\n isolatedPreviewHtml,\n normalizedAnnotationRect,\n type PreviewPoint,\n type PreviewAnnotationRect,\n} from '../_lib/previewFrame';\n\n/** Package-owned source builds, rendered inside the host's genuine isolated HTML adapter. */\nexport function StoryPreviewPanel(\n props: WebPluginSlotProps & { seed?: StoryPreviewSeed; source?: StoryPreviewSeed['source'] },\n) {\n const source = props.source ?? props.seed?.source;\n const [appPath, setAppPath] = useState(props.seed?.appPath ?? source?.preview?.appPath ?? '');\n const [storyPath, setStoryPath] = useState(source?.path ?? props.seed?.storyPath ?? '');\n const [storyExport, setStoryExport] = useState(\n props.seed?.storyExport ?? source?.preview?.storyExport ?? 'Playground',\n );\n const [previewTheme, setPreviewTheme] = useState('');\n const [revision, setRevision] = useState(0);\n const [preview, setPreview] = useState<BuildStoryPreviewView>();\n const [image, setImage] = useState<ExportStoryPreviewImageView>();\n const [status, setStatus] = useState('Choose an exact story file and export.');\n const [working, setWorking] = useState(false);\n const [feedback, setFeedback] = useState('');\n const [region, setRegion] = useState<PreviewAnnotationRect>();\n const annotationStart = useRef<PreviewPoint | undefined>(undefined);\n const imageBounds = useRef({ width: 1, height: 1 });\n const generation = useRef(0);\n const builtProject = useRef('');\n const snapshot = props.seed?.snapshot ?? source?.preview?.snapshot ?? false;\n const dirty = source?.hasUnsavedChanges === true;\n const sessionId = props.sessionId;\n useEffect(() => {\n setAppPath(props.seed?.appPath ?? source?.preview?.appPath ?? '');\n setStoryPath(source?.path ?? props.seed?.storyPath ?? '');\n setStoryExport(props.seed?.storyExport ?? source?.preview?.storyExport ?? 'Playground');\n }, [\n sessionId,\n props.seed?.appPath,\n props.seed?.storyPath,\n props.seed?.storyExport,\n source?.path,\n source?.preview?.appPath,\n source?.preview?.storyExport,\n ]);\n const imageContext =\n image === undefined\n ? undefined\n : {\n kind: 'author-capture',\n source: 'style-system',\n id: image.captureId,\n label: `${image.storyPath}#${image.storyExport}`,\n content: `Project: ${builtProject.current}\\nStory: ${image.storyPath}#${image.storyExport}\\nStory source sha256: ${image.sourceSha256}`,\n };\n useEffect(() => {\n generation.current += 1;\n setPreview(undefined);\n setImage(undefined);\n setRegion(undefined);\n setWorking(false);\n if (sessionId === null || storyPath.trim() === '' || dirty) return;\n let current = true;\n let handle: string | undefined;\n const run = async () => {\n setWorking(true);\n setStatus('Loading story metadata…');\n setPreview(undefined);\n setImage(undefined);\n try {\n const metadata = await storyMetadata(sessionId, { storyPath, ...(appPath === '' ? {} : { appPath }) });\n if (!current) return;\n if (!metadata.ok) throw new Error(metadata.error);\n if (!metadata.metadata.exports.some((entry) => entry.exportName === storyExport))\n throw new Error(`Story export \"${storyExport}\" is no longer available. Choose an export.`);\n const request = {\n appPath: metadata.metadata.appPath,\n storyPath: metadata.metadata.storyPath,\n storyExport,\n ...(previewTheme === '' ? {} : { theme: previewTheme }),\n };\n builtProject.current = request.appPath;\n setStatus('Building preview…');\n if (snapshot) {\n const result = await exportPreviewImage(sessionId, request);\n if (!current) return;\n if (!result.ok) throw new Error(result.error);\n setImage(result.image);\n } else {\n const result = await buildPreview(sessionId, request);\n if (!result.ok) throw new Error(result.error);\n handle = result.preview.handle;\n if (!current) {\n void disposePreview(sessionId, handle);\n return;\n }\n setPreview(result.preview);\n }\n setStatus('Preview ready. Refresh after source edits.');\n } catch (reason) {\n if (current) setStatus(reason instanceof Error ? reason.message : String(reason));\n } finally {\n if (current) setWorking(false);\n }\n };\n void run();\n return () => {\n current = false;\n generation.current += 1;\n if (handle !== undefined) void disposePreview(sessionId, handle);\n };\n }, [\n sessionId,\n appPath,\n storyPath,\n storyExport,\n previewTheme,\n revision,\n snapshot,\n dirty,\n source?.revision,\n source?.sourceSha256,\n ]);\n const prepareImage = async () => {\n if (sessionId === null || working || dirty) return;\n const operation = generation.current;\n setWorking(true);\n try {\n const metadata = await storyMetadata(sessionId, { storyPath, ...(appPath === '' ? {} : { appPath }) });\n if (generation.current !== operation) return;\n if (!metadata.ok) throw new Error(metadata.error);\n const result = await exportPreviewImage(sessionId, {\n appPath: metadata.metadata.appPath,\n storyPath,\n storyExport,\n ...(previewTheme === '' ? {} : { theme: previewTheme }),\n });\n if (generation.current !== operation) return;\n if (!result.ok) throw new Error(result.error);\n builtProject.current = metadata.metadata.appPath;\n setRegion(undefined);\n setImage(result.image);\n setStatus('Image rendered from the current source. Transient preview interactions are not included.');\n } catch (reason) {\n if (generation.current === operation) setStatus(reason instanceof Error ? reason.message : String(reason));\n } finally {\n if (generation.current === operation) setWorking(false);\n }\n };\n return (\n <View style={styles.panel}>\n <Label>Project path</Label>\n <Input value={appPath} onChangeText={setAppPath} />\n <Label>Story file</Label>\n <Input value={storyPath} onChangeText={setStoryPath} />\n <Label>Story export</Label>\n <Input value={storyExport} onChangeText={setStoryExport} />\n <Button disabled={working || dirty || sessionId === null} onPress={() => setRevision((value) => value + 1)}>\n {preview || image ? 'Refresh preview' : 'Build preview'}\n </Button>\n <Label>Theme</Label>\n <View style={styles.themes}>\n {[{ name: '', label: 'Project default' }, ...PREVIEW_THEMES].map((entry) => (\n <Button\n key={entry.name}\n variant={previewTheme === entry.name ? 'secondary' : 'outline'}\n accessibilityState={{ selected: previewTheme === entry.name }}\n onPress={() => setPreviewTheme(entry.name)}\n >\n {entry.label}\n </Button>\n ))}\n </View>\n <Text style={styles.meta}>{dirty ? 'Save changes to preview. Preview uses saved source.' : status}</Text>\n {preview\n ? props.renderStoryPreview?.({\n key: `${sessionId}:${preview.handle}`,\n html: isolatedPreviewHtml(preview.html),\n title: `${preview.storyPath}#${preview.storyExport}`,\n })\n : null}\n {image ? (\n <View\n accessibilityLabel=\"Drag to mark an annotation region\"\n onLayout={(event) => {\n imageBounds.current = event.nativeEvent.layout;\n }}\n onStartShouldSetResponder={() => !working && !dirty}\n onResponderGrant={(event) => {\n annotationStart.current = {\n x: Math.min(1, Math.max(0, event.nativeEvent.locationX / imageBounds.current.width)),\n y: Math.min(1, Math.max(0, event.nativeEvent.locationY / imageBounds.current.height)),\n };\n }}\n onResponderRelease={(event) => {\n const start = annotationStart.current;\n annotationStart.current = undefined;\n if (start === undefined) return;\n const end = {\n x: Math.min(1, Math.max(0, event.nativeEvent.locationX / imageBounds.current.width)),\n y: Math.min(1, Math.max(0, event.nativeEvent.locationY / imageBounds.current.height)),\n };\n const next = normalizedAnnotationRect(start, end);\n setRegion(next.width === 0 || next.height === 0 ? undefined : next);\n }}\n onResponderTerminate={() => {\n annotationStart.current = undefined;\n }}\n >\n <Image\n accessibilityLabel=\"Frozen source-backed story render\"\n source={{ uri: `data:${image.mimeType};base64,${image.data}` }}\n style={{ width: '100%', aspectRatio: image.width / image.height }}\n resizeMode=\"contain\"\n />\n {region ? (\n <View\n pointerEvents=\"none\"\n style={[\n styles.region,\n {\n left: `${region.x * 100}%`,\n top: `${region.y * 100}%`,\n width: `${region.width * 100}%`,\n height: `${region.height * 100}%`,\n },\n ]}\n />\n ) : null}\n </View>\n ) : null}\n {preview || image ? (\n <>\n <Button variant=\"outline\" disabled={working || dirty} onPress={() => void prepareImage()}>\n Prepare annotation image\n </Button>\n {image && imageContext ? (\n <>\n <Button\n variant=\"outline\"\n onPress={() =>\n void Share.share({\n url: `data:${image.mimeType};base64,${image.data}`,\n title: imageContext.label,\n }).catch((reason: unknown) => setStatus(reason instanceof Error ? reason.message : String(reason)))\n }\n >\n Export PNG\n </Button>\n <Button\n variant=\"outline\"\n onPress={() =>\n props.attachComposerCapture({ data: image.data, mimeType: image.mimeType, context: imageContext })\n }\n >\n Attach image to composer\n </Button>\n {props.contextActionsFor(imageContext).map((action) => (\n <Button key={action.id} variant=\"outline\" onPress={() => action.run()}>\n {action.label}\n </Button>\n ))}\n </>\n ) : null}\n <Label>AI design feedback</Label>\n <Textarea value={feedback} onChangeText={setFeedback} />\n <Button\n variant=\"outline\"\n disabled={\n working || dirty || props.submitCapture === undefined || image === undefined || feedback.trim() === ''\n }\n onPress={() => {\n if (props.submitCapture === undefined || image === undefined) return;\n const operation = generation.current;\n void props\n .submitCapture({\n ...image,\n context: {\n kind: 'author-capture',\n source: 'style-system',\n id: image.captureId,\n label: `${image.storyPath}#${image.storyExport}`,\n content: [\n 'Edit the underlying story or component source, never the generated preview HTML.',\n `Project: ${builtProject.current}`,\n `Story: ${image.storyPath}#${image.storyExport}`,\n `Story source sha256: ${image.sourceSha256}`,\n `Source-backed image revision: ${image.sourceSha256}`,\n region === undefined\n ? 'Whole preview'\n : `Region: x=${region.x.toFixed(3)}, y=${region.y.toFixed(3)}, width=${region.width.toFixed(3)}, height=${region.height.toFixed(3)}`,\n `Feedback: ${feedback.trim()}`,\n 'After editing, rebuild this preview before treating it as visually verified.',\n ].join('\\n'),\n },\n })\n .then(() => {\n if (generation.current !== operation) return;\n setFeedback('');\n setStatus('Feedback and the frozen source-backed annotation image were submitted to the agent.');\n })\n .catch((reason: unknown) => {\n if (generation.current === operation)\n setStatus(reason instanceof Error ? reason.message : String(reason));\n });\n }}\n >\n Send to AI\n </Button>\n </>\n ) : null}\n </View>\n );\n}\nconst styles = StyleSheet.create((theme: PoNativeTheme) => ({\n panel: { flex: 1, gap: theme.spacing(2), backgroundColor: theme.colors.bg },\n region: { position: 'absolute', borderWidth: 2, borderColor: theme.colors.yellow },\n meta: { color: theme.colors.dim, fontFamily: fontOf(theme.fontFamily.sans), fontSize: theme.fontSize.sm },\n themes: { flexDirection: 'row', flexWrap: 'wrap', gap: theme.spacing(2) },\n}));\n","import type { WebPluginSlotProps } from '@agimon-ai/po-core/native';\nimport {\n fontOf,\n Button,\n Input,\n ListRow,\n Sheet,\n SheetBody,\n SheetContent,\n SheetHeader,\n SheetTitle,\n} from '@agimon-ai/po-native-components';\nimport type { PoNativeTheme } from '@agimon-ai/po-web-components/nativeTheme';\nimport { useEffect, useState } from 'react';\nimport { ScrollView, Text, View } from 'react-native';\nimport { StyleSheet } from 'react-native-unistyles';\n\nimport type { StyleSystemCatalogView } from '../../../../../types/styleSystemCatalog';\nimport { styleSystemCatalog } from '../_lib/previewApi.native';\nimport {\n authorSourceActionSlot,\n browserSelection,\n componentKeywords,\n filteredComponents,\n forgetBrowserSelection,\n matchesQuery,\n rememberBrowserSelection,\n storyFolders,\n type BrowserSelection,\n} from '../_lib/styleSystemBrowser';\nimport { StoryPreviewPanel } from './StoryPreviewPanel.native';\n\ntype Picker = 'folder' | 'component' | 'tags' | 'story' | 'project';\nexport function styleSystemTab() {\n return { id: 'style-system', label: 'style system', panel: StyleSystemBrowser, onClose: forgetBrowserSelection };\n}\n\nexport function StyleSystemBrowser(props: WebPluginSlotProps & { initialCatalog?: StyleSystemCatalogView }) {\n const [selection, setSelection] = useState(() => browserSelection(props.sessionId));\n const [catalog, setCatalog] = useState(props.initialCatalog);\n const [loading, setLoading] = useState(props.initialCatalog === undefined);\n const [error, setError] = useState('');\n const [revision, setRevision] = useState(0);\n const [picker, setPicker] = useState<Picker>();\n const [query, setQuery] = useState('');\n useEffect(() => setSelection(browserSelection(props.sessionId)), [props.sessionId]);\n useEffect(() => {\n if (props.initialCatalog !== undefined && revision === 0) return;\n setCatalog(undefined);\n setError('');\n if (props.sessionId === null) {\n setLoading(false);\n return;\n }\n let current = true;\n setLoading(true);\n void styleSystemCatalog(props.sessionId, { refresh: revision > 0 })\n .then((result) => {\n if (!current) return;\n if (result.ok) setCatalog(result.catalog);\n else setError(result.error);\n })\n .catch((reason: unknown) => {\n if (current) setError(reason instanceof Error ? reason.message : String(reason));\n })\n .finally(() => {\n if (current) setLoading(false);\n });\n return () => {\n current = false;\n };\n }, [props.sessionId, props.initialCatalog, revision]);\n const update = (patch: Partial<BrowserSelection>) => {\n const next = { ...selection, ...patch };\n rememberBrowserSelection(props.sessionId, next);\n setSelection(next);\n };\n const component = catalog?.components.find((entry) => entry.storyPath === selection.storyPath);\n const project = catalog?.projects.find((entry) => entry.appPath === selection.appPath);\n const action = props.sessionId !== null ? props.slotData(authorSourceActionSlot)[0]?.data : undefined;\n const options =\n picker === 'folder'\n ? [\n { value: '', label: 'All folders' },\n ...storyFolders(catalog?.components ?? []).map((entry) => ({\n value: entry.path,\n label: `${entry.path} (${entry.count})`,\n })),\n ]\n : picker === 'component'\n ? (catalog ? filteredComponents(catalog, selection) : []).map((entry) => ({\n value: entry.storyPath,\n label: entry.title,\n keywords: componentKeywords(entry),\n }))\n : picker === 'tags'\n ? [\n { value: '', label: 'Any tag' },\n ...[...new Set(catalog?.components.flatMap((entry) => entry.tags) ?? [])]\n .sort()\n .map((tag) => ({ value: tag, label: tag })),\n ]\n : picker === 'story'\n ? (component?.exports ?? []).map((entry) => ({\n value: entry.exportName,\n label: entry.label ?? entry.exportName,\n }))\n : (catalog?.projects ?? []).map((entry) => ({\n value: entry.appPath,\n label: entry.appPath,\n disabled: entry.error !== undefined,\n }));\n const select = (value: string) => {\n if (picker === 'folder') update({ folder: value });\n if (picker === 'component') {\n const chosen = catalog?.components.find((entry) => entry.storyPath === value);\n if (chosen)\n update({\n storyPath: value,\n appPath: chosen.projectPath ?? '',\n storyExport:\n chosen.exports.find((entry) => entry.exportName === 'Playground')?.exportName ??\n chosen.exports[0]?.exportName ??\n '',\n });\n }\n if (picker === 'tags')\n update({\n tags:\n value === ''\n ? []\n : selection.tags.includes(value)\n ? selection.tags.filter((tag) => tag !== value)\n : [...selection.tags, value],\n });\n if (picker === 'story') update({ storyExport: value });\n if (picker === 'project') update({ appPath: value });\n if (picker !== 'tags') setPicker(undefined);\n };\n const choose = (kind: Picker) => {\n setQuery('');\n setPicker(kind);\n };\n return (\n <View style={styles.panel}>\n <Button\n variant=\"outline\"\n disabled={loading || props.sessionId === null}\n onPress={() => setRevision((value) => value + 1)}\n >\n Refresh\n </Button>\n {props.sessionId === null ? <Text style={styles.meta}>Select a session to browse its style systems.</Text> : null}\n {loading ? <Text style={styles.meta}>Discovering configurations and components...</Text> : null}\n {error !== '' ? (\n <>\n <Text accessibilityRole=\"alert\" style={styles.error}>\n {error}\n </Text>\n <Button onPress={() => setRevision((value) => value + 1)}>Retry</Button>\n </>\n ) : null}\n {catalog ? (\n <>\n <View style={styles.controls}>\n <Button variant=\"outline\" onPress={() => choose('folder')}>\n {selection.folder || 'All folders'}\n </Button>\n <Button variant=\"outline\" onPress={() => choose('component')}>\n {component?.title ?? `Choose one of ${filteredComponents(catalog, selection).length} components`}\n </Button>\n <Button variant=\"outline\" onPress={() => choose('tags')}>\n {selection.tags.join(', ') || 'All tags'}\n </Button>\n </View>\n {catalog.truncated || catalog.diagnostics.length > 0 ? (\n <Text style={styles.meta}>\n {catalog.diagnostics.length} discovery issues{catalog.truncated ? ', catalog limit reached' : ''}\n {catalog.diagnostics.map((entry) => `\\n${entry.path}: ${entry.message}`).join('')}\n </Text>\n ) : null}\n {component ? (\n <>\n <Text style={styles.title}>{component.title}</Text>\n <Text selectable style={styles.meta}>\n {component.storyPath}\n </Text>\n <Button variant=\"outline\" onPress={() => choose('story')}>\n {selection.storyExport || 'Story export'}\n </Button>\n <Button variant=\"outline\" onPress={() => choose('project')}>\n {selection.appPath || 'Choose consuming project'}\n </Button>\n {component.projectPath === undefined && selection.appPath === '' ? (\n <Text style={styles.meta}>\n This component has no project config. Choose a consuming project to render it.\n </Text>\n ) : null}\n {action && props.sessionId !== null ? (\n <Button\n variant=\"outline\"\n onPress={() => {\n if (props.sessionId !== null)\n props.openTransientTab(\n action.createTab({\n sessionId: props.sessionId,\n path: component.storyPath,\n preview:\n project === undefined || selection.storyExport === ''\n ? undefined\n : {\n appPath: project.appPath,\n storyExport: selection.storyExport,\n snapshot: project.bundler !== undefined && project.bundler !== 'vite-react',\n },\n }),\n );\n }}\n >\n Open in Author\n </Button>\n ) : null}\n {project && project.error === undefined && selection.storyExport !== '' ? (\n <StoryPreviewPanel\n key={`${props.sessionId}:${selection.appPath}:${selection.storyPath}:${selection.storyExport}:${revision}`}\n {...props}\n seed={{\n appPath: selection.appPath,\n storyPath: selection.storyPath,\n storyExport: selection.storyExport,\n snapshot: project.bundler !== undefined && project.bundler !== 'vite-react',\n source: { path: selection.storyPath, hasUnsavedChanges: false },\n }}\n />\n ) : null}\n </>\n ) : (\n <Text style={styles.meta}>\n Choose a component to inspect and preview. Previews render only after selection.\n </Text>\n )}\n </>\n ) : null}\n {picker ? (\n <Sheet\n open\n onOpenChange={(open) => {\n if (!open) setPicker(undefined);\n }}\n >\n <SheetContent>\n <SheetHeader>\n <SheetTitle>{picker}</SheetTitle>\n </SheetHeader>\n <SheetBody>\n <Input accessibilityLabel=\"Search choices\" value={query} onChangeText={setQuery} />\n <ScrollView>\n {options\n .filter((entry) => matchesQuery('keywords' in entry ? String(entry.keywords) : entry.label, query))\n .map((entry) => (\n <ListRow\n disclosure={false}\n key={entry.value}\n title={entry.label}\n disabled={'disabled' in entry && entry.disabled === true}\n onPress={() => select(entry.value)}\n trailing={\n picker === 'tags' && selection.tags.includes(entry.value) ? (\n <Text style={styles.meta}>Selected</Text>\n ) : undefined\n }\n />\n ))}\n </ScrollView>\n </SheetBody>\n </SheetContent>\n </Sheet>\n ) : null}\n </View>\n );\n}\nconst styles = StyleSheet.create((theme: PoNativeTheme) => ({\n panel: { flex: 1, gap: theme.spacing(2), padding: theme.spacing(3), backgroundColor: theme.colors.bg },\n controls: { gap: theme.spacing(2) },\n title: {\n color: theme.colors.hi,\n fontWeight: '600',\n fontFamily: fontOf(theme.fontFamily.sans),\n fontSize: theme.fontSize.base,\n },\n meta: {\n color: theme.colors.dim,\n fontFamily: fontOf(theme.fontFamily.sans),\n fontSize: theme.fontSize.sm,\n lineHeight: theme.lineHeight.sm,\n },\n error: { color: theme.colors.red, fontFamily: fontOf(theme.fontFamily.sans), fontSize: theme.fontSize.base },\n}));\n","import { defineActivityGroup } from '@agimon-ai/po-core/native';\n\nimport { styleSystemTab } from '../_components/StyleSystemBrowser.native';\n\nexport default defineActivityGroup({\n name: 'style system',\n keys: '',\n activeSource: { subscribe: () => () => undefined, isActive: () => false },\n marksBackgroundWork: false,\n transientTab: styleSystemTab,\n order: 25,\n});\n","import { defineFill } from '@agimon-ai/po-core/native';\n\n/**\n * The style system is a launcher, not work that runs, so its group has no\n * status to report. Filling the body with nothing stops the dock standing an\n * \"Idle\" in for a status that can never change; the heading still opens it.\n */\nexport default defineFill({ slot: 'activity.style system', component: () => null });\n","import type { WebPluginSlotProps } from '@agimon-ai/po-core/native';\n\nimport type { StoryPreviewSeed } from '../../../../../types/previewApi';\nimport { StoryPreviewPanel } from './StoryPreviewPanel.native';\n\nfunction sourceKey(path: string): string {\n let hash = 2_166_136_261;\n for (const character of path) hash = Math.imul(hash ^ character.codePointAt(0)!, 16_777_619);\n return (hash >>> 0).toString(36);\n}\n\nexport function storyPreviewTab(seed?: StoryPreviewSeed): Parameters<WebPluginSlotProps['openTransientTab']>[0] {\n const sourcePath = seed?.source?.path;\n return {\n id: sourcePath === undefined ? 'style-system-story-preview' : `style-system-story-preview-${sourceKey(sourcePath)}`,\n label: 'Story preview',\n panel: (props) => <StoryPreviewPanel {...props} seed={seed} />,\n retainComposer: true,\n };\n}\n","import { defineFill } from '@agimon-ai/po-core/native';\n\nimport { storyPreviewTab } from '../_components/StoryPreviewLauncher.native';\nimport { StoryPreviewPanel } from '../_components/StoryPreviewPanel.native';\n\nexport default defineFill({\n slot: 'author.preview-action',\n id: 'style-system',\n data: {\n version: 1 as const,\n label: 'Preview',\n detail: 'Build, inspect, refresh, and send source-targeted visual feedback.',\n supportsSource: (source: { kind?: string }) => source.kind === 'story-preview',\n embeddedPanel: StoryPreviewPanel,\n createTab: ({ source }: { source?: { path: string; hasUnsavedChanges: boolean } }) =>\n storyPreviewTab(source === undefined ? undefined : { source }),\n },\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineNativePlugin, type WebPluginContributions } from '@agimon-ai/po-core/native';\n\nimport activityGroupStyleSystem from '../src/extensions/workspaces/sessions/(frontend)/activity-group/style-system.native';\nimport fillStyleSystem from '../src/extensions/workspaces/sessions/(frontend)/fill/StyleSystem.activity.style-system.native';\nimport fillStyleSystem2 from '../src/extensions/workspaces/sessions/(frontend)/fill/StyleSystem.author.preview-action.native';\n\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const nativePlugin = defineNativePlugin({\n id: 'style-system',\n session: {\n get activityGroups(): WebPluginContributions['activityGroups'] { return [via({ name: 'style-system' }, activityGroupStyleSystem)]; },\n get fills(): WebPluginContributions['fills'] { return [via({ slot: 'activity.style-system', id: 'style-system' }, fillStyleSystem), via({ slot: 'author.preview-action', id: 'style-system' }, fillStyleSystem2)]; },\n },\n});\n"],"mappings":";;;;;;;;;;ACQA,MAAa,MAAM,gBAAgB;CDGjC,SAAS;EACP,QAAQ;EACR,MAAM;EACN,UAAU,KAAA;CACZ;CACA,UAAU;EACR,QAAQ;EACR,MAAM;EACN,UAAU,KAAA;CACZ;CACA,OAAO;EACL,QAAQ;EACR,MAAM;EACN,UAAU,KAAA;CACZ;CACA,OAAO;EACL,QAAQ;EACR,MAAM;EACN,UAAU,KAAA;CACZ;CACA,SAAS;EACP,QAAQ;EACR,MAAM;EACN,UAAU,KAAA;CACZ;AC3BiC,GAAQ;CACzC,QAAQ,CAHgB,SAGhB;CACR,UAAU;CACV,WAAW;CACX,gBAAgB;AAClB,CAAC;;;ACHD,SAAS,aAAa,QAAmD;CACvE,IAAI,OAAO,WAAW,GAAG,OAAO;CAChC,OAAO,OAAO,UAAU,KAAK,gCAAgC,OAAO,OAAO,MAAM,EAAE,KAAK,OAAO;AACjG;AAEA,eAAsB,mBACpB,WACA,UAAqC,CAAC,GACiD;CACvF,MAAM,SAAS,MAAM,IAAI,QAAQ,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,QAAQ,CAAC;CACrE,OAAO,OAAO,KAAK;EAAE,IAAI;EAAM,SAAS,OAAO;CAAK,IAAI;EAAE,IAAI;EAAO,OAAO,aAAa,MAAM;CAAE;AACnG;AAEA,eAAsB,cACpB,WACA,SAC0F;CAC1F,MAAM,SAAS,MAAM,IAAI,QAAQ,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,QAAQ,CAAC;CACtE,OAAO,OAAO,KAAK;EAAE,IAAI;EAAM,UAAU,OAAO;CAAK,IAAI;EAAE,IAAI;EAAO,OAAO,aAAa,MAAM;CAAE;AACpG;AAEA,eAAsB,aACpB,WACA,SACsF;CACtF,MAAM,SAAS,MAAM,IAAI,QAAQ,SAAS,CAAC,CAAC,MAAM,EAAE,MAAM,QAAQ,CAAC;CACnE,OAAO,OAAO,KAAK;EAAE,IAAI;EAAM,SAAS,OAAO;CAAK,IAAI;EAAE,IAAI;EAAO,OAAO,aAAa,MAAM;CAAE;AACnG;AAEA,eAAsB,mBACpB,WACA,SAC0F;CAC1F,MAAM,SAAS,MAAM,IAAI,QAAQ,SAAS,CAAC,CAAC,MAAM,EAAE,MAAM,QAAQ,CAAC;CACnE,OAAO,OAAO,KAAK;EAAE,IAAI;EAAM,OAAO,OAAO;CAAK,IAAI;EAAE,IAAI;EAAO,OAAO,aAAa,MAAM;CAAE;AACjG;AAEA,eAAsB,eAAe,WAAmB,QAA+B;CACrF,MAAM,IAAI,QAAQ,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC3D;;;AC5BA,MAAM,6BAAa,IAAI,IAA8B;;AAGrD,MAAM,yBAAyB;AAC/B,SAAgB,0BAA4C;CAC1D,OAAO;EAAE,QAAQ;EAAI,MAAM,CAAC;EAAG,WAAW;EAAI,SAAS;EAAI,aAAa;CAAG;AAC7E;AACA,SAAgB,iBAAiB,WAA4C;CAC3E,OAAO,cAAc,OAAO,wBAAwB,IAAK,WAAW,IAAI,SAAS,KAAK,wBAAwB;AAChH;AACA,SAAgB,yBAAyB,WAA0B,WAAmC;CACpG,IAAI,cAAc,MAAM,WAAW,IAAI,WAAW,SAAS;AAC7D;AACA,SAAgB,uBAAuB,WAAyB;CAC9D,WAAW,OAAO,SAAS;AAC7B;AACA,SAAgB,aAAa,MAAc,OAAwB;CACjE,MAAM,WAAW,KAAK,YAAY;CAClC,OAAO,MACJ,YAAY,CAAC,CACb,MAAM,MAAM,CAAC,CACb,OAAO,OAAO,CAAC,CACf,OAAO,SAAS,SAAS,SAAS,IAAI,CAAC;AAC5C;AACA,SAAgB,kBAAkB,WAAgD;CAChF,OAAO;EACL,UAAU;EACV,UAAU;EACV,GAAG,UAAU;EACb,GAAG,UAAU,QAAQ,KAAK,UAAU,GAAG,MAAM,WAAW,GAAG,MAAM,SAAS,IAAI;CAChF,CAAC,CAAC,KAAK,GAAG;AACZ;AACA,SAAgB,mBAAmB,SAAiC,WAA6B;CAC/F,OAAO,QAAQ,WAAW,QACvB,eACE,UAAU,WAAW,MAAM,UAAU,UAAU,WAAW,GAAG,UAAU,OAAO,EAAE,MACjF,UAAU,KAAK,OAAO,QAAQ,UAAU,KAAK,SAAS,GAAG,CAAC,CAC9D;AACF;;AAQA,SAAgB,aAAa,YAAmE;CAC9F,MAAM,OAAmB;EAAE,0BAAU,IAAI,IAAI;EAAG,KAAK;EAAG,OAAO;CAAE;CACjE,KAAK,MAAM,aAAa,YAAY;EAClC,MAAM,MAAM,UAAU,UAAU,YAAY,GAAG;EAC/C,IAAI,OAAO,GAAG;EACd,IAAI,OAAO;EACX,KAAK,MAAM,WAAW,UAAU,UAAU,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG;GAClE,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO;GACrC,IAAI,UAAU,KAAA,GAAW;IACvB,QAAQ;KAAE,0BAAU,IAAI,IAAI;KAAG,KAAK;KAAG,OAAO;IAAE;IAChD,KAAK,SAAS,IAAI,SAAS,KAAK;GAClC;GACA,MAAM,SAAS;GACf,OAAO;EACT;EACA,KAAK,OAAO;CACd;CACA,MAAM,UAAyB,CAAC;CAChC,MAAM,aAAa,MAAkB,UACnC,SAAS,0BAA0B,KAAK,QAAQ,KAAK,KAAK,SAAS,SAAS,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,KAAK,KAAA;CAC1G,MAAM,QAAQ,MAAkB,QAAgB,UAAwB;EACtE,KAAK,MAAM,CAAC,SAAS,UAAU,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,GAAG;GACxF,IAAI,QAAQ;GACZ,IAAI,QAAQ;GACZ,KAAK,IAAI,OAAO,UAAU,OAAO,KAAK,GAAG,SAAS,KAAA,GAAW,OAAO,UAAU,OAAO,KAAK,GAAG;IAC3F,QAAQ,GAAG,MAAM,GAAG,KAAK;IACzB,QAAQ,KAAK;GACf;GACA,MAAM,OAAO,GAAG,SAAS;GACzB,QAAQ,KAAK;IAAE;IAAM;IAAO;IAAO,OAAO,MAAM;GAAM,CAAC;GACvD,IAAI,QAAQ,IAAA,GAAoB,KAAK,OAAO,GAAG,KAAK,IAAI,QAAQ,CAAC;EACnE;CACF;CACA,KAAK,MAAM,IAAI,CAAC;CAChB,OAAO;AACT;AAUA,MAAa,yBAA8D;CACzE,MAAM;CACN,MAAM,OAAO;EACX,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO;EACxD,MAAM,SAAS;EACf,OAAO,OAAO,YAAY,KAAK,OAAO,OAAO,cAAc,aAAc,SAAgC;CAC3G;AACF;;;;;;;;AClHA,MAAa,iBAA6D,CACxE;CAAE,MAAM;CAAgB,OAAO;AAAmB,GAClD;CAAE,MAAM;CAAgB,OAAO;AAAiB,CAClD;;;ACRA,MAAM,cACJ;AAYF,SAAS,kBAAkB,MAAkC;CAC3D,MAAM,QAAQ,KAAK,YAAY;CAC/B,IAAI,QAAQ;CACZ,OAAO,QAAQ,KAAK,QAAQ;EAC1B,IAAI,MAAM,WAAW,QAAQ,KAAK,GAAG;GACnC,MAAM,MAAM,MAAM,QAAQ,OAAO,QAAQ,CAAC;GAC1C,QAAQ,MAAM,IAAI,KAAK,SAAS,MAAM;GACtC;EACF;EACA,IAAI,KAAK,WAAW,KAAK;GACvB,SAAS;GACT;EACF;EACA,MAAM,MAAM,KAAK,MAAM,KAAK,CAAC,CAAC,MAAM,oCAAoC;EACxE,IAAI,QAAQ,MAAM;GAChB,SAAS;GACT;EACF;EACA,MAAM,OAAO,IAAI,EAAE,CAAE,YAAY;EACjC,MAAM,MAAM,QAAQ,IAAI,EAAE,CAAC;EAC3B,IAAI,SAAS,QAAQ,OAAO;EAC5B,IAAI,SAAS,YAAY,SAAS,WAAW,SAAS,cAAc,SAAS,cAAc,SAAS,SAAS;GAC3G,MAAM,UAAU,MAAM,QAAQ,KAAK,QAAQ,GAAG;GAC9C,QAAQ,UAAU,IAAI,KAAK,SAAS;GACpC;EACF;EACA,QAAQ;CACV;AAEF;AAEA,SAAgB,oBAAoB,MAAsB;CACxD,MAAM,SAAS,uDAAuD,YAAY;CAClF,MAAM,gBAAgB,kBAAkB,IAAI;CAC5C,IAAI,kBAAkB,KAAA,GAAW,OAAO,GAAG,KAAK,MAAM,GAAG,aAAa,IAAI,SAAS,KAAK,MAAM,aAAa;CAC3G,MAAM,UAAU,KAAK,MAAM,sBAAsB;CACjD,IAAI,YAAY,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS,KAAK,MAAM,QAAQ,EAAE,CAAC,MAAM;CAC/F,OAAO,SAAS,OAAO,SAAS;AAClC;AAEA,SAAgB,yBAAyB,OAAqB,KAA0C;CACtG,OAAO;EACL,GAAG,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC;EAC1B,GAAG,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC;EAC1B,OAAO,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC;EAC/B,QAAQ,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC;CAClC;AACF;;;;ACtCA,SAAgBwB,kBACdC,OACA;CACA,MAAME,SAASF,MAAME,UAAUF,MAAMC,MAAMC;CAC3C,MAAM,CAACC,SAASC,cAAcpB,SAASgB,MAAMC,MAAME,WAAWD,QAAQG,SAASF,WAAW,EAAE;CAC5F,MAAM,CAACG,WAAWC,gBAAgBvB,SAASkB,QAAQM,QAAQR,MAAMC,MAAMK,aAAa,EAAE;CACtF,MAAM,CAACG,aAAaC,kBAAkB1B,SACpCgB,MAAMC,MAAMQ,eAAeP,QAAQG,SAASI,eAAe,YAC7D;CACA,MAAM,CAACE,cAAcC,mBAAmB5B,SAAS,EAAE;CACnD,MAAM,CAAC6B,UAAUC,eAAe9B,SAAS,CAAC;CAC1C,MAAM,CAACqB,SAASU,cAAc/B,SAAgC;CAC9D,MAAM,CAACgC,OAAOC,YAAYjC,SAAsC;CAChE,MAAM,CAACkC,QAAQC,aAAanC,SAAS,wCAAwC;CAC7E,MAAM,CAACoC,SAASC,cAAcrC,SAAS,KAAK;CAC5C,MAAM,CAACsC,UAAUC,eAAevC,SAAS,EAAE;CAC3C,MAAM,CAACwC,QAAQC,aAAazC,SAAgC;CAC5D,MAAM0C,kBAAkB3C,OAAiC4C,KAAAA,CAAS;CAClE,MAAMC,cAAc7C,OAAO;EAAE8C,OAAO;EAAGC,QAAQ;CAAE,CAAC;CAClD,MAAMC,aAAahD,OAAO,CAAC;CAC3B,MAAMiD,eAAejD,OAAO,EAAE;CAC9B,MAAMkD,WAAWjC,MAAMC,MAAMgC,YAAY/B,QAAQG,SAAS4B,YAAY;CACtE,MAAMC,QAAQhC,QAAQiC,sBAAsB;CAC5C,MAAMC,YAAYpC,MAAMoC;CACxBtD,gBAAgB;EACdsB,WAAWJ,MAAMC,MAAME,WAAWD,QAAQG,SAASF,WAAW,EAAE;EAChEI,aAAaL,QAAQM,QAAQR,MAAMC,MAAMK,aAAa,EAAE;EACxDI,eAAeV,MAAMC,MAAMQ,eAAeP,QAAQG,SAASI,eAAe,YAAY;CACxF,GAAG;EACD2B;EACApC,MAAMC,MAAME;EACZH,MAAMC,MAAMK;EACZN,MAAMC,MAAMQ;EACZP,QAAQM;EACRN,QAAQG,SAASF;EACjBD,QAAQG,SAASI;CAAW,CAC7B;CACD,MAAM4B,eACJrB,UAAUW,KAAAA,IACNA,KAAAA,IACA;EACEW,MAAM;EACNpC,QAAQ;EACRqC,IAAIvB,MAAMwB;EACVC,OAAO,GAAGzB,MAAMV,UAAS,GAAIU,MAAMP;EACnCiC,SAAS,YAAYV,aAAaW,QAAO,WAAY3B,MAAMV,UAAS,GAAIU,MAAMP,YAAW,yBAA0BO,MAAM4B;CAC3H;CACN9D,gBAAgB;EACdiD,WAAWY,WAAW;EACtB5B,WAAWY,KAAAA,CAAS;EACpBV,SAASU,KAAAA,CAAS;EAClBF,UAAUE,KAAAA,CAAS;EACnBN,WAAW,KAAK;EAChB,IAAIe,cAAc,QAAQ9B,UAAUuC,KAAK,MAAM,MAAMX,OAAO;EAC5D,IAAIS,UAAU;EACd,IAAIG;EACJ,MAAMC,MAAM,YAAY;GACtB1B,WAAW,IAAI;GACfF,UAAU,yBAAyB;GACnCJ,WAAWY,KAAAA,CAAS;GACpBV,SAASU,KAAAA,CAAS;GAClB,IAAI;IACF,MAAMqB,WAAW,MAAMtD,cAAc0C,WAAW;KAAE9B;KAAW,GAAIH,YAAY,KAAK,CAAC,IAAI,EAAEA,QAAQ;IAAG,CAAC;IACrG,IAAI,CAACwC,SAAS;IACd,IAAI,CAACK,SAASC,IAAI,MAAM,IAAIC,MAAMF,SAASG,KAAK;IAChD,IAAI,CAACH,SAASA,SAASI,QAAQC,MAAMC,UAAUA,MAAMC,eAAe9C,WAAW,GAC7E,MAAM,IAAIyC,MAAM,iBAAiBzC,YAAW,4CAA6C;IAC3F,MAAM+C,UAAU;KACdrD,SAAS6C,SAASA,SAAS7C;KAC3BG,WAAW0C,SAASA,SAAS1C;KAC7BG;KACA,GAAIE,iBAAiB,KAAK,CAAC,IAAI,EAAE8C,OAAO9C,aAAa;IACvD;IACAqB,aAAaW,UAAUa,QAAQrD;IAC/BgB,UAAU,mBAAmB;IAC7B,IAAIc,UAAU;KACZ,MAAMyB,SAAS,MAAMjE,mBAAmB2C,WAAWoB,OAAO;KAC1D,IAAI,CAACb,SAAS;KACd,IAAI,CAACe,OAAOT,IAAI,MAAM,IAAIC,MAAMQ,OAAOP,KAAK;KAC5ClC,SAASyC,OAAO1C,KAAK;IACvB,OAAO;KACL,MAAM0C,SAAS,MAAMnE,aAAa6C,WAAWoB,OAAO;KACpD,IAAI,CAACE,OAAOT,IAAI,MAAM,IAAIC,MAAMQ,OAAOP,KAAK;KAC5CL,SAASY,OAAOrD,QAAQyC;KACxB,IAAI,CAACH,SAAS;MACZ,eAAoBP,WAAWU,MAAM;MACrC;KACF;KACA/B,WAAW2C,OAAOrD,OAAO;IAC3B;IACAc,UAAU,4CAA4C;GACxD,SAASwC,QAAQ;IACf,IAAIhB,SAASxB,UAAUwC,kBAAkBT,QAAQS,OAAOC,UAAUC,OAAOF,MAAM,CAAC;GAClF,UAAU;IACR,IAAIhB,SAAStB,WAAW,KAAK;GAC/B;EACF;EACA,IAAS;EACT,aAAa;GACXsB,UAAU;GACVZ,WAAWY,WAAW;GACtB,IAAIG,WAAWnB,KAAAA,GAAW,eAAoBS,WAAWU,MAAM;EACjE;CACF,GAAG;EACDV;EACAjC;EACAG;EACAG;EACAE;EACAE;EACAoB;EACAC;EACAhC,QAAQW;EACRX,QAAQ0C;CAAY,CACrB;CACD,MAAMkB,eAAe,YAAY;EAC/B,IAAI1B,cAAc,QAAQhB,WAAWc,OAAO;EAC5C,MAAM6B,YAAYhC,WAAWY;EAC7BtB,WAAW,IAAI;EACf,IAAI;GACF,MAAM2B,WAAW,MAAMtD,cAAc0C,WAAW;IAAE9B;IAAW,GAAIH,YAAY,KAAK,CAAC,IAAI,EAAEA,QAAQ;GAAG,CAAC;GACrG,IAAI4B,WAAWY,YAAYoB,WAAW;GACtC,IAAI,CAACf,SAASC,IAAI,MAAM,IAAIC,MAAMF,SAASG,KAAK;GAChD,MAAMO,SAAS,MAAMjE,mBAAmB2C,WAAW;IACjDjC,SAAS6C,SAASA,SAAS7C;IAC3BG;IACAG;IACA,GAAIE,iBAAiB,KAAK,CAAC,IAAI,EAAE8C,OAAO9C,aAAa;GACvD,CAAC;GACD,IAAIoB,WAAWY,YAAYoB,WAAW;GACtC,IAAI,CAACL,OAAOT,IAAI,MAAM,IAAIC,MAAMQ,OAAOP,KAAK;GAC5CnB,aAAaW,UAAUK,SAASA,SAAS7C;GACzCsB,UAAUE,KAAAA,CAAS;GACnBV,SAASyC,OAAO1C,KAAK;GACrBG,UAAU,0FAA0F;EACtG,SAASwC,QAAQ;GACf,IAAI5B,WAAWY,YAAYoB,WAAW5C,UAAUwC,kBAAkBT,QAAQS,OAAOC,UAAUC,OAAOF,MAAM,CAAC;EAC3G,UAAU;GACR,IAAI5B,WAAWY,YAAYoB,WAAW1C,WAAW,KAAK;EACxD;CACF;CACA,OACE,qBAAC,MAAD;EAAM,OAAO2C,SAAOC;EAApB,UAAA;GACE,oBAAC,OAAD,EAAA,UAAO,eAAmB,CAAA;GAC1B,oBAAC,OAAD;IAAO,OAAO9D;IAAS,cAAcC;GAAW,CAAA;GAChD,oBAAC,OAAD,EAAA,UAAO,aAAiB,CAAA;GACxB,oBAAC,OAAD;IAAO,OAAOE;IAAW,cAAcC;GAAa,CAAA;GACpD,oBAAC,OAAD,EAAA,UAAO,eAAmB,CAAA;GAC1B,oBAAC,OAAD;IAAO,OAAOE;IAAa,cAAcC;GAAe,CAAA;GACxD,oBAAC,QAAD;IAAQ,UAAUU,WAAWc,SAASE,cAAc;IAAM,eAAetB,aAAaoD,UAAUA,QAAQ,CAAC;IACtG7D,UAAAA,WAAWW,QAAQ,oBAAoB;GAClC,CAAA;GACR,oBAAC,OAAD,EAAA,UAAO,QAAY,CAAA;GACnB,oBAAC,MAAD;IAAM,OAAOgD,SAAOG;IACjB,UAAA,CAAC;KAAEC,MAAM;KAAI3B,OAAO;IAAkB,GAAG,GAAGtD,cAAc,CAAC,CAACkF,KAAKf,UAChE,oBAAC,QAAD;KAEE,SAAS3C,iBAAiB2C,MAAMc,OAAO,cAAc;KACrD,oBAAoB,EAAEE,UAAU3D,iBAAiB2C,MAAMc,KAAK;KAC5D,eAAexD,gBAAgB0C,MAAMc,IAAI;KAExCd,UAAAA,MAAMb;IACD,GANDa,MAAMc,IAML,CACT;GACG,CAAA;GACN,oBAAC,MAAD;IAAM,OAAOJ,SAAOO;IAAOrC,UAAAA,QAAQ,wDAAwDhB;GAAa,CAAA;GACvGb,UACGL,MAAMwE,qBAAqB;IACzBC,KAAK,GAAGrC,UAAS,GAAI/B,QAAQyC;IAC7B4B,MAAM/E,oBAAoBU,QAAQqE,IAAI;IACtCC,OAAO,GAAGtE,QAAQC,UAAS,GAAID,QAAQI;GACzC,CAAC,IACD;GACHO,QACC,qBAAC,MAAD;IACE,oBAAmB;IACnB,WAAW4D,UAAU;KACnBhD,YAAYe,UAAUiC,MAAMC,YAAYC;IAC1C;IACA,iCAAiC,CAAC1D,WAAW,CAACc;IAC9C,mBAAmB0C,UAAU;KAC3BlD,gBAAgBiB,UAAU;MACxBoC,GAAGC,KAAKC,IAAI,GAAGD,KAAKE,IAAI,GAAGN,MAAMC,YAAYM,YAAYvD,YAAYe,QAAQd,KAAK,CAAC;MACnFuD,GAAGJ,KAAKC,IAAI,GAAGD,KAAKE,IAAI,GAAGN,MAAMC,YAAYQ,YAAYzD,YAAYe,QAAQb,MAAM,CAAC;KACtF;IACF;IACA,qBAAqB8C,UAAU;KAC7B,MAAMU,QAAQ5D,gBAAgBiB;KAC9BjB,gBAAgBiB,UAAUhB,KAAAA;KAC1B,IAAI2D,UAAU3D,KAAAA,GAAW;KAKzB,MAAM6D,OAAO5F,yBAAyB0F,OAAOC;MAH3CR,GAAGC,KAAKC,IAAI,GAAGD,KAAKE,IAAI,GAAGN,MAAMC,YAAYM,YAAYvD,YAAYe,QAAQd,KAAK,CAAC;MACnFuD,GAAGJ,KAAKC,IAAI,GAAGD,KAAKE,IAAI,GAAGN,MAAMC,YAAYQ,YAAYzD,YAAYe,QAAQb,MAAM,CAAC;KAEzCyD,CAAG;KAChD9D,UAAU+D,KAAK3D,UAAU,KAAK2D,KAAK1D,WAAW,IAAIH,KAAAA,IAAY6D,IAAI;IACpE;IACA,4BAA4B;KAC1B9D,gBAAgBiB,UAAUhB,KAAAA;IAC5B;IAzBF,UAAA,CA2BE,oBAAC,OAAD;KACE,oBAAmB;KACnB,QAAQ,EAAE8D,KAAK,QAAQzE,MAAM0E,SAAQ,UAAW1E,MAAM2E,OAAO;KAC7D,OAAO;MAAE9D,OAAO;MAAQ+D,aAAa5E,MAAMa,QAAQb,MAAMc;KAAO;KAChE,YAAW;IAAS,CAAA,GAErBN,SACC,oBAAC,MAAD;KACE,eAAc;KACd,OAAO,CACLwC,SAAOxC,QACP;MACEqE,MAAM,GAAGrE,OAAOuD,IAAI,IAAG;MACvBe,KAAK,GAAGtE,OAAO4D,IAAI,IAAG;MACtBvD,OAAO,GAAGL,OAAOK,QAAQ,IAAG;MAC5BC,QAAQ,GAAGN,OAAOM,SAAS,IAAG;KAChC,CAAC;IACD,CAAA,IAEF,IACA;GACJ,CAAA,IAAA;GACHzB,WAAWW,QACV,qBAAA,UAAA,EAAA,UAAA;IACE,oBAAC,QAAD;KAAQ,SAAQ;KAAU,UAAUI,WAAWc;KAAO,eAAe,KAAK4B,aAAa;KAAE,UAAA;IAEjF,CAAA;IACP9C,SAASqB,eACR,qBAAA,UAAA,EAAA,UAAA;KACE,oBAAC,QAAD;MACE,SAAQ;MACR,eACE,KAAKpD,MAAM8G,MAAM;OACfC,KAAK,QAAQhF,MAAM0E,SAAQ,UAAW1E,MAAM2E;OAC5ChB,OAAOtC,aAAaI;MACtB,CAAC,CAAC,CAACwD,OAAOtC,WAAoBxC,UAAUwC,kBAAkBT,QAAQS,OAAOC,UAAUC,OAAOF,MAAM,CAAC,CAAC;MACnG,UAAA;KAGK,CAAA;KACR,oBAAC,QAAD;MACE,SAAQ;MACR,eACE3D,MAAMkG,sBAAsB;OAAEP,MAAM3E,MAAM2E;OAAMD,UAAU1E,MAAM0E;OAAUS,SAAS9D;MAAa,CAAC;MAClG,UAAA;KAGK,CAAA;KACPrC,MAAMoG,kBAAkB/D,YAAY,CAAC,CAACgC,KAAKgC,WAC1C,oBAAC,QAAD;MAAwB,SAAQ;MAAU,eAAeA,OAAOtD,IAAI;MACjEsD,UAAAA,OAAO5D;KACF,GAFK4D,OAAO9D,EAEZ,CACT;IACH,EAAA,CAAA,IACE;IACJ,oBAAC,OAAD,EAAA,UAAO,qBAAyB,CAAA;IAChC,oBAAC,UAAD;KAAU,OAAOjB;KAAU,cAAcC;IAAY,CAAA;IACrD,oBAAC,QAAD;KACE,SAAQ;KACR,UACEH,WAAWc,SAASlC,MAAMsG,kBAAkB3E,KAAAA,KAAaX,UAAUW,KAAAA,KAAaL,SAASuB,KAAK,MAAM;KAEtG,eAAe;MACb,IAAI7C,MAAMsG,kBAAkB3E,KAAAA,KAAaX,UAAUW,KAAAA,GAAW;MAC9D,MAAMoC,YAAYhC,WAAWY;MAC7B,MACG2D,cAAc;OACb,GAAGtF;OACHmF,SAAS;QACP7D,MAAM;QACNpC,QAAQ;QACRqC,IAAIvB,MAAMwB;QACVC,OAAO,GAAGzB,MAAMV,UAAS,GAAIU,MAAMP;QACnCiC,SAAS;SACP;SACA,YAAYV,aAAaW;SACzB,UAAU3B,MAAMV,UAAS,GAAIU,MAAMP;SACnC,wBAAwBO,MAAM4B;SAC9B,iCAAiC5B,MAAM4B;SACvCpB,WAAWG,KAAAA,IACP,kBACA,aAAaH,OAAOuD,EAAEwB,QAAQ,CAAC,EAAC,MAAO/E,OAAO4D,EAAEmB,QAAQ,CAAC,EAAC,UAAW/E,OAAOK,MAAM0E,QAAQ,CAAC,EAAC,WAAY/E,OAAOM,OAAOyE,QAAQ,CAAC;SACnI,aAAajF,SAASuB,KAAK;SAC3B;QAA8E,CAC/E,CAAC2D,KAAK,IAAI;OACb;MACF,CAAC,CAAC,CACDC,WAAW;OACV,IAAI1E,WAAWY,YAAYoB,WAAW;OACtCxC,YAAY,EAAE;OACdJ,UAAU,qFAAqF;MACjG,CAAC,CAAC,CACD8E,OAAOtC,WAAoB;OAC1B,IAAI5B,WAAWY,YAAYoB,WACzB5C,UAAUwC,kBAAkBT,QAAQS,OAAOC,UAAUC,OAAOF,MAAM,CAAC;MACvE,CAAC;KACL;KAAE,UAAA;IAGI,CAAA;GACV,EAAA,CAAA,IACE;EACA;;AAEV;AACA,MAAMK,WAAS9E,WAAWwH,QAAQjD,WAA0B;CAC1DQ,OAAO;EAAE0C,MAAM;EAAGC,KAAKnD,MAAMoD,QAAQ,CAAC;EAAGC,iBAAiBrD,MAAMsD,OAAOC;EAAEC,mBAAA,CAAA,CAAA;CAAC;CAC1EzF,QAAQ;EAAE0F,UAAU;EAAYC,aAAa;EAAGC,aAAa3D,MAAMsD,OAAOM;EAAMJ,mBAAA,CAAA,CAAA;CAAC;CACjF1C,MAAM;EAAE+C,OAAO7D,MAAMsD,OAAOQ;EAAKC,YAAY/I,OAAOgF,MAAM+D,WAAWC,IAAI;EAAGC,UAAUjE,MAAMiE,SAASC;EAAEV,mBAAA,CAAA,CAAA;CAAC;CACxG9C,QAAQ;EAAEyD,eAAe;EAAOC,UAAU;EAAQjB,KAAKnD,MAAMoD,QAAQ,CAAC;EAACI,mBAAA,CAAA,CAAA;CAAC;AAC1E,EAAE;;;AC5SF,SAAgByC,iBAAiB;CAC/B,OAAO;EAAEC,IAAI;EAAgBC,OAAO;EAAgBC,OAAOC;EAAoBC,SAASZ;CAAuB;AACjH;AAEA,SAAgBW,mBAAmBE,OAAyE;CAC1G,MAAM,CAACE,WAAWC,gBAAgBxB,eAAeK,iBAAiBgB,MAAMI,SAAS,CAAC;CAClF,MAAM,CAACC,SAASC,cAAc3B,SAASqB,MAAMC,cAAc;CAC3D,MAAM,CAACM,SAASC,cAAc7B,SAASqB,MAAMC,mBAAmBQ,KAAAA,CAAS;CACzE,MAAM,CAACC,OAAOC,YAAYhC,SAAS,EAAE;CACrC,MAAM,CAACiC,UAAUC,eAAelC,SAAS,CAAC;CAC1C,MAAM,CAACmC,QAAQC,aAAapC,SAAiB;CAC7C,MAAM,CAACqC,OAAOC,YAAYtC,SAAS,EAAE;CACrCD,gBAAgByB,aAAanB,iBAAiBgB,MAAMI,SAAS,CAAC,GAAG,CAACJ,MAAMI,SAAS,CAAC;CAClF1B,gBAAgB;EACd,IAAIsB,MAAMC,mBAAmBQ,KAAAA,KAAaG,aAAa,GAAG;EAC1DN,WAAWG,KAAAA,CAAS;EACpBE,SAAS,EAAE;EACX,IAAIX,MAAMI,cAAc,MAAM;GAC5BI,WAAW,KAAK;GAChB;EACF;EACA,IAAIU,UAAU;EACdV,WAAW,IAAI;EACf,mBAAwBR,MAAMI,WAAW,EAAEe,SAASP,WAAW,EAAE,CAAC,CAAC,CAChEQ,MAAMC,WAAW;GAChB,IAAI,CAACH,SAAS;GACd,IAAIG,OAAOC,IAAIhB,WAAWe,OAAOhB,OAAO;QACnCM,SAASU,OAAOX,KAAK;EAC5B,CAAC,CAAC,CACDa,OAAOC,WAAoB;GAC1B,IAAIN,SAASP,SAASa,kBAAkBC,QAAQD,OAAOE,UAAUC,OAAOH,MAAM,CAAC;EACjF,CAAC,CAAC,CACDI,cAAc;GACb,IAAIV,SAASV,WAAW,KAAK;EAC/B,CAAC;EACH,aAAa;GACXU,UAAU;EACZ;CACF,GAAG;EAAClB,MAAMI;EAAWJ,MAAMC;EAAgBW;CAAQ,CAAC;CACpD,MAAMiB,UAAUC,UAAqC;EACnD,MAAME,OAAO;GAAE,GAAG9B;GAAW,GAAG4B;EAAM;EACtCzC,yBAAyBW,MAAMI,WAAW4B,IAAI;EAC9C7B,aAAa6B,IAAI;CACnB;CACA,MAAMC,YAAY5B,SAAS6B,WAAWC,MAAMC,UAAUA,MAAMC,cAAcnC,UAAUmC,SAAS;CAC7F,MAAMC,UAAUjC,SAASkC,SAASJ,MAAMC,UAAUA,MAAMI,YAAYtC,UAAUsC,OAAO;CACrF,MAAMC,SAASzC,MAAMI,cAAc,OAAOJ,MAAM0C,SAAS3D,sBAAsB,CAAC,CAAC,EAAE,EAAE4D,OAAOlC,KAAAA;CAC5F,MAAMmC,UACJ9B,WAAW,WACP,CACE;EAAE+B,OAAO;EAAIjD,OAAO;CAAc,GAClC,GAAGN,aAAae,SAAS6B,cAAc,CAAA,CAAE,CAAC,CAACY,KAAKV,WAAW;EACzDS,OAAOT,MAAMW;EACbnD,OAAO,GAAGwC,MAAMW,KAAI,IAAKX,MAAMY,MAAK;CACtC,EAAE,CAAC,IAELlC,WAAW,eACRT,UAAUnB,mBAAmBmB,SAASH,SAAS,IAAI,CAAA,EAAA,CAAI4C,KAAKV,WAAW;EACtES,OAAOT,MAAMC;EACbzC,OAAOwC,MAAMa;EACbC,UAAUjE,kBAAkBmD,KAAK;CACnC,EAAE,IACFtB,WAAW,SACT,CACE;EAAE+B,OAAO;EAAIjD,OAAO;CAAU,GAC9B,GAAG,CAAC,GAAG,IAAIuD,IAAI9C,SAAS6B,WAAWkB,SAAShB,UAAUA,MAAMiB,IAAI,KAAK,CAAA,CAAE,CAAC,CAAC,CACtEC,KAAK,CAAC,CACNR,KAAKS,SAAS;EAAEV,OAAOU;EAAK3D,OAAO2D;CAAI,EAAE,CAAC,IAE/CzC,WAAW,WACRmB,WAAWuB,WAAW,CAAA,EAAA,CAAIV,KAAKV,WAAW;EACzCS,OAAOT,MAAMqB;EACb7D,OAAOwC,MAAMxC,SAASwC,MAAMqB;CAC9B,EAAE,KACDpD,SAASkC,YAAY,CAAA,EAAA,CAAIO,KAAKV,WAAW;EACxCS,OAAOT,MAAMI;EACb5C,OAAOwC,MAAMI;EACbkB,UAAUtB,MAAM1B,UAAUD,KAAAA;CAC5B,EAAE;CACd,MAAMkD,UAAUd,UAAkB;EAChC,IAAI/B,WAAW,UAAUe,OAAO,EAAE+B,QAAQf,MAAM,CAAC;EACjD,IAAI/B,WAAW,aAAa;GAC1B,MAAM+C,SAASxD,SAAS6B,WAAWC,MAAMC,UAAUA,MAAMC,cAAcQ,KAAK;GAC5E,IAAIgB,QACFhC,OAAO;IACLQ,WAAWQ;IACXL,SAASqB,OAAOC,eAAe;IAC/BC,aACEF,OAAOL,QAAQrB,MAAMC,UAAUA,MAAMqB,eAAe,YAAY,CAAC,EAAEA,cACnEI,OAAOL,QAAQ,EAAE,EAAEC,cACnB;GACJ,CAAC;EACL;EACA,IAAI3C,WAAW,QACbe,OAAO,EACLwB,MACER,UAAU,KACN,CAAA,IACA3C,UAAUmD,KAAKW,SAASnB,KAAK,IAC3B3C,UAAUmD,KAAKY,QAAQV,QAAQA,QAAQV,KAAK,IAC5C,CAAC,GAAG3C,UAAUmD,MAAMR,KAAK,EACnC,CAAC;EACH,IAAI/B,WAAW,SAASe,OAAO,EAAEkC,aAAalB,MAAM,CAAC;EACrD,IAAI/B,WAAW,WAAWe,OAAO,EAAEW,SAASK,MAAM,CAAC;EACnD,IAAI/B,WAAW,QAAQC,UAAUN,KAAAA,CAAS;CAC5C;CACA,MAAMyD,UAAUC,SAAiB;EAC/BlD,SAAS,EAAE;EACXF,UAAUoD,IAAI;CAChB;CACA,OACE,qBAAC,MAAD;EAAM,OAAOC,OAAOvE;EAApB,UAAA;GACE,oBAAC,QAAD;IACE,SAAQ;IACR,UAAUU,WAAWP,MAAMI,cAAc;IACzC,eAAeS,aAAagC,UAAUA,QAAQ,CAAC;IAAE,UAAA;GAG3C,CAAA;GACP7C,MAAMI,cAAc,OAAO,oBAAC,MAAD;IAAM,OAAOgE,OAAOC;IAAM,UAAA;GAAmD,CAAA,IAAI;GAC5G9D,UAAU,oBAAC,MAAD;IAAM,OAAO6D,OAAOC;IAAM,UAAA;GAAkD,CAAA,IAAI;GAC1F3D,UAAU,KACT,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,MAAD;IAAM,mBAAkB;IAAQ,OAAO0D,OAAO1D;IAC3CA,UAAAA;GACG,CAAA,GACN,oBAAC,QAAD;IAAQ,eAAeG,aAAagC,UAAUA,QAAQ,CAAC;IAAG,UAAA;GAAa,CAAA,CACzE,EAAA,CAAA,IACE;GACHxC,UACC,qBAAA,UAAA,EAAA,UAAA;IACE,qBAAC,MAAD;KAAM,OAAO+D,OAAOE;KAApB,UAAA;MACE,oBAAC,QAAD;OAAQ,SAAQ;OAAU,eAAeJ,OAAO,QAAQ;OACrDhE,UAAAA,UAAU0D,UAAU;MACf,CAAA;MACR,oBAAC,QAAD;OAAQ,SAAQ;OAAU,eAAeM,OAAO,WAAW;OACxDjC,UAAAA,WAAWgB,SAAS,iBAAiB/D,mBAAmBmB,SAASH,SAAS,CAAC,CAACqE,OAAM;MAC7E,CAAA;MACR,oBAAC,QAAD;OAAQ,SAAQ;OAAU,eAAeL,OAAO,MAAM;OACnDhE,UAAAA,UAAUmD,KAAKmB,KAAK,IAAI,KAAK;MACxB,CAAA;KACJ;;IACLnE,QAAQoE,aAAapE,QAAQqE,YAAYH,SAAS,IACjD,qBAAC,MAAD;KAAM,OAAOH,OAAOC;KAApB,UAAA;MACGhE,QAAQqE,YAAYH;MAAO;MAAkBlE,QAAQoE,YAAY,4BAA4B;MAC7FpE,QAAQqE,YAAY5B,KAAKV,UAAU,KAAKA,MAAMW,KAAI,IAAKX,MAAMV,SAAS,CAAC,CAAC8C,KAAK,EAAE;KAC5E;IACJ,CAAA,IAAA;IACHvC,YACC,qBAAA,UAAA,EAAA,UAAA;KACE,oBAAC,MAAD;MAAM,OAAOmC,OAAOnB;MAAQhB,UAAAA,UAAUgB;KAAY,CAAA;KAClD,oBAAC,MAAD;MAAM,YAAA;MAAW,OAAOmB,OAAOC;MAC5BpC,UAAAA,UAAUI;KACP,CAAA;KACN,oBAAC,QAAD;MAAQ,SAAQ;MAAU,eAAe6B,OAAO,OAAO;MACpDhE,UAAAA,UAAU6D,eAAe;KACpB,CAAA;KACR,oBAAC,QAAD;MAAQ,SAAQ;MAAU,eAAeG,OAAO,SAAS;MACtDhE,UAAAA,UAAUsC,WAAW;KAChB,CAAA;KACPP,UAAU6B,gBAAgBrD,KAAAA,KAAaP,UAAUsC,YAAY,KAC5D,oBAAC,MAAD;MAAM,OAAO4B,OAAOC;MAAK,UAAA;KAEnB,CAAA,IACJ;KACH5B,UAAUzC,MAAMI,cAAc,OAC7B,oBAAC,QAAD;MACE,SAAQ;MACR,eAAe;OACb,IAAIJ,MAAMI,cAAc,MACtBJ,MAAM2E,iBACJlC,OAAOmC,UAAU;QACfxE,WAAWJ,MAAMI;QACjB2C,MAAMd,UAAUI;QAChBwC,SACEvC,YAAY7B,KAAAA,KAAaP,UAAU6D,gBAAgB,KAC/CtD,KAAAA,IACA;SACE+B,SAASF,QAAQE;SACjBuB,aAAa7D,UAAU6D;SACvBe,UAAUxC,QAAQyC,YAAYtE,KAAAA,KAAa6B,QAAQyC,YAAY;QACjE;OACR,CAAC,CACH;MACJ;MAAE,UAAA;KAGI,CAAA,IACN;KACHzC,WAAWA,QAAQ5B,UAAUD,KAAAA,KAAaP,UAAU6D,gBAAgB,KACnE,oBAAC,mBAAD;MAEE,GAAI/D;MACJ,MAAM;OACJwC,SAAStC,UAAUsC;OACnBH,WAAWnC,UAAUmC;OACrB0B,aAAa7D,UAAU6D;OACvBe,UAAUxC,QAAQyC,YAAYtE,KAAAA,KAAa6B,QAAQyC,YAAY;OAC/DC,QAAQ;QAAEjC,MAAM7C,UAAUmC;QAAW4C,mBAAmB;OAAM;MAChE;KAAE,GARG,GAAGjF,MAAMI,UAAS,GAAIF,UAAUsC,QAAO,GAAItC,UAAUmC,UAAS,GAAInC,UAAU6D,YAAW,GAAInD,UAQ9F,IAEF;IACN,EAAA,CAAA,IAEA,oBAAC,MAAD;KAAM,OAAOwD,OAAOC;KAAK,UAAA;IAEnB,CAAA;GAEV,EAAA,CAAA,IACE;GACHvD,SACC,oBAAC,OAAD;IACE,MAAA;IACA,eAAeoE,SAAS;KACtB,IAAI,CAACA,MAAMnE,UAAUN,KAAAA,CAAS;IAChC;IAEA,UAAA,qBAAC,cAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UACE,oBAAC,YAAD,EAAA,UAAaK,OAAmB,CAAA,EACrB,CAAA,GACb,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,OAAD;KAAO,oBAAmB;KAAiB,OAAOE;KAAO,cAAcC;IAAS,CAAA,GAChF,oBAAC,YAAD,EAAA,UACG2B,QACEqB,QAAQ7B,UAAUhD,aAAa,cAAcgD,QAAQT,OAAOS,MAAMc,QAAQ,IAAId,MAAMxC,OAAOoB,KAAK,CAAC,CAAC,CAClG8B,KAAKV,UACJ,oBAAC,SAAD;KACE,YAAY;KAEZ,OAAOA,MAAMxC;KACb,UAAU,cAAcwC,SAASA,MAAMsB,aAAa;KACpD,eAAeC,OAAOvB,MAAMS,KAAK;KACjC,UACE/B,WAAW,UAAUZ,UAAUmD,KAAKW,SAAS5B,MAAMS,KAAK,IACtD,oBAAC,MAAD;MAAM,OAAOuB,OAAOC;MAAM,UAAA;KAAc,CAAA,IACtC5D,KAAAA;IACL,GARI2B,MAAMS,KAQV,CAEJ,EACO,CAAA,CACH,EAAA,CAAA,CACC,EAAA,CAAA;GACT,CAAA,IACL;EACA;;AAEV;AACA,MAAMuB,SAASxF,WAAWuG,QAAQC,WAA0B;CAC1DvF,OAAO;EAAEwF,MAAM;EAAGC,KAAKF,MAAMG,QAAQ,CAAC;EAAGC,SAASJ,MAAMG,QAAQ,CAAC;EAAGE,iBAAiBL,MAAMM,OAAOC;EAAEC,mBAAA,CAAA,CAAA;CAAC;CACrGtB,UAAU;EAAEgB,KAAKF,MAAMG,QAAQ,CAAC;EAACK,mBAAA,CAAA,CAAA;CAAC;CAClC3C,OAAO;EACL4C,OAAOT,MAAMM,OAAOI;EACpBC,YAAY;EACZC,YAAYhI,OAAOoH,MAAMY,WAAWC,IAAI;EACxCC,UAAUd,MAAMc,SAASC;EAAIP,mBAAA,CAAA,CAAA;CAC/B;CACAvB,MAAM;EACJwB,OAAOT,MAAMM,OAAOU;EACpBJ,YAAYhI,OAAOoH,MAAMY,WAAWC,IAAI;EACxCC,UAAUd,MAAMc,SAASG;EACzBC,YAAYlB,MAAMkB,WAAWD;EAAET,mBAAA,CAAA,CAAA;CACjC;CACAlF,OAAO;EAAEmF,OAAOT,MAAMM,OAAOa;EAAKP,YAAYhI,OAAOoH,MAAMY,WAAWC,IAAI;EAAGC,UAAUd,MAAMc,SAASC;EAAIP,mBAAA,CAAA,CAAA;CAAC;AAC7G,EAAE;;;ACrSF,IAAA,8BAAe,oBAAoB;CACjC,MAAM;CACN,MAAM;CACN,cAAc;EAAE,uBAAuB,KAAA;EAAW,gBAAgB;CAAM;CACxE,qBAAqB;CACrB,cAAc;CACd,OAAO;AACT,CAAC;;;;;;;;ACJD,IAAA,mDAAe,WAAW;CAAE,MAAM;CAAyB,iBAAiB;AAAK,CAAC;;;ACFlF,SAAS,UAAU,MAAsB;CACvC,IAAI,OAAO;CACX,KAAK,MAAM,aAAa,MAAM,OAAO,KAAK,KAAK,OAAO,UAAU,YAAY,CAAC,GAAI,QAAU;CAC3F,QAAQ,SAAS,EAAA,CAAG,SAAS,EAAE;AACjC;AAEA,SAAgB,gBAAgB,MAAgF;CAC9G,MAAM,aAAa,MAAM,QAAQ;CACjC,OAAO;EACL,IAAI,eAAe,KAAA,IAAY,+BAA+B,8BAA8B,UAAU,UAAU;EAChH,OAAO;EACP,QAAQ,UAAU,oBAAC,mBAAD;GAAmB,GAAI;GAAa;EAAO,CAAA;EAC7D,gBAAgB;CAClB;AACF;;;ACdA,IAAA,mDAAe,WAAW;CACxB,MAAM;CACN,IAAI;CACJ,MAAM;EACJ,SAAS;EACT,OAAO;EACP,QAAQ;EACR,iBAAiB,WAA8B,OAAO,SAAS;EAC/D,eAAe;EACf,YAAY,EAAE,aACZ,gBAAgB,WAAW,KAAA,IAAY,KAAA,IAAY,EAAE,OAAO,CAAC;CACjE;AACF,CAAC;;;ACVD,MAAM,OAAU,UAAmC,UAChD,UAAU,KAAA,IAAY,KAAA,IAAY;CAAE,GAAG;CAAU,GAAI;AAAiB;AAEzE,MAAa,eAAe,mBAAmB;CAC7C,IAAI;CACJ,SAAS;EACP,IAAI,iBAA2D;GAAE,OAAO,CAAC,IAAI,EAAE,MAAM,eAAe,GAAGY,2BAAwB,CAAC;EAAG;EACnI,IAAI,QAAyC;GAAE,OAAO,CAAC,IAAI;IAAE,MAAM;IAAyB,IAAI;GAAe,GAAGC,gDAAe,GAAG,IAAI;IAAE,MAAM;IAAyB,IAAI;GAAe,GAAGC,gDAAgB,CAAC;EAAG;CACrN;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"native.mjs","names":["WebPluginSlotProps","Button","fontOf","Input","Label","Textarea","PoNativeTheme","useEffect","useRef","useState","Share","StyleSheet","PREVIEW_THEMES","BuildStoryPreviewView","ExportStoryPreviewImageView","StoryPreviewSeed","buildPreview","disposePreview","exportPreviewImage","storyMetadata","isolatedPreviewHtml","normalizedAnnotationRect","PreviewPoint","PreviewAnnotationRect","StoryPreviewPanel","props","seed","source","appPath","setAppPath","preview","storyPath","setStoryPath","path","storyExport","setStoryExport","previewTheme","setPreviewTheme","revision","setRevision","setPreview","image","setImage","status","setStatus","working","setWorking","feedback","setFeedback","region","setRegion","annotationStart","undefined","imageBounds","width","height","generation","builtProject","snapshot","dirty","hasUnsavedChanges","sessionId","imageContext","kind","id","captureId","label","content","current","sourceSha256","trim","handle","run","metadata","ok","Error","error","exports","some","entry","exportName","request","theme","result","reason","message","String","prepareImage","operation","styles","panel","value","themes","name","map","selected","meta","renderStoryPreview","key","html","title","event","nativeEvent","layout","x","Math","min","max","locationX","y","locationY","start","end","next","uri","mimeType","data","aspectRatio","left","top","share","url","catch","attachComposerCapture","context","contextActionsFor","action","submitCapture","toFixed","join","then","create","flex","gap","spacing","backgroundColor","colors","bg","uni__dependencies","position","borderWidth","borderColor","yellow","color","dim","fontFamily","sans","fontSize","sm","flexDirection","flexWrap","styles","WebPluginSlotProps","fontOf","Button","Input","ListRow","Sheet","SheetBody","SheetContent","SheetHeader","SheetTitle","PoNativeTheme","useEffect","useState","StyleSheet","StyleSystemCatalogView","styleSystemCatalog","authorSourceActionSlot","browserSelection","componentKeywords","filteredComponents","forgetBrowserSelection","matchesQuery","rememberBrowserSelection","storyFolders","BrowserSelection","StoryPreviewPanel","Picker","styleSystemTab","id","label","panel","StyleSystemBrowser","onClose","props","initialCatalog","selection","setSelection","sessionId","catalog","setCatalog","loading","setLoading","undefined","error","setError","revision","setRevision","picker","setPicker","query","setQuery","current","refresh","then","result","ok","catch","reason","Error","message","String","finally","update","patch","Partial","next","component","components","find","entry","storyPath","project","projects","appPath","action","slotData","data","options","value","map","path","count","title","keywords","Set","flatMap","tags","sort","tag","exports","exportName","disabled","select","folder","chosen","projectPath","storyExport","includes","filter","choose","kind","styles","meta","controls","length","join","truncated","diagnostics","openTransientTab","createTab","preview","snapshot","bundler","source","hasUnsavedChanges","open","create","theme","flex","gap","spacing","padding","backgroundColor","colors","bg","uni__dependencies","color","hi","fontWeight","fontFamily","sans","fontSize","base","dim","sm","lineHeight","red","activityGroupStyleSystem","fillStyleSystem","fillStyleSystem2"],"sources":["../../src/types/apiRoutes.ts","../../generated/client.native.ts","../../src/extensions/workspaces/sessions/(frontend)/_lib/previewApi.native.ts","../../src/extensions/workspaces/sessions/(frontend)/_lib/styleSystemBrowser.ts","../../src/constants/previewThemes.ts","../../src/extensions/workspaces/sessions/(frontend)/_lib/previewFrame.ts","../../src/extensions/workspaces/sessions/(frontend)/_components/StoryPreviewPanel.native.tsx","../../src/extensions/workspaces/sessions/(frontend)/_components/StyleSystemBrowser.native.tsx","../../src/extensions/workspaces/sessions/(frontend)/activity-group/style-system.native.ts","../../src/extensions/workspaces/sessions/(frontend)/fill/StyleSystem.activity.style-system.native.tsx","../../src/extensions/workspaces/sessions/(frontend)/_components/StoryPreviewLauncher.native.tsx","../../src/extensions/workspaces/sessions/(frontend)/fill/StyleSystem.author.preview-action.native.tsx","../../generated/native.ts"],"sourcesContent":["import type { ApiResponseOf, ApiRoutes } from '@agimon-ai/po-core/web';\n\nimport type {\n BuildStoryPreviewView,\n DisposeStoryPreviewView,\n ExportStoryPreviewImageView,\n StoryPreviewMetadataView,\n} from './previewApi';\nimport type { StyleSystemCatalogView } from './styleSystemCatalog';\n\nconst routes = {\n catalog: {\n method: 'POST',\n path: '/catalog',\n response: undefined as unknown as ApiResponseOf<StyleSystemCatalogView>,\n },\n metadata: {\n method: 'POST',\n path: '/metadata',\n response: undefined as unknown as ApiResponseOf<StoryPreviewMetadataView>,\n },\n build: {\n method: 'POST',\n path: '/build',\n response: undefined as unknown as ApiResponseOf<BuildStoryPreviewView>,\n },\n image: {\n method: 'POST',\n path: '/image',\n response: undefined as unknown as ApiResponseOf<ExportStoryPreviewImageView>,\n },\n dispose: {\n method: 'DELETE',\n path: '/artifact',\n response: undefined as unknown as ApiResponseOf<DisposeStoryPreviewView>,\n },\n} as const satisfies ApiRoutes;\n\nexport default routes;\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { createApiClient, nativeApiTransport, sessionApiAddress } from '@agimon-ai/po-core/native';\n\nimport routes from '../src/types/apiRoutes';\n\n/** Scopes the tree mounts 'style-system-preview' at. */\nexport const apiScopes = ['session'] as const;\n\nexport const api = createApiClient(routes, {\n scopes: apiScopes,\n basePath: 'style-system-preview',\n transport: nativeApiTransport,\n sessionAddress: sessionApiAddress,\n});\n","import { api } from '../../../../../../generated/client.native';\nimport type {\n BuildStoryPreviewRequest,\n BuildStoryPreviewView,\n ExportStoryPreviewImageView,\n StoryPreviewMetadataRequest,\n StoryPreviewMetadataView,\n} from '../../../../../types/previewApi';\nimport type { StyleSystemCatalogRequest, StyleSystemCatalogView } from '../../../../../types/styleSystemCatalog';\n\nfunction errorMessage(result: { status: number; error: string }): string {\n if (result.status === 0) return 'The preview service is unreachable.';\n return result.error === '' ? `The preview service answered ${String(result.status)}.` : result.error;\n}\n\nexport async function styleSystemCatalog(\n sessionId: string,\n request: StyleSystemCatalogRequest = {},\n): Promise<{ ok: true; catalog: StyleSystemCatalogView } | { ok: false; error: string }> {\n const result = await api.session(sessionId).catalog({ body: request });\n return result.ok ? { ok: true, catalog: result.data } : { ok: false, error: errorMessage(result) };\n}\n\nexport async function storyMetadata(\n sessionId: string,\n request: StoryPreviewMetadataRequest,\n): Promise<{ ok: true; metadata: StoryPreviewMetadataView } | { ok: false; error: string }> {\n const result = await api.session(sessionId).metadata({ body: request });\n return result.ok ? { ok: true, metadata: result.data } : { ok: false, error: errorMessage(result) };\n}\n\nexport async function buildPreview(\n sessionId: string,\n request: BuildStoryPreviewRequest,\n): Promise<{ ok: true; preview: BuildStoryPreviewView } | { ok: false; error: string }> {\n const result = await api.session(sessionId).build({ body: request });\n return result.ok ? { ok: true, preview: result.data } : { ok: false, error: errorMessage(result) };\n}\n\nexport async function exportPreviewImage(\n sessionId: string,\n request: BuildStoryPreviewRequest,\n): Promise<{ ok: true; image: ExportStoryPreviewImageView } | { ok: false; error: string }> {\n const result = await api.session(sessionId).image({ body: request });\n return result.ok ? { ok: true, image: result.data } : { ok: false, error: errorMessage(result) };\n}\n\nexport async function disposePreview(sessionId: string, handle: string): Promise<void> {\n await api.session(sessionId).dispose({ body: { handle } });\n}\n","import type { SlotDeclaration, TransientTab } from '@agimon-ai/po-core/web';\n\nimport type { StyleSystemCatalogComponent, StyleSystemCatalogView } from '../../../../../types/styleSystemCatalog';\n\nexport interface BrowserSelection {\n /** A story directory prefix; '' browses every folder. */\n folder: string;\n tags: string[];\n storyPath: string;\n appPath: string;\n storyExport: string;\n}\n\nexport interface StoryFolder {\n path: string;\n /** The folder's own segments, compacted with any single-child chain below it. */\n label: string;\n depth: number;\n count: number;\n}\n\nconst selections = new Map<string, BrowserSelection>();\nexport const maxFolderDepth = 5;\n/** Monorepo group, category and package stay separate rows; deeper single-child chains such as src/extensions/... collapse. */\nconst uncompactedFolderDepth = 3;\nexport function initialBrowserSelection(): BrowserSelection {\n return { folder: '', tags: [], storyPath: '', appPath: '', storyExport: '' };\n}\nexport function browserSelection(sessionId: string | null): BrowserSelection {\n return sessionId === null ? initialBrowserSelection() : (selections.get(sessionId) ?? initialBrowserSelection());\n}\nexport function rememberBrowserSelection(sessionId: string | null, selection: BrowserSelection): void {\n if (sessionId !== null) selections.set(sessionId, selection);\n}\nexport function forgetBrowserSelection(sessionId: string): void {\n selections.delete(sessionId);\n}\nexport function matchesQuery(text: string, query: string): boolean {\n const haystack = text.toLowerCase();\n return query\n .toLowerCase()\n .split(/\\s+/u)\n .filter(Boolean)\n .every((term) => haystack.includes(term));\n}\nexport function componentKeywords(component: StyleSystemCatalogComponent): string {\n return [\n component.title,\n component.storyPath,\n ...component.tags,\n ...component.exports.map((entry) => `${entry.exportName} ${entry.label ?? ''}`),\n ].join(' ');\n}\nexport function filteredComponents(catalog: StyleSystemCatalogView, selection: BrowserSelection) {\n return catalog.components.filter(\n (component) =>\n (selection.folder === '' || component.storyPath.startsWith(`${selection.folder}/`)) &&\n selection.tags.every((tag) => component.tags.includes(tag)),\n );\n}\n\ninterface FolderNode {\n children: Map<string, FolderNode>;\n own: number;\n count: number;\n}\n/** Only folders holding stories somewhere below appear, deep single-child chains collapse, and nesting stops at maxFolderDepth. */\nexport function storyFolders(components: readonly StyleSystemCatalogComponent[]): StoryFolder[] {\n const root: FolderNode = { children: new Map(), own: 0, count: 0 };\n for (const component of components) {\n const end = component.storyPath.lastIndexOf('/');\n if (end <= 0) continue;\n let node = root;\n for (const segment of component.storyPath.slice(0, end).split('/')) {\n let child = node.children.get(segment);\n if (child === undefined) {\n child = { children: new Map(), own: 0, count: 0 };\n node.children.set(segment, child);\n }\n child.count += 1;\n node = child;\n }\n node.own += 1;\n }\n const folders: StoryFolder[] = [];\n const onlyChild = (node: FolderNode, depth: number) =>\n depth >= uncompactedFolderDepth && node.own === 0 && node.children.size === 1 ? [...node.children][0] : undefined;\n const walk = (node: FolderNode, prefix: string, depth: number): void => {\n for (const [segment, start] of [...node.children].sort(([a], [b]) => a.localeCompare(b))) {\n let child = start;\n let label = segment;\n for (let only = onlyChild(child, depth); only !== undefined; only = onlyChild(child, depth)) {\n label = `${label}/${only[0]}`;\n child = only[1];\n }\n const path = `${prefix}${label}`;\n folders.push({ path, label, depth, count: child.count });\n if (depth + 1 < maxFolderDepth) walk(child, `${path}/`, depth + 1);\n }\n };\n walk(root, '', 0);\n return folders;\n}\n\ninterface AuthorSourceAction {\n version: 1;\n createTab(input: {\n sessionId: string;\n path: string;\n preview?: { appPath: string; storyExport: string; snapshot?: boolean };\n }): TransientTab;\n}\nexport const authorSourceActionSlot: SlotDeclaration<AuthorSourceAction> = {\n slot: 'author.open-source',\n parse(input) {\n if (typeof input !== 'object' || input === null) return null;\n const action = input as Partial<AuthorSourceAction>;\n return action.version === 1 && typeof action.createTab === 'function' ? (action as AuthorSourceAction) : null;\n },\n};\n","/**\n * The shipped Po themes a story preview can render under. Plugin frontends may not\n * import the theme module, so this mirrors BUILTIN_THEMES; tests/previewThemes.test.ts\n * fails when they drift, and the server rejects any name it does not ship.\n */\nexport const PREVIEW_THEMES: readonly { name: string; label: string }[] = [\n { name: 'po-one-light', label: 'Po Bloom (light)' },\n { name: 'po-nord-dark', label: 'Po Nord (dark)' },\n];\n","const PREVIEW_CSP =\n \"default-src 'none'; base-uri 'none'; connect-src 'none'; font-src data:; form-action 'none'; frame-src 'none'; img-src data: blob:; media-src data: blob:; object-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'\";\n\nexport interface PreviewPoint {\n x: number;\n y: number;\n}\n\nexport interface PreviewAnnotationRect extends PreviewPoint {\n width: number;\n height: number;\n}\n\nfunction findHeadInsertion(html: string): number | undefined {\n const lower = html.toLowerCase();\n let index = 0;\n while (index < html.length) {\n if (lower.startsWith('<!--', index)) {\n const end = lower.indexOf('-->', index + 4);\n index = end < 0 ? html.length : end + 3;\n continue;\n }\n if (html[index] !== '<') {\n index += 1;\n continue;\n }\n const tag = html.slice(index).match(/^<([a-z][a-z0-9:-]*)(?:\\s[^>]*)?>/i);\n if (tag === null) {\n index += 1;\n continue;\n }\n const name = tag[1]!.toLowerCase();\n const end = index + tag[0].length;\n if (name === 'head') return end;\n if (name === 'script' || name === 'style' || name === 'template' || name === 'textarea' || name === 'title') {\n const closing = lower.indexOf(`</${name}`, end);\n index = closing < 0 ? html.length : closing;\n continue;\n }\n index = end;\n }\n return undefined;\n}\n\nexport function isolatedPreviewHtml(html: string): string {\n const policy = `<meta http-equiv=\"Content-Security-Policy\" content=\"${PREVIEW_CSP}\">`;\n const headInsertion = findHeadInsertion(html);\n if (headInsertion !== undefined) return `${html.slice(0, headInsertion)}${policy}${html.slice(headInsertion)}`;\n const doctype = html.match(/^\\s*<!doctype[^>]*>/i);\n if (doctype !== null) return `${doctype[0]}<head>${policy}</head>${html.slice(doctype[0].length)}`;\n return `<head>${policy}</head>${html}`;\n}\n\nexport function normalizedAnnotationRect(start: PreviewPoint, end: PreviewPoint): PreviewAnnotationRect {\n return {\n x: Math.min(start.x, end.x),\n y: Math.min(start.y, end.y),\n width: Math.abs(end.x - start.x),\n height: Math.abs(end.y - start.y),\n };\n}\n\nexport function previewAnnotationLocation(\n tool: 'mark' | 'comment',\n start: PreviewPoint,\n end: PreviewPoint,\n):\n | { mode: 'region'; point: PreviewPoint; rect: PreviewAnnotationRect }\n | { mode: 'point'; point: PreviewPoint }\n | null {\n if (tool === 'comment') return { mode: 'point', point: end };\n const rect = normalizedAnnotationRect(start, end);\n return rect.width === 0 || rect.height === 0 ? null : { mode: 'region', point: rect, rect };\n}\n","import type { WebPluginSlotProps } from '@agimon-ai/po-core/native';\nimport { Button, fontOf, Input, Label, Textarea } from '@agimon-ai/po-native-components';\nimport type { PoNativeTheme } from '@agimon-ai/po-web-components/nativeTheme';\nimport { useEffect, useRef, useState } from 'react';\nimport { Image, Share, Text, View } from 'react-native';\nimport { StyleSheet } from 'react-native-unistyles';\n\nimport { PREVIEW_THEMES } from '../../../../../constants/previewThemes';\nimport type {\n BuildStoryPreviewView,\n ExportStoryPreviewImageView,\n StoryPreviewSeed,\n} from '../../../../../types/previewApi';\nimport { buildPreview, disposePreview, exportPreviewImage, storyMetadata } from '../_lib/previewApi.native';\nimport {\n isolatedPreviewHtml,\n normalizedAnnotationRect,\n type PreviewPoint,\n type PreviewAnnotationRect,\n} from '../_lib/previewFrame';\n\n/** Package-owned source builds, rendered inside the host's genuine isolated HTML adapter. */\nexport function StoryPreviewPanel(\n props: WebPluginSlotProps & { seed?: StoryPreviewSeed; source?: StoryPreviewSeed['source'] },\n) {\n const source = props.source ?? props.seed?.source;\n const [appPath, setAppPath] = useState(props.seed?.appPath ?? source?.preview?.appPath ?? '');\n const [storyPath, setStoryPath] = useState(source?.path ?? props.seed?.storyPath ?? '');\n const [storyExport, setStoryExport] = useState(\n props.seed?.storyExport ?? source?.preview?.storyExport ?? 'Playground',\n );\n const [previewTheme, setPreviewTheme] = useState('');\n const [revision, setRevision] = useState(0);\n const [preview, setPreview] = useState<BuildStoryPreviewView>();\n const [image, setImage] = useState<ExportStoryPreviewImageView>();\n const [status, setStatus] = useState('Choose an exact story file and export.');\n const [working, setWorking] = useState(false);\n const [feedback, setFeedback] = useState('');\n const [region, setRegion] = useState<PreviewAnnotationRect>();\n const annotationStart = useRef<PreviewPoint | undefined>(undefined);\n const imageBounds = useRef({ width: 1, height: 1 });\n const generation = useRef(0);\n const builtProject = useRef('');\n const snapshot = props.seed?.snapshot ?? source?.preview?.snapshot ?? false;\n const dirty = source?.hasUnsavedChanges === true;\n const sessionId = props.sessionId;\n useEffect(() => {\n setAppPath(props.seed?.appPath ?? source?.preview?.appPath ?? '');\n setStoryPath(source?.path ?? props.seed?.storyPath ?? '');\n setStoryExport(props.seed?.storyExport ?? source?.preview?.storyExport ?? 'Playground');\n }, [\n sessionId,\n props.seed?.appPath,\n props.seed?.storyPath,\n props.seed?.storyExport,\n source?.path,\n source?.preview?.appPath,\n source?.preview?.storyExport,\n ]);\n const imageContext =\n image === undefined\n ? undefined\n : {\n kind: 'author-capture',\n source: 'style-system',\n id: image.captureId,\n label: `${image.storyPath}#${image.storyExport}`,\n content: `Project: ${builtProject.current}\\nStory: ${image.storyPath}#${image.storyExport}\\nStory source sha256: ${image.sourceSha256}`,\n };\n useEffect(() => {\n generation.current += 1;\n setPreview(undefined);\n setImage(undefined);\n setRegion(undefined);\n setWorking(false);\n if (sessionId === null || storyPath.trim() === '' || dirty) return;\n let current = true;\n let handle: string | undefined;\n const run = async () => {\n setWorking(true);\n setStatus('Loading story metadata…');\n setPreview(undefined);\n setImage(undefined);\n try {\n const metadata = await storyMetadata(sessionId, { storyPath, ...(appPath === '' ? {} : { appPath }) });\n if (!current) return;\n if (!metadata.ok) throw new Error(metadata.error);\n if (!metadata.metadata.exports.some((entry) => entry.exportName === storyExport))\n throw new Error(`Story export \"${storyExport}\" is no longer available. Choose an export.`);\n const request = {\n appPath: metadata.metadata.appPath,\n storyPath: metadata.metadata.storyPath,\n storyExport,\n ...(previewTheme === '' ? {} : { theme: previewTheme }),\n };\n builtProject.current = request.appPath;\n setStatus('Building preview…');\n if (snapshot) {\n const result = await exportPreviewImage(sessionId, request);\n if (!current) return;\n if (!result.ok) throw new Error(result.error);\n setImage(result.image);\n } else {\n const result = await buildPreview(sessionId, request);\n if (!result.ok) throw new Error(result.error);\n handle = result.preview.handle;\n if (!current) {\n void disposePreview(sessionId, handle);\n return;\n }\n setPreview(result.preview);\n }\n setStatus('Preview ready. Refresh after source edits.');\n } catch (reason) {\n if (current) setStatus(reason instanceof Error ? reason.message : String(reason));\n } finally {\n if (current) setWorking(false);\n }\n };\n void run();\n return () => {\n current = false;\n generation.current += 1;\n if (handle !== undefined) void disposePreview(sessionId, handle);\n };\n }, [\n sessionId,\n appPath,\n storyPath,\n storyExport,\n previewTheme,\n revision,\n snapshot,\n dirty,\n source?.revision,\n source?.sourceSha256,\n ]);\n const prepareImage = async () => {\n if (sessionId === null || working || dirty) return;\n const operation = generation.current;\n setWorking(true);\n try {\n const metadata = await storyMetadata(sessionId, { storyPath, ...(appPath === '' ? {} : { appPath }) });\n if (generation.current !== operation) return;\n if (!metadata.ok) throw new Error(metadata.error);\n const result = await exportPreviewImage(sessionId, {\n appPath: metadata.metadata.appPath,\n storyPath,\n storyExport,\n ...(previewTheme === '' ? {} : { theme: previewTheme }),\n });\n if (generation.current !== operation) return;\n if (!result.ok) throw new Error(result.error);\n builtProject.current = metadata.metadata.appPath;\n setRegion(undefined);\n setImage(result.image);\n setStatus('Image rendered from the current source. Transient preview interactions are not included.');\n } catch (reason) {\n if (generation.current === operation) setStatus(reason instanceof Error ? reason.message : String(reason));\n } finally {\n if (generation.current === operation) setWorking(false);\n }\n };\n return (\n <View style={styles.panel}>\n <Label>Project path</Label>\n <Input value={appPath} onChangeText={setAppPath} />\n <Label>Story file</Label>\n <Input value={storyPath} onChangeText={setStoryPath} />\n <Label>Story export</Label>\n <Input value={storyExport} onChangeText={setStoryExport} />\n <Button disabled={working || dirty || sessionId === null} onPress={() => setRevision((value) => value + 1)}>\n {preview || image ? 'Refresh preview' : 'Build preview'}\n </Button>\n <Label>Theme</Label>\n <View style={styles.themes}>\n {[{ name: '', label: 'Project default' }, ...PREVIEW_THEMES].map((entry) => (\n <Button\n key={entry.name}\n variant={previewTheme === entry.name ? 'secondary' : 'outline'}\n accessibilityState={{ selected: previewTheme === entry.name }}\n onPress={() => setPreviewTheme(entry.name)}\n >\n {entry.label}\n </Button>\n ))}\n </View>\n <Text style={styles.meta}>{dirty ? 'Save changes to preview. Preview uses saved source.' : status}</Text>\n {preview\n ? props.renderStoryPreview?.({\n key: `${sessionId}:${preview.handle}`,\n html: isolatedPreviewHtml(preview.html),\n title: `${preview.storyPath}#${preview.storyExport}`,\n })\n : null}\n {image ? (\n <View\n accessibilityLabel=\"Drag to mark an annotation region\"\n onLayout={(event) => {\n imageBounds.current = event.nativeEvent.layout;\n }}\n onStartShouldSetResponder={() => !working && !dirty}\n onResponderGrant={(event) => {\n annotationStart.current = {\n x: Math.min(1, Math.max(0, event.nativeEvent.locationX / imageBounds.current.width)),\n y: Math.min(1, Math.max(0, event.nativeEvent.locationY / imageBounds.current.height)),\n };\n }}\n onResponderRelease={(event) => {\n const start = annotationStart.current;\n annotationStart.current = undefined;\n if (start === undefined) return;\n const end = {\n x: Math.min(1, Math.max(0, event.nativeEvent.locationX / imageBounds.current.width)),\n y: Math.min(1, Math.max(0, event.nativeEvent.locationY / imageBounds.current.height)),\n };\n const next = normalizedAnnotationRect(start, end);\n setRegion(next.width === 0 || next.height === 0 ? undefined : next);\n }}\n onResponderTerminate={() => {\n annotationStart.current = undefined;\n }}\n >\n <Image\n accessibilityLabel=\"Frozen source-backed story render\"\n source={{ uri: `data:${image.mimeType};base64,${image.data}` }}\n style={{ width: '100%', aspectRatio: image.width / image.height }}\n resizeMode=\"contain\"\n />\n {region ? (\n <View\n pointerEvents=\"none\"\n style={[\n styles.region,\n {\n left: `${region.x * 100}%`,\n top: `${region.y * 100}%`,\n width: `${region.width * 100}%`,\n height: `${region.height * 100}%`,\n },\n ]}\n />\n ) : null}\n </View>\n ) : null}\n {preview || image ? (\n <>\n <Button variant=\"outline\" disabled={working || dirty} onPress={() => void prepareImage()}>\n Prepare annotation image\n </Button>\n {image && imageContext ? (\n <>\n <Button\n variant=\"outline\"\n onPress={() =>\n void Share.share({\n url: `data:${image.mimeType};base64,${image.data}`,\n title: imageContext.label,\n }).catch((reason: unknown) => setStatus(reason instanceof Error ? reason.message : String(reason)))\n }\n >\n Export PNG\n </Button>\n <Button\n variant=\"outline\"\n onPress={() =>\n props.attachComposerCapture({ data: image.data, mimeType: image.mimeType, context: imageContext })\n }\n >\n Attach image to composer\n </Button>\n {props.contextActionsFor(imageContext).map((action) => (\n <Button key={action.id} variant=\"outline\" onPress={() => action.run()}>\n {action.label}\n </Button>\n ))}\n </>\n ) : null}\n <Label>AI design feedback</Label>\n <Textarea value={feedback} onChangeText={setFeedback} />\n <Button\n variant=\"outline\"\n disabled={\n working || dirty || props.submitCapture === undefined || image === undefined || feedback.trim() === ''\n }\n onPress={() => {\n if (props.submitCapture === undefined || image === undefined) return;\n const operation = generation.current;\n void props\n .submitCapture({\n ...image,\n context: {\n kind: 'author-capture',\n source: 'style-system',\n id: image.captureId,\n label: `${image.storyPath}#${image.storyExport}`,\n content: [\n 'Edit the underlying story or component source, never the generated preview HTML.',\n `Project: ${builtProject.current}`,\n `Story: ${image.storyPath}#${image.storyExport}`,\n `Story source sha256: ${image.sourceSha256}`,\n `Source-backed image revision: ${image.sourceSha256}`,\n region === undefined\n ? 'Whole preview'\n : `Region: x=${region.x.toFixed(3)}, y=${region.y.toFixed(3)}, width=${region.width.toFixed(3)}, height=${region.height.toFixed(3)}`,\n `Feedback: ${feedback.trim()}`,\n 'After editing, rebuild this preview before treating it as visually verified.',\n ].join('\\n'),\n },\n })\n .then(() => {\n if (generation.current !== operation) return;\n setFeedback('');\n setStatus('Feedback and the frozen source-backed annotation image were submitted to the agent.');\n })\n .catch((reason: unknown) => {\n if (generation.current === operation)\n setStatus(reason instanceof Error ? reason.message : String(reason));\n });\n }}\n >\n Send to AI\n </Button>\n </>\n ) : null}\n </View>\n );\n}\nconst styles = StyleSheet.create((theme: PoNativeTheme) => ({\n panel: { flex: 1, gap: theme.spacing(2), backgroundColor: theme.colors.bg },\n region: { position: 'absolute', borderWidth: 2, borderColor: theme.colors.yellow },\n meta: { color: theme.colors.dim, fontFamily: fontOf(theme.fontFamily.sans), fontSize: theme.fontSize.sm },\n themes: { flexDirection: 'row', flexWrap: 'wrap', gap: theme.spacing(2) },\n}));\n","import type { WebPluginSlotProps } from '@agimon-ai/po-core/native';\nimport {\n fontOf,\n Button,\n Input,\n ListRow,\n Sheet,\n SheetBody,\n SheetContent,\n SheetHeader,\n SheetTitle,\n} from '@agimon-ai/po-native-components';\nimport type { PoNativeTheme } from '@agimon-ai/po-web-components/nativeTheme';\nimport { useEffect, useState } from 'react';\nimport { ScrollView, Text, View } from 'react-native';\nimport { StyleSheet } from 'react-native-unistyles';\n\nimport type { StyleSystemCatalogView } from '../../../../../types/styleSystemCatalog';\nimport { styleSystemCatalog } from '../_lib/previewApi.native';\nimport {\n authorSourceActionSlot,\n browserSelection,\n componentKeywords,\n filteredComponents,\n forgetBrowserSelection,\n matchesQuery,\n rememberBrowserSelection,\n storyFolders,\n type BrowserSelection,\n} from '../_lib/styleSystemBrowser';\nimport { StoryPreviewPanel } from './StoryPreviewPanel.native';\n\ntype Picker = 'folder' | 'component' | 'tags' | 'story' | 'project';\nexport function styleSystemTab() {\n return { id: 'style-system', label: 'style system', panel: StyleSystemBrowser, onClose: forgetBrowserSelection };\n}\n\nexport function StyleSystemBrowser(props: WebPluginSlotProps & { initialCatalog?: StyleSystemCatalogView }) {\n const [selection, setSelection] = useState(() => browserSelection(props.sessionId));\n const [catalog, setCatalog] = useState(props.initialCatalog);\n const [loading, setLoading] = useState(props.initialCatalog === undefined);\n const [error, setError] = useState('');\n const [revision, setRevision] = useState(0);\n const [picker, setPicker] = useState<Picker>();\n const [query, setQuery] = useState('');\n useEffect(() => setSelection(browserSelection(props.sessionId)), [props.sessionId]);\n useEffect(() => {\n if (props.initialCatalog !== undefined && revision === 0) return;\n setCatalog(undefined);\n setError('');\n if (props.sessionId === null) {\n setLoading(false);\n return;\n }\n let current = true;\n setLoading(true);\n void styleSystemCatalog(props.sessionId, { refresh: revision > 0 })\n .then((result) => {\n if (!current) return;\n if (result.ok) setCatalog(result.catalog);\n else setError(result.error);\n })\n .catch((reason: unknown) => {\n if (current) setError(reason instanceof Error ? reason.message : String(reason));\n })\n .finally(() => {\n if (current) setLoading(false);\n });\n return () => {\n current = false;\n };\n }, [props.sessionId, props.initialCatalog, revision]);\n const update = (patch: Partial<BrowserSelection>) => {\n const next = { ...selection, ...patch };\n rememberBrowserSelection(props.sessionId, next);\n setSelection(next);\n };\n const component = catalog?.components.find((entry) => entry.storyPath === selection.storyPath);\n const project = catalog?.projects.find((entry) => entry.appPath === selection.appPath);\n const action = props.sessionId !== null ? props.slotData(authorSourceActionSlot)[0]?.data : undefined;\n const options =\n picker === 'folder'\n ? [\n { value: '', label: 'All folders' },\n ...storyFolders(catalog?.components ?? []).map((entry) => ({\n value: entry.path,\n label: `${entry.path} (${entry.count})`,\n })),\n ]\n : picker === 'component'\n ? (catalog ? filteredComponents(catalog, selection) : []).map((entry) => ({\n value: entry.storyPath,\n label: entry.title,\n keywords: componentKeywords(entry),\n }))\n : picker === 'tags'\n ? [\n { value: '', label: 'Any tag' },\n ...[...new Set(catalog?.components.flatMap((entry) => entry.tags) ?? [])]\n .sort()\n .map((tag) => ({ value: tag, label: tag })),\n ]\n : picker === 'story'\n ? (component?.exports ?? []).map((entry) => ({\n value: entry.exportName,\n label: entry.label ?? entry.exportName,\n }))\n : (catalog?.projects ?? []).map((entry) => ({\n value: entry.appPath,\n label: entry.appPath,\n disabled: entry.error !== undefined,\n }));\n const select = (value: string) => {\n if (picker === 'folder') update({ folder: value });\n if (picker === 'component') {\n const chosen = catalog?.components.find((entry) => entry.storyPath === value);\n if (chosen)\n update({\n storyPath: value,\n appPath: chosen.projectPath ?? '',\n storyExport:\n chosen.exports.find((entry) => entry.exportName === 'Playground')?.exportName ??\n chosen.exports[0]?.exportName ??\n '',\n });\n }\n if (picker === 'tags')\n update({\n tags:\n value === ''\n ? []\n : selection.tags.includes(value)\n ? selection.tags.filter((tag) => tag !== value)\n : [...selection.tags, value],\n });\n if (picker === 'story') update({ storyExport: value });\n if (picker === 'project') update({ appPath: value });\n if (picker !== 'tags') setPicker(undefined);\n };\n const choose = (kind: Picker) => {\n setQuery('');\n setPicker(kind);\n };\n return (\n <View style={styles.panel}>\n <Button\n variant=\"outline\"\n disabled={loading || props.sessionId === null}\n onPress={() => setRevision((value) => value + 1)}\n >\n Refresh\n </Button>\n {props.sessionId === null ? <Text style={styles.meta}>Select a session to browse its style systems.</Text> : null}\n {loading ? <Text style={styles.meta}>Discovering configurations and components...</Text> : null}\n {error !== '' ? (\n <>\n <Text accessibilityRole=\"alert\" style={styles.error}>\n {error}\n </Text>\n <Button onPress={() => setRevision((value) => value + 1)}>Retry</Button>\n </>\n ) : null}\n {catalog ? (\n <>\n <View style={styles.controls}>\n <Button variant=\"outline\" onPress={() => choose('folder')}>\n {selection.folder || 'All folders'}\n </Button>\n <Button variant=\"outline\" onPress={() => choose('component')}>\n {component?.title ?? `Choose one of ${filteredComponents(catalog, selection).length} components`}\n </Button>\n <Button variant=\"outline\" onPress={() => choose('tags')}>\n {selection.tags.join(', ') || 'All tags'}\n </Button>\n </View>\n {catalog.truncated || catalog.diagnostics.length > 0 ? (\n <Text style={styles.meta}>\n {catalog.diagnostics.length} discovery issues{catalog.truncated ? ', catalog limit reached' : ''}\n {catalog.diagnostics.map((entry) => `\\n${entry.path}: ${entry.message}`).join('')}\n </Text>\n ) : null}\n {component ? (\n <>\n <Text style={styles.title}>{component.title}</Text>\n <Text selectable style={styles.meta}>\n {component.storyPath}\n </Text>\n <Button variant=\"outline\" onPress={() => choose('story')}>\n {selection.storyExport || 'Story export'}\n </Button>\n <Button variant=\"outline\" onPress={() => choose('project')}>\n {selection.appPath || 'Choose consuming project'}\n </Button>\n {component.projectPath === undefined && selection.appPath === '' ? (\n <Text style={styles.meta}>\n This component has no project config. Choose a consuming project to render it.\n </Text>\n ) : null}\n {action && props.sessionId !== null ? (\n <Button\n variant=\"outline\"\n onPress={() => {\n if (props.sessionId !== null)\n props.openTransientTab(\n action.createTab({\n sessionId: props.sessionId,\n path: component.storyPath,\n preview:\n project === undefined || selection.storyExport === ''\n ? undefined\n : {\n appPath: project.appPath,\n storyExport: selection.storyExport,\n snapshot: project.bundler !== undefined && project.bundler !== 'vite-react',\n },\n }),\n );\n }}\n >\n Open in Author\n </Button>\n ) : null}\n {project && project.error === undefined && selection.storyExport !== '' ? (\n <StoryPreviewPanel\n key={`${props.sessionId}:${selection.appPath}:${selection.storyPath}:${selection.storyExport}:${revision}`}\n {...props}\n seed={{\n appPath: selection.appPath,\n storyPath: selection.storyPath,\n storyExport: selection.storyExport,\n snapshot: project.bundler !== undefined && project.bundler !== 'vite-react',\n source: { path: selection.storyPath, hasUnsavedChanges: false },\n }}\n />\n ) : null}\n </>\n ) : (\n <Text style={styles.meta}>\n Choose a component to inspect and preview. Previews render only after selection.\n </Text>\n )}\n </>\n ) : null}\n {picker ? (\n <Sheet\n open\n onOpenChange={(open) => {\n if (!open) setPicker(undefined);\n }}\n >\n <SheetContent>\n <SheetHeader>\n <SheetTitle>{picker}</SheetTitle>\n </SheetHeader>\n <SheetBody>\n <Input accessibilityLabel=\"Search choices\" value={query} onChangeText={setQuery} />\n <ScrollView>\n {options\n .filter((entry) => matchesQuery('keywords' in entry ? String(entry.keywords) : entry.label, query))\n .map((entry) => (\n <ListRow\n disclosure={false}\n key={entry.value}\n title={entry.label}\n disabled={'disabled' in entry && entry.disabled === true}\n onPress={() => select(entry.value)}\n trailing={\n picker === 'tags' && selection.tags.includes(entry.value) ? (\n <Text style={styles.meta}>Selected</Text>\n ) : undefined\n }\n />\n ))}\n </ScrollView>\n </SheetBody>\n </SheetContent>\n </Sheet>\n ) : null}\n </View>\n );\n}\nconst styles = StyleSheet.create((theme: PoNativeTheme) => ({\n panel: { flex: 1, gap: theme.spacing(2), padding: theme.spacing(3), backgroundColor: theme.colors.bg },\n controls: { gap: theme.spacing(2) },\n title: {\n color: theme.colors.hi,\n fontWeight: '600',\n fontFamily: fontOf(theme.fontFamily.sans),\n fontSize: theme.fontSize.base,\n },\n meta: {\n color: theme.colors.dim,\n fontFamily: fontOf(theme.fontFamily.sans),\n fontSize: theme.fontSize.sm,\n lineHeight: theme.lineHeight.sm,\n },\n error: { color: theme.colors.red, fontFamily: fontOf(theme.fontFamily.sans), fontSize: theme.fontSize.base },\n}));\n","import { defineActivityGroup } from '@agimon-ai/po-core/native';\nimport { PaletteIcon } from '@agimon-ai/po-native-components';\nimport { createElement } from 'react';\n\nimport { styleSystemTab } from '../_components/StyleSystemBrowser.native';\n\nexport default defineActivityGroup({\n name: 'style system',\n keys: '',\n icon: () => createElement(PaletteIcon),\n activeSource: { subscribe: () => () => undefined, isActive: () => false },\n marksBackgroundWork: false,\n transientTab: styleSystemTab,\n order: 25,\n});\n","import { defineFill } from '@agimon-ai/po-core/native';\n\n/**\n * The style system is a launcher, not work that runs, so its group has no\n * status to report. Filling the body with nothing stops the dock standing an\n * \"Idle\" in for a status that can never change; the heading still opens it.\n */\nexport default defineFill({ slot: 'activity.style system', component: () => null });\n","import type { WebPluginSlotProps } from '@agimon-ai/po-core/native';\n\nimport type { StoryPreviewSeed } from '../../../../../types/previewApi';\nimport { StoryPreviewPanel } from './StoryPreviewPanel.native';\n\nfunction sourceKey(path: string): string {\n let hash = 2_166_136_261;\n for (const character of path) hash = Math.imul(hash ^ character.codePointAt(0)!, 16_777_619);\n return (hash >>> 0).toString(36);\n}\n\nexport function storyPreviewTab(seed?: StoryPreviewSeed): Parameters<WebPluginSlotProps['openTransientTab']>[0] {\n const sourcePath = seed?.source?.path;\n return {\n id: sourcePath === undefined ? 'style-system-story-preview' : `style-system-story-preview-${sourceKey(sourcePath)}`,\n label: 'Story preview',\n panel: (props) => <StoryPreviewPanel {...props} seed={seed} />,\n retainComposer: true,\n };\n}\n","import { defineFill } from '@agimon-ai/po-core/native';\n\nimport { storyPreviewTab } from '../_components/StoryPreviewLauncher.native';\nimport { StoryPreviewPanel } from '../_components/StoryPreviewPanel.native';\n\nexport default defineFill({\n slot: 'author.preview-action',\n id: 'style-system',\n data: {\n version: 1 as const,\n label: 'Preview',\n detail: 'Build, inspect, refresh, and send source-targeted visual feedback.',\n supportsSource: (source: { kind?: string }) => source.kind === 'story-preview',\n embeddedPanel: StoryPreviewPanel,\n createTab: ({ source }: { source?: { path: string; hasUnsavedChanges: boolean } }) =>\n storyPreviewTab(source === undefined ? undefined : { source }),\n },\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineNativePlugin, type WebPluginContributions } from '@agimon-ai/po-core/native';\n\nimport activityGroupStyleSystem from '../src/extensions/workspaces/sessions/(frontend)/activity-group/style-system.native';\nimport fillStyleSystem from '../src/extensions/workspaces/sessions/(frontend)/fill/StyleSystem.activity.style-system.native';\nimport fillStyleSystem2 from '../src/extensions/workspaces/sessions/(frontend)/fill/StyleSystem.author.preview-action.native';\n\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const nativePlugin = defineNativePlugin({\n id: 'style-system',\n session: {\n get activityGroups(): WebPluginContributions['activityGroups'] { return [via({ name: 'style-system' }, activityGroupStyleSystem)]; },\n get fills(): WebPluginContributions['fills'] { return [via({ slot: 'activity.style-system', id: 'style-system' }, fillStyleSystem), via({ slot: 'author.preview-action', id: 'style-system' }, fillStyleSystem2)]; },\n },\n});\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agimon-ai/po-style-system",
|
|
3
|
-
"version": "0.0.0-alpha.
|
|
3
|
+
"version": "0.0.0-alpha.23",
|
|
4
4
|
"description": "Optional Po story preview integration for the style-system package.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -66,16 +66,16 @@
|
|
|
66
66
|
"access": "public"
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@agimon-ai/po-core": "0.0.0-alpha.
|
|
70
|
-
"@agimon-ai/po-style-system-tooling": "0.2.14-alpha.
|
|
71
|
-
"@agimon-ai/po-web-components": "0.0.0-alpha.
|
|
72
|
-
"@agimon-ai/po-web-security": "0.0.0-alpha.
|
|
69
|
+
"@agimon-ai/po-core": "0.0.0-alpha.23",
|
|
70
|
+
"@agimon-ai/po-style-system-tooling": "0.2.14-alpha.5",
|
|
71
|
+
"@agimon-ai/po-web-components": "0.0.0-alpha.23",
|
|
72
|
+
"@agimon-ai/po-web-security": "0.0.0-alpha.23",
|
|
73
73
|
"hono": "4.13.13",
|
|
74
74
|
"typebox": "1.3.37"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
|
-
"@agimon-ai/po-build": "0.0.0-alpha.
|
|
78
|
-
"@agimon-ai/po-native-components": "0.0.0-alpha.
|
|
77
|
+
"@agimon-ai/po-build": "0.0.0-alpha.23",
|
|
78
|
+
"@agimon-ai/po-native-components": "0.0.0-alpha.23",
|
|
79
79
|
"@earendil-works/pi-coding-agent": "1.3.0",
|
|
80
80
|
"@types/node": "26.6.5",
|
|
81
81
|
"@types/react": "19.3.0",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"vitest": "5.0.4"
|
|
91
91
|
},
|
|
92
92
|
"peerDependencies": {
|
|
93
|
-
"@agimon-ai/po-native-components": "0.0.0-alpha.
|
|
93
|
+
"@agimon-ai/po-native-components": "0.0.0-alpha.23",
|
|
94
94
|
"@earendil-works/pi-coding-agent": "1.3.0",
|
|
95
95
|
"react-native": "0.86.3",
|
|
96
96
|
"react-native-unistyles": "^3.5.3"
|