{"version":3,"file":"unhead-angular-server.mjs","sources":["../../server/src/ssr.service.ts","../../server/src/server.ts","../../server/src/public_api.ts","../../server/src/unhead-angular-server.ts"],"sourcesContent":["import type { Unhead as UnheadSchema } from 'unhead/types'\nimport { DOCUMENT } from '@angular/common'\nimport { Inject, Injectable } from '@angular/core'\nimport { UnheadInjectionToken } from '@unhead/angular'\nimport { parseHtmlForUnheadExtraction } from 'unhead/parser'\nimport { renderSSRHead } from 'unhead/server'\n\nconst ATTR_MATCH_RE = /([a-z0-9-]+)(?:=\"([^\"]*)\")?/i\nconst ATTR_RE = /([a-z0-9-]+(?:=\"[^\"]*\")?)/gi\n\nfunction attrToElement(element: HTMLElement, acc: string) {\n  const [key, value] = acc.match(ATTR_MATCH_RE)?.slice(1, 3) || []\n  if (!key)\n    return\n\n  if (value === undefined) {\n    element.setAttribute(key, '')\n  }\n  else if (key === 'style') {\n    const styleObj = value.split(';').reduce((acc, style) => {\n      const [prop, val] = style.split(':').map(s => s.trim())\n      if (prop && val)\n        acc[prop] = val\n      return acc\n    }, {} as Record<string, string>)\n    Object.entries(styleObj).forEach(([prop, val]) => {\n      element.style.setProperty(prop, val)\n    })\n  }\n  else if (key === 'class') {\n    value.split(' ').forEach(className => element.classList.add(className))\n  }\n  else {\n    element.setAttribute(key, value)\n  }\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UnheadSSRService {\n  constructor(\n    @Inject(DOCUMENT) private document: Document,\n    @Inject(UnheadInjectionToken) private unhead: UnheadSchema,\n  ) {}\n\n  async render() {\n    const { input } = parseHtmlForUnheadExtraction(this.document.documentElement.outerHTML)\n    this.unhead.entries.set(0, { _i: 0, input, options: {} })\n    const { headTags, htmlAttrs, bodyAttrs, bodyTags, bodyTagsOpen } = renderSSRHead(this.unhead, {\n      omitLineBreaks: false,\n    })\n    htmlAttrs.match(ATTR_RE)?.forEach(attr => attrToElement(this.document.documentElement, attr))\n    bodyAttrs.match(ATTR_RE)?.forEach(attr => attrToElement(this.document.body, attr))\n    this.document.body.innerHTML = bodyTagsOpen + this.document.body.innerHTML + bodyTags\n    this.document.head.innerHTML = headTags\n  }\n}\n","import type { CreateServerHeadOptions } from 'unhead/types'\nimport { makeEnvironmentProviders } from '@angular/core'\nimport { BEFORE_APP_SERIALIZED } from '@angular/platform-server'\nimport { UnheadInjectionToken } from '@unhead/angular'\nimport { createHead as _createServerHead } from 'unhead/server'\nimport { UnheadSSRService } from './ssr.service'\n\nexport function provideServerHead(options: CreateServerHeadOptions = {}) {\n  return makeEnvironmentProviders([\n    {\n      provide: UnheadInjectionToken,\n      useFactory: () => _createServerHead(options),\n    },\n    UnheadSSRService,\n    {\n      provide: BEFORE_APP_SERIALIZED,\n      useFactory: (service: UnheadSSRService) => () => {\n        return service.render()\n      },\n      deps: [UnheadSSRService],\n      multi: true,\n    },\n  ])\n}\n","/*\n * Public API Surface of unhead\n */\n\nexport * from './server'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_createServerHead"],"mappings":"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"}