@ankhorage/studio 1.1.0 → 1.3.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.
Files changed (64) hide show
  1. package/README.md +1 -1
  2. package/dist/core/StudioProvider.d.ts.map +1 -1
  3. package/dist/core/StudioProvider.js +18 -2
  4. package/dist/core/StudioProvider.js.map +1 -1
  5. package/dist/core/mediaAuthoringHostClient.d.ts +5 -1
  6. package/dist/core/mediaAuthoringHostClient.d.ts.map +1 -1
  7. package/dist/core/mediaAuthoringHostClient.js +16 -1
  8. package/dist/core/mediaAuthoringHostClient.js.map +1 -1
  9. package/dist/core/mediaRemovalCoordinator.d.ts +15 -0
  10. package/dist/core/mediaRemovalCoordinator.d.ts.map +1 -0
  11. package/dist/core/mediaRemovalCoordinator.js +33 -0
  12. package/dist/core/mediaRemovalCoordinator.js.map +1 -0
  13. package/dist/host/http/mediaRoutes.d.ts.map +1 -1
  14. package/dist/host/http/mediaRoutes.js +54 -15
  15. package/dist/host/http/mediaRoutes.js.map +1 -1
  16. package/dist/host/layout/templates/rootLayout.d.ts.map +1 -1
  17. package/dist/host/layout/templates/rootLayout.js +13 -1
  18. package/dist/host/layout/templates/rootLayout.js.map +1 -1
  19. package/dist/host/media/projectAuthoringAssetWriter.d.ts +2 -0
  20. package/dist/host/media/projectAuthoringAssetWriter.d.ts.map +1 -0
  21. package/dist/host/media/projectAuthoringAssetWriter.js +12 -0
  22. package/dist/host/media/projectAuthoringAssetWriter.js.map +1 -0
  23. package/dist/host/media/projectBundledMediaRegistry.d.ts +2 -0
  24. package/dist/host/media/projectBundledMediaRegistry.d.ts.map +1 -0
  25. package/dist/host/media/projectBundledMediaRegistry.js +46 -0
  26. package/dist/host/media/projectBundledMediaRegistry.js.map +1 -0
  27. package/dist/host/media/projectBundledMediaService.d.ts +20 -0
  28. package/dist/host/media/projectBundledMediaService.d.ts.map +1 -0
  29. package/dist/host/media/projectBundledMediaService.js +51 -0
  30. package/dist/host/media/projectBundledMediaService.js.map +1 -0
  31. package/dist/host/media/projectMediaService.d.ts +1 -0
  32. package/dist/host/media/projectMediaService.d.ts.map +1 -1
  33. package/dist/host/media/projectMediaService.js +13 -3
  34. package/dist/host/media/projectMediaService.js.map +1 -1
  35. package/dist/host/media/removeProjectAuthoringAsset.d.ts +2 -0
  36. package/dist/host/media/removeProjectAuthoringAsset.d.ts.map +1 -0
  37. package/dist/host/media/removeProjectAuthoringAsset.js +33 -0
  38. package/dist/host/media/removeProjectAuthoringAsset.js.map +1 -0
  39. package/dist/host/orchestrator/generatedAppFiles.d.ts.map +1 -1
  40. package/dist/host/orchestrator/generatedAppFiles.js +2 -0
  41. package/dist/host/orchestrator/generatedAppFiles.js.map +1 -1
  42. package/dist/host/orchestrator/templates.d.ts +1 -1
  43. package/dist/host/orchestrator/templates.js +2 -2
  44. package/dist/host/orchestrator/templates.js.map +1 -1
  45. package/dist/index.d.ts +5 -3
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +1 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/mediaAuthoringModel.d.ts +18 -0
  50. package/dist/mediaAuthoringModel.d.ts.map +1 -1
  51. package/dist/mediaAuthoringModel.js.map +1 -1
  52. package/dist/mediaPickerAuthoring.d.ts +1 -0
  53. package/dist/mediaPickerAuthoring.d.ts.map +1 -1
  54. package/dist/ui/AnkhStudio.d.ts +3 -1
  55. package/dist/ui/AnkhStudio.d.ts.map +1 -1
  56. package/dist/ui/AnkhStudio.js +11 -3
  57. package/dist/ui/AnkhStudio.js.map +1 -1
  58. package/dist/ui/admin/pages/MediaAdminPage.d.ts.map +1 -1
  59. package/dist/ui/admin/pages/MediaAdminPage.js +21 -3
  60. package/dist/ui/admin/pages/MediaAdminPage.js.map +1 -1
  61. package/dist/ui/admin/pages/MediaDeviceImportCard.d.ts.map +1 -1
  62. package/dist/ui/admin/pages/MediaDeviceImportCard.js +3 -3
  63. package/dist/ui/admin/pages/MediaDeviceImportCard.js.map +1 -1
  64. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"mediaPickerAuthoring.d.ts","sourceRoot":"","sources":["../src/mediaPickerAuthoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEvE,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,eAAe,CAAC;AAE/D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,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,MAAM,8BAA8B,GACxC,WAAW,GAAG,iBAAiB,GAAG,eAAe,GAAG,aAAa,GAAG,kBAAkB,CAAC;AAEzF,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAA;CAAE,GACrE;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAA;CAAE,CAAC;AAE5E,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACvE;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GACjD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"mediaPickerAuthoring.d.ts","sourceRoot":"","sources":["../src/mediaPickerAuthoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEvE,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,eAAe,CAAC;AAC/D,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,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,MAAM,8BAA8B,GACxC,WAAW,GAAG,iBAAiB,GAAG,eAAe,GAAG,aAAa,GAAG,kBAAkB,CAAC;AAEzF,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAA;CAAE,GACrE;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAA;CAAE,CAAC;AAE5E,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACvE;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GACjD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -1,11 +1,13 @@
1
+ import { type ExpoBundledMediaRegistry } from '@ankhorage/expo-runtime/bundled-media';
1
2
  import { type RuntimeRendererConfig } from '@ankhorage/runtime';
2
3
  import React from 'react';
3
4
  export interface AnkhStudioProps {
4
5
  children: React.ReactNode;
5
6
  runtimeRegistry?: unknown;
6
7
  runtimeConfig?: unknown;
8
+ bundledMediaRegistry?: ExpoBundledMediaRegistry;
7
9
  }
8
- export declare const AnkhStudio: ({ children }: AnkhStudioProps) => React.FunctionComponentElement<React.FragmentProps> | React.FunctionComponentElement<{
10
+ export declare const AnkhStudio: ({ children, bundledMediaRegistry }: AnkhStudioProps) => React.FunctionComponentElement<React.FragmentProps> | React.FunctionComponentElement<{
9
11
  value: RuntimeRendererConfig;
10
12
  children: React.ReactNode;
11
13
  }> | null;
@@ -1 +1 @@
1
- {"version":3,"file":"AnkhStudio.d.ts","sourceRoot":"","sources":["../../src/ui/AnkhStudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAiC,MAAM,oBAAoB,CAAC;AAC/F,OAAO,KAAkB,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,UAAU,GAAI,cAAc,eAAe;;;SAevD,CAAC"}
1
+ {"version":3,"file":"AnkhStudio.d.ts","sourceRoot":"","sources":["../../src/ui/AnkhStudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAEL,KAAK,qBAAqB,EAE3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAkB,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;CACjD;AAED,eAAO,MAAM,UAAU,GAAI,oCAAyC,eAAe;;;SAmBlF,CAAC"}
@@ -1,11 +1,19 @@
1
- import { RuntimeRendererConfigProvider } from '@ankhorage/runtime';
1
+ import { createExpoBundledMediaResolver, } from '@ankhorage/expo-runtime/bundled-media';
2
+ import { RuntimeRendererConfigProvider, } from '@ankhorage/runtime';
2
3
  import React, { useMemo } from 'react';
3
4
  import { API_BASE } from '../core/constants';
4
5
  import { useStudio } from '../core/StudioContext';
5
6
  import { createStudioMediaAssetResolver } from '../runtime/studioMediaResolver';
6
- export const AnkhStudio = ({ children }) => {
7
+ export const AnkhStudio = ({ children, bundledMediaRegistry = {} }) => {
7
8
  const studio = useStudio();
8
- const resolveMediaAsset = useMemo(() => createStudioMediaAssetResolver({ apiBase: API_BASE, projectId: studio.projectId }), [studio.projectId]);
9
+ const resolveMediaAsset = useMemo(() => {
10
+ const bundledResolver = createExpoBundledMediaResolver(bundledMediaRegistry);
11
+ const storageResolver = createStudioMediaAssetResolver({
12
+ apiBase: API_BASE,
13
+ projectId: studio.projectId,
14
+ });
15
+ return async (args) => bundledResolver(args) ?? (await storageResolver(args));
16
+ }, [bundledMediaRegistry, studio.projectId]);
9
17
  const mediaConfig = useMemo(() => ({ mediaAssets: studio.manifest?.media?.assets, resolveMediaAsset }), [resolveMediaAsset, studio.manifest?.media?.assets]);
10
18
  if (studio.error)
11
19
  return React.createElement(React.Fragment, null, studio.error);
@@ -1 +1 @@
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
+ {"version":3,"file":"AnkhStudio.js","sourceRoot":"","sources":["../../src/ui/AnkhStudio.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,GAE/B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAGL,6BAA6B,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,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;AAShF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAE,oBAAoB,GAAG,EAAE,EAAmB,EAAE,EAAE;IACrF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,iBAAiB,GAAG,OAAO,CAA4B,GAAG,EAAE;QAChE,MAAM,eAAe,GAAG,8BAA8B,CAAC,oBAAoB,CAAC,CAAC;QAC7E,MAAM,eAAe,GAAG,8BAA8B,CAAC;YACrD,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QACH,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,CAAC,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7C,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;AAkBjD,wBAAgB,cAAc,sBAmF7B"}
1
+ {"version":3,"file":"MediaAdminPage.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/MediaAdminPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAmBjD,wBAAgB,cAAc,sBA2F7B"}
@@ -17,6 +17,7 @@ export function MediaAdminPage() {
17
17
  const [url, setUrl] = useState('');
18
18
  const [kind, setKind] = useState('image');
19
19
  const [error, setError] = useState(null);
20
+ const [deleteNotice, setDeleteNotice] = useState(null);
20
21
  const assets = useMemo(() => (studio.manifest ? listStudioMediaAssets(studio.manifest) : []), [studio.manifest]);
21
22
  if (!studio.manifest) {
22
23
  return (_jsx(AdminScroll, { children: _jsx(AdminHeader, { title: "Media", description: "The app media pool is available after the manifest loads." }) }));
@@ -33,13 +34,30 @@ export function MediaAdminPage() {
33
34
  setUrl('');
34
35
  setError(null);
35
36
  };
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)))] }));
37
+ 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" })] }) }), deleteNotice ? (_jsx(Card, { title: "Media lifecycle notice", children: _jsx(Text, { color: "danger", variant: "bodySmall", children: deleteNotice }) })) : null, 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, onDeleteNotice: setDeleteNotice }, asset.id)))] }));
37
38
  }
38
- function MediaAssetCard({ asset }) {
39
+ function MediaAssetCard({ asset, onDeleteNotice, }) {
39
40
  const studio = useStudio();
40
41
  const usages = studio.manifest ? collectStudioMediaAssetUsages(studio.manifest, asset.id) : [];
41
42
  const metadata = asset.metadata;
42
- return (_jsx(Card, { title: asset.name, description: formatMediaSource(asset), children: _jsxs(View, { style: styles.details, children: [_jsx(KeyValue, { label: "ID", value: asset.id }), _jsx(KeyValue, { label: "Kind", value: asset.kind }), asset.contentType ? _jsx(KeyValue, { label: "Content type", value: asset.contentType }) : null, metadata?.sizeBytes !== undefined ? (_jsx(KeyValue, { label: "Size", value: `${metadata.sizeBytes} bytes` })) : null, metadata?.width !== undefined && metadata.height !== undefined ? (_jsx(KeyValue, { label: "Dimensions", value: `${metadata.width} × ${metadata.height}` })) : null, metadata?.durationMs !== undefined ? (_jsx(KeyValue, { label: "Duration", value: `${metadata.durationMs} ms` })) : null, _jsx(KeyValue, { label: "Usage", value: usages.length === 0 ? 'Unused' : `${usages.length} reference(s)` }), _jsx(Button, { disabled: usages.length > 0, onPress: () => studio.removeMediaAsset(asset.id), children: "Remove media" }), usages.length > 0 ? (_jsx(Text, { color: "neutral", emphasis: "muted", variant: "bodySmall", children: "Remove references from component properties before deleting this media item." })) : null] }) }));
43
+ const removeAsset = async () => {
44
+ const result = await studio.deleteMediaAsset(asset.id);
45
+ onDeleteNotice(formatDeleteNotice(result));
46
+ };
47
+ return (_jsx(Card, { title: asset.name, description: formatMediaSource(asset), children: _jsxs(View, { style: styles.details, children: [_jsx(KeyValue, { label: "ID", value: asset.id }), _jsx(KeyValue, { label: "Kind", value: asset.kind }), asset.contentType ? _jsx(KeyValue, { label: "Content type", value: asset.contentType }) : null, metadata?.sizeBytes !== undefined ? (_jsx(KeyValue, { label: "Size", value: `${metadata.sizeBytes} bytes` })) : null, metadata?.width !== undefined && metadata.height !== undefined ? (_jsx(KeyValue, { label: "Dimensions", value: `${metadata.width} × ${metadata.height}` })) : null, metadata?.durationMs !== undefined ? (_jsx(KeyValue, { label: "Duration", value: `${metadata.durationMs} ms` })) : null, _jsx(KeyValue, { label: "Usage", value: usages.length === 0 ? 'Unused' : `${usages.length} reference(s)` }), _jsx(Button, { disabled: usages.length > 0, onPress: () => void removeAsset(), children: "Remove media" }), usages.length > 0 ? (_jsx(Text, { color: "neutral", emphasis: "muted", variant: "bodySmall", children: "Remove references from component properties before deleting this media item." })) : null] }) }));
48
+ }
49
+ function formatDeleteNotice(result) {
50
+ if (result.ok)
51
+ return null;
52
+ if (result.reason === 'save-failed') {
53
+ return `The manifest did not save, so no physical media source was removed: ${result.message}`;
54
+ }
55
+ if (result.reason === 'cleanup-failed') {
56
+ return `The media item was removed safely, but an orphaned authoring source may remain: ${result.message}`;
57
+ }
58
+ if (result.reason === 'in-use')
59
+ return 'The media item is still referenced by component properties.';
60
+ return 'The media item no longer exists in the authoring pool.';
43
61
  }
44
62
  function formatMediaSource(asset) {
45
63
  if (asset.source.kind === 'url')
@@ -1 +1 @@
1
- {"version":3,"file":"MediaAdminPage.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/MediaAdminPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MediaAdminPage.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/MediaAdminPage.tsx"],"names":[],"mappings":"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"}
@@ -1 +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"}
1
+ {"version":3,"file":"MediaDeviceImportCard.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/MediaDeviceImportCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;AASxC,wBAAgB,qBAAqB,sBAgEpC"}
@@ -7,15 +7,15 @@ export function MediaDeviceImportCard() {
7
7
  const studio = useStudio();
8
8
  const [busy, setBusy] = useState(false);
9
9
  const [error, setError] = useState(null);
10
- const importMedia = async (source) => {
10
+ const importMedia = async (source, target) => {
11
11
  setBusy(true);
12
12
  setError(null);
13
- const result = await studio.ingestMediaFromPicker(source);
13
+ const result = await studio.ingestMediaFromPicker(source, target);
14
14
  setBusy(false);
15
15
  if (!result.ok && result.reason !== 'cancelled')
16
16
  setError(result.reason);
17
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] }));
18
+ return (_jsxs(Card, { title: "Import from device", description: "Use managed storage for remote authoring media, or bundle files into the app under /assets.", children: [_jsx(Text, { color: "neutral", emphasis: "muted", variant: "bodySmall", children: "Managed storage" }), _jsxs(View, { style: styles.actions, children: [_jsx(Button, { disabled: busy || !studio.mediaPickerAvailable, onPress: () => void importMedia('file', 'storage'), children: "Upload file" }), _jsx(Button, { disabled: busy || !studio.mediaPickerAvailable, onPress: () => void importMedia('photo-library', 'storage'), children: "Upload photo" })] }), _jsx(Text, { color: "neutral", emphasis: "muted", variant: "bodySmall", children: "App bundle" }), _jsxs(View, { style: styles.actions, children: [_jsx(Button, { disabled: busy || !studio.mediaPickerAvailable, onPress: () => void importMedia('file', 'bundled'), children: "Bundle file" }), _jsx(Button, { disabled: busy || !studio.mediaPickerAvailable, onPress: () => void importMedia('photo-library', 'bundled'), children: "Bundle photo" })] }), !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
19
  }
20
20
  const styles = StyleSheet.create({ actions: { flexDirection: 'row', flexWrap: 'wrap', gap: 8 } });
21
21
  //# sourceMappingURL=MediaDeviceImportCard.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"MediaDeviceImportCard.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/MediaDeviceImportCard.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/studio",
3
- "version": "1.1.0",
3
+ "version": "1.3.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.1.0",
208
+ "@ankhorage/expo-runtime": "^2.2.1",
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",