@ankhorage/studio 1.0.0 → 1.1.0
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/README.md +1 -1
- package/dist/core/StudioProvider.d.ts +3 -1
- package/dist/core/StudioProvider.d.ts.map +1 -1
- package/dist/core/StudioProvider.js +27 -2
- package/dist/core/StudioProvider.js.map +1 -1
- package/dist/core/mediaAuthoringHostClient.d.ts +9 -0
- package/dist/core/mediaAuthoringHostClient.d.ts.map +1 -0
- package/dist/core/mediaAuthoringHostClient.js +28 -0
- package/dist/core/mediaAuthoringHostClient.js.map +1 -0
- package/dist/host/http/mediaRoutes.d.ts +7 -0
- package/dist/host/http/mediaRoutes.d.ts.map +1 -0
- package/dist/host/http/mediaRoutes.js +82 -0
- package/dist/host/http/mediaRoutes.js.map +1 -0
- package/dist/host/http/server.d.ts.map +1 -1
- package/dist/host/http/server.js +3 -38
- package/dist/host/http/server.js.map +1 -1
- package/dist/host/index.d.ts +3 -0
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js +3 -0
- package/dist/host/index.js.map +1 -1
- package/dist/host/layout/templates/rootLayout.d.ts.map +1 -1
- package/dist/host/layout/templates/rootLayout.js +10 -0
- package/dist/host/layout/templates/rootLayout.js.map +1 -1
- package/dist/host/media/projectMediaService.d.ts +31 -0
- package/dist/host/media/projectMediaService.d.ts.map +1 -0
- package/dist/host/media/projectMediaService.js +77 -0
- package/dist/host/media/projectMediaService.js.map +1 -0
- package/dist/host/media/projectMediaStorage.d.ts +12 -0
- package/dist/host/media/projectMediaStorage.d.ts.map +1 -0
- package/dist/host/media/projectMediaStorage.js +36 -0
- package/dist/host/media/projectMediaStorage.js.map +1 -0
- package/dist/host/orchestrator/templates.d.ts +4 -0
- package/dist/host/orchestrator/templates.d.ts.map +1 -1
- package/dist/host/orchestrator/templates.js +8 -0
- package/dist/host/orchestrator/templates.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mediaPickerAuthoring.d.ts +35 -0
- package/dist/mediaPickerAuthoring.d.ts.map +1 -0
- package/dist/mediaPickerAuthoring.js +2 -0
- package/dist/mediaPickerAuthoring.js.map +1 -0
- package/dist/runtime/studioMediaResolver.d.ts +6 -0
- package/dist/runtime/studioMediaResolver.d.ts.map +1 -0
- package/dist/runtime/studioMediaResolver.js +17 -0
- package/dist/runtime/studioMediaResolver.js.map +1 -0
- package/dist/ui/AnkhStudio.d.ts +5 -1
- package/dist/ui/AnkhStudio.d.ts.map +1 -1
- package/dist/ui/AnkhStudio.js +9 -6
- package/dist/ui/AnkhStudio.js.map +1 -1
- package/dist/ui/admin/pages/MediaAdminPage.d.ts.map +1 -1
- package/dist/ui/admin/pages/MediaAdminPage.js +2 -1
- package/dist/ui/admin/pages/MediaAdminPage.js.map +1 -1
- package/dist/ui/admin/pages/MediaDeviceImportCard.d.ts +3 -0
- package/dist/ui/admin/pages/MediaDeviceImportCard.d.ts.map +1 -0
- package/dist/ui/admin/pages/MediaDeviceImportCard.js +21 -0
- package/dist/ui/admin/pages/MediaDeviceImportCard.js.map +1 -0
- package/package.json +4 -3
package/dist/ui/AnkhStudio.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { RuntimeRendererConfigProvider } from '@ankhorage/runtime';
|
|
2
|
+
import React, { useMemo } from 'react';
|
|
3
|
+
import { API_BASE } from '../core/constants';
|
|
2
4
|
import { useStudio } from '../core/StudioContext';
|
|
5
|
+
import { createStudioMediaAssetResolver } from '../runtime/studioMediaResolver';
|
|
3
6
|
export const AnkhStudio = ({ children }) => {
|
|
4
7
|
const studio = useStudio();
|
|
5
|
-
|
|
8
|
+
const resolveMediaAsset = useMemo(() => createStudioMediaAssetResolver({ apiBase: API_BASE, projectId: studio.projectId }), [studio.projectId]);
|
|
9
|
+
const mediaConfig = useMemo(() => ({ mediaAssets: studio.manifest?.media?.assets, resolveMediaAsset }), [resolveMediaAsset, studio.manifest?.media?.assets]);
|
|
10
|
+
if (studio.error)
|
|
6
11
|
return React.createElement(React.Fragment, null, studio.error);
|
|
7
|
-
|
|
8
|
-
if (studio.isLoading || !studio.manifest) {
|
|
12
|
+
if (studio.isLoading || !studio.manifest)
|
|
9
13
|
return null;
|
|
10
|
-
}
|
|
11
|
-
return React.createElement(React.Fragment, null, children);
|
|
14
|
+
return React.createElement(RuntimeRendererConfigProvider, { value: mediaConfig, children });
|
|
12
15
|
};
|
|
13
16
|
//# sourceMappingURL=AnkhStudio.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnkhStudio.js","sourceRoot":"","sources":["../../src/ui/AnkhStudio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AnkhStudio.js","sourceRoot":"","sources":["../../src/ui/AnkhStudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAC/F,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAQhF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAmB,EAAE,EAAE;IAC1D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,iBAAiB,GAAG,OAAO,CAC/B,GAAG,EAAE,CAAC,8BAA8B,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,EACxF,CAAC,MAAM,CAAC,SAAS,CAAC,CACnB,CAAC;IACF,MAAM,WAAW,GAAG,OAAO,CACzB,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAC1E,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CACpD,CAAC;IAEF,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEtD,OAAO,KAAK,CAAC,aAAa,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC9F,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaAdminPage.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/MediaAdminPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MediaAdminPage.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/MediaAdminPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAkBjD,wBAAgB,cAAc,sBAmF7B"}
|
|
@@ -6,6 +6,7 @@ import { StyleSheet, View } from 'react-native';
|
|
|
6
6
|
import { useStudio } from '../../../core/StudioContext';
|
|
7
7
|
import { collectStudioMediaAssetUsages, createStudioMediaAssetId, createStudioUrlMediaAsset, listStudioMediaAssets, } from '../../../mediaAuthoringModel';
|
|
8
8
|
import { AdminHeader, AdminScroll, Field, KeyValue } from '../adminPagePrimitives';
|
|
9
|
+
import { MediaDeviceImportCard } from './MediaDeviceImportCard';
|
|
9
10
|
const MEDIA_KIND_OPTIONS = MEDIA_ASSET_KINDS.map((value) => ({
|
|
10
11
|
value,
|
|
11
12
|
label: value[0]?.toUpperCase() + value.slice(1),
|
|
@@ -32,7 +33,7 @@ export function MediaAdminPage() {
|
|
|
32
33
|
setUrl('');
|
|
33
34
|
setError(null);
|
|
34
35
|
};
|
|
35
|
-
return (_jsxs(AdminScroll, { children: [_jsx(AdminHeader, { title: "Media", description: "Canonical app-authoring media. Runtime user uploads are intentionally not shown here." }), _jsx(Card, { title: "Import external URL", description: "The URL remains remote and is stored as a stable media source.", children: _jsxs(View, { style: styles.formStack, children: [_jsx(Field, { label: "Name", children: _jsx(Input, { value: name, placeholder: "Hero image", onChangeText: setName }) }), _jsx(Field, { label: "Kind", children: _jsx(Select, { value: kind, options: MEDIA_KIND_OPTIONS, onValueChange: setKind }) }), _jsx(Field, { label: "HTTP(S) URL", children: _jsx(Input, { value: url, placeholder: "https://\u2026", onChangeText: setUrl, autoCapitalize: "none" }) }), error ? (_jsx(Text, { color: "danger", variant: "bodySmall", children: error })) : null, _jsx(Button, { disabled: !url.trim(), onPress: importUrl, children: "Import URL" })] }) }), assets.length === 0 ? (_jsx(Card, { title: "No media yet", children: _jsx(Text, { color: "neutral", emphasis: "muted", children: "Import a
|
|
36
|
+
return (_jsxs(AdminScroll, { children: [_jsx(AdminHeader, { title: "Media", description: "Canonical app-authoring media. Runtime user uploads are intentionally not shown here." }), _jsx(MediaDeviceImportCard, {}), _jsx(Card, { title: "Import external URL", description: "The URL remains remote and is stored as a stable media source.", children: _jsxs(View, { style: styles.formStack, children: [_jsx(Field, { label: "Name", children: _jsx(Input, { value: name, placeholder: "Hero image", onChangeText: setName }) }), _jsx(Field, { label: "Kind", children: _jsx(Select, { value: kind, options: MEDIA_KIND_OPTIONS, onValueChange: setKind }) }), _jsx(Field, { label: "HTTP(S) URL", children: _jsx(Input, { value: url, placeholder: "https://\u2026", onChangeText: setUrl, autoCapitalize: "none" }) }), error ? (_jsx(Text, { color: "danger", variant: "bodySmall", children: error })) : null, _jsx(Button, { disabled: !url.trim(), onPress: importUrl, children: "Import URL" })] }) }), assets.length === 0 ? (_jsx(Card, { title: "No media yet", children: _jsx(Text, { color: "neutral", emphasis: "muted", children: "Import a device file, photo-library item, or stable external URL." }) })) : null, assets.map((asset) => (_jsx(MediaAssetCard, { asset: asset }, asset.id)))] }));
|
|
36
37
|
}
|
|
37
38
|
function MediaAssetCard({ asset }) {
|
|
38
39
|
const studio = useStudio();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaAdminPage.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/MediaAdminPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAwC,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"MediaAdminPage.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/MediaAdminPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaDeviceImportCard.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/MediaDeviceImportCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAMxC,wBAAgB,qBAAqB,sBA4CpC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, Card, Text } from '@ankhorage/zora';
|
|
3
|
+
import React, { useState } from 'react';
|
|
4
|
+
import { StyleSheet, View } from 'react-native';
|
|
5
|
+
import { useStudio } from '../../../core/StudioContext';
|
|
6
|
+
export function MediaDeviceImportCard() {
|
|
7
|
+
const studio = useStudio();
|
|
8
|
+
const [busy, setBusy] = useState(false);
|
|
9
|
+
const [error, setError] = useState(null);
|
|
10
|
+
const importMedia = async (source) => {
|
|
11
|
+
setBusy(true);
|
|
12
|
+
setError(null);
|
|
13
|
+
const result = await studio.ingestMediaFromPicker(source);
|
|
14
|
+
setBusy(false);
|
|
15
|
+
if (!result.ok && result.reason !== 'cancelled')
|
|
16
|
+
setError(result.reason);
|
|
17
|
+
};
|
|
18
|
+
return (_jsxs(Card, { title: "Import from device", description: "Selected local files are ingested through the trusted Studio host before entering the manifest.", children: [_jsxs(View, { style: styles.actions, children: [_jsx(Button, { disabled: busy || !studio.mediaPickerAvailable, onPress: () => void importMedia('file'), children: "Choose file" }), _jsx(Button, { disabled: busy || !studio.mediaPickerAvailable, onPress: () => void importMedia('photo-library'), children: "Photo library" })] }), !studio.mediaPickerAvailable ? (_jsx(Text, { color: "neutral", emphasis: "muted", variant: "bodySmall", children: "This Studio host has no platform media picker adapter." })) : null, error ? (_jsx(Text, { color: "danger", variant: "bodySmall", children: error })) : null] }));
|
|
19
|
+
}
|
|
20
|
+
const styles = StyleSheet.create({ actions: { flexDirection: 'row', flexWrap: 'wrap', gap: 8 } });
|
|
21
|
+
//# sourceMappingURL=MediaDeviceImportCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaDeviceImportCard.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/MediaDeviceImportCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,MAAM,UAAU,qBAAqB;IACnC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,KAAK,EAAE,MAA+B,EAAE,EAAE;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;YAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,IAAI,IACH,KAAK,EAAC,oBAAoB,EAC1B,WAAW,EAAC,iGAAiG,aAE7G,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,aACzB,KAAC,MAAM,IACL,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,WAAW,CAAC,MAAM,CAAC,4BAGhC,EACT,KAAC,MAAM,IACL,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,WAAW,CAAC,eAAe,CAAC,8BAGzC,IACJ,EACN,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAC9B,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAC,WAAW,uEAEnD,CACR,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAC,WAAW,YACrC,KAAK,GACD,CACR,CAAC,CAAC,CAAC,IAAI,IACH,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankhorage/studio",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Studio authoring package for Ankhorage apps",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/ankhorage/studio#readme",
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
"@ankhorage/color-theory": "^0.0.8",
|
|
206
206
|
"@ankhorage/contracts": "^7.6.0",
|
|
207
207
|
"@ankhorage/data-sources": "^1.0.1",
|
|
208
|
-
"@ankhorage/expo-runtime": "^2.
|
|
208
|
+
"@ankhorage/expo-runtime": "^2.1.0",
|
|
209
209
|
"@ankhorage/infra": "^3.2.0",
|
|
210
210
|
"@ankhorage/orchestrator": "^0.3.0",
|
|
211
211
|
"@ankhorage/orchestrator-module-expo-google-fonts": "^0.2.0",
|
|
@@ -220,7 +220,8 @@
|
|
|
220
220
|
"@ankhorage/zora-tabletop": "^0.0.5",
|
|
221
221
|
"@fastify/cors": "^11.2.0",
|
|
222
222
|
"fastify": "^5.7.4",
|
|
223
|
-
"react-native-gesture-handler": "~2.28.0"
|
|
223
|
+
"react-native-gesture-handler": "~2.28.0",
|
|
224
|
+
"@ankhorage/supabase-storage": "^0.2.0"
|
|
224
225
|
},
|
|
225
226
|
"peerDependencies": {
|
|
226
227
|
"@expo/vector-icons": "^15.0.3",
|