{"version":3,"file":"ng-vagabond-lab-ng-dsv-base.mjs","sources":["../../../projects/ng-dsv/base/component/base.app-scroll.component.ts","../../../projects/ng-dsv/base/component/base.seo.container.ts","../../../projects/ng-dsv/base/component/base.route.component.ts","../../../projects/ng-dsv/base/component/base.scroll.component.ts","../../../projects/ng-dsv/base/service/base.service.ts","../../../projects/ng-dsv/base/service/scroll.service.ts","../../../projects/ng-dsv/base/utils/base.utils.ts","../../../projects/ng-dsv/base/ng-vagabond-lab-ng-dsv-base.ts"],"sourcesContent":["import { effect, inject, signal } from '@angular/core';\nimport { Router, Scroll } from '@angular/router';\nimport { ApiService } from '@ng-vagabond-lab/ng-dsv/api';\nimport { EnvironmentService } from '@ng-vagabond-lab/ng-dsv/environment';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { filter, map } from 'rxjs';\nimport { ScrollService } from '../public-api';\n\nexport abstract class BaseAppScrollComponent {\n  readonly platformService = inject(PlatformService);\n  readonly storageService: StorageService = inject(StorageService);\n  readonly environmentService = inject(EnvironmentService);\n  readonly apiService = inject(ApiService);\n  readonly scrollService = inject(ScrollService);\n\n  scroll = signal<number>(0);\n\n  load = signal<boolean>(false);\n\n  constructor() {\n    inject(Router).events.pipe(\n      filter((event): event is Scroll => event instanceof Scroll),\n      map((event: Scroll) => event.position)\n    ).subscribe(() => {\n      if (this.platformService.isPlatformBrowser() && this.scrollService.getScroll()) {\n        const divScrolls = document.getElementsByClassName('scroll');\n        Array.from(divScrolls).forEach(scroll => {\n          setTimeout(() => {\n            scroll?.scrollTo(0, this.scrollService.getScroll() ?? 0);\n          }, 100)\n        });\n      }\n    });\n\n    effect(() => {\n      if (this.environmentService.env()) {\n        const apiUrl = this.environmentService.env()?.API_URL!;\n        this.apiService.setBaseUrl(apiUrl);\n        this.load.set(true);\n      }\n    });\n  }\n\n  doScroll() {\n    const divScroll = document.getElementsByClassName('scroll')?.[0];\n    if (document.getElementsByClassName('scroll').length === 1) {\n      this.scrollService.saveScroll(divScroll.scrollTop);\n      this.scrollService.scroll.set(divScroll.scrollTop);\n    }\n  }\n}\n","import { inject, makeStateKey, TransferState } from \"@angular/core\";\nimport { Meta, Title } from \"@angular/platform-browser\";\n\nexport abstract class BaseSeoContainer {\n    public readonly title = inject(Title);\n    public readonly transferState = inject(TransferState);\n    public readonly meta = inject(Meta);\n\n    setMeta(titleApp: string, title: string, description: string, image?: string) {\n        const newTitle = titleApp + ' - ' + title;\n        this.title.setTitle(newTitle);\n        this.transferState.set(makeStateKey<string>('title'), newTitle);\n        this.meta.updateTag({ name: 'description', content: description });\n        image && this.meta.updateTag({ property: 'og:image', content: image });\n    }\n\n}","import { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { BaseSeoContainer } from './base.seo.container';\n\nexport abstract class BaseRouteComponent extends BaseSeoContainer {\n  activatedRoute = inject<ActivatedRoute>(ActivatedRoute);\n\n  routeParams = toSignal(this.activatedRoute.params);\n\n  routeObservable: Subscription | null = null;\n}\n","import { inject } from '@angular/core';\nimport { BaseSeoContainer, ScrollService } from '../public-api';\n\nexport abstract class BaseScrollComponent extends BaseSeoContainer {\n  readonly scrollService = inject(ScrollService);\n\n  loadMore() {\n    if (!this.scrollService.getlocked()) {\n      this.scrollService.doBlocked();\n      this.doLoad();\n      this.scrollService.doBlockedWithTimeout(false, 500);\n    }\n  }\n\n  abstract doLoad(): void;\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport abstract class BaseService {}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollService {\n  scrolls = signal<Map<string, number>>(new Map());\n  blocked = signal<Map<string, boolean>>(new Map());\n  scroll = signal<number>(0);\n\n  saveScroll(scrollTop: number) {\n    this.scrolls.update((value) => {\n      if (scrollTop !== 0) {\n        value.set(location.href, scrollTop);\n      }\n      return value;\n    });\n  }\n\n  getScroll() {\n    return this.scrolls().get(location.href);\n  }\n\n  doBlocked(blocked: boolean = true) {\n    this.blocked.update((value) => {\n      value.set(location.href, blocked);\n      return value;\n    });\n  }\n\n  doBlockedWithTimeout(blocked: boolean, timeout: number = 1000) {\n    setTimeout(() => {\n      this.doBlocked(blocked);\n    }, timeout);\n  }\n\n  getlocked() {\n    return this.blocked().get(location.href);\n  }\n}\n","import { OutputEmitterRef } from \"@angular/core\";\n\nexport const isCallback = <T>(callback: OutputEmitterRef<T>) => {\n    const listeners =\n        callback['listeners' as keyof OutputEmitterRef<T>];\n    return listeners?.length > 0;\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}