{"version":3,"file":"preloadFile.js","names":[],"sources":["../../src/ssr/preloadFile.ts"],"sourcesContent":["import type { FileOptions } from '../components/File';\nimport { FileRenderer } from '../renderers/FileRenderer';\nimport type { FileContents, LineAnnotation } from '../types';\nimport {\n  createStyleElement,\n  createThemeStyleElement,\n} from '../utils/createStyleElement';\nimport { wrapThemeCSS } from '../utils/cssWrappers';\nimport { renderHTML } from './renderHTML';\n\nexport type PreloadFileOptions<LAnnotation> = {\n  file: FileContents;\n  options?: FileOptions<LAnnotation>;\n  annotations?: LineAnnotation<LAnnotation>[];\n};\n\nexport interface PreloadedFileResult<LAnnotation> {\n  file: FileContents;\n  options?: FileOptions<LAnnotation>;\n  annotations?: LineAnnotation<LAnnotation>[];\n  prerenderedHTML: string;\n}\n\nexport async function preloadFile<LAnnotation = undefined>({\n  file,\n  options,\n  annotations,\n}: PreloadFileOptions<LAnnotation>): Promise<PreloadedFileResult<LAnnotation>> {\n  const fileRenderer = new FileRenderer<LAnnotation>({\n    ...options,\n    headerRenderMode:\n      options?.renderCustomHeader != null ? 'custom' : 'default',\n  });\n\n  // Set line annotations if provided\n  if (annotations !== undefined && annotations.length > 0) {\n    fileRenderer.setLineAnnotations(annotations);\n  }\n\n  const fileResult = await fileRenderer.asyncRender(file);\n  const children = [createStyleElement(fileResult.css, true)];\n\n  children.push(\n    createThemeStyleElement(\n      wrapThemeCSS(\n        fileResult.themeStyles,\n        fileResult.baseThemeType ?? options?.themeType ?? 'system'\n      )\n    )\n  );\n\n  if (options?.unsafeCSS != null) {\n    children.push(createStyleElement(options.unsafeCSS));\n  }\n\n  if (fileResult.headerAST != null) {\n    children.push(fileResult.headerAST);\n  }\n  const code = fileRenderer.renderFullAST(fileResult);\n  code.properties['data-dehydrated'] = '';\n  children.push(code);\n\n  return {\n    file,\n    options,\n    annotations,\n    prerenderedHTML: renderHTML(children),\n  };\n}\n"],"mappings":";;;;;;AAuBA,eAAsB,YAAqC,EACzD,MACA,SACA,eAC6E;CAC7E,MAAM,eAAe,IAAI,aAA0B;EACjD,GAAG;EACH,kBACE,SAAS,sBAAsB,OAAO,WAAW;EACpD,CAAC;AAGF,KAAI,gBAAgB,UAAa,YAAY,SAAS,EACpD,cAAa,mBAAmB,YAAY;CAG9C,MAAM,aAAa,MAAM,aAAa,YAAY,KAAK;CACvD,MAAM,WAAW,CAAC,mBAAmB,WAAW,KAAK,KAAK,CAAC;AAE3D,UAAS,KACP,wBACE,aACE,WAAW,aACX,WAAW,iBAAiB,SAAS,aAAa,SACnD,CACF,CACF;AAED,KAAI,SAAS,aAAa,KACxB,UAAS,KAAK,mBAAmB,QAAQ,UAAU,CAAC;AAGtD,KAAI,WAAW,aAAa,KAC1B,UAAS,KAAK,WAAW,UAAU;CAErC,MAAM,OAAO,aAAa,cAAc,WAAW;AACnD,MAAK,WAAW,qBAAqB;AACrC,UAAS,KAAK,KAAK;AAEnB,QAAO;EACL;EACA;EACA;EACA,iBAAiB,WAAW,SAAS;EACtC"}