@ankhorage/studio 2.0.24 → 2.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/CreateCategoriesScreen.d.ts.map +1 -1
- package/dist/app/CreateCategoriesScreen.js +2 -2
- package/dist/app/CreateCategoriesScreen.js.map +1 -1
- package/dist/app/CreateCategoryTemplatesScreen.d.ts.map +1 -1
- package/dist/app/CreateCategoryTemplatesScreen.js +3 -2
- package/dist/app/CreateCategoryTemplatesScreen.js.map +1 -1
- package/dist/app/CreateProjectFromTemplateScreen.d.ts.map +1 -1
- package/dist/app/CreateProjectFromTemplateScreen.js +4 -3
- package/dist/app/CreateProjectFromTemplateScreen.js.map +1 -1
- package/dist/app/ProjectDetailScreen.d.ts.map +1 -1
- package/dist/app/ProjectDetailScreen.js +4 -3
- package/dist/app/ProjectDetailScreen.js.map +1 -1
- package/dist/app/ProjectsOverviewScreen.d.ts.map +1 -1
- package/dist/app/ProjectsOverviewScreen.js +4 -4
- package/dist/app/ProjectsOverviewScreen.js.map +1 -1
- package/dist/app/StudioApp.d.ts.map +1 -1
- package/dist/app/StudioApp.js +4 -3
- package/dist/app/StudioApp.js.map +1 -1
- package/dist/app/workspace/navigation.d.ts +7 -0
- package/dist/app/workspace/navigation.d.ts.map +1 -1
- package/dist/app/workspace/navigation.js +12 -0
- package/dist/app/workspace/navigation.js.map +1 -1
- package/dist/app/workspace/workspaceRouter.d.ts +8 -0
- package/dist/app/workspace/workspaceRouter.d.ts.map +1 -0
- package/dist/app/workspace/workspaceRouter.js +18 -0
- package/dist/app/workspace/workspaceRouter.js.map +1 -0
- package/dist/host/media/projectBundledMediaService.d.ts +1 -0
- package/dist/host/media/projectBundledMediaService.d.ts.map +1 -1
- package/dist/host/media/projectBundledMediaService.js +3 -2
- package/dist/host/media/projectBundledMediaService.js.map +1 -1
- package/dist/host/orchestrator/projectCreationSource.d.ts +1 -0
- package/dist/host/orchestrator/projectCreationSource.d.ts.map +1 -1
- package/dist/host/templates/index.d.ts +2 -0
- package/dist/host/templates/index.d.ts.map +1 -1
- package/dist/host/templates/index.js +6 -1
- package/dist/host/templates/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateCategoriesScreen.d.ts","sourceRoot":"","sources":["../../src/app/CreateCategoriesScreen.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CreateCategoriesScreen.d.ts","sourceRoot":"","sources":["../../src/app/CreateCategoriesScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAgBjD,wBAAgB,sBAAsB,sBAkDrC"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { router } from 'expo-router';
|
|
3
2
|
import React, { useMemo, useState } from 'react';
|
|
4
3
|
import { View } from 'react-native';
|
|
5
4
|
import { useTemplateCatalog } from '../hooks/useTemplateCatalog';
|
|
6
5
|
import { filterAndSortTemplates } from '../workspaceSearch';
|
|
7
6
|
import { CategoryCard, EmptyState, LoadingState, SearchResults, styles, ThemedWorkspaceTextInput, WorkspaceScreen, } from './workspace/WorkspacePrimitives';
|
|
7
|
+
import { pushWorkspaceRoute } from './workspace/workspaceRouter';
|
|
8
8
|
export function CreateCategoriesScreen() {
|
|
9
9
|
const { catalog, isLoading, error, refresh } = useTemplateCatalog();
|
|
10
10
|
const [searchQuery, setSearchQuery] = useState('');
|
|
11
11
|
const results = useMemo(() => (searchQuery.trim() ? filterAndSortTemplates(catalog, searchQuery) : []), [catalog, searchQuery]);
|
|
12
|
-
return (_jsxs(WorkspaceScreen, { title: "New Project", subtitle: "Choose a category first.", children: [_jsx(View, { style: styles.toolbar, children: _jsx(ThemedWorkspaceTextInput, { value: searchQuery, onChangeText: setSearchQuery, placeholder: "Search templates globally", accessibilityLabel: "Search templates globally" }) }), isLoading ? (_jsx(LoadingState, { label: "Loading template catalog" })) : error ? (_jsx(EmptyState, { title: "Catalog load failed", detail: error, actionLabel: "Retry", onAction: refresh })) : searchQuery.trim() ? (_jsx(SearchResults, { query: searchQuery, results: results, onClear: () => setSearchQuery(''), onPress: (template) =>
|
|
12
|
+
return (_jsxs(WorkspaceScreen, { title: "New Project", subtitle: "Choose a category first.", children: [_jsx(View, { style: styles.toolbar, children: _jsx(ThemedWorkspaceTextInput, { value: searchQuery, onChangeText: setSearchQuery, placeholder: "Search templates globally", accessibilityLabel: "Search templates globally" }) }), isLoading ? (_jsx(LoadingState, { label: "Loading template catalog" })) : error ? (_jsx(EmptyState, { title: "Catalog load failed", detail: error, actionLabel: "Retry", onAction: refresh })) : searchQuery.trim() ? (_jsx(SearchResults, { query: searchQuery, results: results, onClear: () => setSearchQuery(''), onPress: (template) => pushWorkspaceRoute(`/create/${template.category}/${template.slug}`) })) : (_jsx(View, { style: styles.categoryGrid, children: catalog.categories.map((category) => (_jsx(CategoryCard, { category: category, onPress: () => pushWorkspaceRoute(`/create/${category.id}`) }, category.id))) }))] }));
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=CreateCategoriesScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateCategoriesScreen.js","sourceRoot":"","sources":["../../src/app/CreateCategoriesScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"CreateCategoriesScreen.js","sourceRoot":"","sources":["../../src/app/CreateCategoriesScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,MAAM,EACN,wBAAwB,EACxB,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,UAAU,sBAAsB;IACpC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACpE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAC9E,CAAC,OAAO,EAAE,WAAW,CAAC,CACvB,CAAC;IAEF,OAAO,CACL,MAAC,eAAe,IAAC,KAAK,EAAC,aAAa,EAAC,QAAQ,EAAC,0BAA0B,aACtE,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YACzB,KAAC,wBAAwB,IACvB,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,cAAc,EAC5B,WAAW,EAAC,2BAA2B,EACvC,kBAAkB,EAAC,2BAA2B,GAC9C,GACG,EAEN,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,YAAY,IAAC,KAAK,EAAC,0BAA0B,GAAG,CAClD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,KAAC,UAAU,IACT,KAAK,EAAC,qBAAqB,EAC3B,MAAM,EAAE,KAAK,EACb,WAAW,EAAC,OAAO,EACnB,QAAQ,EAAE,OAAO,GACjB,CACH,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CACvB,KAAC,aAAa,IACZ,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,EACjC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CACpB,kBAAkB,CAAC,WAAW,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,GAErE,CACH,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,YAC7B,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACpC,KAAC,YAAY,IAEX,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,WAAW,QAAQ,CAAC,EAAE,EAAE,CAAC,IAFtD,QAAQ,CAAC,EAAE,CAGhB,CACH,CAAC,GACG,CACR,IACe,CACnB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateCategoryTemplatesScreen.d.ts","sourceRoot":"","sources":["../../src/app/CreateCategoryTemplatesScreen.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CreateCategoryTemplatesScreen.d.ts","sourceRoot":"","sources":["../../src/app/CreateCategoryTemplatesScreen.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,wBAAgB,6BAA6B,sBA2C5C"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { useLocalSearchParams } from 'expo-router';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { View } from 'react-native';
|
|
5
5
|
import { useTemplateCatalog } from '../hooks/useTemplateCatalog';
|
|
6
6
|
import { EmptyState, LoadingState, styles, TemplateCard, WorkspaceScreen, } from './workspace/WorkspacePrimitives';
|
|
7
7
|
import { resolveWorkspaceCategoryParam } from './workspace/routeParams';
|
|
8
|
+
import { pushWorkspaceRoute, replaceWorkspaceRoute } from './workspace/workspaceRouter';
|
|
8
9
|
export function CreateCategoryTemplatesScreen() {
|
|
9
10
|
const { category, categoryParam } = useCategoryRouteParams();
|
|
10
11
|
const { catalog, isLoading, error, refresh } = useTemplateCatalog();
|
|
11
12
|
const selected = category ? catalog.categories.find((entry) => entry.id === category) : undefined;
|
|
12
|
-
return (_jsx(WorkspaceScreen, { title: selected?.label ?? 'Templates', subtitle: categoryParam, children: isLoading ? (_jsx(LoadingState, { label: "Loading templates" })) : error ? (_jsx(EmptyState, { title: "Catalog load failed", detail: error, actionLabel: "Retry", onAction: refresh })) : !selected ? (_jsx(EmptyState, { title: "Category not found", detail: `The requested template category "${categoryParam}" is not available.`, actionLabel: "Back to categories", onAction: () =>
|
|
13
|
+
return (_jsx(WorkspaceScreen, { title: selected?.label ?? 'Templates', subtitle: categoryParam, children: isLoading ? (_jsx(LoadingState, { label: "Loading templates" })) : error ? (_jsx(EmptyState, { title: "Catalog load failed", detail: error, actionLabel: "Retry", onAction: refresh })) : !selected ? (_jsx(EmptyState, { title: "Category not found", detail: `The requested template category "${categoryParam}" is not available.`, actionLabel: "Back to categories", onAction: () => replaceWorkspaceRoute('/create') })) : selected.templates.length === 0 ? (_jsx(EmptyState, { title: "No templates in this category", detail: "Choose a different category.", actionLabel: "Back to categories", onAction: () => pushWorkspaceRoute('/create') })) : (_jsx(View, { style: styles.templateGrid, children: selected.templates.map((template) => (_jsx(TemplateCard, { template: template, onPress: () => pushWorkspaceRoute(`/create/${category}/${template.slug}`) }, template.id))) })) }));
|
|
13
14
|
}
|
|
14
15
|
function useCategoryRouteParams() {
|
|
15
16
|
const params = useLocalSearchParams();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateCategoryTemplatesScreen.js","sourceRoot":"","sources":["../../src/app/CreateCategoryTemplatesScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"CreateCategoryTemplatesScreen.js","sourceRoot":"","sources":["../../src/app/CreateCategoryTemplatesScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EACL,UAAU,EACV,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAExF,MAAM,UAAU,6BAA6B;IAC3C,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAC7D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACpE,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAElG,OAAO,CACL,KAAC,eAAe,IAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,WAAW,EAAE,QAAQ,EAAE,aAAa,YAC5E,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,YAAY,IAAC,KAAK,EAAC,mBAAmB,GAAG,CAC3C,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,KAAC,UAAU,IACT,KAAK,EAAC,qBAAqB,EAC3B,MAAM,EAAE,KAAK,EACb,WAAW,EAAC,OAAO,EACnB,QAAQ,EAAE,OAAO,GACjB,CACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACd,KAAC,UAAU,IACT,KAAK,EAAC,oBAAoB,EAC1B,MAAM,EAAE,oCAAoC,aAAa,qBAAqB,EAC9E,WAAW,EAAC,oBAAoB,EAChC,QAAQ,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,SAAS,CAAC,GAChD,CACH,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpC,KAAC,UAAU,IACT,KAAK,EAAC,+BAA+B,EACrC,MAAM,EAAC,8BAA8B,EACrC,WAAW,EAAC,oBAAoB,EAChC,QAAQ,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAC7C,CACH,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,YAC7B,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACpC,KAAC,YAAY,IAEX,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,WAAW,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,IAFpE,QAAQ,CAAC,EAAE,CAGhB,CACH,CAAC,GACG,CACR,GACe,CACnB,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,MAAM,GAAG,oBAAoB,EAAyB,CAAC;IAC7D,OAAO,6BAA6B,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,UAAU,CAAC,KAAoC;IACtD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateProjectFromTemplateScreen.d.ts","sourceRoot":"","sources":["../../src/app/CreateProjectFromTemplateScreen.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CreateProjectFromTemplateScreen.d.ts","sourceRoot":"","sources":["../../src/app/CreateProjectFromTemplateScreen.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAoBjD,wBAAgB,+BAA+B,sBA6H9C"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Heading, Text } from '@ankhorage/zora';
|
|
3
|
-
import {
|
|
3
|
+
import { useLocalSearchParams } from 'expo-router';
|
|
4
4
|
import React, { useMemo, useState } from 'react';
|
|
5
5
|
import { View } from 'react-native';
|
|
6
6
|
import { ProjectCreationError, useProjects } from '../hooks/useProjects';
|
|
@@ -8,6 +8,7 @@ import { useTemplateCatalog } from '../hooks/useTemplateCatalog';
|
|
|
8
8
|
import { EmptyState, InlineMessage, LoadingState, MetadataRows, PrimaryAction, SecondaryAction, styles, ThemedWorkspaceTextInput, WorkspaceScreen, } from './workspace/WorkspacePrimitives';
|
|
9
9
|
import { resolveCreateProjectFormState } from './workspace/createProjectFormState';
|
|
10
10
|
import { resolveWorkspaceCategoryParam } from './workspace/routeParams';
|
|
11
|
+
import { replaceWorkspaceRoute } from './workspace/workspaceRouter';
|
|
11
12
|
export function CreateProjectFromTemplateScreen() {
|
|
12
13
|
const { category, categoryParam, slug } = useTemplateRouteParams();
|
|
13
14
|
const { catalog, isLoading, error, refresh } = useTemplateCatalog();
|
|
@@ -38,7 +39,7 @@ export function CreateProjectFromTemplateScreen() {
|
|
|
38
39
|
slug: template.slug,
|
|
39
40
|
name: projectName,
|
|
40
41
|
});
|
|
41
|
-
|
|
42
|
+
replaceWorkspaceRoute(`/projects/${result.id}`);
|
|
42
43
|
}
|
|
43
44
|
catch (caught) {
|
|
44
45
|
console.error(caught);
|
|
@@ -48,7 +49,7 @@ export function CreateProjectFromTemplateScreen() {
|
|
|
48
49
|
setIsCreating(false);
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
|
-
return (_jsx(WorkspaceScreen, { title: "Create Project", subtitle: selectedCategory?.label ?? categoryParam, children: isLoading ? (_jsx(LoadingState, { label: "Loading template" })) : error ? (_jsx(EmptyState, { title: "Catalog load failed", detail: error, actionLabel: "Retry", onAction: refresh })) : !selectedCategory ? (_jsx(EmptyState, { title: "Category not found", detail: `The requested template category "${categoryParam}" is not available.`, actionLabel: "Back to categories", onAction: () =>
|
|
52
|
+
return (_jsx(WorkspaceScreen, { title: "Create Project", subtitle: selectedCategory?.label ?? categoryParam, children: isLoading ? (_jsx(LoadingState, { label: "Loading template" })) : error ? (_jsx(EmptyState, { title: "Catalog load failed", detail: error, actionLabel: "Retry", onAction: refresh })) : !selectedCategory ? (_jsx(EmptyState, { title: "Category not found", detail: `The requested template category "${categoryParam}" is not available.`, actionLabel: "Back to categories", onAction: () => replaceWorkspaceRoute('/create') })) : !template ? (_jsx(EmptyState, { title: "Template not found", detail: "The selected template is not available.", actionLabel: "Back to templates", onAction: () => replaceWorkspaceRoute(`/create/${selectedCategory.id}`) })) : (_jsxs(View, { style: styles.createLayout, children: [_jsxs(View, { style: styles.detailPanel, children: [_jsx(Text, { color: "neutral", emphasis: "muted", variant: "caption", children: "Template" }), _jsx(Heading, { level: 2, text: template.name }), _jsxs(Text, { color: "neutral", emphasis: "muted", children: ["#", template.slug] })] }), _jsxs(View, { style: styles.lifecyclePanel, children: [_jsx(Heading, { level: 3, text: "Project" }), _jsxs(View, { style: styles.fieldGroup, children: [_jsx(Text, { weight: "semiBold", children: "Project name" }), _jsx(ThemedWorkspaceTextInput, { value: projectName, onChangeText: setProjectName, placeholder: "Release Monitor", accessibilityLabel: "Project name" })] }), _jsx(MetadataRows, { rows: [['Project ID', formState.derivedProjectId || 'Derived from project name']] }), projectsLoading ? (_jsx(InlineMessage, { tone: "info", text: "Loading existing projects." })) : null, projectsError ? (_jsxs(View, { style: styles.actionStack, children: [_jsx(InlineMessage, { tone: "error", text: projectsError }), _jsx(SecondaryAction, { label: "Retry projects", onPress: refreshProjects })] })) : null, formState.validation?.ok === false && projectName.trim() ? (_jsx(InlineMessage, { tone: "error", text: formState.validation.reason.message })) : null, submitError ? _jsx(InlineMessage, { tone: "error", text: submitError }) : null, _jsx(PrimaryAction, { iconName: "checkmark-outline", label: isCreating ? 'Creating' : 'Create project', disabled: !formState.canCreate, onPress: () => void handleCreate() })] })] })) }));
|
|
52
53
|
}
|
|
53
54
|
/*** Resolve the category and standalone template slug from the Expo Router params. */
|
|
54
55
|
function useTemplateRouteParams() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateProjectFromTemplateScreen.js","sourceRoot":"","sources":["../../src/app/CreateProjectFromTemplateScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"CreateProjectFromTemplateScreen.js","sourceRoot":"","sources":["../../src/app/CreateProjectFromTemplateScreen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectDetailScreen.d.ts","sourceRoot":"","sources":["../../src/app/ProjectDetailScreen.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectDetailScreen.d.ts","sourceRoot":"","sources":["../../src/app/ProjectDetailScreen.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAkBxC,wBAAgB,mBAAmB,sBA8KlC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Heading, Text } from '@ankhorage/zora';
|
|
3
|
-
import {
|
|
3
|
+
import { useLocalSearchParams } from 'expo-router';
|
|
4
4
|
import React, { useState } from 'react';
|
|
5
5
|
import { Alert, Linking, View } from 'react-native';
|
|
6
6
|
import { useProjects } from '../hooks/useProjects';
|
|
7
7
|
import { confirmDelete, openProjectUrl } from '../workspacePlatform';
|
|
8
8
|
import { EmptyState, formatCategory, formatDate, InlineMessage, LifecycleAction, LoadingState, MetadataRows, styles, WorkspaceScreen, } from './workspace/WorkspacePrimitives';
|
|
9
|
+
import { replaceWorkspaceRoute } from './workspace/workspaceRouter';
|
|
9
10
|
export function ProjectDetailScreen() {
|
|
10
11
|
const { projectId } = useProjectRouteParams();
|
|
11
12
|
const { projects, isLoading, error, refresh, deleteProject, syncProject, installProjectPackages, upProjectInfrastructure, launchProject, } = useProjects();
|
|
@@ -50,12 +51,12 @@ export function ProjectDetailScreen() {
|
|
|
50
51
|
confirmDelete(project.name, () => {
|
|
51
52
|
void runAction('Delete project', async () => {
|
|
52
53
|
await deleteProject(project.id);
|
|
53
|
-
|
|
54
|
+
replaceWorkspaceRoute('/');
|
|
54
55
|
return `Deleted ${project.name}.`;
|
|
55
56
|
});
|
|
56
57
|
}, Alert.alert);
|
|
57
58
|
};
|
|
58
|
-
return (_jsx(WorkspaceScreen, { title: "Project Detail", subtitle: projectId, children: isLoading ? (_jsx(LoadingState, { label: "Loading project" })) : error ? (_jsx(EmptyState, { title: "Host connection failed", detail: error, actionLabel: "Retry", onAction: refresh })) : !project ? (_jsx(EmptyState, { title: "Project not found", detail: "The requested project is not available in this workspace.", actionLabel: "Back to projects", onAction: () =>
|
|
59
|
+
return (_jsx(WorkspaceScreen, { title: "Project Detail", subtitle: projectId, children: isLoading ? (_jsx(LoadingState, { label: "Loading project" })) : error ? (_jsx(EmptyState, { title: "Host connection failed", detail: error, actionLabel: "Retry", onAction: refresh })) : !project ? (_jsx(EmptyState, { title: "Project not found", detail: "The requested project is not available in this workspace.", actionLabel: "Back to projects", onAction: () => replaceWorkspaceRoute('/') })) : (_jsxs(View, { style: styles.detailLayout, children: [_jsxs(View, { style: styles.detailPanel, children: [_jsx(View, { style: [
|
|
59
60
|
styles.themeStripe,
|
|
60
61
|
{ backgroundColor: project.activeTheme.light.primaryColor },
|
|
61
62
|
] }), _jsxs(View, { style: styles.nameSlugRow, children: [_jsx(Heading, { level: 2, text: project.name }), _jsxs(Text, { color: "neutral", emphasis: "muted", variant: "caption", children: ["#", project.id] })] }), _jsx(MetadataRows, { rows: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectDetailScreen.js","sourceRoot":"","sources":["../../src/app/ProjectDetailScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ProjectDetailScreen.js","sourceRoot":"","sources":["../../src/app/ProjectDetailScreen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectsOverviewScreen.d.ts","sourceRoot":"","sources":["../../src/app/ProjectsOverviewScreen.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectsOverviewScreen.d.ts","sourceRoot":"","sources":["../../src/app/ProjectsOverviewScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAkBjD,wBAAgB,sBAAsB,sBAyErC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { router } from 'expo-router';
|
|
3
2
|
import React, { useMemo, useState } from 'react';
|
|
4
3
|
import { View } from 'react-native';
|
|
5
4
|
import { useProjects } from '../hooks/useProjects';
|
|
6
5
|
import { filterAndSortProjects } from '../workspaceSearch';
|
|
7
6
|
import { EmptyState, LoadingState, PrimaryAction, ProjectOverviewCard, SegmentedControl, styles, ThemedWorkspaceTextInput, WorkspaceScreen, } from './workspace/WorkspacePrimitives';
|
|
7
|
+
import { pushWorkspaceRoute } from './workspace/workspaceRouter';
|
|
8
8
|
export function ProjectsOverviewScreen() {
|
|
9
9
|
const { projects, isLoading, error, refresh } = useProjects();
|
|
10
10
|
const [searchQuery, setSearchQuery] = useState('');
|
|
@@ -13,15 +13,15 @@ export function ProjectsOverviewScreen() {
|
|
|
13
13
|
return (_jsxs(WorkspaceScreen, { title: "Projects", subtitle: "Choose a workspace project.", children: [_jsxs(View, { style: styles.toolbar, children: [_jsx(ThemedWorkspaceTextInput, { value: searchQuery, onChangeText: setSearchQuery, placeholder: "Search projects", accessibilityLabel: "Search projects" }), _jsx(SegmentedControl, { value: sort, options: [
|
|
14
14
|
{ label: 'Updated', value: 'updated-desc' },
|
|
15
15
|
{ label: 'Name', value: 'name-asc' },
|
|
16
|
-
], onChange: (value) => setSort(value) }), _jsx(PrimaryAction, { iconName: "add-outline", label: "New project", onPress: () =>
|
|
16
|
+
], onChange: (value) => setSort(value) }), _jsx(PrimaryAction, { iconName: "add-outline", label: "New project", onPress: () => pushWorkspaceRoute('/create') })] }), isLoading ? (_jsx(LoadingState, { label: "Loading projects" })) : error ? (_jsx(EmptyState, { title: "Host connection failed", detail: error, actionLabel: "Retry", onAction: refresh })) : filteredProjects.length === 0 ? (_jsx(EmptyState, { title: searchQuery.trim() ? 'No matching projects' : 'No projects yet', detail: searchQuery.trim()
|
|
17
17
|
? 'Clear search or choose a different project query.'
|
|
18
18
|
: 'Create the first generated app for this workspace.', actionLabel: searchQuery.trim() ? 'Clear search' : 'New project', onAction: () => {
|
|
19
19
|
if (searchQuery.trim()) {
|
|
20
20
|
setSearchQuery('');
|
|
21
21
|
}
|
|
22
22
|
else {
|
|
23
|
-
|
|
23
|
+
pushWorkspaceRoute('/create');
|
|
24
24
|
}
|
|
25
|
-
} })) : (_jsx(View, { style: styles.projectGrid, children: filteredProjects.map((project) => (_jsx(ProjectOverviewCard, { project: project, onPress: () =>
|
|
25
|
+
} })) : (_jsx(View, { style: styles.projectGrid, children: filteredProjects.map((project) => (_jsx(ProjectOverviewCard, { project: project, onPress: () => pushWorkspaceRoute(`/projects/${project.id}`) }, project.id))) }))] }));
|
|
26
26
|
}
|
|
27
27
|
//# sourceMappingURL=ProjectsOverviewScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectsOverviewScreen.js","sourceRoot":"","sources":["../../src/app/ProjectsOverviewScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ProjectsOverviewScreen.js","sourceRoot":"","sources":["../../src/app/ProjectsOverviewScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,MAAM,EACN,wBAAwB,EACxB,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,UAAU,sBAAsB;IACpC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;IAC9D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAiB,cAAc,CAAC,CAAC;IAEjE,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,EACxD,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAC9B,CAAC;IAEF,OAAO,CACL,MAAC,eAAe,IAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAC,6BAA6B,aACtE,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,aACzB,KAAC,wBAAwB,IACvB,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,cAAc,EAC5B,WAAW,EAAC,iBAAiB,EAC7B,kBAAkB,EAAC,iBAAiB,GACpC,EACF,KAAC,gBAAgB,IACf,KAAK,EAAE,IAAI,EACX,OAAO,EAAE;4BACP,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE;4BAC3C,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;yBACrC,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GACnC,EACF,KAAC,aAAa,IACZ,QAAQ,EAAC,aAAa,EACtB,KAAK,EAAC,aAAa,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAC5C,IACG,EAEN,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,YAAY,IAAC,KAAK,EAAC,kBAAkB,GAAG,CAC1C,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,KAAC,UAAU,IACT,KAAK,EAAC,wBAAwB,EAC9B,MAAM,EAAE,KAAK,EACb,WAAW,EAAC,OAAO,EACnB,QAAQ,EAAE,OAAO,GACjB,CACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAClC,KAAC,UAAU,IACT,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,iBAAiB,EACtE,MAAM,EACJ,WAAW,CAAC,IAAI,EAAE;oBAChB,CAAC,CAAC,mDAAmD;oBACrD,CAAC,CAAC,oDAAoD,EAE1D,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,EAChE,QAAQ,EAAE,GAAG,EAAE;oBACb,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;wBACvB,cAAc,CAAC,EAAE,CAAC,CAAC;oBACrB,CAAC;yBAAM,CAAC;wBACN,kBAAkB,CAAC,SAAS,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC,GACD,CACH,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,WAAW,YAC5B,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACjC,KAAC,mBAAmB,IAElB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,aAAa,OAAO,CAAC,EAAE,EAAE,CAAC,IAFvD,OAAO,CAAC,EAAE,CAGf,CACH,CAAC,GACG,CACR,IACe,CACnB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StudioApp.d.ts","sourceRoot":"","sources":["../../src/app/StudioApp.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"StudioApp.d.ts","sourceRoot":"","sources":["../../src/app/StudioApp.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAOxC,wBAAgB,SAAS,sBAQxB"}
|
package/dist/app/StudioApp.js
CHANGED
|
@@ -6,6 +6,7 @@ import React, { useState } from 'react';
|
|
|
6
6
|
import { Pressable, StyleSheet, View } from 'react-native';
|
|
7
7
|
import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';
|
|
8
8
|
import { resolveWorkspaceParentPath } from './workspace/navigation';
|
|
9
|
+
import { goBackFromWorkspaceRoute, replaceWorkspaceRoute } from './workspace/workspaceRouter';
|
|
9
10
|
export function StudioApp() {
|
|
10
11
|
return (_jsx(SafeAreaProvider, { children: _jsx(ZoraProvider, { initialMode: "dark", children: _jsx(StudioAppRootContent, {}) }) }));
|
|
11
12
|
}
|
|
@@ -17,10 +18,10 @@ function StudioAppRootContent() {
|
|
|
17
18
|
if (!parentPath)
|
|
18
19
|
return;
|
|
19
20
|
if (router.canGoBack()) {
|
|
20
|
-
|
|
21
|
+
goBackFromWorkspaceRoute();
|
|
21
22
|
return;
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
+
replaceWorkspaceRoute(parentPath);
|
|
24
25
|
}
|
|
25
26
|
return (_jsxs(View, { style: [styles.root, { backgroundColor: theme.colors.background }], children: [_jsxs(SafeAreaView, { edges: ['top', 'left', 'right'], style: [
|
|
26
27
|
styles.appBar,
|
|
@@ -30,7 +31,7 @@ function StudioAppRootContent() {
|
|
|
30
31
|
function AppBarBrand() {
|
|
31
32
|
const { theme } = useZoraTheme();
|
|
32
33
|
const [focused, setFocused] = useState(false);
|
|
33
|
-
return (_jsxs(Pressable, { onPress: () =>
|
|
34
|
+
return (_jsxs(Pressable, { onPress: () => replaceWorkspaceRoute('/'), onFocus: () => setFocused(true), onBlur: () => setFocused(false), accessibilityRole: "button", accessibilityLabel: "Go to projects", style: [styles.brand, { borderColor: focused ? theme.colors.primary : 'transparent' }], children: [_jsx(Icon, { name: "cube-outline", provider: "Ionicons", size: 22, color: "primary" }), _jsx(Text, { weight: "semiBold", children: "Ankh Studio" })] }));
|
|
34
35
|
}
|
|
35
36
|
function IconButton(props) {
|
|
36
37
|
const { theme } = useZoraTheme();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StudioApp.js","sourceRoot":"","sources":["../../src/app/StudioApp.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkB,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEhF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"StudioApp.js","sourceRoot":"","sources":["../../src/app/StudioApp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,9 @@
|
|
|
1
|
+
interface FocusableWorkspaceElement {
|
|
2
|
+
blur: () => void;
|
|
3
|
+
}
|
|
4
|
+
/*** Move focus out of an outgoing web route before Expo Router hides it from assistive technology. */
|
|
5
|
+
export declare function releaseWorkspaceFocus(activeElement?: FocusableWorkspaceElement | null): void;
|
|
6
|
+
/*** Resolve the active Workspace route's canonical parent fallback. */
|
|
1
7
|
export declare function resolveWorkspaceParentPath(pathname: string): string | null;
|
|
8
|
+
export {};
|
|
2
9
|
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/app/workspace/navigation.ts"],"names":[],"mappings":"AAAA,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAa1E"}
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/app/workspace/navigation.ts"],"names":[],"mappings":"AAAA,UAAU,yBAAyB;IACjC,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,sGAAsG;AACtG,wBAAgB,qBAAqB,CACnC,aAAa,GAAE,yBAAyB,GAAG,IAAmC,GAC7E,IAAI,CAEN;AAED,uEAAuE;AACvE,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAa1E"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/*** Move focus out of an outgoing web route before Expo Router hides it from assistive technology. */
|
|
2
|
+
export function releaseWorkspaceFocus(activeElement = getFocusedWorkspaceElement()) {
|
|
3
|
+
activeElement?.blur();
|
|
4
|
+
}
|
|
5
|
+
/*** Resolve the active Workspace route's canonical parent fallback. */
|
|
1
6
|
export function resolveWorkspaceParentPath(pathname) {
|
|
2
7
|
const normalized = normalizePathname(pathname);
|
|
3
8
|
if (normalized === '/')
|
|
@@ -20,4 +25,11 @@ function normalizePathname(pathname) {
|
|
|
20
25
|
return '/';
|
|
21
26
|
return `/${trimmed.replace(/^\/+|\/+$/g, '')}`;
|
|
22
27
|
}
|
|
28
|
+
/*** Read the currently focused HTML element when Studio runs on the web. */
|
|
29
|
+
function getFocusedWorkspaceElement() {
|
|
30
|
+
if (typeof document === 'undefined')
|
|
31
|
+
return null;
|
|
32
|
+
const { activeElement } = document;
|
|
33
|
+
return activeElement instanceof HTMLElement ? activeElement : null;
|
|
34
|
+
}
|
|
23
35
|
//# sourceMappingURL=navigation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../src/app/workspace/navigation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../src/app/workspace/navigation.ts"],"names":[],"mappings":"AAIA,sGAAsG;AACtG,MAAM,UAAU,qBAAqB,CACnC,gBAAkD,0BAA0B,EAAE;IAE9E,aAAa,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,UAAU,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACzC,IAAI,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,GAAG,CAAC;IAEpD,MAAM,WAAW,GAAG,oCAAoC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1E,IAAI,CAAC,WAAW;QAAE,OAAO,GAAG,CAAC;IAE7B,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC;IAC7C,IAAI,QAAQ,IAAI,UAAU;QAAE,OAAO,WAAW,QAAQ,EAAE,CAAC;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,GAAG,CAAC;IAC5C,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,4EAA4E;AAC5E,SAAS,0BAA0B;IACjC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAEjD,MAAM,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC;IACnC,OAAO,aAAa,YAAY,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Href } from 'expo-router';
|
|
2
|
+
/*** Navigate forward after releasing browser focus from the outgoing Workspace route. */
|
|
3
|
+
export declare function pushWorkspaceRoute(href: Href): void;
|
|
4
|
+
/*** Replace the current route after releasing browser focus from the outgoing Workspace route. */
|
|
5
|
+
export declare function replaceWorkspaceRoute(href: Href): void;
|
|
6
|
+
/*** Return to the preceding route after releasing browser focus from the outgoing Workspace route. */
|
|
7
|
+
export declare function goBackFromWorkspaceRoute(): void;
|
|
8
|
+
//# sourceMappingURL=workspaceRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceRouter.d.ts","sourceRoot":"","sources":["../../../src/app/workspace/workspaceRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAU,MAAM,aAAa,CAAC;AAIhD,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAGnD;AAED,kGAAkG;AAClG,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAGtD;AAED,sGAAsG;AACtG,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { router } from 'expo-router';
|
|
2
|
+
import { releaseWorkspaceFocus } from './navigation';
|
|
3
|
+
/*** Navigate forward after releasing browser focus from the outgoing Workspace route. */
|
|
4
|
+
export function pushWorkspaceRoute(href) {
|
|
5
|
+
releaseWorkspaceFocus();
|
|
6
|
+
router.push(href);
|
|
7
|
+
}
|
|
8
|
+
/*** Replace the current route after releasing browser focus from the outgoing Workspace route. */
|
|
9
|
+
export function replaceWorkspaceRoute(href) {
|
|
10
|
+
releaseWorkspaceFocus();
|
|
11
|
+
router.replace(href);
|
|
12
|
+
}
|
|
13
|
+
/*** Return to the preceding route after releasing browser focus from the outgoing Workspace route. */
|
|
14
|
+
export function goBackFromWorkspaceRoute() {
|
|
15
|
+
releaseWorkspaceFocus();
|
|
16
|
+
router.back();
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=workspaceRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceRouter.js","sourceRoot":"","sources":["../../../src/app/workspace/workspaceRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,yFAAyF;AACzF,MAAM,UAAU,kBAAkB,CAAC,IAAU;IAC3C,qBAAqB,EAAE,CAAC;IACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,qBAAqB,CAAC,IAAU;IAC9C,qBAAqB,EAAE,CAAC;IACxB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,wBAAwB;IACtC,qBAAqB,EAAE,CAAC;IACxB,MAAM,CAAC,IAAI,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -2,6 +2,7 @@ import type { MediaAsset, MediaAssetKind, MediaBundledSource } from '@ankhorage/
|
|
|
2
2
|
export interface ProjectBundledMediaInput {
|
|
3
3
|
readonly assetId: string;
|
|
4
4
|
readonly name: string;
|
|
5
|
+
readonly fileName?: string;
|
|
5
6
|
readonly kind: MediaAssetKind;
|
|
6
7
|
readonly body: Uint8Array;
|
|
7
8
|
readonly contentType?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectBundledMediaService.d.ts","sourceRoot":"","sources":["../../../src/host/media/projectBundledMediaService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ3F,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,0GAA0G;AAC1G,qBAAa,0BAA0B;IAEzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAD1C,0EAA0E;gBAC7C,aAAa,EAAE,MAAM;IAElD,wGAAwG;IAClG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"projectBundledMediaService.d.ts","sourceRoot":"","sources":["../../../src/host/media/projectBundledMediaService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ3F,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,0GAA0G;AAC1G,qBAAa,0BAA0B;IAEzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAD1C,0EAA0E;gBAC7C,aAAa,EAAE,MAAM;IAElD,wGAAwG;IAClG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwBrF,qFAAqF;IAC/E,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3E;AAED,2EAA2E;AAC3E,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzF"}
|
|
@@ -13,7 +13,8 @@ export class ProjectBundledMediaService {
|
|
|
13
13
|
/*** Write one bundled authoring asset, regenerate its registry, and return canonical media metadata. */
|
|
14
14
|
async bundle(projectId, input) {
|
|
15
15
|
const projectPath = getProjectPath(this.workspaceRoot, projectId);
|
|
16
|
-
const
|
|
16
|
+
const fileName = input.fileName ?? input.name;
|
|
17
|
+
const bundledPath = createBundledAuthoringMediaPath(input.assetId, fileName);
|
|
17
18
|
await writeProjectAuthoringAsset(projectPath, bundledPath, input.body);
|
|
18
19
|
await syncProjectBundledMediaRegistry(projectPath);
|
|
19
20
|
return {
|
|
@@ -23,7 +24,7 @@ export class ProjectBundledMediaService {
|
|
|
23
24
|
source: { kind: 'bundled', path: bundledPath },
|
|
24
25
|
contentType: input.contentType,
|
|
25
26
|
metadata: {
|
|
26
|
-
originalFileName:
|
|
27
|
+
originalFileName: fileName,
|
|
27
28
|
sizeBytes: input.sizeBytes ?? input.body.byteLength,
|
|
28
29
|
width: input.width,
|
|
29
30
|
height: input.height,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectBundledMediaService.js","sourceRoot":"","sources":["../../../src/host/media/projectBundledMediaService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"projectBundledMediaService.js","sourceRoot":"","sources":["../../../src/host/media/projectBundledMediaService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAe5E,0GAA0G;AAC1G,MAAM,OAAO,0BAA0B;IAER;IAD7B,0EAA0E;IAC1E,YAA6B,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;IAAG,CAAC;IAEtD,wGAAwG;IACxG,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,KAA+B;QAC7D,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;QAC9C,MAAM,WAAW,GAAG,+BAA+B,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7E,MAAM,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,+BAA+B,CAAC,WAAW,CAAC,CAAC;QAEnD,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,OAAO;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;YAC9C,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,QAAQ,EAAE;gBACR,gBAAgB,EAAE,QAAQ;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU;gBACnD,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF,CAAC;IACJ,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,MAA0B;QACxD,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAClE,MAAM,2BAA2B,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,+BAA+B,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;CACF;AAED,2EAA2E;AAC3E,MAAM,UAAU,+BAA+B,CAAC,OAAe,EAAE,QAAgB;IAC/E,OAAO,oBAAoB,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;AAC5G,CAAC"}
|
|
@@ -2,6 +2,7 @@ import type { AppManifest, MediaAssetKind } from '@ankhorage/contracts';
|
|
|
2
2
|
export interface ProjectCreationAsset {
|
|
3
3
|
readonly assetId: string;
|
|
4
4
|
readonly name: string;
|
|
5
|
+
readonly fileName?: string;
|
|
5
6
|
readonly kind: MediaAssetKind;
|
|
6
7
|
readonly body: Uint8Array;
|
|
7
8
|
readonly contentType?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectCreationSource.d.ts","sourceRoot":"","sources":["../../../src/host/orchestrator/projectCreationSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAClD"}
|
|
1
|
+
{"version":3,"file":"projectCreationSource.d.ts","sourceRoot":"","sources":["../../../src/host/orchestrator/projectCreationSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAClD"}
|
|
@@ -15,4 +15,6 @@ export declare function getTemplateCatalog(): TemplateCatalog;
|
|
|
15
15
|
* @todo Move portable-template source resolution beside the templates/projects application boundary rather than owning it under host.
|
|
16
16
|
*/
|
|
17
17
|
export declare function getProjectTemplateSource(selection: ProjectTemplateSelection): Promise<ProjectCreationSource>;
|
|
18
|
+
/*** Extract the packaged file name used when materializing a template image into a generated project. */
|
|
19
|
+
export declare function getTemplateImageFileName(targetPath: string): string;
|
|
18
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/host/templates/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,sBAAsB,CAAC;AAQpE,OAAO,KAAK,EAAE,eAAe,EAA2B,MAAM,gCAAgC,CAAC;AAC/F,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAoBpD;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,wBAAwB,GAClC,OAAO,CAAC,qBAAqB,CAAC,CAUhC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/host/templates/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,sBAAsB,CAAC;AAQpE,OAAO,KAAK,EAAE,eAAe,EAA2B,MAAM,gCAAgC,CAAC;AAC/F,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAoBpD;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,wBAAwB,GAClC,OAAO,CAAC,qBAAqB,CAAC,CAUhC;AAuCD,yGAAyG;AACzG,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { promises as fs } from 'node:fs';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { dirname, join } from 'node:path';
|
|
3
|
+
import { basename, dirname, join } from 'node:path';
|
|
4
4
|
import { CATEGORY_PRESETS, createTemplateArtifact, listTemplates, } from '@ankhorage/templates';
|
|
5
5
|
const require = createRequire(import.meta.url);
|
|
6
6
|
const TEMPLATES_PACKAGE_ROOT = dirname(require.resolve('@ankhorage/templates/package.json'));
|
|
@@ -58,6 +58,7 @@ async function readTemplateImageAsset(mediaAssets, asset) {
|
|
|
58
58
|
return {
|
|
59
59
|
assetId: media.id,
|
|
60
60
|
name: media.name,
|
|
61
|
+
fileName: getTemplateImageFileName(asset.targetPath),
|
|
61
62
|
kind: media.kind,
|
|
62
63
|
body,
|
|
63
64
|
contentType: asset.contentType ?? media.contentType,
|
|
@@ -67,4 +68,8 @@ async function readTemplateImageAsset(mediaAssets, asset) {
|
|
|
67
68
|
durationMs: media.metadata?.durationMs,
|
|
68
69
|
};
|
|
69
70
|
}
|
|
71
|
+
/*** Extract the packaged file name used when materializing a template image into a generated project. */
|
|
72
|
+
export function getTemplateImageFileName(targetPath) {
|
|
73
|
+
return basename(targetPath);
|
|
74
|
+
}
|
|
70
75
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/host/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/host/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGpD,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,GAEd,MAAM,sBAAsB,CAAC;AAa9B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAE7F;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE;YACxE,MAAM,QAAQ,GAAG,UAAyB,CAAC;YAC3C,MAAM,iBAAiB,GAAG,SAAS;iBAChC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC;iBACpD,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAC9B,OAAO;gBACL,EAAE,EAAE,QAAQ;gBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;gBAClC,YAAY,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAChD,OAAO,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBACvC,aAAa,EAAE,iBAAiB,CAAC,MAAM;gBACvC,SAAS,EAAE,iBAAiB;aAC7B,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,SAAmC;IAEnC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACnD,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CACvB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5B,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAC/D,CACF;KACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,SAAS,qBAAqB,CAC5B,QAAkD;IAElD,OAAO;QACL,EAAE,EAAE,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;QAC3C,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,KAAK,UAAU,sBAAsB,CACnC,WAA6D,EAC7D,KAAyB;IAEzB,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,mBAAmB,KAAK,CAAC,OAAO,gDAAgD,CACjF,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/E,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,wBAAwB,CAAC,KAAK,CAAC,UAAU,CAAC;QACpD,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI;QACJ,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW;QACnD,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC,UAAU;QACvD,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK;QAC5B,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM;QAC9B,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,UAAU;KACvC,CAAC;AACJ,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,wBAAwB,CAAC,UAAkB;IACzD,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankhorage/studio",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.26",
|
|
4
4
|
"description": "Studio authoring package for Ankhorage apps",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/ankhorage/studio#readme",
|
|
@@ -226,7 +226,7 @@
|
|
|
226
226
|
"@ankhorage/supabase-auth": "^1.2.7",
|
|
227
227
|
"@ankhorage/supabase-storage": "^0.2.0",
|
|
228
228
|
"@ankhorage/supabase-vault": "^0.2.5",
|
|
229
|
-
"@ankhorage/templates": "^9.1.
|
|
229
|
+
"@ankhorage/templates": "^9.1.4",
|
|
230
230
|
"@ankhorage/utility": "^0.3.0",
|
|
231
231
|
"@ankhorage/zora": "^4.0.0",
|
|
232
232
|
"@ankhorage/zora-chess": "^0.1.2",
|