@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.
Files changed (59) hide show
  1. package/README.md +1 -1
  2. package/dist/core/StudioProvider.d.ts +3 -1
  3. package/dist/core/StudioProvider.d.ts.map +1 -1
  4. package/dist/core/StudioProvider.js +27 -2
  5. package/dist/core/StudioProvider.js.map +1 -1
  6. package/dist/core/mediaAuthoringHostClient.d.ts +9 -0
  7. package/dist/core/mediaAuthoringHostClient.d.ts.map +1 -0
  8. package/dist/core/mediaAuthoringHostClient.js +28 -0
  9. package/dist/core/mediaAuthoringHostClient.js.map +1 -0
  10. package/dist/host/http/mediaRoutes.d.ts +7 -0
  11. package/dist/host/http/mediaRoutes.d.ts.map +1 -0
  12. package/dist/host/http/mediaRoutes.js +82 -0
  13. package/dist/host/http/mediaRoutes.js.map +1 -0
  14. package/dist/host/http/server.d.ts.map +1 -1
  15. package/dist/host/http/server.js +3 -38
  16. package/dist/host/http/server.js.map +1 -1
  17. package/dist/host/index.d.ts +3 -0
  18. package/dist/host/index.d.ts.map +1 -1
  19. package/dist/host/index.js +3 -0
  20. package/dist/host/index.js.map +1 -1
  21. package/dist/host/layout/templates/rootLayout.d.ts.map +1 -1
  22. package/dist/host/layout/templates/rootLayout.js +10 -0
  23. package/dist/host/layout/templates/rootLayout.js.map +1 -1
  24. package/dist/host/media/projectMediaService.d.ts +31 -0
  25. package/dist/host/media/projectMediaService.d.ts.map +1 -0
  26. package/dist/host/media/projectMediaService.js +77 -0
  27. package/dist/host/media/projectMediaService.js.map +1 -0
  28. package/dist/host/media/projectMediaStorage.d.ts +12 -0
  29. package/dist/host/media/projectMediaStorage.d.ts.map +1 -0
  30. package/dist/host/media/projectMediaStorage.js +36 -0
  31. package/dist/host/media/projectMediaStorage.js.map +1 -0
  32. package/dist/host/orchestrator/templates.d.ts +4 -0
  33. package/dist/host/orchestrator/templates.d.ts.map +1 -1
  34. package/dist/host/orchestrator/templates.js +8 -0
  35. package/dist/host/orchestrator/templates.js.map +1 -1
  36. package/dist/index.d.ts +5 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +2 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/mediaPickerAuthoring.d.ts +35 -0
  41. package/dist/mediaPickerAuthoring.d.ts.map +1 -0
  42. package/dist/mediaPickerAuthoring.js +2 -0
  43. package/dist/mediaPickerAuthoring.js.map +1 -0
  44. package/dist/runtime/studioMediaResolver.d.ts +6 -0
  45. package/dist/runtime/studioMediaResolver.d.ts.map +1 -0
  46. package/dist/runtime/studioMediaResolver.js +17 -0
  47. package/dist/runtime/studioMediaResolver.js.map +1 -0
  48. package/dist/ui/AnkhStudio.d.ts +5 -1
  49. package/dist/ui/AnkhStudio.d.ts.map +1 -1
  50. package/dist/ui/AnkhStudio.js +9 -6
  51. package/dist/ui/AnkhStudio.js.map +1 -1
  52. package/dist/ui/admin/pages/MediaAdminPage.d.ts.map +1 -1
  53. package/dist/ui/admin/pages/MediaAdminPage.js +2 -1
  54. package/dist/ui/admin/pages/MediaAdminPage.js.map +1 -1
  55. package/dist/ui/admin/pages/MediaDeviceImportCard.d.ts +3 -0
  56. package/dist/ui/admin/pages/MediaDeviceImportCard.d.ts.map +1 -0
  57. package/dist/ui/admin/pages/MediaDeviceImportCard.js +21 -0
  58. package/dist/ui/admin/pages/MediaDeviceImportCard.js.map +1 -0
  59. package/package.json +4 -3
