{
  "version": 3,
  "sources": ["../../../src/lib/assets/ImageAssetUtil.ts"],
  "sourcesContent": ["import {\n\tAssetUtil,\n\tDEFAULT_SUPPORTED_IMAGE_TYPES,\n\tMediaHelpers,\n\tTLAssetId,\n\tTLImageAsset,\n\timageAssetMigrations,\n\timageAssetProps,\n} from '@tldraw/editor'\nimport { DEFAULT_MAX_IMAGE_DIMENSION } from '../defaultExternalContentHandlers'\nimport { containBoxSize } from '../utils/assets/assets'\n\n/** @public */\nexport class ImageAssetUtil extends AssetUtil<TLImageAsset> {\n\tstatic override type = 'image' as const\n\tstatic override props = imageAssetProps\n\tstatic override migrations = imageAssetMigrations\n\n\toverride options: {\n\t\tmaxDimension: number\n\t\tsupportedMimeTypes: readonly string[] | null\n\t} = {\n\t\tmaxDimension: DEFAULT_MAX_IMAGE_DIMENSION,\n\t\tsupportedMimeTypes: null,\n\t}\n\n\toverride getDefaultProps(): TLImageAsset['props'] {\n\t\treturn {\n\t\t\tw: 0,\n\t\t\th: 0,\n\t\t\tname: '',\n\t\t\tisAnimated: false,\n\t\t\tmimeType: null,\n\t\t\tsrc: null,\n\t\t}\n\t}\n\n\toverride getSupportedMimeTypes(): readonly string[] {\n\t\treturn this.options.supportedMimeTypes ?? DEFAULT_SUPPORTED_IMAGE_TYPES\n\t}\n\n\toverride async getAssetFromFile(file: File, assetId: TLAssetId): Promise<TLImageAsset | null> {\n\t\tconst doc = this.editor.getContainerDocument()\n\t\tconst size = await MediaHelpers.getImageSize(file, doc)\n\t\tconst isAnimated = await MediaHelpers.isAnimated(file)\n\t\tconst pixelRatio = 'pixelRatio' in size && size.pixelRatio !== 1 ? size.pixelRatio : undefined\n\n\t\tconst assetInfo: TLImageAsset = {\n\t\t\tid: assetId,\n\t\t\ttype: 'image',\n\t\t\ttypeName: 'asset',\n\t\t\tprops: {\n\t\t\t\tname: file.name,\n\t\t\t\tsrc: '',\n\t\t\t\tw: size.w,\n\t\t\t\th: size.h,\n\t\t\t\tfileSize: file.size,\n\t\t\t\tmimeType: file.type,\n\t\t\t\tisAnimated,\n\t\t\t\t...(pixelRatio ? { pixelRatio } : undefined),\n\t\t\t},\n\t\t\tmeta: {},\n\t\t}\n\n\t\tconst maxDimension = this.options.maxDimension\n\t\tif (maxDimension && isFinite(maxDimension)) {\n\t\t\tconst originalSize = { w: assetInfo.props.w, h: assetInfo.props.h }\n\t\t\tconst resizedSize = containBoxSize(originalSize, { w: maxDimension, h: maxDimension })\n\t\t\tif (originalSize !== resizedSize && MediaHelpers.isStaticImageType(file.type)) {\n\t\t\t\tassetInfo.props.w = resizedSize.w\n\t\t\t\tassetInfo.props.h = resizedSize.h\n\t\t\t}\n\t\t}\n\n\t\treturn assetInfo\n\t}\n}\n"],
  "mappings": "AAAA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OACM;AACP,SAAS,mCAAmC;AAC5C,SAAS,sBAAsB;AAGxB,MAAM,uBAAuB,UAAwB;AAAA,EAC3D,OAAgB,OAAO;AAAA,EACvB,OAAgB,QAAQ;AAAA,EACxB,OAAgB,aAAa;AAAA,EAEpB,UAGL;AAAA,IACH,cAAc;AAAA,IACd,oBAAoB;AAAA,EACrB;AAAA,EAES,kBAAyC;AACjD,WAAO;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,MACH,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,KAAK;AAAA,IACN;AAAA,EACD;AAAA,EAES,wBAA2C;AACnD,WAAO,KAAK,QAAQ,sBAAsB;AAAA,EAC3C;AAAA,EAEA,MAAe,iBAAiB,MAAY,SAAkD;AAC7F,UAAM,MAAM,KAAK,OAAO,qBAAqB;AAC7C,UAAM,OAAO,MAAM,aAAa,aAAa,MAAM,GAAG;AACtD,UAAM,aAAa,MAAM,aAAa,WAAW,IAAI;AACrD,UAAM,aAAa,gBAAgB,QAAQ,KAAK,eAAe,IAAI,KAAK,aAAa;AAErF,UAAM,YAA0B;AAAA,MAC/B,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO;AAAA,QACN,MAAM,KAAK;AAAA,QACX,KAAK;AAAA,QACL,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,QACR,UAAU,KAAK;AAAA,QACf,UAAU,KAAK;AAAA,QACf;AAAA,QACA,GAAI,aAAa,EAAE,WAAW,IAAI;AAAA,MACnC;AAAA,MACA,MAAM,CAAC;AAAA,IACR;AAEA,UAAM,eAAe,KAAK,QAAQ;AAClC,QAAI,gBAAgB,SAAS,YAAY,GAAG;AAC3C,YAAM,eAAe,EAAE,GAAG,UAAU,MAAM,GAAG,GAAG,UAAU,MAAM,EAAE;AAClE,YAAM,cAAc,eAAe,cAAc,EAAE,GAAG,cAAc,GAAG,aAAa,CAAC;AACrF,UAAI,iBAAiB,eAAe,aAAa,kBAAkB,KAAK,IAAI,GAAG;AAC9E,kBAAU,MAAM,IAAI,YAAY;AAChC,kBAAU,MAAM,IAAI,YAAY;AAAA,MACjC;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AACD;",
  "names": []
}
