@happyvertical/smrt-video 0.57.36 → 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
package/AGENTS.md
CHANGED
|
@@ -12,6 +12,7 @@ AI video production pipeline: characters, performers, scenes, shots, sequences,
|
|
|
12
12
|
- **VideoComposition** (extends Content): top-level container — `fps`, `width`, `height`, `durationInFrames`, `renderStatus`/`renderProgress`.
|
|
13
13
|
- **VideoShotCharacter**: junction (shot ↔ character) with role (primary/secondary/background), position, duration.
|
|
14
14
|
- **VideoWorkflow**: ComfyUI template. `workflowJson`, `nodeMapping` (maps semantic names → node IDs), `workflowType` (prebake/broadcast/lipsync/postprod/custom). `injectParameters()` deep-clones workflow + overwrites `node.inputs`.
|
|
15
|
+
- **Recipe `video.library`** (`src/recipes.ts`, help in `src/library.recipe.md`): lists videos, sequences, shots, characters and scenes for the planner and other catalog hosts. Fields it shows carry `@field({ description })` in plain words; keep them when editing the models. Performer, VideoWorkflow, CompositeJob and the owned-asset joins are left out on purpose.
|
|
15
16
|
|
|
16
17
|
## Design Principles
|
|
17
18
|
|
package/dist/character.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character.d.ts","sourceRoot":"","sources":["../src/character.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"character.d.ts","sourceRoot":"","sources":["../src/character.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as listLegacyOwnedAssetIds, i as listCanonicalOwnedAssetIds, n as assertValidVideoAssetSortOrder, o as mergeOwnedAssetIds, r as legacyVideoAssetMetaTypes, s as resolveOwnedAssets, t as assertValidVideoAssetRole } from "./owned-asset-utils-Da0Tlhhl.js";
|
|
2
|
-
import { SmrtObject, crossPackageRef, smrt } from "@happyvertical/smrt-core";
|
|
2
|
+
import { SmrtObject, crossPackageRef, field, smrt } from "@happyvertical/smrt-core";
|
|
3
3
|
import { TenantScoped, tenantId } from "@happyvertical/smrt-tenancy";
|
|
4
4
|
//#region src/scene.ts
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -19,12 +19,9 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
19
19
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
20
20
|
var Scene = class extends SmrtObject {
|
|
21
21
|
tenantId = null;
|
|
22
|
-
/** Human-readable name */
|
|
23
22
|
name = "";
|
|
24
|
-
/** Description */
|
|
25
23
|
description = null;
|
|
26
24
|
sourceAssetId = null;
|
|
27
|
-
/** Type of source media */
|
|
28
25
|
sourceType = "image";
|
|
29
26
|
/** Projection type for panoramas */
|
|
30
27
|
projection = null;
|
|
@@ -36,7 +33,6 @@ var Scene = class extends SmrtObject {
|
|
|
36
33
|
location = null;
|
|
37
34
|
/** Anchor points for character placement */
|
|
38
35
|
anchorPoints = [];
|
|
39
|
-
/** Scene status */
|
|
40
36
|
status = "pending";
|
|
41
37
|
constructor(options = {}) {
|
|
42
38
|
super(options);
|
|
@@ -161,7 +157,11 @@ var Scene = class extends SmrtObject {
|
|
|
161
157
|
};
|
|
162
158
|
__publicField(Scene, "__smrtPackage__", "@happyvertical/smrt-video");
|
|
163
159
|
__decorateClass([tenantId({ nullable: true })], Scene.prototype, "tenantId", 2);
|
|
164
|
-
__decorateClass([
|
|
160
|
+
__decorateClass([field({ description: "What the scene is called." })], Scene.prototype, "name", 2);
|
|
161
|
+
__decorateClass([field({ description: "What the scene shows." })], Scene.prototype, "description", 2);
|
|
162
|
+
__decorateClass([field({ description: "The picture or video the scene is made from." }), crossPackageRef("@happyvertical/smrt-assets:Asset")], Scene.prototype, "sourceAssetId", 2);
|
|
163
|
+
__decorateClass([field({ description: "What kind of file the scene is made from: a picture, a video or a wrap-around panorama." })], Scene.prototype, "sourceType", 2);
|
|
164
|
+
__decorateClass([field({ description: "Whether the scene is ready to be used in shots." })], Scene.prototype, "status", 2);
|
|
165
165
|
Scene = __decorateClass([TenantScoped({ mode: "optional" }), smrt({
|
|
166
166
|
tableStrategy: "sti",
|
|
167
167
|
api: { include: [
|
|
@@ -177,4 +177,4 @@ Scene = __decorateClass([TenantScoped({ mode: "optional" }), smrt({
|
|
|
177
177
|
//#endregion
|
|
178
178
|
export { Scene as t };
|
|
179
179
|
|
|
180
|
-
//# sourceMappingURL=scene-
|
|
180
|
+
//# sourceMappingURL=scene-CajvYwN3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-CajvYwN3.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 {\n crossPackageRef,\n field,\n SmrtObject,\n smrt,\n} 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 @field({ description: 'What the scene is called.' })\n name: string = '';\n\n /** Description */\n @field({ description: 'What the scene shows.' })\n description: string | null = null;\n\n /** Source media asset ID */\n @field({ description: 'The picture or video the scene is made from.' })\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n sourceAssetId: string | null = null;\n\n /** Type of source media */\n @field({\n description:\n 'What kind of file the scene is made from: a picture, a video or a wrap-around panorama.',\n })\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 @field({ description: 'Whether the scene is ready to be used in shots.' })\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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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export { type BrandingConfig, Character, type CharacterOptions, type CharacterSc
|
|
|
24
24
|
export { CharacterCollection } from './characters.js';
|
|
25
25
|
export { CompositeJob, type CompositeJobOptions, type CompositeJobStatus, } from './composite-job.js';
|
|
26
26
|
export { Performer, type PerformerDNA, type PerformerOptions, type PerformerStatus, } from './performer.js';
|
|
27
|
+
export { VideoLibraryRecipe } from './recipes.js';
|
|
27
28
|
export { type AnchorPoint, type LightingProfile, Scene, type SceneOptions, type SceneProjection, type SceneSourceType, type SceneStatus, type SceneViewpoint, } from './scene.js';
|
|
28
29
|
export { type RenderStatus, VideoComposition, type VideoCompositionOptions, } from './video-composition.js';
|
|
29
30
|
export { VideoCompositionCollection } from './video-compositions.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,OAAO,wBAAwB,CAAC;AAKhC,OAAO,EACL,KAAK,cAAc,EACnB,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,SAAS,EACT,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,EACL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,YAAY,EACjB,gBAAgB,EAChB,KAAK,uBAAuB,GAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EACL,KAAK,cAAc,EACnB,aAAa,EACb,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EACL,KAAK,aAAa,EAClB,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EACL,KAAK,WAAW,EAChB,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,KAAK,gCAAgC,EACrC,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACxC,KAAK,kCAAkC,EACvC,KAAK,uCAAuC,EAC5C,4BAA4B,EAC5B,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,GAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAC;AAI/B,wCAAwC;AACxC,+CAA+C;AAC/C,8CAA8C;AAC9C,OAAO,EACL,SAAS,IAAI,kBAAkB,EAC/B,KAAK,gBAAgB,IAAI,yBAAyB,EAClD,KAAK,eAAe,IAAI,wBAAwB,GACjD,MAAM,gBAAgB,CAAC;AACxB,wCAAwC;AACxC,+CAA+C;AAC/C,8CAA8C;AAC9C,OAAO,EACL,SAAS,IAAI,YAAY,EACzB,KAAK,gBAAgB,IAAI,mBAAmB,EAC5C,KAAK,eAAe,IAAI,kBAAkB,GAC3C,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|