@happyvertical/smrt-video 0.57.35 → 0.57.37
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/AGENTS.md +1 -0
- package/dist/character.d.ts.map +1 -1
- package/dist/chunks/{scene-CaTaDyex.js → scene-CajvYwN3.js} +7 -7
- package/dist/chunks/scene-CajvYwN3.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +378 -57
- package/dist/index.js.map +1 -1
- package/dist/manifest.json +789 -51
- package/dist/recipes.d.ts +468 -0
- package/dist/recipes.d.ts.map +1 -0
- package/dist/scene.d.ts.map +1 -1
- package/dist/smrt-knowledge.json +631 -64
- package/dist/video-composition.d.ts.map +1 -1
- package/dist/video-sequence.d.ts.map +1 -1
- package/dist/video-shot.d.ts.map +1 -1
- package/package.json +12 -12
- package/dist/chunks/scene-CaTaDyex.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-composition.d.ts","sourceRoot":"","sources":["../src/video-composition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAQ3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,oBAAoB;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAWa,gBAAiB,SAAQ,OAAO;IAC3C,6DAA6D;
|
|
1
|
+
{"version":3,"file":"video-composition.d.ts","sourceRoot":"","sources":["../src/video-composition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAQ3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,oBAAoB;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAWa,gBAAiB,SAAQ,OAAO;IAC3C,6DAA6D;IAI7D,GAAG,EAAE,MAAM,CAAM;IAEjB,6BAA6B;IAI7B,KAAK,EAAE,MAAM,CAAQ;IAErB,8BAA8B;IAI9B,MAAM,EAAE,MAAM,CAAQ;IAEtB,iEAAiE;IAKjE,gBAAgB,EAAE,MAAM,CAAK;IAE7B,oBAAoB;IAKpB,YAAY,EAAE,YAAY,CAAW;IAErC,8BAA8B;IAE9B,cAAc,EAAE,MAAM,CAAK;gBAEf,OAAO,GAAE,uBAA4B;IAiBjD,0BAA0B;IAC1B,IAAI,iBAAiB,IAAI,MAAM,CAG9B;IAED,uDAAuD;IACvD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,sDAAsD;IACtD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEK,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAClD,SAAS,CAAC,IAAI,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAgC7D,cAAc,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;CAI7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-sequence.d.ts","sourceRoot":"","sources":["../src/video-sequence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAQ3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,2CAA2C;IAC3C,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,uDAAuD;IACvD,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAWa,aAAc,SAAQ,OAAO;IACxC,2CAA2C;
|
|
1
|
+
{"version":3,"file":"video-sequence.d.ts","sourceRoot":"","sources":["../src/video-sequence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAQ3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,2CAA2C;IAC3C,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,uDAAuD;IACvD,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAWa,aAAc,SAAQ,OAAO;IACxC,2CAA2C;IAG3C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEpC,+BAA+B;IAK/B,QAAQ,EAAE,MAAM,CAAK;IAErB,4CAA4C;IAK5C,gBAAgB,EAAE,MAAM,CAAK;IAE7B,2CAA2C;IAK3C,cAAc,EAAE,cAAc,CAAU;IAExC,uDAAuD;IAIvD,wBAAwB,EAAE,MAAM,CAAK;gBAEzB,OAAO,GAAE,oBAAyB;IAiBxC,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAClD,SAAS,CAAC,IAAI,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAgC1D,cAAc,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;CAI1E"}
|
package/dist/video-shot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-shot.d.ts","sourceRoot":"","sources":["../src/video-shot.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAQ5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,QAAQ,GACR,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAE3B,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,4BAA4B;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,+BAA+B;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,8BAA8B;IAC9B,UAAU,CAAC,EAAE,eAAe,CAAC;IAE7B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,qBAAqB;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAWa,SAAU,SAAQ,OAAO;IACpC,oCAAoC;
|
|
1
|
+
{"version":3,"file":"video-shot.d.ts","sourceRoot":"","sources":["../src/video-shot.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-video",
|
|
3
|
-
"version": "0.57.
|
|
3
|
+
"version": "0.57.37",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Video content management for AI-powered video production in the SMRT ecosystem",
|
|
6
6
|
"author": "HappyVertical",
|
|
@@ -29,19 +29,19 @@
|
|
|
29
29
|
"AGENTS.md"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@happyvertical/logger": "^0.
|
|
33
|
-
"@happyvertical/smrt-assets": "0.57.
|
|
34
|
-
"@happyvertical/smrt-config": "0.57.
|
|
35
|
-
"@happyvertical/smrt-content": "0.57.
|
|
36
|
-
"@happyvertical/smrt-core": "0.57.
|
|
37
|
-
"@happyvertical/smrt-profiles": "0.57.
|
|
38
|
-
"@happyvertical/smrt-tenancy": "0.57.
|
|
39
|
-
"@happyvertical/smrt-voice": "0.57.
|
|
40
|
-
"@happyvertical/utils": "^0.
|
|
32
|
+
"@happyvertical/logger": "^0.110.0",
|
|
33
|
+
"@happyvertical/smrt-assets": "0.57.37",
|
|
34
|
+
"@happyvertical/smrt-config": "0.57.37",
|
|
35
|
+
"@happyvertical/smrt-content": "0.57.37",
|
|
36
|
+
"@happyvertical/smrt-core": "0.57.37",
|
|
37
|
+
"@happyvertical/smrt-profiles": "0.57.37",
|
|
38
|
+
"@happyvertical/smrt-tenancy": "0.57.37",
|
|
39
|
+
"@happyvertical/smrt-voice": "0.57.37",
|
|
40
|
+
"@happyvertical/utils": "^0.110.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@happyvertical/smrt-vitest": "0.57.
|
|
44
|
-
"@happyvertical/sql": "^0.
|
|
43
|
+
"@happyvertical/smrt-vitest": "0.57.37",
|
|
44
|
+
"@happyvertical/sql": "^0.110.0",
|
|
45
45
|
"@types/node": "24.13.6",
|
|
46
46
|
"typescript": "6.0.3",
|
|
47
47
|
"vite": "8.1.6",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scene-CaTaDyex.js","names":[],"sources":["../../src/scene.ts"],"sourcesContent":["/**\n * Scene Model\n *\n * Represents a virtual production scene (background environment).\n * Supports 360° panoramas, standard images, and video backgrounds.\n */\n\nimport type { Asset } from '@happyvertical/smrt-assets';\nimport type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport { crossPackageRef, SmrtObject, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport {\n assertValidVideoAssetRole,\n assertValidVideoAssetSortOrder,\n legacyVideoAssetMetaTypes,\n listCanonicalOwnedAssetIds,\n listLegacyOwnedAssetIds,\n mergeOwnedAssetIds,\n resolveOwnedAssets,\n} from './owned-asset-utils.js';\nimport type { SceneAssetRole } from './scene-asset.js';\n\n/**\n * Viewpoint extracted from 360° scene\n */\nexport interface SceneViewpoint {\n /** Viewpoint identifier */\n id: string;\n\n /** Human-readable name */\n name: string;\n\n /** Horizontal rotation (-180 to 180°) */\n pan: number;\n\n /** Vertical rotation (-90 to 90°) */\n tilt: number;\n\n /** Field of view (60-120°) */\n fov: number;\n\n /** Generated rectilinear image asset ID */\n extractedAssetId?: string;\n\n /** Viewpoint-specific lighting profile */\n lightingProfile?: LightingProfile;\n}\n\n/**\n * Lighting profile for IC-Light matching\n */\nexport interface LightingProfile {\n /** Dominant light direction (normalized vector) */\n direction?: { x: number; y: number; z: number };\n\n /** Light color temperature (Kelvin) */\n colorTemperature?: number;\n\n /** Ambient light intensity (0-1) */\n ambientIntensity?: number;\n\n /** Key light intensity (0-1) */\n keyLightIntensity?: number;\n\n /** Shadow softness (0-1) */\n shadowSoftness?: number;\n\n /** Environment map asset ID for reflections */\n envMapAssetId?: string;\n}\n\n/**\n * Anchor point for character placement in scene\n */\nexport interface AnchorPoint {\n /** Anchor point identifier */\n id: string;\n\n /** Human-readable name */\n name: string;\n\n /** Position as normalized coordinates (0-1) */\n position: { x: number; y: number };\n\n /** Suggested character scale at this point */\n suggestedScale: number;\n\n /** Ground plane Y coordinate for perspective */\n groundY: number;\n\n /** Optional viewpoint this anchor belongs to */\n viewpointId?: string;\n}\n\n/**\n * Scene source type\n */\nexport type SceneSourceType =\n | 'image'\n | 'video'\n | 'panorama_360'\n | 'panorama_180';\n\n/**\n * Scene projection type\n */\nexport type SceneProjection = 'equirectangular' | 'cubemap';\n\n/**\n * Scene status\n */\nexport type SceneStatus = 'pending' | 'processing' | 'ready' | 'failed';\n\n/**\n * Scene creation options\n */\nexport interface SceneOptions extends SmrtObjectOptions {\n /** Human-readable name */\n name?: string;\n\n /** Description */\n description?: string | null;\n\n /** Source media asset ID */\n sourceAssetId?: string | null;\n\n /** Type of source media */\n sourceType?: SceneSourceType;\n\n /** Projection type for panoramas */\n projection?: SceneProjection | null;\n\n /** Extracted camera angles from 360° panoramas */\n viewpoints?: SceneViewpoint[];\n\n /** Lighting analysis for IC-Light matching */\n lightingProfile?: LightingProfile | null;\n\n /** Location metadata */\n location?: {\n name: string;\n coordinates?: { lat: number; lng: number };\n } | null;\n\n /** Anchor points for character placement */\n anchorPoints?: AnchorPoint[];\n\n /** Scene status */\n status?: SceneStatus;\n\n /** Tenant ID for multi-tenant isolation */\n tenantId?: string | null;\n}\n\n/**\n * Scene for virtual production compositing\n *\n * Supports 360° panoramas, standard images, and video backgrounds\n * with viewpoint extraction, lighting analysis, and character placement.\n *\n * @example\n * ```typescript\n * import { Scene } from '@happyvertical/smrt-video';\n *\n * const scene = new Scene({\n * name: 'Town Hall Exterior',\n * sourceAssetId: 'asset-townhall-pano',\n * sourceType: 'panorama_360',\n * projection: 'equirectangular',\n * });\n * await scene.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update', 'delete'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: { skipApiCheck: true },\n})\nexport class Scene extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /** Human-readable name */\n name: string = '';\n\n /** Description */\n description: string | null = null;\n\n /** Source media asset ID */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n sourceAssetId: string | null = null;\n\n /** Type of source media */\n sourceType: SceneSourceType = 'image';\n\n /** Projection type for panoramas */\n projection: SceneProjection | null = null;\n\n /** Extracted camera angles from 360° panoramas */\n viewpoints: SceneViewpoint[] = [];\n\n /** Lighting analysis for IC-Light matching */\n lightingProfile: LightingProfile | null = null;\n\n /** Location metadata */\n location: {\n name: string;\n coordinates?: { lat: number; lng: number };\n } | null = null;\n\n /** Anchor points for character placement */\n anchorPoints: AnchorPoint[] = [];\n\n /** Scene status */\n status: SceneStatus = 'pending';\n\n constructor(options: SceneOptions = {}) {\n super(options);\n\n if (options.name !== undefined) this.name = options.name;\n if (options.description !== undefined)\n this.description = options.description;\n if (options.sourceAssetId !== undefined)\n this.sourceAssetId = options.sourceAssetId;\n if (options.sourceType !== undefined) this.sourceType = options.sourceType;\n if (options.projection !== undefined) this.projection = options.projection;\n if (options.viewpoints !== undefined) this.viewpoints = options.viewpoints;\n if (options.lightingProfile !== undefined)\n this.lightingProfile = options.lightingProfile;\n if (options.location !== undefined) this.location = options.location;\n if (options.anchorPoints !== undefined)\n this.anchorPoints = options.anchorPoints;\n if (options.status !== undefined) this.status = options.status;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n\n private async getSceneAssetCollection() {\n const { SceneOwnedAssetCollection } = await import('./scene-assets.js');\n return SceneOwnedAssetCollection.create({ db: this.db });\n }\n\n private getLegacyFieldAssetIds(role?: SceneAssetRole): string[] {\n if (role === 'source') {\n return this.sourceAssetId ? [this.sourceAssetId] : [];\n }\n\n if (role === 'env-map') {\n return this.lightingProfile?.envMapAssetId\n ? [this.lightingProfile.envMapAssetId]\n : [];\n }\n\n if (role === 'viewpoint-extract') {\n return this.viewpoints\n .map((viewpoint) => viewpoint.extractedAssetId || null)\n .filter((assetId): assetId is string => Boolean(assetId));\n }\n\n return [\n this.sourceAssetId,\n this.lightingProfile?.envMapAssetId || null,\n ...this.viewpoints.map((viewpoint) => viewpoint.extractedAssetId || null),\n ].filter((assetId): assetId is string => Boolean(assetId));\n }\n\n private setLegacyFieldAssetId(\n role: SceneAssetRole,\n assetId: string,\n ): boolean {\n if (role === 'source') {\n if (this.sourceAssetId === assetId) {\n return false;\n }\n\n this.sourceAssetId = assetId;\n return true;\n }\n\n if (role === 'env-map') {\n if ((this.lightingProfile?.envMapAssetId || null) === assetId) {\n return false;\n }\n\n this.lightingProfile = {\n ...(this.lightingProfile || {}),\n envMapAssetId: assetId,\n };\n return true;\n }\n\n return false;\n }\n\n private clearLegacyFieldAssetId(\n assetId: string,\n role?: SceneAssetRole,\n ): boolean {\n let changed = false;\n\n if ((!role || role === 'source') && this.sourceAssetId === assetId) {\n this.sourceAssetId = null;\n changed = true;\n }\n\n if (\n (!role || role === 'env-map') &&\n this.lightingProfile?.envMapAssetId === assetId\n ) {\n this.lightingProfile = {\n ...(this.lightingProfile || {}),\n envMapAssetId: undefined,\n };\n changed = true;\n }\n\n if (!role || role === 'viewpoint-extract') {\n let viewpointChanged = false;\n const nextViewpoints = this.viewpoints.map((viewpoint) => {\n if (viewpoint.extractedAssetId !== assetId) {\n return viewpoint;\n }\n\n viewpointChanged = true;\n return {\n ...viewpoint,\n extractedAssetId: undefined,\n };\n });\n\n if (viewpointChanged) {\n this.viewpoints = nextViewpoints;\n changed = true;\n }\n }\n\n return changed;\n }\n\n async getAssets(role?: SceneAssetRole): Promise<Asset[]> {\n const canonicalAssetIds = this.id\n ? await listCanonicalOwnedAssetIds({\n tableName: 'scene_assets',\n loadLinks: async () =>\n (await this.getSceneAssetCollection()).byLeft(\n this.id as string,\n role ? { role } : {},\n ),\n })\n : [];\n const legacyFieldAssetIds = this.getLegacyFieldAssetIds(role);\n const legacyOwnedAssetIds = this.id\n ? await listLegacyOwnedAssetIds({\n db: this.db,\n ownerColumn: 'scene_id',\n ownerId: this.id,\n role,\n metaTypes: legacyVideoAssetMetaTypes('SceneAsset'),\n })\n : [];\n\n return resolveOwnedAssets(\n this.db,\n this.tenantId,\n mergeOwnedAssetIds(\n canonicalAssetIds,\n legacyFieldAssetIds,\n legacyOwnedAssetIds,\n ),\n );\n }\n\n async getAssetByRole(role: SceneAssetRole): Promise<Asset | null> {\n const assets = await this.getAssets(role);\n return assets[0] || null;\n }\n\n async addAsset(\n asset: Asset,\n role: SceneAssetRole = 'source',\n sortOrder = 0,\n ): Promise<void> {\n if (!this.id || !asset.id) {\n throw new Error('Cannot associate unsaved scene or asset');\n }\n\n assertValidVideoAssetRole(role);\n assertValidVideoAssetSortOrder(sortOrder);\n\n const sceneAssets = await this.getSceneAssetCollection();\n await sceneAssets.attach(this.id, asset.id, {\n role,\n sortOrder,\n tenantId: this.tenantId,\n });\n\n if (this.setLegacyFieldAssetId(role, asset.id)) {\n await this.save();\n }\n }\n\n async removeAsset(assetId: string, role?: SceneAssetRole): Promise<void> {\n if (!this.id) {\n return;\n }\n\n const sceneAssets = await this.getSceneAssetCollection();\n await sceneAssets.detach(this.id, assetId, role ? { role } : {});\n\n if (this.clearLegacyFieldAssetId(assetId, role)) {\n await this.save();\n }\n }\n\n /** Check if this is a 360° panorama */\n get isPanorama(): boolean {\n return (\n this.sourceType === 'panorama_360' || this.sourceType === 'panorama_180'\n );\n }\n\n /** Check if the scene has viewpoints extracted */\n get hasViewpoints(): boolean {\n return this.viewpoints.length > 0;\n }\n\n /** Check if the scene is ready for compositing */\n get isReady(): boolean {\n return this.status === 'ready' && this.sourceAssetId !== null;\n }\n}\n"],"mappings":"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"}
|