{
  "version": 3,
  "sources": ["../../../../src/lib/utils/export/exportAs.ts"],
  "sourcesContent": ["import { Editor, TLFrameShape, TLShapeId, TLSvgOptions } from '@bigbluebutton/editor'\nimport { getSvgAsDataUrl, getSvgAsImage } from './export'\n\n/** @public */\nexport type TLExportType = 'svg' | 'png' | 'jpeg' | 'webp' | 'json'\n\n/**\n * Export the given shapes as files.\n *\n * @param editor - The editor instance.\n * @param ids - The ids of the shapes to export.\n * @param format - The format to export as.\n * @param opts - Options for the export.\n *\n * @public\n */\nexport function exportAs(\n\teditor: Editor,\n\tids: TLShapeId[],\n\tformat: TLExportType = 'png',\n\topts = {} as Partial<TLSvgOptions>\n) {\n\treturn editor\n\t\t.getSvg(ids?.length ? ids : [...editor.getCurrentPageShapeIds()], opts)\n\t\t.then((svg) => {\n\t\t\tif (!svg) {\n\t\t\t\tthrow new Error('Could not construct SVG.')\n\t\t\t}\n\n\t\t\tlet name = 'shapes' + getTimestamp()\n\n\t\t\tif (ids.length === 1) {\n\t\t\t\tconst first = editor.getShape(ids[0])!\n\t\t\t\tif (editor.isShapeOfType<TLFrameShape>(first, 'frame')) {\n\t\t\t\t\tname = first.props.name ?? 'frame'\n\t\t\t\t} else {\n\t\t\t\t\tname = first.id.replace(/:/, '_')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tswitch (format) {\n\t\t\t\tcase 'svg': {\n\t\t\t\t\tgetSvgAsDataUrl(svg).then((dataURL) => downloadDataURLAsFile(dataURL, `${name}.svg`))\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tcase 'webp':\n\t\t\t\tcase 'png': {\n\t\t\t\t\tgetSvgAsImage(svg, editor.environment.isSafari, {\n\t\t\t\t\t\ttype: format,\n\t\t\t\t\t\tquality: 1,\n\t\t\t\t\t\tscale: 2,\n\t\t\t\t\t}).then((image) => {\n\t\t\t\t\t\tif (!image) throw Error()\n\t\t\t\t\t\tconst dataURL = URL.createObjectURL(image)\n\t\t\t\t\t\tdownloadDataURLAsFile(dataURL, `${name}.${format}`)\n\t\t\t\t\t\tURL.revokeObjectURL(dataURL)\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tcase 'json': {\n\t\t\t\t\tconst data = editor.getContentFromCurrentPage(ids)\n\t\t\t\t\tconst blob = new Blob([JSON.stringify(data, null, 4)], { type: 'application/json' })\n\t\t\t\t\tconst dataURL = URL.createObjectURL(blob)\n\t\t\t\t\tdownloadDataURLAsFile(dataURL, `${name || 'shapes'}.json`)\n\t\t\t\t\tURL.revokeObjectURL(dataURL)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Export type ${format} not supported.`)\n\t\t\t}\n\t\t})\n}\n\nfunction getTimestamp() {\n\tconst now = new Date()\n\n\tconst year = String(now.getFullYear()).slice(2)\n\tconst month = String(now.getMonth() + 1).padStart(2, '0')\n\tconst day = String(now.getDate()).padStart(2, '0')\n\tconst hours = String(now.getHours()).padStart(2, '0')\n\tconst minutes = String(now.getMinutes()).padStart(2, '0')\n\tconst seconds = String(now.getSeconds()).padStart(2, '0')\n\n\treturn ` at ${year}-${month}-${day} ${hours}.${minutes}.${seconds}`\n}\n\nfunction downloadDataURLAsFile(dataUrl: string, filename: string) {\n\tconst link = document.createElement('a')\n\tlink.href = dataUrl\n\tlink.download = filename\n\tlink.click()\n}\n"],
  "mappings": "AACA,SAAS,iBAAiB,qBAAqB;AAexC,SAAS,SACf,QACA,KACA,SAAuB,OACvB,OAAO,CAAC,GACP;AACD,SAAO,OACL,OAAO,KAAK,SAAS,MAAM,CAAC,GAAG,OAAO,uBAAuB,CAAC,GAAG,IAAI,EACrE,KAAK,CAAC,QAAQ;AACd,QAAI,CAAC,KAAK;AACT,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC3C;AAEA,QAAI,OAAO,WAAW,aAAa;AAEnC,QAAI,IAAI,WAAW,GAAG;AACrB,YAAM,QAAQ,OAAO,SAAS,IAAI,CAAC,CAAC;AACpC,UAAI,OAAO,cAA4B,OAAO,OAAO,GAAG;AACvD,eAAO,MAAM,MAAM,QAAQ;AAAA,MAC5B,OAAO;AACN,eAAO,MAAM,GAAG,QAAQ,KAAK,GAAG;AAAA,MACjC;AAAA,IACD;AAEA,YAAQ,QAAQ;AAAA,MACf,KAAK,OAAO;AACX,wBAAgB,GAAG,EAAE,KAAK,CAAC,YAAY,sBAAsB,SAAS,GAAG,IAAI,MAAM,CAAC;AACpF;AAAA,MACD;AAAA,MACA,KAAK;AAAA,MACL,KAAK,OAAO;AACX,sBAAc,KAAK,OAAO,YAAY,UAAU;AAAA,UAC/C,MAAM;AAAA,UACN,SAAS;AAAA,UACT,OAAO;AAAA,QACR,CAAC,EAAE,KAAK,CAAC,UAAU;AAClB,cAAI,CAAC,MAAO,OAAM,MAAM;AACxB,gBAAM,UAAU,IAAI,gBAAgB,KAAK;AACzC,gCAAsB,SAAS,GAAG,IAAI,IAAI,MAAM,EAAE;AAClD,cAAI,gBAAgB,OAAO;AAAA,QAC5B,CAAC;AACD;AAAA,MACD;AAAA,MAEA,KAAK,QAAQ;AACZ,cAAM,OAAO,OAAO,0BAA0B,GAAG;AACjD,cAAM,OAAO,IAAI,KAAK,CAAC,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACnF,cAAM,UAAU,IAAI,gBAAgB,IAAI;AACxC,8BAAsB,SAAS,GAAG,QAAQ,QAAQ,OAAO;AACzD,YAAI,gBAAgB,OAAO;AAC3B;AAAA,MACD;AAAA,MAEA;AACC,cAAM,IAAI,MAAM,eAAe,MAAM,iBAAiB;AAAA,IACxD;AAAA,EACD,CAAC;AACH;AAEA,SAAS,eAAe;AACvB,QAAM,MAAM,oBAAI,KAAK;AAErB,QAAM,OAAO,OAAO,IAAI,YAAY,CAAC,EAAE,MAAM,CAAC;AAC9C,QAAM,QAAQ,OAAO,IAAI,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACxD,QAAM,MAAM,OAAO,IAAI,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AACjD,QAAM,QAAQ,OAAO,IAAI,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG;AACpD,QAAM,UAAU,OAAO,IAAI,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG;AACxD,QAAM,UAAU,OAAO,IAAI,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG;AAExD,SAAO,OAAO,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO;AAClE;AAEA,SAAS,sBAAsB,SAAiB,UAAkB;AACjE,QAAM,OAAO,SAAS,cAAc,GAAG;AACvC,OAAK,OAAO;AACZ,OAAK,WAAW;AAChB,OAAK,MAAM;AACZ;",
  "names": []
}
