{"version":3,"file":"print-div-by-id.mjs","sources":["../../../projects/print-div-by-id/src/lib/print-div-by-id.service.ts","../../../projects/print-div-by-id/src/lib/print-div-by-id.component.ts","../../../projects/print-div-by-id/src/lib/print-div.directive.ts","../../../projects/print-div-by-id/src/lib/print-div-by-id.module.ts","../../../projects/print-div-by-id/src/public-api.ts","../../../projects/print-div-by-id/src/print-div-by-id.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class PrintDivByIdService {\n  constructor() {}\n\n  printDivById(divId: string, printTitle: string, bodyClass: string) {\n    let divElement = document.getElementById(divId);\n\n    let divCopy = divElement!.cloneNode(true);\n\n    let style = document.createElement(\"style\");\n    style.textContent = `\n        @media print {\n          body {\n            margin-left: 10px !important;\n            -webkit-print-color-adjust: exact; /* Safari and Chrome */\n            color-adjust: exact; /* Firefox */\n          }\n          .hidden {\n            display: none;\n          }\n\n          #${divId}, #${divId} * {\n              page-break-inside: avoid;\n          }\n        }\n      `;\n\n    document.head.appendChild(style);\n\n    // Hide all elements except the div copy\n    let elements = document.body.children;\n    for (var i = 0; i < elements.length; i++) {\n      if (elements[i] !== divCopy) {\n        elements[i].classList.add(\"hidden\");\n      }\n    }\n\n    document.title = printTitle;\n    document.body.appendChild(divCopy);\n\n    if (bodyClass) {\n      document.body.classList.add(bodyClass);\n    }\n\n    window.print();\n\n    document.body.removeChild(divCopy);\n\n    document.head.removeChild(style);\n\n    // Restore the display of all elements\n    for (var i = 0; i < elements.length; i++) {\n      elements[i].classList.remove(\"hidden\");\n    }\n  }\n\n  printDivInNewWindow(divId: string, printTitle: string, bodyClass: string) {\n    const printContent = document.getElementById(divId);\n    if (!printContent) {\n      console.error(`Div with ID '${divId}' not found.`);\n      return;\n    }\n    const printWindow = window.open(\"\", \"_blank\", \"width=2000,height=1000\");\n    if (!printWindow) {\n      console.error(\"Failed to open print window\");\n      return;\n    }\n\n    // Retrieve all CSS styles\n    const styles = this.getAllStyles();\n    const mediaQueryStyles = this.getMediaQueryStyles();\n    let additionalStyle = document.createElement(\"style\");\n    additionalStyle.textContent = `\n          @media print {\n            body {\n              margin-left: 10px !important;\n              -webkit-print-color-adjust: exact; /* Safari and Chrome */\n              color-adjust: exact; /* Firefox */\n            }\n            \n            #${divId}, #${divId} * {\n              page-break-inside: avoid;\n            }\n          }\n        `;\n\n    printWindow.document.write(`\n      <html>\n        <head>\n          <title>${printTitle}</title>\n          <style>\n          ${styles} \n          ${mediaQueryStyles}\n          </style>\n        </head>\n        <body>\n        ${printContent.outerHTML}\n        </body>\n      </html>\n    `);\n\n    printWindow.document.head.appendChild(additionalStyle);\n\n    if (bodyClass) {\n      console.log(\"body class: \", bodyClass);\n      printWindow.document.body.classList.add(bodyClass);\n    }\n\n    const printFunction = () => {\n      printWindow.focus();\n      printWindow.print();\n      printWindow.close();\n    };\n\n    printFunction();\n  }\n\n  private getAllStyles(): string {\n    const styles: string[] = [];\n    const styleSheets = document.styleSheets;\n    for (let i = 0; i < styleSheets.length; i++) {\n      const styleSheet = styleSheets[i] as CSSStyleSheet;\n      try {\n        const cssRules = styleSheet.cssRules;\n        if (cssRules) {\n          for (let j = 0; j < cssRules.length; j++) {\n            const rule = cssRules[j];\n            if (rule instanceof CSSStyleRule) {\n              styles.push(rule.cssText);\n            }\n          }\n        }\n      } catch (error) {\n        console.error(\"Error accessing CSS rules:\", error);\n      }\n    }\n    return styles.join(\"\\n\");\n  }\n\n  private getMediaQueryStyles(): string {\n    const mediaQueryStyles: string[] = [];\n    const styleSheets = document.styleSheets;\n    for (let i = 0; i < styleSheets.length; i++) {\n      const styleSheet = styleSheets[i] as CSSStyleSheet;\n      try {\n        const cssRules = styleSheet.cssRules;\n        if (cssRules) {\n          for (let j = 0; j < cssRules.length; j++) {\n            const rule = cssRules[j];\n            if (rule instanceof CSSMediaRule) {\n              // Check if it's a media rule\n              mediaQueryStyles.push(rule.cssText);\n            }\n          }\n        }\n      } catch (error) {\n        console.error(\"Error accessing CSS rules:\", error);\n      }\n    }\n    return mediaQueryStyles.join(\"\\n\");\n  }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'lib-print-div-by-id',\n  template: `\n    <p>\n      print-div-by-id works!\n    </p>\n  `,\n  styles: [\n  ]\n})\nexport class PrintDivByIdComponent {\n\n}\n","import { Directive, ElementRef, HostListener, Input } from \"@angular/core\";\nimport { PrintDivByIdService } from \"./print-div-by-id.service\";\n\n@Directive({\n  selector: \"[printDiv]\",\n})\nexport class PrintDivDirective {\n  @Input() printTitle: string = \"\";\n  @Input() printInNewWin: boolean = false;\n  @Input() bodyClass: string = \"\";\n\n  constructor(\n    private el: ElementRef,\n    private printService: PrintDivByIdService\n  ) {}\n\n  @HostListener(\"click\") onClick() {\n    const divId = this.el.nativeElement.getAttribute(\"printDiv\");\n    if (divId) {\n      if (this.printInNewWin) {\n        this.printService.printDivInNewWindow(\n          divId,\n          this.printTitle,\n          this.bodyClass\n        );\n      } else {\n        this.printService.printDivById(divId, this.printTitle, this.bodyClass);\n      }\n    } else {\n      console.error(\"Div ID not provided for printing.\");\n    }\n  }\n}\n","import { NgModule } from \"@angular/core\";\nimport { PrintDivByIdComponent } from \"./print-div-by-id.component\";\nimport { PrintDivByIdService } from \"./print-div-by-id.service\";\nimport { PrintDivDirective } from \"./print-div.directive\";\n\n@NgModule({\n  declarations: [PrintDivByIdComponent, PrintDivDirective],\n  imports: [],\n  exports: [PrintDivByIdComponent, PrintDivDirective],\n  providers: [PrintDivByIdService],\n})\nexport class PrintDivByIdModule {}\n","/*\n * Public API Surface of print-div-by-id\n */\n\nexport * from './lib/print-div-by-id.service';\nexport * from './lib/print-div-by-id.component';\nexport * from './lib/print-div-by-id.module';\nexport * from './lib/print-div.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PrintDivByIdService"],"mappings":"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"}