{"version":3,"file":"qrsln-utils-Services.mjs","sources":["../../../projects/utils/Services/src/DOM/dom.service.ts","../../../projects/utils/Services/src/Storage/Models/index.ts","../../../projects/utils/Services/src/Storage/web-storage.service.ts","../../../projects/utils/Services/src/Pagination/pagination.service.ts","../../../projects/utils/Services/src/Pagination/Models/index.ts","../../../projects/utils/Services/qrsln-utils-Services.ts"],"sourcesContent":["import {Injectable, EmbeddedViewRef, ApplicationRef, ComponentRef, ViewContainerRef} from '@angular/core';\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class DomService {\r\n\r\n  constructor(private viewContainerRef: ViewContainerRef, private appRef: ApplicationRef) {\r\n  }\r\n\r\n  private GetComponentRef(component: any, componentProps?: object): ComponentRef<any> {\r\n    // 1. Create a component reference from the component\r\n    const componentRef = this.viewContainerRef.createComponent(component);\r\n\r\n    if (componentProps && typeof componentRef.instance === 'object') {\r\n      Object.assign(componentRef.instance as object, componentProps);\r\n    }\r\n\r\n    return componentRef;\r\n  }\r\n\r\n  private AttachComponent(componentRef: ComponentRef<unknown>, element: Element, asSibling: boolean = false): void {\r\n    // 2. Attach component to the appRef so that it's inside the ng component tree\r\n    this.appRef.attachView(componentRef.hostView);\r\n\r\n    // 3. Get DOM element from component\r\n    const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n\r\n    // 4. Append DOM element to the body\r\n    if (asSibling && element.parentNode) {\r\n      element.parentNode.insertBefore(domElem, element.nextSibling);\r\n      // console.log('append as Sibling', domElem);\r\n    } else {\r\n      element.appendChild(domElem);\r\n      // console.log('appendChild', domElem);\r\n    }\r\n  }\r\n\r\n  Append(component: any, element: Element, asSibling: boolean = true): ComponentRef<any> {\r\n    const componentRef = this.GetComponentRef(component);\r\n\r\n    this.AttachComponent(componentRef, element, asSibling);\r\n\r\n    return componentRef;\r\n  }\r\n\r\n  Remove(componentRef: ComponentRef<any>): boolean {\r\n    // 5. Wait some time and remove it from the component tree and from the DOM\r\n    try {\r\n      if (!!componentRef) {\r\n        this.appRef.detachView(componentRef.hostView);\r\n        componentRef.destroy();\r\n        return true;\r\n      }\r\n      return false;\r\n    } catch {\r\n      return false;\r\n    }\r\n  }\r\n}\r\n","export enum StorageType {\r\n  Local,\r\n  Session,\r\n  Cookie\r\n}\r\n","import {Inject, Injectable, PLATFORM_ID} from '@angular/core';\r\nimport {DOCUMENT, isPlatformBrowser} from '@angular/common';\r\n\r\nimport {StorageType} from \"./Models\";\r\n\r\n/** @dynamic */\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class WebStorageService {\r\n\r\n  constructor(@Inject(DOCUMENT) private document: Document,\r\n              @Inject(PLATFORM_ID) private platformId: any) {\r\n    // console.log('isPlatformBrowser', isPlatformBrowser(this.platformId), this.document);\r\n  }\r\n\r\n  Set(storageType: StorageType, key: string, obj: any, expMin: number = 60): any {\r\n    // const expires = new Date(year, month, day, hours, minutes, seconds, milliseconds);\r\n    const expires = new Date();\r\n    expires.setMinutes(expires.getMinutes() + expMin);\r\n    const data = {ExpiresAt: Date.parse(expires.toString()), Data: obj};\r\n    // console.log('Set isPlatformBrowser', isPlatformBrowser(this.platformId), this.document);\r\n\r\n    if (isPlatformBrowser(this.platformId)) {\r\n      switch (storageType) {\r\n        case StorageType.Cookie:\r\n          const expireCookie: string = 'expires=' + new Date(data.ExpiresAt).toUTCString();\r\n          this.SetCookie(key, JSON.stringify(data), expireCookie, '/');\r\n          break;\r\n        case StorageType.Local:\r\n          localStorage.setItem(key, JSON.stringify(data));\r\n          break;\r\n        case StorageType.Session:\r\n          sessionStorage.setItem(key, JSON.stringify(data));\r\n          break;\r\n      }\r\n    }\r\n\r\n    return this.Get(storageType, key);\r\n  }\r\n\r\n  Get(storageType: StorageType, key: string): any {\r\n    // console.log('Get isPlatformBrowser', isPlatformBrowser(this.platformId), this.document);\r\n    let data = null;\r\n    if (isPlatformBrowser(this.platformId)) {\r\n      switch (storageType) {\r\n        case StorageType.Cookie:\r\n          data = this.GetCookie(key);\r\n          break;\r\n        case StorageType.Local:\r\n          data = window.localStorage.getItem(key);\r\n          break;\r\n        case StorageType.Session:\r\n          data = window.sessionStorage.getItem(key);\r\n          break;\r\n      }\r\n    }\r\n    // console.log('Get', data);\r\n\r\n    if (data !== 'undefined' && data !== undefined && data !== null) {\r\n      return this.CheckData(storageType, key, data);\r\n    }\r\n    return null;\r\n  }\r\n\r\n  Remove(storageType: StorageType, key: string): void {\r\n    switch (storageType) {\r\n      case StorageType.Cookie:\r\n        this.RemoveCookie(key, '/');\r\n        console.log(key, ' Cookie expired');\r\n        break;\r\n      case StorageType.Local:\r\n        window.localStorage.removeItem(key);\r\n        console.log(key, 'localStorage expired');\r\n        break;\r\n      case StorageType.Session:\r\n        window.sessionStorage.removeItem(key);\r\n        console.log(key, 'session expired');\r\n        break;\r\n    }\r\n  }\r\n\r\n  //#region Cookie\r\n\r\n  private GetCookie(key: string): any {\r\n    const cookies: Array<string> = this.document.cookie.split(';');\r\n    const cookieName = `${key}=`;\r\n\r\n    let data: any | null = cookies.map(x => x.replace(/^\\s+/g, ''))\r\n      .find(x => x.indexOf(cookieName) === 0);\r\n\r\n    data = data ? data.substring(cookieName.length, data.length) : null;\r\n    return data;\r\n  }\r\n\r\n  private SetCookie(key: string, data: string, expireCookie: string, path: string = '/'): void {\r\n    if (isPlatformBrowser(this.platformId)) {\r\n      this.document.cookie = key + '=' + data + '; ' + expireCookie + (path.length > 0 ? '; path=' + path : '');\r\n    }\r\n  }\r\n\r\n  private RemoveCookie(key: string, path: string = '/'): void {\r\n    const d: Date = new Date();\r\n    d.setTime(d.getTime() + -1 * 24 * 60 * 60 * 1000);\r\n    // console.log(d);\r\n    const data = '';\r\n    const expireCookie: string = 'expires=' + d.toUTCString();\r\n    if (isPlatformBrowser(this.platformId)) {\r\n      this.document.cookie = key + '=' + data + '; ' + expireCookie + (path.length > 0 ? '; path=' + path : '');\r\n    }\r\n  }\r\n\r\n  //#endregion\r\n\r\n  private CheckData(storageType: StorageType, key: string, obj: any): any {\r\n    const sessionObject = JSON.parse(obj);\r\n    // console.log(key, sessionObject, new Date(sessionObject.ExpiresAt));\r\n    if (Date.parse(new Date().toString()) < sessionObject.ExpiresAt) {\r\n      return sessionObject.Data;\r\n    } else {\r\n      this.Remove(storageType, key);\r\n      return null;\r\n    }\r\n  }\r\n\r\n}\r\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {Page, PagerResponse} from \"./Models\";\n\n/** @dynamic */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PaginationService {\n\n  public Changed: EventEmitter<string> = new EventEmitter<string>();\n\n  constructor() {\n  }\n\n  Paginate(TotalItems: number, CurrentPage: number = 1, ItemsPerPage: number = 10, Size: number = 7): PagerResponse {\n    // calculate total pages\n    const totalPages = Math.ceil(TotalItems / ItemsPerPage);\n\n    // ensure current page isn't out of range\n    if (CurrentPage < 1) {\n      CurrentPage = 1;\n    } else if (CurrentPage > totalPages) {\n      CurrentPage = totalPages;\n    }\n\n    let startPage: number;\n    let endPage: number;\n    if (totalPages <= Size) {\n      // less than {{indicatorsPerPage}} total pages so show all\n      startPage = 1;\n      endPage = totalPages;\n    } else {\n      // more than {{indicatorsPerPage}} total pages so calculate start and end pages\n      if (CurrentPage <= +(Size / 2).toFixed(0) + 1) {\n        startPage = 1;\n        endPage = Size;\n      } else if (CurrentPage + 4 >= totalPages) {\n        startPage = totalPages - (Size - 1);\n        endPage = totalPages;\n      } else {\n        startPage = CurrentPage - +(Size / 2).toFixed(0) + 1;\n        endPage = CurrentPage + +(Size / 2).toFixed(0) - 1;\n      }\n    }\n\n    // calculate start and end item indexes\n    let startIndex = (CurrentPage - 1) * ItemsPerPage;\n    let endIndex = Math.min(startIndex + ItemsPerPage - 1, TotalItems - 1);\n\n    // create an array of pages to ng-repeat in the pager control\n    let pages = Array.from(Array(endPage + 1 - startPage).keys()).map(i => {\n      const val = startPage + i;\n      return {Value: val, Label: val.toString()} as Page;\n    });\n\n    this.Changed.emit(CurrentPage.toString());\n\n    // return object with all pager properties required by the view\n    return {\n      Req: {TotalItems, CurrentPage, ItemsPerPage, Size},\n      Pages: pages, TotalPages: totalPages,\n      StartPage: startPage, StartIndex: startIndex, EndPage: endPage, EndIndex: endIndex,\n    } as PagerResponse;\n  }\n}\n","export class PagerRequest {\r\n  TotalItems!: number;\r\n  CurrentPage!: number;\r\n\r\n  ItemsPerPage!: number;\r\n  Size!: number;\r\n}\r\n\r\nexport interface Page {\r\n  Label: string;\r\n  Value: number;\r\n}\r\n\r\nexport interface PagerResponse {\r\n  Req: PagerRequest;\r\n\r\n  Pages: Page[];\r\n  TotalPages: number;\r\n\r\n  StartPage: number;\r\n  StartIndex: number;\r\n  EndPage: number;\r\n  EndIndex: number;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}