@@ -1,13 +1,16 @@
1
- import React from 'react';
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
- if (studio.error) {
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;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAQlD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAmB,EAAE,EAAE;IAC1D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7D,CAAC,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;AAiBjD,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;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 stable URL now. Upload and device/photo-library ingestion are added through the trusted host/platform boundary next." }) })) : null, assets.map((asset) => (_jsx(MediaAssetCard, { asset: asset }, asset.id)))] }));
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":"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"}
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;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC3D,KAAK;IACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;CAChD,CAAC,CAA+D,CAAC;AAElE,MAAM,UAAU,cAAc;IAC5B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAiB,OAAO,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACrE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAClB,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CACL,KAAC,WAAW,cACV,KAAC,WAAW,IACV,KAAK,EAAC,OAAO,EACb,WAAW,EAAC,2DAA2D,GACvE,GACU,CACf,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,MAAM,EAAE,GAAG,wBAAwB,CAAC,IAAI,IAAI,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,yBAAyB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,QAAQ,CAAC,wDAAwD,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,EAAE,CAAC,CAAC;QACZ,MAAM,CAAC,EAAE,CAAC,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,WAAW,eACV,KAAC,WAAW,IACV,KAAK,EAAC,OAAO,EACb,WAAW,EAAC,uFAAuF,GACnG,EACF,KAAC,qBAAqB,KAAG,EACzB,KAAC,IAAI,IACH,KAAK,EAAC,qBAAqB,EAC3B,WAAW,EAAC,gEAAgE,YAE5E,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,aAC3B,KAAC,KAAK,IAAC,KAAK,EAAC,MAAM,YACjB,KAAC,KAAK,IAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAC,YAAY,EAAC,YAAY,EAAE,OAAO,GAAI,GAChE,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,MAAM,YACjB,KAAC,MAAM,IAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,OAAO,GAAI,GACtE,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,aAAa,YACxB,KAAC,KAAK,IACJ,KAAK,EAAE,GAAG,EACV,WAAW,EAAC,gBAAW,EACvB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAC,MAAM,GACrB,GACI,EACP,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAC,WAAW,YACrC,KAAK,GACD,CACR,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,MAAM,IAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,2BAExC,IACJ,GACF,EACN,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACrB,KAAC,IAAI,IAAC,KAAK,EAAC,cAAc,YACxB,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,EAAC,OAAO,kFAE/B,GACF,CACR,CAAC,CAAC,CAAC,IAAI,EACP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,cAAc,IAAgB,KAAK,EAAE,KAAK,IAAtB,KAAK,CAAC,EAAE,CAAkB,CAChD,CAAC,IACU,CACf,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,KAAK,EAAkC;IAC/D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,6BAA6B,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,KAAK,CAAC,YAC5D,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,aACzB,KAAC,QAAQ,IAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAE,KAAK,CAAC,EAAE,GAAI,EACxC,KAAC,QAAQ,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAI,EAC3C,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAC,cAAc,EAAC,KAAK,EAAE,KAAK,CAAC,WAAW,GAAI,CAAC,CAAC,CAAC,IAAI,EACtF,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CACnC,KAAC,QAAQ,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,SAAS,QAAQ,GAAI,CAChE,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,EAAE,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAChE,KAAC,QAAQ,IAAC,KAAK,EAAC,YAAY,EAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAI,CACjF,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CACpC,KAAC,QAAQ,IAAC,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,UAAU,KAAK,GAAI,CAClE,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,QAAQ,IACP,KAAK,EAAC,OAAO,EACb,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,eAAe,GACvE,EACF,KAAC,MAAM,IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,6BAE5E,EACR,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACnB,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAC,WAAW,6FAEnD,CACR,CAAC,CAAC,CAAC,IAAI,IACH,GACF,CACR,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAiB;IAC1C,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IACzD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,aAAa,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7E,OAAO,aAAa,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChI,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;IACtB,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;CACpB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare function MediaDeviceImportCard(): React.JSX.Element;
3
+ //# sourceMappingURL=MediaDeviceImportCard.d.ts.map
@@ -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.0.0",
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.0.0",
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",