{"version":3,"file":"christophhu-ngx-dark-mode-toggle.mjs","sources":["../../../projects/ngx-dark-mode-toggle/src/lib/services/dark-mode.service.ts","../../../projects/ngx-dark-mode-toggle/src/lib/components/dark-mode-toggle/dark-mode-toggle.component.ts","../../../projects/ngx-dark-mode-toggle/src/lib/components/dark-mode-toggle/dark-mode-toggle.component.html","../../../projects/ngx-dark-mode-toggle/src/public-api.ts","../../../projects/ngx-dark-mode-toggle/src/christophhu-ngx-dark-mode-toggle.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { Theme } from '../models/theme';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DarkModeService {\r\n  body: any\r\n\r\n  private readonly _theme = new BehaviorSubject<Theme>('dark')\r\n  theme$: Observable<any> = this._theme.asObservable()\r\n\r\n  constructor() {\r\n    this.body = document.body\r\n    this._theme.next(this.body.dataset['theme'] || localStorage['theme'] || 'dark')\r\n\r\n    this.theme$.subscribe({\r\n      next: (theme: Theme) => {\r\n        if (theme) {\r\n          localStorage.setItem('theme', theme)\r\n          this.body.dataset['theme'] = theme\r\n        }\r\n      },\r\n      error: () => {\r\n        console.error('Error setting theme in localStorage')\r\n      },\r\n      complete: () => {\r\n        localStorage.removeItem('theme')\r\n      }\r\n    })\r\n  }\r\n\r\n  toggleTheme() {\r\n    this._theme.next(this.body.dataset['theme'] == 'dark' ? 'light' : 'dark')\r\n  }\r\n}\r\n","import { AsyncPipe, CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Theme } from '../../models/theme';\r\nimport { DarkModeService } from '../../services/dark-mode.service';\r\n\r\n@Component({\r\n  selector: 'dark-mode-toggle',\r\n  imports: [\r\n    AsyncPipe,\r\n    CommonModule\r\n  ],\r\n  templateUrl: './dark-mode-toggle.component.html',\r\n  styleUrl: './dark-mode-toggle.component.sass'\r\n})\r\nexport class DarkModeToggleComponent {\r\n  constructor(private _darkModeService: DarkModeService) {}\r\n\r\n  toggleTheme() {\r\n    this._darkModeService.toggleTheme()\r\n  }\r\n  getTheme(): Observable<Theme> {\r\n    return this._darkModeService.theme$\r\n  }\r\n}\r\n","<div #content>\r\n    <ng-content></ng-content>\r\n</div>\r\n<ng-container *ngIf=\"!content.hasChildNodes()\">\r\n    <!-- <label class=\"toggle\">\r\n        <input type=\"checkbox\" [name]=\"'debug'\" [checked]=\"(getTheme() | async) == 'dark'\" [disabled]=\"false\" (click)=\"toggleTheme()\">\r\n        <div class=\"switch-core\">\r\n            <div class=\"switch-button\"></div>\r\n        </div>\r\n    </label> -->\r\n\r\n    <label class=\"toggle relative inline-block m-0 p-0 border-0 align-middle opacity-100 cursor-pointer disabled:opacity-60 disabled:pointer-events-none\">\r\n        <input type=\"checkbox\" class=\"absolute hidden\" [name]=\"'dark-mode'\" [checked]=\"(getTheme() | async) == 'dark'\" [disabled]=\"false\" (click)=\"toggleTheme()\">\r\n        <div class=\"switch-core relative block w-12 h-[24px] m-0 items-center transition-colors duration-200 ease-in-out rounded-full\">\r\n            <div class=\"switch-button relative block h-5 w-5 top-[2px] left-[2px] rounded-full overflow-hidden transition-all duration-200 ease-in-out\"></div>\r\n        </div>\r\n    </label>\r\n</ng-container>\r\n\r\n","/*\r\n * Public API Surface of ngx-dark-mode-toggle\r\n */\r\n\r\nexport * from './lib/components/dark-mode-toggle/dark-mode-toggle.component'\r\nexport * from './lib/services/dark-mode.service'\r\nexport * from './lib/models/theme'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DarkModeService"],"mappings":"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"}