wacom 18.2.2 → 18.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +1834 -1803
  2. package/esm2022/lib/components/alert/alert.component.mjs +5 -5
  3. package/esm2022/lib/components/alert/wrapper/wrapper.component.mjs +5 -5
  4. package/esm2022/lib/components/files/files.component.mjs +5 -5
  5. package/esm2022/lib/components/loader/loader.component.mjs +5 -5
  6. package/esm2022/lib/components/modal/modal.component.mjs +5 -5
  7. package/esm2022/lib/directives/click-outside.directive.mjs +4 -4
  8. package/esm2022/lib/guard/meta.guard.mjs +4 -4
  9. package/esm2022/lib/interfaces/alert.interface.mjs +1 -1
  10. package/esm2022/lib/interfaces/config.mjs +1 -1
  11. package/esm2022/lib/interfaces/modal.interface.mjs +1 -1
  12. package/esm2022/lib/pipes/arr.pipe.mjs +4 -4
  13. package/esm2022/lib/pipes/mongodate.pipe.mjs +4 -4
  14. package/esm2022/lib/pipes/pagination.pipe.mjs +4 -4
  15. package/esm2022/lib/pipes/safe.pipe.mjs +4 -4
  16. package/esm2022/lib/pipes/search.pipe.mjs +4 -4
  17. package/esm2022/lib/pipes/splice.pipe.mjs +4 -4
  18. package/esm2022/lib/services/alert.service.mjs +4 -4
  19. package/esm2022/lib/services/base.service.mjs +4 -4
  20. package/esm2022/lib/services/core.service.mjs +4 -4
  21. package/esm2022/lib/services/crud.service.mjs +1 -1
  22. package/esm2022/lib/services/dom.service.mjs +4 -4
  23. package/esm2022/lib/services/file.service.mjs +4 -4
  24. package/esm2022/lib/services/hash.service.mjs +4 -4
  25. package/esm2022/lib/services/http.service.mjs +84 -18
  26. package/esm2022/lib/services/loader.service.mjs +4 -4
  27. package/esm2022/lib/services/meta.service.mjs +4 -4
  28. package/esm2022/lib/services/modal.service.mjs +4 -4
  29. package/esm2022/lib/services/mongo.service.mjs +4 -4
  30. package/esm2022/lib/services/render.service.mjs +4 -4
  31. package/esm2022/lib/services/socket.service.mjs +4 -4
  32. package/esm2022/lib/services/store.service.mjs +4 -4
  33. package/esm2022/lib/services/time.service.mjs +38 -4
  34. package/esm2022/lib/services/ui.service.mjs +4 -4
  35. package/esm2022/lib/wacom.module.mjs +5 -5
  36. package/esm2022/public-api.mjs +1 -1
  37. package/fesm2022/wacom.mjs +210 -110
  38. package/fesm2022/wacom.mjs.map +1 -1
  39. package/lib/services/http.service.d.ts +38 -0
  40. package/lib/services/time.service.d.ts +15 -0
  41. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"wacom.mjs","sources":["../../../projects/wacom/src/lib/interfaces/config.ts","../../../projects/wacom/src/lib/interfaces/alert.interface.ts","../../../projects/wacom/src/lib/services/core.service.ts","../../../projects/wacom/src/lib/services/meta.service.ts","../../../projects/wacom/src/lib/guard/meta.guard.ts","../../../projects/wacom/src/lib/components/alert/alert.component.ts","../../../projects/wacom/src/lib/components/alert/alert.component.html","../../../projects/wacom/src/lib/components/modal/modal.component.ts","../../../projects/wacom/src/lib/components/modal/modal.component.html","../../../projects/wacom/src/lib/components/loader/loader.component.ts","../../../projects/wacom/src/lib/components/loader/loader.component.html","../../../projects/wacom/src/lib/directives/click-outside.directive.ts","../../../projects/wacom/src/lib/pipes/arr.pipe.ts","../../../projects/wacom/src/lib/pipes/mongodate.pipe.ts","../../../projects/wacom/src/lib/pipes/pagination.pipe.ts","../../../projects/wacom/src/lib/pipes/safe.pipe.ts","../../../projects/wacom/src/lib/pipes/search.pipe.ts","../../../projects/wacom/src/lib/pipes/splice.pipe.ts","../../../projects/wacom/src/lib/services/base.service.ts","../../../projects/wacom/src/lib/services/crud.service.ts","../../../projects/wacom/src/lib/services/store.service.ts","../../../projects/wacom/src/lib/services/http.service.ts","../../../projects/wacom/src/lib/services/mongo.service.ts","../../../projects/wacom/src/lib/services/render.service.ts","../../../projects/wacom/src/lib/services/hash.service.ts","../../../projects/wacom/src/lib/services/dom.service.ts","../../../projects/wacom/src/lib/components/alert/wrapper/wrapper.component.ts","../../../projects/wacom/src/lib/components/alert/wrapper/wrapper.component.html","../../../projects/wacom/src/lib/services/alert.service.ts","../../../projects/wacom/src/lib/services/loader.service.ts","../../../projects/wacom/src/lib/services/socket.service.ts","../../../projects/wacom/src/lib/services/modal.service.ts","../../../projects/wacom/src/lib/components/files/files.component.ts","../../../projects/wacom/src/lib/components/files/files.component.html","../../../projects/wacom/src/lib/services/file.service.ts","../../../projects/wacom/src/lib/services/ui.service.ts","../../../projects/wacom/src/lib/services/time.service.ts","../../../projects/wacom/src/lib/wacom.module.ts","../../../projects/wacom/src/public-api.ts","../../../projects/wacom/src/wacom.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nexport interface Any {\r\n\t[key: string]: string;\r\n}\r\nexport interface Config {\r\n\tmeta?: {\r\n\t\tuseTitleSuffix?: boolean;\r\n\t\twarnMissingGuard?: boolean;\r\n\t\tdefaults?: {\r\n\t\t\ttitle?: string;\r\n\t\t\ttitleSuffix?: string;\r\n\t\t} & { [key: string]: string | undefined; };\r\n\t};\r\n\talert?: {\r\n\t\talerts?:object;\r\n\t\ttext?:string;\r\n\t\ttype?: string;\r\n\t\ticon?: string;\r\n\t\tclass?: string;\r\n\t\tunique?: string;\r\n\t\tprogress?: boolean;\r\n\t\tposition?: string;\r\n\t\ttimeout?: number;\r\n\t\tclose?: any;\r\n\t\tbuttons?: any;\r\n\t};\r\n\tmodal?: {\r\n\t\tsize?: any;\r\n\t\ttimeout?: any;\r\n\t\ttimestart?: any;\r\n\t\tclass?:string;\r\n\t\tmodals?:object;\r\n\t\tposition?: string;\r\n\t\tclosable?: boolean;\r\n\t\tunique?: string;\r\n\t};\r\n\tpopup?: {\r\n\t\tpopups?: object;\r\n\t};\r\n\tloader?: {\r\n\t\tloaders?: object;\r\n\t};\r\n\tsocket?: any;\r\n\thttp?: {\r\n\t\theaders?: any;\r\n\t\turl?: string;\r\n\t},\r\n\tstore?: {\r\n\t\tprefix?: string;\r\n\t\tset?: (\r\n\t\t\thold: any,\r\n\t\t\tvalue: any,\r\n\t\t\tcb?: () => void,\r\n\t\t\terrCb?: () => void\r\n\t\t) => Promise<boolean>,\r\n\t\tget?: (\r\n\t\t\thold: any,\r\n\t\t\tcb?: (value: string) => void,\r\n\t\t\terrCb?: () => void\r\n\t\t) => Promise<string>,\r\n\t\tremove?: (\r\n\t\t\thold: any,\r\n\t\t\tcb?: () => void,\r\n\t\t\terrCb?: () => void\r\n\t\t) => Promise<boolean>,\r\n\t\tclear?: (\r\n\t\t\tcb?: () => void,\r\n\t\t\terrCb?: () => void\r\n\t\t) => Promise<boolean>\r\n\t}\r\n}\r\nexport const CONFIG_TOKEN = new InjectionToken<Config>('config');\r\nexport const DEFAULT_CONFIG: Config = {\r\n\tmeta: {\r\n\t\tuseTitleSuffix: false,\r\n\t\twarnMissingGuard: true,\r\n\t\tdefaults: {}\r\n\t},\r\n\tsocket: false,\r\n\thttp: {\r\n\t\turl: '',\r\n\t\theaders: {}\r\n\t},\r\n\tstore: {\r\n\t\tprefix: ''\r\n\t}\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface Alert {\r\n\tonClose?: any;\r\n\talerts?:object;\r\n\tcomponent?: any;\r\n\ttext?:string;\r\n\ticon?:string;\r\n\ttype?: string;\r\n\tclass?: string;\r\n\tunique?: string;\r\n\tprogress?: boolean;\r\n\tposition?: string;\r\n\ttimeout?: any;\r\n\tclosable?: boolean;\r\n\tclose?: any;\r\n\tbuttons?: any;\r\n\t[x: string]: any;\r\n}\r\nexport const DEFAULT_Alert: Alert = {\r\n\talerts: {},\r\n\ttext: '',\r\n\ttype: 'info',\r\n\tclass: '',\r\n\tprogress: true,\r\n\tposition: 'bottomRight',\r\n\ttimeout: 5000,\r\n\tclosable: true,\r\n\tbuttons: []\r\n}\r\n","import { Injectable, Inject, PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n// Add capitalize method to String prototype if it doesn't already exist\r\nif (!String.prototype.capitalize) {\r\n\tString.prototype.capitalize = function (): string {\r\n\t\tif (this.length > 0) {\r\n\t\t\treturn this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();\r\n\t\t}\r\n\t\treturn '';\r\n\t};\r\n}\r\n\r\n// Extend the String interface to include the new method\r\ndeclare global {\r\n\tinterface String {\r\n\t\tcapitalize(): string;\r\n\t}\r\n}\r\n\r\ndeclare var cordova: any;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CoreService {\r\n\tssr = false;\r\n\tlocalStorage: any; // = localStorage;\r\n\tnavigator: any; // = navigator;\r\n\tdocument: any; // = document;\r\n\twindow: any; // = window;\r\n\tconstructor(@Inject(PLATFORM_ID) private platformId: boolean) {\r\n\t\tthis.ssr = isPlatformServer(this.platformId);\r\n\r\n\t\tif (isPlatformServer(this.platformId)) {\r\n\t\t\tthis.localStorage = {\r\n\t\t\t\tgetItem: () => { },\r\n\t\t\t\tsetItem: () => { },\r\n\t\t\t\tremoveItem: () => { },\r\n\t\t\t\tclear: () => { },\r\n\t\t\t};\r\n\r\n\t\t\tthis.document = {\r\n\t\t\t\tquerySelectorAll: () => { },\r\n\t\t\t\taddEventListener: () => { },\r\n\t\t\t\tremoveEventListener: () => { },\r\n\t\t\t\tdocumentElement: {},\r\n\t\t\t\tbody: {},\r\n\t\t\t};\r\n\r\n\t\t\tthis.window = {\r\n\t\t\t\tlocation: {\r\n\t\t\t\t\thost: '',\r\n\t\t\t\t},\r\n\t\t\t\taddEventListener: () => { },\r\n\t\t\t\tremoveEventListener: () => { },\r\n\t\t\t\tsetTimeout: () => { },\r\n\t\t\t};\r\n\r\n\t\t\tthis.navigator = {\r\n\t\t\t\tuserAgent: '',\r\n\t\t\t\tplatform: '',\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tthis.localStorage = localStorage;\r\n\r\n\t\t\tthis.document = document;\r\n\r\n\t\t\tthis.window = window;\r\n\r\n\t\t\tthis.navigator = navigator;\r\n\t\t}\r\n\r\n\t\tthis.detectDevice();\r\n\t}\r\n\r\n\t/**\r\n\t * Converts an object to an array. Optionally holds keys instead of values.\r\n\t *\r\n\t * @param {any} obj - The object to be converted.\r\n\t * @param {boolean} [holder=false] - If true, the keys will be held in the array; otherwise, the values will be held.\r\n\t * @returns {any[]} The resulting array.\r\n\t */\r\n\tota(obj: any, holder: boolean = false): any[] {\r\n\t\tif (Array.isArray(obj)) return obj;\r\n\t\tif (typeof obj !== 'object' || obj === null) return [];\r\n\t\tconst arr = [];\r\n\t\tfor (const each in obj) {\r\n\t\t\tif (\r\n\t\t\t\tobj.hasOwnProperty(each) &&\r\n\t\t\t\t(obj[each] ||\r\n\t\t\t\t\ttypeof obj[each] === 'number' ||\r\n\t\t\t\t\ttypeof obj[each] === 'boolean')\r\n\t\t\t) {\r\n\t\t\t\tif (holder) {\r\n\t\t\t\t\tarr.push(each);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tarr.push(obj[each]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn arr;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes elements from `fromArray` that are present in `removeArray` based on a comparison field.\r\n\t *\r\n\t * @param {any[]} removeArray - The array of elements to remove.\r\n\t * @param {any[]} fromArray - The array from which to remove elements.\r\n\t * @param {string} [compareField='_id'] - The field to use for comparison.\r\n\t * @returns {any[]} The modified `fromArray` with elements removed.\r\n\t */\r\n\tsplice(\r\n\t\tremoveArray: any[],\r\n\t\tfromArray: any[],\r\n\t\tcompareField: string = '_id'\r\n\t): any[] {\r\n\t\tif (!Array.isArray(removeArray) || !Array.isArray(fromArray)) {\r\n\t\t\treturn fromArray;\r\n\t\t}\r\n\r\n\t\tconst removeSet = new Set(\r\n\t\t\tremoveArray.map((item) => item[compareField])\r\n\t\t);\r\n\t\treturn fromArray.filter((item) => !removeSet.has(item[compareField]));\r\n\t}\r\n\r\n\t/**\r\n\t * Unites multiple _id values into a single unique _id.\r\n\t * The resulting _id is unique regardless of the order of the input _id values.\r\n\t *\r\n\t * @param {...string[]} args - The _id values to be united.\r\n\t * @returns {string} The unique combined _id.\r\n\t */\r\n\tids2id(...args: string[]): string {\r\n\t\targs.sort((a, b) => {\r\n\t\t\tif (\r\n\t\t\t\tNumber(a.toString().substring(0, 8)) >\r\n\t\t\t\tNumber(b.toString().substring(0, 8))\r\n\t\t\t) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t\treturn -1;\r\n\t\t});\r\n\r\n\t\treturn args.join();\r\n\t}\r\n\r\n\t// After While\r\n\tprivate _afterWhile: Record<string, number> = {};\r\n\t/**\r\n\t * Delays the execution of a callback function for a specified amount of time.\r\n\t * If called again within that time, the timer resets.\r\n\t *\r\n\t * @param {string | object | (() => void)} doc - A unique identifier for the timer, an object to host the timer, or the callback function.\r\n\t * @param {() => void} [cb] - The callback function to execute after the delay.\r\n\t * @param {number} [time=1000] - The delay time in milliseconds.\r\n\t */\r\n\tafterWhile(\r\n\t\tdoc: string | object | (() => void),\r\n\t\tcb?: () => void,\r\n\t\ttime: number = 1000\r\n\t): void {\r\n\t\tif (typeof doc === 'function') {\r\n\t\t\tcb = doc as () => void;\r\n\t\t\tdoc = 'common';\r\n\t\t}\r\n\r\n\t\tif (typeof cb === 'function' && typeof time === 'number') {\r\n\t\t\tif (typeof doc === 'string') {\r\n\t\t\t\tclearTimeout(this._afterWhile[doc]);\r\n\t\t\t\tthis._afterWhile[doc] = this.window.setTimeout(cb, time);\r\n\t\t\t} else if (typeof doc === 'object') {\r\n\t\t\t\tclearTimeout((doc as { __afterWhile: number }).__afterWhile);\r\n\t\t\t\t(doc as { __afterWhile: number }).__afterWhile =\r\n\t\t\t\t\tthis.window.setTimeout(cb, time);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.warn('badly configured after while');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Recursively copies properties from one object to another.\r\n\t * Handles nested objects, arrays, and Date instances appropriately.\r\n\t *\r\n\t * @param from - The source object from which properties are copied.\r\n\t * @param to - The target object to which properties are copied.\r\n\t */\r\n\tcopy(from: any, to: any) {\r\n\t\tfor (const each in from) {\r\n\t\t\tif (\r\n\t\t\t\ttypeof from[each] !== 'object' ||\r\n\t\t\t\tfrom[each] instanceof Date ||\r\n\t\t\t\tArray.isArray(from[each]) ||\r\n\t\t\t\tfrom[each] === null\r\n\t\t\t) {\r\n\t\t\t\tto[each] = from[each];\r\n\t\t\t} else {\r\n\t\t\t\tif (\r\n\t\t\t\t\ttypeof to[each] !== 'object' ||\r\n\t\t\t\t\tto[each] instanceof Date ||\r\n\t\t\t\t\tArray.isArray(to[each]) ||\r\n\t\t\t\t\tto[each] === null\r\n\t\t\t\t) {\r\n\t\t\t\t\tto[each] = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.copy(from[each], to[each]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Device management\r\n\tdevice: string = '';\r\n\t/**\r\n\t * Detects the device type based on the user agent.\r\n\t */\r\n\tdetectDevice(): void {\r\n\t\tconst userAgent =\r\n\t\t\tthis.navigator.userAgent || this.navigator.vendor || (this.window as any).opera;\r\n\t\tif (/windows phone/i.test(userAgent)) {\r\n\t\t\tthis.device = 'Windows Phone';\r\n\t\t} else if (/android/i.test(userAgent)) {\r\n\t\t\tthis.device = 'Android';\r\n\t\t} else if (\r\n\t\t\t/iPad|iPhone|iPod/.test(userAgent) &&\r\n\t\t\t!(this.window as any).MSStream\r\n\t\t) {\r\n\t\t\tthis.device = 'iOS';\r\n\t\t} else {\r\n\t\t\tthis.device = 'Web';\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the device is a mobile device.\r\n\t * @returns {boolean} - Returns true if the device is a mobile device.\r\n\t */\r\n\tisMobile(): boolean {\r\n\t\treturn (\r\n\t\t\tthis.device === 'Windows Phone' ||\r\n\t\t\tthis.device === 'Android' ||\r\n\t\t\tthis.device === 'iOS'\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the device is a tablet.\r\n\t * @returns {boolean} - Returns true if the device is a tablet.\r\n\t */\r\n\tisTablet(): boolean {\r\n\t\treturn this.device === 'iOS' && /iPad/.test(navigator.userAgent);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the device is a web browser.\r\n\t * @returns {boolean} - Returns true if the device is a web browser.\r\n\t */\r\n\tisWeb(): boolean {\r\n\t\treturn this.device === 'Web';\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the device is an Android device.\r\n\t * @returns {boolean} - Returns true if the device is an Android device.\r\n\t */\r\n\tisAndroid(): boolean {\r\n\t\treturn this.device === 'Android';\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the device is an iOS device.\r\n\t * @returns {boolean} - Returns true if the device is an iOS device.\r\n\t */\r\n\tisIos(): boolean {\r\n\t\treturn this.device === 'iOS';\r\n\t}\r\n\r\n\t// Version management\r\n\tversion = '1.0.0';\r\n\tappVersion = '';\r\n\tdateVersion = '';\r\n\t/**\r\n\t * Sets the combined version string based on appVersion and dateVersion.\r\n\t */\r\n\tsetVersion(): void {\r\n\t\tthis.version = this.appVersion || '';\r\n\t\tthis.version += this.version && this.dateVersion ? ' ' : '';\r\n\t\tthis.version += this.dateVersion || '';\r\n\t}\r\n\t/**\r\n\t * Sets the app version and updates the combined version string.\r\n\t *\r\n\t * @param {string} appVersion - The application version to set.\r\n\t */\r\n\tsetAppVersion(appVersion: string): void {\r\n\t\tthis.appVersion = appVersion;\r\n\t\tthis.setVersion();\r\n\t}\r\n\t/**\r\n\t * Sets the date version and updates the combined version string.\r\n\t *\r\n\t * @param {string} dateVersion - The date version to set.\r\n\t */\r\n\tsetDateVersion(dateVersion: string): void {\r\n\t\tthis.dateVersion = dateVersion;\r\n\t\tthis.setVersion();\r\n\t}\r\n\r\n\t// Signal management\r\n\tprivate _signals: Record<string, Subject<any>> = {};\r\n\r\n\t/**\r\n\t * Emits a signal, optionally passing data to the listeners.\r\n\t * @param signal - The name of the signal to emit.\r\n\t * @param data - Optional data to pass to the listeners.\r\n\t */\r\n\temit(signal: string, data?: any): void {\r\n\t\tif (!this._signals[signal]) {\r\n\t\t\tthis._signals[signal] = new Subject<any>();\r\n\t\t}\r\n\t\tthis._signals[signal].next(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an Observable that emits values when the specified signal is emitted.\r\n\t * Multiple components or services can subscribe to this Observable to be notified of the signal.\r\n\t * @param signal - The name of the signal to listen for.\r\n\t * @returns An Observable that emits when the signal is emitted.\r\n\t */\r\n\ton(signal: string): Observable<any> {\r\n\t\tif (!this._signals[signal]) {\r\n\t\t\tthis._signals[signal] = new Subject<any>();\r\n\t\t}\r\n\t\treturn this._signals[signal].asObservable();\r\n\t}\r\n\r\n\t/**\r\n\t * Completes the Subject for a specific signal, effectively stopping any future emissions.\r\n\t * This also unsubscribes all listeners for the signal.\r\n\t * @param signal - The name of the signal to stop.\r\n\t */\r\n\toff(signal: string): void {\r\n\t\tif (!this._signals[signal]) return;\r\n\t\tthis._signals[signal].complete();\r\n\t\tdelete this._signals[signal];\r\n\t}\r\n\r\n\t// Await management\r\n\tprivate _completed: Record<string, boolean> = {};\r\n\tprivate _completeResolvers: Record<string, (() => void)[]> = {};\r\n\r\n\t/**\r\n\t * Marks a task as complete.\r\n\t * @param task - The task to mark as complete, identified by a string.\r\n\t */\r\n\tcomplete(task: string): void {\r\n\t\tthis._completed[task] = true;\r\n\t\tif (this._completeResolvers[task]) {\r\n\t\t\tthis._completeResolvers[task].forEach((resolve) => resolve());\r\n\t\t\tthis._completeResolvers[task] = [];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a Promise that resolves when the specified task is complete.\r\n\t * @param task - The task to watch for completion, identified by a string.\r\n\t * @returns A Promise that resolves when the task is complete.\r\n\t */\r\n\tonComplete(task: string): Promise<void> {\r\n\t\tif (this._completed[task]) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tif (!this._completeResolvers[task]) {\r\n\t\t\t\tthis._completeResolvers[task] = [];\r\n\t\t\t}\r\n\t\t\tthis._completeResolvers[task].push(resolve);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if a task is completed.\r\n\t * @param task - The task to check, identified by a string.\r\n\t * @returns True if the task is completed, false otherwise.\r\n\t */\r\n\tcompleted(task: string): boolean {\r\n\t\treturn !!this._completed[task];\r\n\t}\r\n\r\n\t// Locking management\r\n\tprivate _locked: Record<string, boolean> = {};\r\n\tprivate _unlockResolvers: Record<string, (() => void)[]> = {};\r\n\r\n\t/**\r\n\t * Locks a resource to prevent concurrent access.\r\n\t * @param which - The resource to lock, identified by a string.\r\n\t */\r\n\tlock(which: string): void {\r\n\t\tthis._locked[which] = true;\r\n\t\tif (!this._unlockResolvers[which]) {\r\n\t\t\tthis._unlockResolvers[which] = [];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Unlocks a resource, allowing access.\r\n\t * @param which - The resource to unlock, identified by a string.\r\n\t */\r\n\tunlock(which: string): void {\r\n\t\tthis._locked[which] = false;\r\n\t\tif (this._unlockResolvers[which]) {\r\n\t\t\tthis._unlockResolvers[which].forEach((resolve) => resolve());\r\n\t\t\tthis._unlockResolvers[which] = [];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a Promise that resolves when the specified resource is unlocked.\r\n\t * @param which - The resource to watch for unlocking, identified by a string.\r\n\t * @returns A Promise that resolves when the resource is unlocked.\r\n\t */\r\n\tonUnlock(which: string): Promise<void> {\r\n\t\tif (!this._locked[which]) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tif (!this._unlockResolvers[which]) {\r\n\t\t\t\tthis._unlockResolvers[which] = [];\r\n\t\t\t}\r\n\t\t\tthis._unlockResolvers[which].push(resolve);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if a resource is locked.\r\n\t * @param which - The resource to check, identified by a string.\r\n\t * @returns True if the resource is locked, false otherwise.\r\n\t */\r\n\tlocked(which: string): boolean {\r\n\t\treturn !!this._locked[which];\r\n\t}\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { Title, Meta } from '@angular/platform-browser';\r\nimport { Router, Route } from '@angular/router';\r\nimport { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from '../interfaces/config';\r\nimport { CoreService } from './core.service';\r\n\r\nconst isDefined = (val: any) => typeof val !== 'undefined';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class MetaService {\r\n\tprivate _meta: any;\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate meta: Meta,\r\n\t\tprivate core: CoreService,\r\n\t\tprivate titleService: Title,\r\n\t\t@Inject(CONFIG_TOKEN) @Optional() private config: Config\r\n\t) {\r\n\t\tthis.config = this.config || DEFAULT_CONFIG;\r\n\t\tthis._meta = this.config.meta || {};\r\n\t\tthis._warnMissingGuard();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the default meta tags.\r\n\t *\r\n\t * @param defaults - The default meta tags.\r\n\t */\r\n\tsetDefaults(defaults: { [key: string]: string }): void {\r\n\t\tthis._meta.defaults = defaults;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the title and optional title suffix.\r\n\t *\r\n\t * @param title - The title to set.\r\n\t * @param titleSuffix - The title suffix to append.\r\n\t * @returns The MetaService instance.\r\n\t */\r\n\tsetTitle(title?: string, titleSuffix?: string): MetaService {\r\n\t\tlet titleContent = isDefined(title) ? title : this._meta.defaults['title'] || '';\r\n\t\tif (this._meta.useTitleSuffix) {\r\n\t\t\ttitleContent += isDefined(titleSuffix) ? titleSuffix : this._meta.defaults['titleSuffix'] || '';\r\n\t\t}\r\n\t\tthis._updateMetaTag('title', titleContent);\r\n\t\tthis._updateMetaTag('og:title', titleContent);\r\n\t\tthis.titleService.setTitle(titleContent);\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets link tags.\r\n\t *\r\n\t * @param links - The links to set.\r\n\t * @returns The MetaService instance.\r\n\t */\r\n\tsetLink(links: { [key: string]: string }): MetaService {\r\n\t\tObject.keys(links).forEach(rel => {\r\n\t\t\tlet link: HTMLLinkElement = this.core.document.createElement('link');\r\n\t\t\tlink.setAttribute('rel', rel);\r\n\t\t\tlink.setAttribute('href', links[rel]);\r\n\t\t\tthis.core.document.head.appendChild(link);\r\n\t\t});\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a meta tag.\r\n\t *\r\n\t * @param tag - The meta tag name.\r\n\t * @param value - The meta tag value.\r\n\t * @param prop - The meta tag property.\r\n\t * @returns The MetaService instance.\r\n\t */\r\n\tsetTag(tag: string, value: string, prop?: string): MetaService {\r\n\t\tif (tag === 'title' || tag === 'titleSuffix') {\r\n\t\t\tthrow new Error(`Attempt to set ${tag} through 'setTag': 'title' and 'titleSuffix' are reserved tag names. Please use 'MetaService.setTitle' instead`);\r\n\t\t}\r\n\t\tconst content = isDefined(value) ? value : this._meta.defaults[tag] || '';\r\n\t\tthis._updateMetaTag(tag, content, prop);\r\n\t\tif (tag === 'description') {\r\n\t\t\tthis._updateMetaTag('og:description', content, prop);\r\n\t\t\tthis._updateMetaTag('twitter:description', content, prop);\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates a meta tag.\r\n\t *\r\n\t * @param tag - The meta tag name.\r\n\t * @param value - The meta tag value.\r\n\t * @param prop - The meta tag property.\r\n\t */\r\n\tprivate _updateMetaTag(tag: string, value: string, prop?: string): void {\r\n\t\tprop = prop || (tag.startsWith('og:') || tag.startsWith('twitter:') ? 'property' : 'name');\r\n\t\tthis.meta.updateTag({ [prop]: tag, content: value });\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a meta tag.\r\n\t *\r\n\t * @param tag - The meta tag name.\r\n\t * @param prop - The meta tag property.\r\n\t */\r\n\tremoveTag(tag: string, prop?: string): void {\r\n\t\tprop = prop || (tag.startsWith('og:') || tag.startsWith('twitter:') ? 'property' : 'name');\r\n\t\tthis.meta.removeTag(`${prop}=\"${tag}\"`);\r\n\t}\r\n\r\n\t/**\r\n\t * Warns about missing meta guards in routes.\r\n\t */\r\n\tprivate _warnMissingGuard(): void {\r\n\t\tif (isDefined(this._meta.warnMissingGuard) && !this._meta.warnMissingGuard) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst hasDefaultMeta = !!Object.keys(this._meta.defaults).length;\r\n\t\tconst hasMetaGuardInArr = (it: any) => (it && it.IDENTIFIER === 'MetaGuard');\r\n\t\tlet hasShownWarnings = false;\r\n\t\tthis.router.config.forEach((route: Route) => {\r\n\t\t\tconst hasRouteMeta = route.data && route.data['meta'];\r\n\t\t\tconst showWarning = !isDefined(route.redirectTo) && (hasDefaultMeta || hasRouteMeta) && !(route.canActivate || []).some(hasMetaGuardInArr);\r\n\t\t\tif (showWarning) {\r\n\t\t\t\tconsole.warn(`Route with path \"${route.path}\" has ${hasRouteMeta ? '' : 'default '}meta tags, but does not use MetaGuard. Please add MetaGuard to the canActivate array in your route configuration`);\r\n\t\t\t\thasShownWarnings = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (hasShownWarnings) {\r\n\t\t\tconsole.warn(`To disable these warnings, set metaConfig.warnMissingGuard: false in your MetaConfig passed to MetaModule.forRoot()`);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { MetaService } from '../services/meta.service';\r\nimport { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from '../interfaces/config';\r\n\r\n@Injectable()\r\nexport class MetaGuard {\r\n\tpublic static IDENTIFIER = 'MetaGuard';\r\n\tprivate _meta: any;\r\n\tpublic constructor(\r\n\t\tprivate metaService: MetaService,\r\n\t\t@Inject(CONFIG_TOKEN) @Optional() private config: Config\r\n\t) {\r\n\t\tthis._meta = config.meta;\r\n\t\tif (!this.config) this.config = DEFAULT_CONFIG;\r\n\t}\r\n\tpublic canActivate(\r\n\t\troute: ActivatedRouteSnapshot,\r\n\t\tstate: RouterStateSnapshot\r\n\t): boolean {\r\n\t\tthis._processRouteMetaTags(route.data && route.data['meta']);\r\n\t\treturn true;\r\n\t}\r\n\tprivate _processRouteMetaTags(meta: any = {}) {\r\n\t\tif (meta.disableUpdate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (meta.title) {\r\n\t\t\tthis.metaService.setTitle(meta.title, meta.titleSuffix);\r\n\t\t}\r\n\t\tif (Array.isArray(meta.links)) {\r\n\t\t\tthis.metaService.setLink(meta.links);\r\n\t\t} else if (typeof meta.links === 'string') {\r\n\t\t\tthis.metaService.setLink(meta.links.split(' '));\r\n\t\t}\r\n\t\tif (Array.isArray(this._meta.defaults?.links)) {\r\n\t\t\tthis.metaService.setLink(this._meta.defaults?.links);\r\n\t\t} else if (typeof this._meta.defaults?.links === 'string') {\r\n\t\t\tthis.metaService.setLink(this._meta.defaults?.links.split(' '));\r\n\t\t}\r\n\t\tObject.keys(meta).forEach((prop) => {\r\n\t\t\tif (\r\n\t\t\t\tprop === 'title' ||\r\n\t\t\t\tprop === 'titleSuffix' ||\r\n\t\t\t\tprop === 'links'\r\n\t\t\t) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tObject.keys(meta[prop]).forEach((key) => {\r\n\t\t\t\tthis.metaService.setTag(key, meta[prop][key], prop);\r\n\t\t\t});\r\n\t\t});\r\n\t\tObject.keys(this._meta.defaults).forEach((key) => {\r\n\t\t\tif (\r\n\t\t\t\tkey in meta ||\r\n\t\t\t\tkey === 'title' ||\r\n\t\t\t\tkey === 'titleSuffix' ||\r\n\t\t\t\tkey === 'links'\r\n\t\t\t) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.metaService.setTag(key, this._meta.defaults[key]);\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component, ViewChild } from '@angular/core';\r\nimport { CoreService } from '../../services/core.service';\r\n\r\n@Component({\r\n\tselector: 'alert',\r\n\ttemplateUrl: './alert.component.html',\r\n\tstyleUrls: ['./alert.component.scss'],\r\n})\r\nexport class AlertComponent {\r\n\t@ViewChild('alert', { static: false }) alert: any;\r\n\tcomponent: any;\r\n\ttext: string = '';\r\n\tclass: string = '';\r\n\ttype: string = 'info';\r\n\tprogress: boolean = true;\r\n\tposition: string = 'bottomRight'; // [bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter or center]\r\n\ticon: string = '';\r\n\ttimeout: any = 5000;\r\n\tclose: any;\r\n\tclosable: any = true;\r\n\tbuttons: any = []; /*[{text, callback}]*/\r\n\r\n\tconstructor(public core: CoreService) {\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (this.timeout) {\r\n\t\t\t\tlet remaining = JSON.parse(JSON.stringify(this.timeout));\r\n\t\t\t\tlet timer = setTimeout(() => {\r\n\t\t\t\t\tthis.remove();\r\n\t\t\t\t}, remaining);\r\n\t\t\t\tlet start = new Date();\r\n\t\t\t\tthis.alert.nativeElement.addEventListener(\r\n\t\t\t\t\t'mouseenter',\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tclearTimeout(timer);\r\n\t\t\t\t\t\tremaining -= new Date().getTime() - start.getTime();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t\tthis.alert.nativeElement.addEventListener(\r\n\t\t\t\t\t'mouseleave',\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tstart = new Date();\r\n\t\t\t\t\t\tclearTimeout(timer);\r\n\t\t\t\t\t\ttimer = core.window.setTimeout(() => {\r\n\t\t\t\t\t\t\tthis.remove();\r\n\t\t\t\t\t\t}, remaining);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\tpublic delete_animation = false;\r\n\tremove() {\r\n\t\tthis.delete_animation = true;\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.close();\r\n\t\t\tthis.delete_animation = false;\r\n\t\t}, 350);\r\n\t}\r\n}\r\n","<div\r\n *ngIf=\"text\"\r\n [ngClass]=\"class\"\r\n class=\"waw-alert-container height\"\r\n [class._close]=\"delete_animation\"\r\n>\r\n <div\r\n [class.waw-alert-color-blue]=\"type == 'info'\"\r\n [class.waw-alert-color-red]=\"type == 'error'\"\r\n [class.waw-alert-color-green]=\"type == 'success'\"\r\n [class.waw-alert-color-orange]=\"type == 'warning'\"\r\n [class.waw-alert-color-yellow]=\"type == 'question'\"\r\n class=\"waw-alert bounceInUp waw-alert-theme-light waw-alert-animateInside waw-alert-opened\"\r\n #alert\r\n >\r\n <div class=\"waw-alert__progress\" *ngIf=\"progress\">\r\n <span\r\n [ngStyle]=\"{ 'animation-duration': (timeout + 350) / 1000 + 's' }\"\r\n ></span>\r\n </div>\r\n <div class=\"waw-alert-body\">\r\n <div *ngIf=\"!component\" class=\"waw-alert-texts\">\r\n <div *ngIf=\"icon\" class=\"{{ icon }}\"></div>\r\n <div class=\"waw-alert-message slideIn\">{{ text }}</div>\r\n </div>\r\n <div *ngIf=\"!component && type == 'question'\">\r\n <button\r\n class=\"alert-btn\"\r\n *ngFor=\"let b of buttons\"\r\n (click)=\"remove(); b.callback && b.callback()\"\r\n >\r\n {{ b.text }}\r\n </button>\r\n </div>\r\n <div class=\"waw-alert__close\" *ngIf=\"closable\" (click)=\"remove()\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'lib-modal',\r\n\ttemplateUrl: './modal.component.html',\r\n\tstyleUrls: ['./modal.component.scss'],\r\n})\r\nexport class ModalComponent implements OnInit {\r\n\tclass: string = '';\r\n\tsize: string = 'flex';\r\n\tclosable: boolean = true;\r\n\tclose: any;\r\n\tonOpen: any;\r\n\ttimestart: any;\r\n\ttimeout: any;\r\n\tshowModal = false;\r\n\tallowClose = true;\r\n\tonClickOutside: any;\r\n\tngOnInit() {\r\n\t\tif (typeof this.onClickOutside !== 'function') {\r\n\t\t\tthis.onClickOutside = this.close;\r\n\t\t\t// this.onClickOutside = () => {\r\n\t\t\t// \tif (this.allowClose) {\r\n\t\t\t// \t\tthis.close();\r\n\t\t\t// \t}\r\n\r\n\t\t\t// \tthis.allowClose = true;\r\n\t\t\t// };\r\n\t\t}\r\n\r\n\t\tif (typeof this.onOpen == 'function') this.onOpen();\r\n\r\n\t\twindow.addEventListener('popstate', this.popStateListener.bind(this));\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.showModal = true;\r\n\t\t}, this.timestart || 0);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\twindow.removeEventListener('popstate', this.popStateListener.bind(this));\r\n\t}\r\n\r\n\tpopStateListener(e: Event) {\r\n\t\tthis.close();\r\n\t}\r\n}\r\n","<div [hidden]=\"!showModal\" class=\"modal\" [ngClass]=\"class + ' ' + size\" (click)=\"onClickOutside()\">\r\n\t<!-- (click)=\"$event.stopPropagation()\" -->\r\n\t<!-- <div class=\"modal-content\" (mousedown)=\"allowClose = false\"> -->\r\n\t<div class=\"modal-content\" (click)=\"$event.stopPropagation();\">\r\n\t\t<div><!-- Content Will Drop Here --></div>\r\n\t\t<span class=\"close\" (click)=\"close()\" *ngIf=\"closable\">&times;</span>\r\n\t</div>\r\n</div>\r\n","import { Component, ViewChild} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss']\r\n})\r\n\r\nexport class LoaderComponent {\r\n @ViewChild('loader', { static: false }) loader: any;\r\n public text: string = \"Loading\";\r\n public class: string = \"\";\r\n public progress: boolean = true;\r\n public timeout: number = 5000;\r\n public close: any;\r\n public closable: any = true;\r\n constructor() { }\r\n ngOnInit(){\r\n if(this.timeout){\r\n setTimeout(()=>{\r\n this.close();\r\n }, this.timeout)\r\n }\r\n }\r\n}\r\n","<div style=\"position: fixed; width: 100%; height: 100%; left: 0; top: 0; background-color: #334d6e; display: flex; justify-content: center; align-items: center; z-index: 999999;\" #loader>\r\n\t<span class=\"close\" (click)=\"close()\" *ngIf=\"closable\">&times;</span>\r\n\t<span style=\"font-size: 30px; color: white;\">\r\n\t\t{{text}}\r\n\t</span>\r\n</div>","import { Directive, ElementRef, EventEmitter, Output, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n\tselector: '[clickOutside]'\r\n})\r\nexport class ClickOutsideDirective {\r\n\t@Output() clickOutside: EventEmitter<Event> = new EventEmitter<Event>();\r\n\r\n\tconstructor(private elementRef: ElementRef) { }\r\n\r\n\t@HostListener('document:click', ['$event'])\r\n\tonClick(event: Event): void {\r\n\t\tconst clickedInside = this.elementRef.nativeElement.contains(event.target);\r\n\t\tif (!clickedInside) {\r\n\t\t\tthis.clickOutside.emit(event);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'arr'\r\n})\r\nexport class ArrPipe implements PipeTransform {\r\n\ttransform(data: any, type?: any, refresh?:any): any {\r\n\t\tif(!data) { return []; }\r\n\t\tif(typeof data == 'string') return data.split(type||' ');\r\n\t\tif(Array.isArray(data)) { return data; }\r\n\t\tif(typeof data != 'object') { return []; }\r\n\t\tlet arr = [];\r\n\t\tfor (let each in data) {\r\n\t\t\tif(!data[each]) continue;\r\n\t\t\tif(type == 'prop'){\r\n\t\t\t\tarr.push(each);\r\n\t\t\t}else if(type == 'value'){\r\n\t\t\t\tarr.push(data[each]);\r\n\t\t\t}else{\r\n\t\t\t\tarr.push({\r\n\t\t\t\t\tprop: each,\r\n\t\t\t\t\tvalue: data[each]\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn arr;\r\n\t}\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'mongodate'\r\n})\r\nexport class MongodatePipe implements PipeTransform {\r\n\ttransform(_id: any){\r\n\t\tif(!_id) return new Date();\r\n\t\tlet timestamp = _id.toString().substring(0,8);\r\n\t\treturn new Date(parseInt(timestamp,16)*1000);\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'page',\r\n\tpure: false\r\n})\r\nexport class PaginationPipe implements PipeTransform {\r\n\ttransform(arr: any, config:any, sort:any, search=''): any {\r\n if(!Array.isArray(arr)) return [];\r\n\t\tarr = arr.slice();\r\n\t\tfor (let i = 0; i < arr.length; i++){\r\n\t\t arr[i].num = i+1;\r\n\t\t}\r\n\t\tif(sort.direction) {\r\n arr.sort((a:any, b:any)=> {\r\n if (a[sort.title] < b[sort.title]) {\r\n return (sort.direction=='desc') ? 1 : -1;\r\n }\r\n if (a[sort.title] > b[sort.title]) {\r\n return (sort.direction=='desc') ? -1 : 1;\r\n }\r\n return 0;\r\n })\r\n }\r\n\t\treturn arr.slice((config.page-1)*config.perPage, config.page*config.perPage);;\r\n\t}\r\n}","import { Pipe } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n@Pipe({name: 'safe'})\r\nexport class SafePipe {\r\n\tconstructor(private sanitizer: DomSanitizer){}\r\n\ttransform(html: any) {\r\n\t\treturn this.sanitizer.bypassSecurityTrustResourceUrl(html);\r\n\t}\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n/*\r\n*\tAuthor: Honchar Denys\r\n*\tSearch for any content in any type of given documents\r\n*\tAlways returning an array, even if nothing is provided\r\n*/\r\n@Pipe({\r\n\tname: 'search'\r\n})\r\nexport class SearchPipe implements PipeTransform {\r\n\tprivate c = 0;\r\n\t// transform(given: any, search?: any, fields?: any, l?: any, i?: any, reload?: any): any {\r\n\ttransform(given: any, s?: any, f?: any, l?: any, i?: any, reload?: any): any {\r\n\t\t// given stands for the provided array with docs\r\n\t\t// s stands for search\r\n\t\t// f stands for fields\r\n\t\t// l stands for limit\r\n\t\t// i stands for ignore filter\r\n\t\t// start stands for start the limit\r\n\t\tif (!s) {\r\n\t\t\treturn given;\r\n\t\t}\r\n\t\tif (typeof f == 'number') {\r\n\t\t\tl = f;\r\n\t\t\tf = null;\r\n\t\t}\r\n\t\tif (i || !s) {\r\n\t\t\tif (l && Array.isArray(given)) return given.slice(0, l);\r\n\t\t\telse return given || [];\r\n\t\t}\r\n\t\tlet _arr: any = [], _check: any = {};\r\n\t\tif (!Array.isArray(s) && typeof s == 'object') {\r\n\t\t\tlet _s = [];\r\n\t\t\tfor (let key in s) {\r\n\t\t\t\tif (s[key]) _s.push(key);\r\n\t\t\t}\r\n\t\t\ts = _s;\r\n\t\t}\r\n\t\tif (typeof s == 'string') {\r\n\t\t\ts = [s];\r\n\t\t}\r\n\t\tif (!f) f = ['name'];\r\n\t\tif (typeof f == 'string') f = f.split(' ');\r\n\t\tlet sub_test = function (obj: any, _f: any, initObj: any, check: any): any {\r\n\t\t\tif (!obj) return;\r\n\t\t\tif (_f.indexOf('.') > -1) {\r\n\t\t\t\tlet sub = _f.split('.');\r\n\t\t\t\tlet nsub = sub.shift();\r\n\t\t\t\tif (Array.isArray(obj[nsub])) {\r\n\t\t\t\t\tfor (let s = 0; s < obj[nsub].length; s++) {\r\n\t\t\t\t\t\tsub_test(obj[nsub][s], sub.join('.'), initObj, check);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn sub_test(obj[nsub], sub.join('.'), initObj, check);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (let j = 0; j < s.length; j++) {\r\n\t\t\t\tlet b = false;\r\n\t\t\t\tif (obj[_f] && (typeof obj[_f] == 'string' || typeof obj[_f] == 'number') &&\r\n\t\t\t\t\ttypeof s[j] == 'string' &&\r\n\t\t\t\t\t(obj[_f].toString().toLowerCase().indexOf(s[j].toLowerCase()) > -1 ||\r\n\t\t\t\t\t\ts[j].toLowerCase().indexOf(obj[_f].toString().toLowerCase()) > -1)) {\r\n\t\t\t\t\tif (!_check[check]) _arr.push(initObj);\r\n\t\t\t\t\t_check[check] = true;\r\n\t\t\t\t\tb = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (b) break;\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet test = function (obj: any, check: any) {\r\n\t\t\tfor (let i = 0; i < f.length; i++) {\r\n\t\t\t\tsub_test(obj, f[i], obj, check);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (Array.isArray(given)) {\r\n\t\t\tfor (let i = 0; i < given.length; i++) {\r\n\t\t\t\ttest(given[i], i);\r\n\t\t\t}\r\n\t\t} else if (typeof given == 'object') {\r\n\t\t\tfor (let key in given) {\r\n\t\t\t\ttest(given[key], key);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (l) return _arr.splice(0, l);\r\n\t\treturn _arr;\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'splice'\r\n})\r\nexport class SplicePipe implements PipeTransform {\r\n\ttransform(from: any, which: any, refresh?:number): any {\r\n\t\tif(Array.isArray(from)) from = { arr: from, prop: '_id' };\r\n\t\tlet arr = which.keep && [] || from.arr.slice();\r\n\t\tif(Array.isArray(which)) which = { arr: which, prop: '_id' };\r\n\t\tfor (let i = from.arr.length-1; i >= 0; i--){\r\n\t\t\tfor (let j = 0; j < which.arr.length; j++){\r\n\t\t\t\tif(from.prop && which.prop){\r\n\t\t\t\t\tif(from.arr[i][from.prop] == which.arr[j][which.prop]){\r\n\t\t\t\t\t\tif(which.keep){\r\n\t\t\t\t\t\t\tarr.push(from.arr[i]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tarr.splice(i, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(from.prop){\r\n\t\t\t\t\tif(from.arr[i][from.prop] == which.arr[j]){\r\n\t\t\t\t\t\tif(which.keep){\r\n\t\t\t\t\t\t\tarr.push(from.arr[i]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tarr.splice(i, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(which.prop){\r\n\t\t\t\t\tif(from.arr[i] == which.arr[j][which.prop]){\r\n\t\t\t\t\t\tif(which.keep){\r\n\t\t\t\t\t\t\tarr.push(from.arr[i]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tarr.splice(i, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(from.arr[i] == which.arr[j]){\r\n\t\t\t\t\tif(which.keep){\r\n\t\t\t\t\t\tarr.push(from.arr[i]);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tarr.splice(i, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn arr;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class BaseService {\r\n\tpublic now = new Date().getTime();\r\n\tpublic _now = ()=>{\r\n\t\tthis.now = new Date().getTime();\r\n\t}\r\n\tconstructor() {}\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { HttpService } from './http.service';\r\nimport { StoreService } from './store.service';\r\nimport { AlertService } from './alert.service';\r\nimport { CoreService } from './core.service';\r\nimport { CrudDocument } from '../interfaces/crud.interface';\r\n\r\ninterface CrudOptions<Document> {\r\n\tname?: string;\r\n\talert?: string;\r\n\tcallback?: (resp: Document | Document[]) => void;\r\n\terrCallback?: (resp: unknown) => void;\r\n}\r\n\r\ninterface CrudConfig<Document> {\r\n\tname: string;\r\n\t_id?: string;\r\n\treplace?: (doc: Document) => void;\r\n}\r\n\r\ninterface GetConfig {\r\n\tpage?: number;\r\n\tperPage?: number;\r\n}\r\n\r\nexport abstract class CrudService<Document extends CrudDocument> {\r\n\tprivate _url = '/api/';\r\n\tprivate docs: Document[] = [];\r\n\tprivate _perPage = 20;\r\n\tprivate _names: string[] = [];\r\n\tprivate _configuredDocs: Record<string, unknown> = {};\r\n\tprivate _docsConfiguration: Record<\r\n\t\tstring,\r\n\t\t(doc: Document, container: unknown) => void\r\n\t> = {};\r\n\tprivate _docsReset: Record<string, () => unknown> = {};\r\n\r\n\tconstructor(\r\n\t\tprivate _config: CrudConfig<Document>,\r\n\t\tprivate _http: HttpService,\r\n\t\tprivate _store: StoreService,\r\n\t\tprivate _alert: AlertService,\r\n\t\tprivate _core: CoreService\r\n\t) {\r\n\t\tthis._url += this._config.name;\r\n\t\tthis._store.getJson('docs_' + this._config.name, (docs) => {\r\n\t\t\tif (docs) {\r\n\t\t\t\tthis.docs = docs;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a unique ID for a document.\r\n\t *\r\n\t * @param doc - The document for which to generate the ID.\r\n\t * @returns The unique ID as a string.\r\n\t */\r\n\tprivate _id(doc: Document): string {\r\n\t\treturn (doc as unknown as Record<string, unknown>)[\r\n\t\t\tthis._config._id || '_id'\r\n\t\t]?.toString() as string;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the documents in the local storage.\r\n\t */\r\n\tprivate setDocs(): void {\r\n\t\tthis._store.setJson('docs_' + this._config.name, this.docs);\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a document to the local storage.\r\n\t *\r\n\t * @param doc - The document to add.\r\n\t */\r\n\tprivate addDoc(doc: Document): void {\r\n\t\tif (this._config.replace) {\r\n\t\t\tthis._config.replace(doc);\r\n\t\t}\r\n\t\tconst existingDoc = this.docs.find(\r\n\t\t\t(d) => this._id(d) === this._id(doc)\r\n\t\t);\r\n\t\tif (existingDoc) {\r\n\t\t\tthis._core.copy(doc, existingDoc);\r\n\t\t\tthis._core.copy(existingDoc, doc);\r\n\t\t} else {\r\n\t\t\tthis.docs.push(doc);\r\n\t\t}\r\n\t\tthis.setDocs();\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new document with a temporary ID.\r\n\t *\r\n\t * @returns A new document instance.\r\n\t */\r\n\tnew(): Document {\r\n\t\treturn {\r\n\t\t\t_id: Date.now().toString(),\r\n\t\t\t__created: false,\r\n\t\t\t__modified: false,\r\n\t\t} as Document;\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves a document by its ID.\r\n\t *\r\n\t * @param _id - The document ID.\r\n\t * @returns The document instance.\r\n\t */\r\n\tdoc(_id: string): Document {\r\n\t\treturn this.docs.find((d) => this._id(d) === _id) || this.new();\r\n\t}\r\n\r\n\t/**\r\n\t * Configures documents for a specific name.\r\n\t *\r\n\t * @param name - The configuration name.\r\n\t * @param config - The configuration function.\r\n\t * @param reset - The reset function.\r\n\t * @returns The configured documents.\r\n\t */\r\n\tconfigDocs(\r\n\t\tname: string,\r\n\t\tconfig: (doc: Document, container: unknown) => void,\r\n\t\treset: () => unknown\r\n\t): unknown {\r\n\t\tif (this._names.includes(name)) {\r\n\t\t\treturn this.getConfigedDocs(name);\r\n\t\t}\r\n\t\tthis._names.push(name);\r\n\t\tthis._docsReset[name] = reset;\r\n\t\tthis._docsConfiguration[name] = config;\r\n\t\tthis.reconfigureDocs(name);\r\n\t\treturn this.getConfigedDocs(name);\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves the configured documents for a specific name.\r\n\t *\r\n\t * @param name - The configuration name.\r\n\t * @returns The configured documents.\r\n\t */\r\n\tgetConfigedDocs(name: string): unknown {\r\n\t\treturn this._configuredDocs[name];\r\n\t}\r\n\r\n\t/**\r\n\t * Reconfigures documents for a specific name or all names.\r\n\t *\r\n\t * @param name - The configuration name (optional).\r\n\t */\r\n\treconfigureDocs(name: string = ''): void {\r\n\t\tconst names = name ? [name] : this._names;\r\n\t\tfor (const _name of names) {\r\n\t\t\tthis._configuredDocs[_name] = this._docsReset[_name]();\r\n\t\t\tfor (const doc of this.docs) {\r\n\t\t\t\tthis._docsConfiguration[_name](\r\n\t\t\t\t\tdoc,\r\n\t\t\t\t\tthis._configuredDocs[_name]\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the number of documents per page.\r\n\t *\r\n\t * @param _perPage - The number of documents per page.\r\n\t */\r\n\tsetPerPage(_perPage: number): void {\r\n\t\tthis._perPage = _perPage;\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves documents from the API.\r\n\t *\r\n\t * @param config - The get configuration.\r\n\t * @param options - The CRUD options.\r\n\t * @returns An observable of the retrieved documents.\r\n\t */\r\n\tget(\r\n\t\tconfig: GetConfig = {},\r\n\t\toptions: CrudOptions<Document> = {}\r\n\t): Observable<Document[]> {\r\n\t\tconst url = `${this._url}/get${options.name || ''}`;\r\n\t\tconst params =\r\n\t\t\ttypeof config.page === 'number'\r\n\t\t\t\t? `?skip=${this._perPage * (config.page - 1)}&limit=${\r\n\t\t\t\t\t\tthis._perPage\r\n\t\t\t\t }`\r\n\t\t\t\t: '';\r\n\t\tconst obs = this._http.get(`${url}${params}`);\r\n\t\tobs.subscribe(\r\n\t\t\t(resp: unknown) => {\r\n\t\t\t\t(resp as Document[]).forEach((doc) => this.addDoc(doc));\r\n\t\t\t\tif (options.callback) options.callback(resp as Document[]);\r\n\t\t\t},\r\n\t\t\t(err: unknown) => {\r\n\t\t\t\tif (options.errCallback) options.errCallback(err);\r\n\t\t\t}\r\n\t\t);\r\n\t\treturn obs as Observable<Document[]>;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new document in the API.\r\n\t *\r\n\t * @param doc - The document to create.\r\n\t * @param options - The CRUD options.\r\n\t * @returns An observable of the created document or void if the document was already created.\r\n\t */\r\n\tcreate(\r\n\t\tdoc: Document,\r\n\t\toptions: CrudOptions<Document> = {}\r\n\t): Observable<Document> | void {\r\n\t\tif (doc.__created) return;\r\n\t\tdoc.__created = true;\r\n\t\tconst obs = this._http.post(\r\n\t\t\t`${this._url}/create${options.name || ''}`,\r\n\t\t\tdoc\r\n\t\t);\r\n\t\tobs.subscribe(\r\n\t\t\t(resp: unknown) => {\r\n\t\t\t\tif (resp) {\r\n\t\t\t\t\tthis._core.copy(resp, doc);\r\n\t\t\t\t\tthis.addDoc(doc);\r\n\t\t\t\t\tthis.reconfigureDocs();\r\n\t\t\t\t\tif (options.callback) options.callback(doc);\r\n\t\t\t\t\tif (options.alert)\r\n\t\t\t\t\t\tthis._alert.show({\r\n\t\t\t\t\t\t\tunique: `${this._config.name}create`,\r\n\t\t\t\t\t\t\ttext: options.alert,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdoc.__created = false;\r\n\t\t\t\t\tif (options.errCallback) options.errCallback(resp);\r\n\t\t\t\t}\r\n\t\t\t\tthis._core.emit(`${this._config.name}_create`, doc);\r\n\t\t\t},\r\n\t\t\t(err: unknown) => {\r\n\t\t\t\tdoc.__created = false;\r\n\t\t\t\tif (options.errCallback) options.errCallback(err);\r\n\t\t\t}\r\n\t\t);\r\n\t\treturn obs as Observable<Document>;\r\n\t}\r\n\r\n\t/**\r\n\t * Fetches a document from the API based on a query.\r\n\t *\r\n\t * @param query - The query object.\r\n\t * @param options - The CRUD options.\r\n\t * @returns An observable of the fetched document.\r\n\t */\r\n\tfetch(\r\n\t\tquery: object = {},\r\n\t\toptions: CrudOptions<Document> = {}\r\n\t): Observable<Document> {\r\n\t\tconst obs = this._http.post(\r\n\t\t\t`${this._url}/fetch${options.name || ''}`,\r\n\t\t\tquery\r\n\t\t);\r\n\t\tobs.subscribe(\r\n\t\t\t(resp: unknown) => {\r\n\t\t\t\tif (resp) {\r\n\t\t\t\t\tthis.addDoc(resp as Document);\r\n\t\t\t\t\tthis.reconfigureDocs();\r\n\t\t\t\t\tif (options.callback) options.callback(resp as Document);\r\n\t\t\t\t\tif (options.alert)\r\n\t\t\t\t\t\tthis._alert.show({\r\n\t\t\t\t\t\t\tunique: `${this._config.name}create`,\r\n\t\t\t\t\t\t\ttext: options.alert,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (options.errCallback) options.errCallback(resp as Document);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t(err: unknown) => {\r\n\t\t\t\tif (options.errCallback) options.errCallback(err);\r\n\t\t\t}\r\n\t\t);\r\n\t\treturn obs as Observable<Document>;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates a document after a specified delay.\r\n\t *\r\n\t * @param doc - The document to update.\r\n\t * @param options - The CRUD options.\r\n\t */\r\n\tupdateAfterWhile(doc: Document, options: CrudOptions<Document> = {}): void {\r\n\t\tdoc.__modified = true;\r\n\t\tthis._core.afterWhile(this._id(doc), () => {\r\n\t\t\tthis.update(doc, options);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Updates a document in the API.\r\n\t *\r\n\t * @param doc - The document to update.\r\n\t * @param options - The CRUD options.\r\n\t * @returns An observable of the updated document.\r\n\t */\r\n\tupdate(\r\n\t\tdoc: Document,\r\n\t\toptions: CrudOptions<Document> = {}\r\n\t): Observable<Document> {\r\n\t\tdoc.__modified = true;\r\n\t\tconst obs = this._http.post(\r\n\t\t\t`${this._url}/update${options.name || ''}`,\r\n\t\t\tdoc\r\n\t\t);\r\n\t\tobs.subscribe(\r\n\t\t\t(resp: unknown) => {\r\n\t\t\t\tif (resp) {\r\n\t\t\t\t\tdoc.__modified = false;\r\n\t\t\t\t\tthis._core.copy(resp, doc);\r\n\t\t\t\t\tif (options.callback) options.callback(doc);\r\n\t\t\t\t\tif (options.alert)\r\n\t\t\t\t\t\tthis._alert.show({\r\n\t\t\t\t\t\t\tunique: `${this._config.name}update`,\r\n\t\t\t\t\t\t\ttext: options.alert,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (options.errCallback) options.errCallback(resp);\r\n\t\t\t\t}\r\n\t\t\t\tthis._core.emit(`${this._config.name}_update`, doc);\r\n\t\t\t},\r\n\t\t\t(err: unknown) => {\r\n\t\t\t\tif (options.errCallback) options.errCallback(err);\r\n\t\t\t}\r\n\t\t);\r\n\t\treturn obs as Observable<Document>;\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes a document from the API.\r\n\t *\r\n\t * @param doc - The document to delete.\r\n\t * @param options - The CRUD options.\r\n\t * @returns An observable of the deleted document.\r\n\t */\r\n\tdelete(\r\n\t\tdoc: Document,\r\n\t\toptions: CrudOptions<Document> = {}\r\n\t): Observable<Document> {\r\n\t\tconst obs = this._http.post(\r\n\t\t\t`${this._url}/delete${options.name || ''}`,\r\n\t\t\tdoc\r\n\t\t);\r\n\t\tobs.subscribe(\r\n\t\t\t(resp: unknown) => {\r\n\t\t\t\tif (resp) {\r\n\t\t\t\t\tthis.docs = this.docs.filter(\r\n\t\t\t\t\t\t(d) => this._id(d) !== this._id(doc)\r\n\t\t\t\t\t);\r\n\t\t\t\t\tthis.setDocs();\r\n\t\t\t\t\tthis.reconfigureDocs();\r\n\t\t\t\t\tif (options.callback) options.callback(doc);\r\n\t\t\t\t\tif (options.alert)\r\n\t\t\t\t\t\tthis._alert.show({\r\n\t\t\t\t\t\t\tunique: `${this._config.name}delete`,\r\n\t\t\t\t\t\t\ttext: options.alert,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (options.errCallback) options.errCallback(resp);\r\n\t\t\t\t}\r\n\t\t\t\tthis._core.emit(`${this._config.name}_delete`, doc);\r\n\t\t\t},\r\n\t\t\t(err: unknown) => {\r\n\t\t\t\tif (options.errCallback) options.errCallback(err);\r\n\t\t\t}\r\n\t\t);\r\n\t\treturn obs as Observable<Document>;\r\n\t}\r\n}\r\n","import { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from '../interfaces/config';\r\nimport { Injectable, Inject, Optional } from '@angular/core';\r\nimport { CoreService } from './core.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class StoreService {\r\n\tprivate _prefix = '';\r\n\r\n\tconstructor(\r\n\t\t@Inject(CONFIG_TOKEN) @Optional() private config: Config,\r\n\t\tprivate core: CoreService\r\n\t) {\r\n\t\tthis.config = this.config || DEFAULT_CONFIG;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the prefix for storage keys.\r\n\t *\r\n\t * @param prefix - The prefix to set.\r\n\t */\r\n\tsetPrefix(prefix: string): void {\r\n\t\tthis._prefix = prefix;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a value in storage.\r\n\t *\r\n\t * @param key - The storage key.\r\n\t * @param value - The value to store.\r\n\t * @param callback - The callback to execute on success.\r\n\t * @param errCallback - The callback to execute on error.\r\n\t */\r\n\tset(\r\n\t\tkey: string,\r\n\t\tvalue: string,\r\n\t\tcallback: () => void = () => { },\r\n\t\terrCallback: () => void = () => { }\r\n\t): void {\r\n\t\tkey = this.applyPrefix(key);\r\n\r\n\t\tif (this.config.store?.set) {\r\n\t\t\tthis.config.store.set(key, value, callback, errCallback);\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\tthis.core.localStorage.setItem(key, value);\r\n\t\t\t\tcallback();\r\n\t\t\t} catch (e) {\r\n\t\t\t\terrCallback();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a value in storage asynchronously.\r\n\t *\r\n\t * @param key - The storage key.\r\n\t * @param value - The value to store.\r\n\t * @returns A promise that resolves to a boolean indicating success.\r\n\t */\r\n\tasync setAsync(\r\n\t\tkey: string,\r\n\t\tvalue: string\r\n\t): Promise<boolean> {\r\n\t\tkey = this.applyPrefix(key);\r\n\r\n\t\ttry {\r\n\t\t\tif (this.config.store?.set) {\r\n\t\t\t\tawait this.config.store.set(key, value);\r\n\t\t\t} else {\r\n\t\t\t\tthis.core.localStorage.setItem(key, value);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value from storage.\r\n\t *\r\n\t * @param key - The storage key.\r\n\t * @param callback - The callback to execute with the retrieved value.\r\n\t * @param errCallback - The callback to execute on error.\r\n\t */\r\n\tget(\r\n\t\tkey: string,\r\n\t\tcallback: (value: string) => void = () => { },\r\n\t\terrCallback: () => void = () => { }\r\n\t): void {\r\n\t\tkey = this.applyPrefix(key);\r\n\r\n\t\tif (this.config.store?.get) {\r\n\t\t\tthis.config.store.get(key, callback, errCallback);\r\n\t\t} else {\r\n\t\t\tconst value = this.core.localStorage.getItem(key) || '';\r\n\t\t\tcallback(value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value from storage asynchronously.\r\n\t *\r\n\t * @param key - The storage key.\r\n\t * @returns A promise that resolves to the retrieved value.\r\n\t */\r\n\tasync getAsync(\r\n\t\tkey: string\r\n\t): Promise<string> {\r\n\t\tkey = this.applyPrefix(key);\r\n\r\n\t\ttry {\r\n\t\t\tif (this.config.store?.get) {\r\n\t\t\t\treturn await this.config.store.get(key);\r\n\t\t\t} else {\r\n\t\t\t\treturn this.core.localStorage.getItem(key) || '';\r\n\t\t\t}\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a JSON value in storage.\r\n\t *\r\n\t * @param key - The storage key.\r\n\t * @param value - The value to store.\r\n\t * @param callback - The callback to execute on success.\r\n\t * @param errCallback - The callback to execute on error.\r\n\t */\r\n\tsetJson(\r\n\t\tkey: string,\r\n\t\tvalue: any,\r\n\t\tcallback: () => void = () => { },\r\n\t\terrCallback: () => void = () => { }\r\n\t): void {\r\n\t\tthis.set(key, JSON.stringify(value), callback, errCallback);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a JSON value in storage asynchronously.\r\n\t *\r\n\t * @param key - The storage key.\r\n\t * @param value - The value to store.\r\n\t * @returns A promise that resolves to a boolean indicating success.\r\n\t */\r\n\tasync setJsonAsync(\r\n\t\tkey: string,\r\n\t\tvalue: any\r\n\t): Promise<boolean> {\r\n\t\treturn this.setAsync(key, JSON.stringify(value));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a JSON value from storage.\r\n\t *\r\n\t * @param key - The storage key.\r\n\t * @param callback - The callback to execute with the retrieved value.\r\n\t * @param errCallback - The callback to execute on error.\r\n\t */\r\n\tgetJson(\r\n\t\tkey: string,\r\n\t\tcallback: (value: any) => void = () => { },\r\n\t\terrCallback: () => void = () => { }\r\n\t): void {\r\n\t\tthis.get(key, (value: string) => {\r\n\t\t\ttry {\r\n\t\t\t\tconst parsedValue = JSON.parse(value);\r\n\t\t\t\tcallback(parsedValue);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tcallback(null);\r\n\t\t\t}\r\n\t\t}, errCallback);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a JSON value from storage asynchronously.\r\n\t *\r\n\t * @param key - The storage key.\r\n\t * @returns A promise that resolves to the retrieved value.\r\n\t */\r\n\tasync getJsonAsync<T = any>(key: string): Promise<T | null> {\r\n\t\tconst value = await this.getAsync(key);\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(value);\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a value from storage.\r\n\t *\r\n\t * @param key - The storage key.\r\n\t * @param callback - The callback to execute on success.\r\n\t * @param errCallback - The callback to execute on error.\r\n\t * @returns A promise that resolves to a boolean indicating success.\r\n\t */\r\n\tasync remove(\r\n\t\tkey: string,\r\n\t\tcallback?: () => void,\r\n\t\terrCallback?: () => void\r\n\t): Promise<boolean> {\r\n\t\tkey = this.applyPrefix(key);\r\n\r\n\t\ttry {\r\n\t\t\tif (this.config.store?.remove) {\r\n\t\t\t\tawait this.config.store.remove(key, callback, errCallback);\r\n\t\t\t} else {\r\n\t\t\t\tthis.core.localStorage.removeItem(key);\r\n\t\t\t}\r\n\t\t\tcallback?.();\r\n\t\t\treturn true;\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t\terrCallback?.();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Clears all values from storage.\r\n\t *\r\n\t * @param callback - The callback to execute on success.\r\n\t * @param errCallback - The callback to execute on error.\r\n\t * @returns A promise that resolves to a boolean indicating success.\r\n\t */\r\n\tasync clear(\r\n\t\tcallback?: () => void,\r\n\t\terrCallback?: () => void\r\n\t): Promise<boolean> {\r\n\t\ttry {\r\n\t\t\tif (this.config.store?.clear) {\r\n\t\t\t\tawait this.config.store.clear();\r\n\t\t\t} else {\r\n\t\t\t\tthis.core.localStorage.clear();\r\n\t\t\t}\r\n\t\t\tcallback?.();\r\n\t\t\treturn true;\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t\terrCallback?.();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Applies the configured prefix to a storage key.\r\n\t *\r\n\t * @param key - The storage key.\r\n\t * @returns The prefixed storage key.\r\n\t */\r\n\tprivate applyPrefix(key: string): string {\r\n\t\tif (this.config.store?.prefix) {\r\n\t\t\tkey = this.config.store.prefix + key;\r\n\t\t}\r\n\t\tif (this._prefix) {\r\n\t\t\tkey = this._prefix + key;\r\n\t\t}\r\n\t\treturn key;\r\n\t}\r\n}\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { CONFIG_TOKEN, Config } from '../interfaces/config';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { EMPTY, Observable, Subject } from 'rxjs';\r\nimport { catchError, first } from 'rxjs/operators';\r\nimport { StoreService } from './store.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class HttpService {\r\n\terrors: ((err: HttpErrorResponse, retry?: () => void) => {})[] = [];\r\n\turl = '';\r\n\tlocked = false;\r\n\tawaitLocked: any[] = [];\r\n\tprivate _http: any;\r\n\tprivate _headers: any = {};\r\n\tprivate _http_headers = new HttpHeaders(this._headers);\r\n\r\n\tconstructor(\r\n\t\tprivate store: StoreService,\r\n\t\tprivate http: HttpClient,\r\n\t\t@Inject(CONFIG_TOKEN) @Optional() private _config: Config\r\n\t) {\r\n\t\tthis._http = this._config.http || {};\r\n\r\n\t\tif (typeof this._http.headers === 'object') {\r\n\t\t\tfor (const header in this._http.headers) {\r\n\t\t\t\tthis._headers[header] = this._http.headers[header];\r\n\t\t\t}\r\n\t\t\tthis._http_headers = new HttpHeaders(this._headers);\r\n\t\t}\r\n\r\n\t\tthis.store.get('http_url', (url: any) => {\r\n\t\t\tthis.url = url || this._http.url || '';\r\n\t\t});\r\n\r\n\t\tthis.store.getJson('http_headers', (headers: any) => {\r\n\t\t\tif (headers) {\r\n\t\t\t\tfor (const header in headers) {\r\n\t\t\t\t\tthis._headers[header] = headers[header];\r\n\t\t\t\t}\r\n\t\t\t\tthis._http_headers = new HttpHeaders(this._headers);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetUrl(url: string) {\r\n\t\tthis.url = url;\r\n\t\tthis.store.set('http_url', url);\r\n\t}\r\n\r\n\tremoveUrl() {\r\n\t\tthis.url = this._http.url || '';\r\n\t\tthis.store.remove('http_url');\r\n\t}\r\n\r\n\tset(key: any, value: any) {\r\n\t\tthis._headers[key] = value;\r\n\t\tthis.store.setJson('http_headers', this._headers);\r\n\t\tthis._http_headers = new HttpHeaders(this._headers);\r\n\t}\r\n\r\n\theader(key: any) {\r\n\t\treturn this._headers[key];\r\n\t}\r\n\r\n\tremove(key: any) {\r\n\t\tdelete this._headers[key];\r\n\t\tthis._http_headers = new HttpHeaders(this._headers);\r\n\t\tthis.store.setJson('http_headers', this._headers);\r\n\t}\r\n\r\n\tprivate _httpMethod(method: string, _url: string, doc: unknown, headers: any): Observable<any> {\r\n\t\tif (method === 'post') {\r\n\t\t\treturn this.http.post<any>(_url, doc, headers);\r\n\t\t} else if (method === 'put') {\r\n\t\t\treturn this.http.put<any>(_url, doc, headers);\r\n\t\t} else if (method === 'patch') {\r\n\t\t\treturn this.http.patch<any>(_url, doc, headers);\r\n\t\t} else if (method === 'delete') {\r\n\t\t\treturn this.http.delete<any>(_url, headers);\r\n\t\t} else {\r\n\t\t\treturn this.http.get<any>(_url, headers);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _post(\r\n\t\turl: string,\r\n\t\tdoc: unknown,\r\n\t\tcallback = (resp: unknown) => { },\r\n\t\topts: any = {},\r\n\t\tmethod = 'post'\r\n\t): Observable<any> {\r\n\t\tif (typeof opts === 'function') {\r\n\t\t\topts = { err: opts };\r\n\t\t}\r\n\r\n\t\tif (!opts.err) {\r\n\t\t\topts.err = (err: HttpErrorResponse) => { };\r\n\t\t}\r\n\r\n\t\tif (this.locked && !opts.skipLock) {\r\n\t\t\tconst wait = setTimeout(() => {\r\n\t\t\t\tthis._post(url, doc, callback, opts, method);\r\n\t\t\t}, 100);\r\n\r\n\t\t\tthis.awaitLocked.push(wait);\r\n\t\t\treturn new Subject().asObservable();\r\n\t\t}\r\n\r\n\t\tconst _url = (opts.url || this.url) + url;\r\n\r\n\t\tthis.prepare_handle(_url, doc);\r\n\r\n\t\tconst observable = this._httpMethod(method, _url, doc, { headers: this._http_headers });\r\n\r\n\t\tobservable\r\n\t\t\t.pipe(\r\n\t\t\t\tfirst(),\r\n\t\t\t\tcatchError((error: HttpErrorResponse) => {\r\n\t\t\t\t\tthis.handleError(opts.err, () => {\r\n\t\t\t\t\t\tthis._post(url, doc, callback, opts, method);\r\n\t\t\t\t\t})(error);\r\n\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.subscribe((resp: unknown) => {\r\n\t\t\t\tthis.response_handle(_url, resp, () => {\r\n\t\t\t\t\tcallback(resp);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\treturn observable;\r\n\t}\r\n\r\n\tpost(url: string, doc: any, callback = (resp: any) => { }, opts: any = {}): Observable<any> {\r\n\t\treturn this._post(url, doc, callback, opts);\r\n\t}\r\n\r\n\tput(url: string, doc: any, callback = (resp: any) => { }, opts: any = {}): Observable<any> {\r\n\t\treturn this._post(url, doc, callback, opts, 'put');\r\n\t}\r\n\r\n\tpatch(url: string, doc: any, callback = (resp: any) => { }, opts: any = {}): Observable<any> {\r\n\t\treturn this._post(url, doc, callback, opts, 'patch');\r\n\t}\r\n\r\n\tdelete(url: string, callback = (resp: any) => { }, opts: any = {}): Observable<any> {\r\n\t\treturn this._post(url, null, callback, opts, 'delete');\r\n\t}\r\n\r\n\tget(url: string, callback = (resp: any) => { }, opts: any = {}): Observable<any> {\r\n\t\treturn this._post(url, null, callback, opts, 'get');\r\n\t}\r\n\r\n\tclearLocked() {\r\n\t\tfor (const awaitLocked of this.awaitLocked) {\r\n\t\t\tclearTimeout(awaitLocked);\r\n\t\t}\r\n\t\tthis.awaitLocked = [];\r\n\t}\r\n\r\n\tlock() {\r\n\t\tthis.locked = true;\r\n\t}\r\n\r\n\tunlock() {\r\n\t\tthis.locked = false;\r\n\t}\r\n\r\n\tprivate handleError(callback: any, retry: () => void) {\r\n\t\treturn (error: HttpErrorResponse): Promise<void> => {\r\n\t\t\treturn new Promise((resolve) => {\r\n\t\t\t\tthis.err_handle(error, callback, retry);\r\n\t\t\t\tresolve();\r\n\t\t\t});\r\n\t\t};\r\n\t}\r\n\r\n\tprivate err_handle(\r\n\t\terr: HttpErrorResponse,\r\n\t\tnext: (err: HttpErrorResponse) => void,\r\n\t\tretry: () => void\r\n\t) {\r\n\t\tif (typeof next === 'function') {\r\n\t\t\tnext(err);\r\n\t\t}\r\n\r\n\t\tfor (const callback of this.errors) {\r\n\t\t\tif (typeof callback === 'function') {\r\n\t\t\t\tcallback(err, retry);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate prepare_handle(url: string, body: unknown) { }\r\n\r\n\tprivate response_handle(url: string, body: unknown, next: () => void) {\r\n\t\tif (typeof next === 'function') {\r\n\t\t\tnext();\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from './http.service';\r\nimport { CoreService } from './core.service';\r\nimport { Subject } from 'rxjs';\r\nimport { StoreService } from './store.service';\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class MongoService {\r\n\t/*\r\n\t*\tData will be storage for all information we are pulling from waw crud.\r\n\t*\tdata['arr' + part] will host all docs from collection part in array form\r\n\t*\tdata['obj' + part] will host all docs from collection part in object form\r\n\t*\t\tand all groups collecitons provided\r\n\t*\tdata['opts' + part] will host options for docs from collection part\r\n\t*\t\tWill be initialized only inside get\r\n\t*\t\tWill be used inside push\r\n\t*/\r\n\t\tprivate data:any = {};\r\n\t\tprivate socket: any = {\r\n\t\t\temit: (which:any, doc:any) => {\r\n\t\t\t\tconsole.log(which, doc, 'is not used on sockets');\r\n\t\t\t}\r\n\t\t};\r\n\t/*\r\n\t*\twaw crud connect functions\r\n\t*/\r\n\t\tpublic config(part:any, opts:any){\r\n\t\t\tif(this.data['opts' + part]) return;\r\n\t\t\tif(!this.data['arr' + part]) this.data['arr' + part] = [];\r\n\t\t\tif(!this.data['obj' + part]) this.data['obj' + part] = {};\r\n\t\t\tif(this.data['opts' + part]){\r\n\t\t\t\tfor (let each in opts){\r\n\t\t\t\t this.data['opts' + part][each] = opts[each];\r\n\t\t\t\t}\r\n\t\t\t}else this.data['opts' + part] = opts = opts||{};\r\n\t\t\tif(typeof opts.use === 'string'){\r\n\t\t\t\topts.use = opts.use.split(' ');\r\n\t\t\t}\r\n\t\t\tif(opts.query){\r\n\t\t\t\tfor(let key in opts.query){\r\n\t\t\t\t\tif(typeof opts.query[key] == 'function'){\r\n\t\t\t\t\t\topts.query[key] = {\r\n\t\t\t\t\t\t\tallow: opts.query[key]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.data['obj' + part][key] = [];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(opts.groups){\r\n\t\t\t\tif(typeof opts.groups === 'string'){\r\n\t\t\t\t\topts.groups = opts.groups.split(' ');\r\n\t\t\t\t}\r\n\t\t\t\tif(Array.isArray(opts.groups)){\r\n\t\t\t\t\tlet arr = opts.groups;\r\n\t\t\t\t\topts.groups = {};\r\n\t\t\t\t\tfor(let i = 0; i < arr.length; i++){\r\n\t\t\t\t\t\tif(typeof arr[i] === 'string'){\r\n\t\t\t\t\t\t\topts.groups[arr[i]] = true;\r\n\t\t\t\t\t\t}else {\r\n\t\t\t\t\t\t\tfor(let key in arr[i]){\r\n\t\t\t\t\t\t\t\tif(typeof arr[i][key] == 'function'){\r\n\t\t\t\t\t\t\t\t\tarr[i][key] = {\r\n\t\t\t\t\t\t\t\t\t\tfield: arr[i][key]\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\topts.groups[key] = arr[i][key];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tfor(let key in opts.groups){\r\n\t\t\t\t\tif(typeof opts.groups[key] == 'boolean'){\r\n\t\t\t\t\t\tif(opts.groups[key]){\r\n\t\t\t\t\t\t\topts.groups[key] = {\r\n\t\t\t\t\t\t\t\tfield: function(doc:any){\r\n\t\t\t\t\t\t\t\t\treturn doc[key];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tdelete opts.groups[key];\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof opts.groups[key] != 'object'){\r\n\t\t\t\t\t\tdelete opts.groups[key];\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof opts.groups[key].field != 'function'){\r\n\t\t\t\t\t\tdelete opts.groups[key];\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(Array.isArray(this.data['obj' + part][key])){\r\n\t\t\t\t\t\tconsole.warn('You can have same field groups with query. Field '+key+' is not used in groups.');\r\n\t\t\t\t\t\tdelete opts.groups[key];\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.data['obj' + part][key] = {};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(opts.fields) {\r\n\t\t\t\tif (typeof opts.fields === 'string') {\r\n\t\t\t\t\topts.fields = opts.fields.split(' ');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!Array.isArray(opts.fields)) {\r\n\t\t\t\topts.fields = [];\r\n\t\t\t}\r\n\t\t\t// this.store.getJson('mongo' + part, data => {\r\n\t\t\t// \tif (data && Array.isArray(data)) {\r\n\t\t\t// \t\tfor (let i = 0; i < data.length; i++) {\r\n\t\t\t// \t\t\tthis.push(part, data[i]);\r\n\t\t\t// \t\t}\r\n\t\t\t// \t}\r\n\t\t\t// });\r\n\t\t\treturn {\r\n\t\t\t\tarr: this.data['arr' + part],\r\n\t\t\t\tobj: this.data['obj' + part]\r\n\t\t\t};\r\n\t\t};\r\n\t\tpublic create(part:any, doc:any=undefined, cb:any=undefined, opts:any={}) {\r\n\t\t\tif (typeof doc == 'function') {\r\n\t\t\t\tif(cb) opts = cb;\r\n\t\t\t\tcb = doc;\r\n\t\t\t\tdoc = {};\r\n\t\t\t}\r\n\t\t\tif(typeof opts == 'function'){\r\n\t\t\t\topts = {\r\n\t\t\t\t\terr: opts\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tif(typeof doc != 'object') doc={};\r\n\t\t\tif(doc.___created && !opts.allow_multiple) return;\r\n\t\t\tdoc.___created = true;\r\n\t\t\tthis.http.post(opts.url || '/api/' + part + '/create', doc || {}, resp => {\r\n\t\t\t\tif (resp) {\r\n\t\t\t\t\tthis.socket.emit('create', {\r\n\t\t\t\t\t\t_id: resp._id,\r\n\t\t\t\t\t\tpart: part\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.push(part, resp);\r\n\t\t\t\t\tif (typeof cb == 'function') cb(resp);\r\n\t\t\t\t}else if (typeof cb == 'function') {\r\n\t\t\t\t\tcb(false);\r\n\t\t\t\t}\r\n\t\t\t}, {\r\n\t\t\t\turl: opts.base_url || this.http.url\r\n\t\t\t});\r\n\t\t};\r\n\t\tpublic fetch(part:any, opts:any=undefined, cb:any=undefined) {\r\n\t\t\tif(opts.query && opts.query._id && !opts.force &&\r\n\t\t\t\tthis.data['obj' + part][opts.query._id]){\r\n\t\t\t\treturn this.data['obj' + part][opts.query._id];\r\n\t\t\t}\r\n\t\t\tif (typeof opts == 'function') {\r\n\t\t\t\tcb = opts;\r\n\t\t\t\topts = {};\r\n\t\t\t}\r\n\t\t\tif(!opts) opts = {};\r\n\t\t\tthis.config(part, opts); // remove this in future\r\n\t\t\tlet url = '/api/' + part + '/fetch'+(opts.name||''), doc:any;\r\n\t\t\tif(opts.query && opts.query._id && this.data['obj' + part][opts.query._id]){\r\n\t\t\t\tdoc = this.data['obj' + part][opts.query._id];\r\n\t\t\t}else{\r\n\t\t\t\tdoc = {};\r\n\t\t\t\tfor(let key in this.data['opts'+part].replace){\r\n\t\t\t\t\tthis.replace(doc, key, this.data['opts'+part].replace[key]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.http.post(opts.url || url, (opts.query||{}), resp => {\r\n\t\t\t\tif(!resp) return cb&&cb(false);\r\n\t\t\t\tfor (let each in resp){\r\n\t\t\t\t doc[each] = resp[each];\r\n\t\t\t\t}\r\n\t\t\t\tfor (let each in doc){\r\n\t\t\t\t doc[each] = resp[each];\r\n\t\t\t\t}\r\n\t\t\t\tthis.push(part, doc);\r\n\t\t\t\tif (resp && typeof cb == 'function') {\r\n\t\t\t\t\tcb(doc);\r\n\t\t\t\t}\r\n\t\t\t}, {\r\n\t\t\t\turl: opts.base_url || this.http.url\r\n\t\t\t});\r\n\t\t\treturn doc;\r\n\t\t};\r\n\t\tpublic get(part:any, opts:any=undefined, cb:any=undefined) {\r\n\t\t\tif (typeof opts == 'function') {\r\n\t\t\t\tcb = opts;\r\n\t\t\t\topts = {};\r\n\t\t\t}\r\n\t\t\tif(!opts) opts = {};\r\n\t\t\tthis.config(part, opts); // remove this in future\r\n\t\t\tlet url = '/api/' + part + '/get'+(opts.name||'')+(opts.param||'');\r\n\t\t\tthis.http.get(opts.url || url, resp => {\r\n\t\t\t\tif (Array.isArray(resp)) {\r\n\t\t\t\t\tfor (let i = 0; i < resp.length; i++) {\r\n\t\t\t\t\t\tthis.push(part,resp[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!opts.paginate) {\r\n\t\t\t\t\t\tfor (let i = 0; i < this.data['arr' + part].length; i++) {\r\n\t\t\t\t\t\t\tlet remove = true;\r\n\t\t\t\t\t\t\tfor (let j = 0; j < resp.length; j++) {\r\n\t\t\t\t\t\t\t\tif (resp[j]._id === this.data['arr' + part][i]._id) {\r\n\t\t\t\t\t\t\t\t\tremove = false;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (remove) {\r\n\t\t\t\t\t\t\t\tthis.remove(part, this.data['arr' + part][i]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (typeof cb == 'function') cb(this.data['arr' + part], this.data['obj' + part], opts.name||'', resp);\r\n\t\t\t\t} else if (typeof cb == 'function') {\r\n\t\t\t\t\tcb(this.data['arr' + part], this.data['obj' + part], opts.name||'', resp);\r\n\t\t\t\t}\r\n\t\t\t\tthis.data['loaded'+part]=true;\r\n\t\t\t}, {\r\n\t\t\t\turl: opts.base_url || this.http.url\r\n\t\t\t});\r\n\t\t\treturn this.data['arr' + part];\r\n\t\t};\r\n\t\tpublic set(part:any, opts:any=undefined, resp:any=undefined) {\r\n\t\t\tif (Array.isArray(opts)) {\r\n\t\t\t\tresp = opts;\r\n\t\t\t\topts = undefined;\r\n\t\t\t}\r\n\t\t\tif(opts) this.config(part, opts);\r\n\t\t\tif (Array.isArray(resp)) {\r\n\t\t\t\tfor (let i = 0; i < resp.length; i++) {\r\n\t\t\t\t\tthis.push(part, resp[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tarr: this.data['arr' + part],\r\n\t\t\t\tobj: this.data['obj' + part]\r\n\t\t\t}\r\n\t\t};\r\n\t\tprivate prepare_update(part:any, doc:any, opts:any){\r\n\t\t\tif(opts.fields){\r\n\t\t\t\tif(typeof opts.fields === 'string') opts.fields = opts.fields.split(' ');\r\n\t\t\t\tlet _doc:any = {};\r\n\t\t\t\tfor(let i = 0; i < opts.fields.length; i++){\r\n\t\t\t\t\t_doc[opts.fields[i]] = doc[opts.fields[i]];\r\n\t\t\t\t}\r\n\t\t\t\tdoc = _doc;\r\n\t\t\t}else this.renew(part, doc);\r\n\t\t\tif(typeof opts.rewrite == 'object' && Object.values(opts.rewrite).length){\r\n\t\t\t\tdoc = JSON.parse(JSON.stringify(doc));\r\n\t\t\t\tfor(let key in opts.rewrite){\r\n\t\t\t\t\tthis.replace(doc, key, opts.rewrite[key]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn doc;\r\n\t\t};\r\n\t\tpublic update(part:any, doc:any, opts:any=undefined, cb:any=undefined) {\r\n\t\t\tif (typeof opts == 'function'){\r\n\t\t\t\tcb = opts;\r\n\t\t\t\topts = {};\r\n\t\t\t}\r\n\t\t\tif(typeof opts != 'object') opts = {};\r\n\t\t\tdoc = this.prepare_update(part, doc, opts);\r\n\t\t\tlet url = '/api/' + part + '/update' + (opts.name||'');\r\n\t\t\tthis.http.post(opts.url || url, doc, resp => {\r\n\t\t\t\tif(resp){\r\n\t\t\t\t\tthis.socket.emit('update', {\r\n\t\t\t\t\t\t_id: doc._id,\r\n\t\t\t\t\t\tpart: part\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tif (resp && typeof cb == 'function') {\r\n\t\t\t\t\tcb(resp);\r\n\t\t\t\t} else if (typeof cb == 'function') {\r\n\t\t\t\t\tcb(false);\r\n\t\t\t\t}\r\n\t\t\t}, {\r\n\t\t\t\turl: opts.base_url || this.http.url\r\n\t\t\t});\r\n\t\t};\r\n\t\tpublic unique(part:any, doc:any, opts:any=undefined, cb:any=undefined) {\r\n\t\t\tif (typeof opts == 'function'){\r\n\t\t\t\tcb = opts;\r\n\t\t\t\topts = {};\r\n\t\t\t}\r\n\t\t\tif(typeof opts != 'object') opts = {};\r\n\t\t\tdoc = this.prepare_update(part, doc, opts);\r\n\t\t\tlet url = '/api/' + part + '/unique' + (opts.name||'');\r\n\t\t\tthis.http.post(opts.url || url, doc, resp => {\r\n\t\t\t\tif(resp){\r\n\t\t\t\t\tthis.socket.emit('update', {\r\n\t\t\t\t\t\t_id: doc._id,\r\n\t\t\t\t\t\tpart: part\r\n\t\t\t\t\t});\r\n\t\t\t\t\tlet current_doc = this.data['obj' + part][doc._id];\r\n\t\t\t\t\tfor (let each in doc){\r\n\t\t\t\t\t current_doc[each] = doc[each];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.renew(part, current_doc);\r\n\t\t\t\t}\r\n\t\t\t\tif ((resp || typeof resp === 'string') && typeof cb == 'function') {\r\n\t\t\t\t\tcb(resp);\r\n\t\t\t\t} else if (typeof cb == 'function') {\r\n\t\t\t\t\tcb(false);\r\n\t\t\t\t}\r\n\t\t\t}, {\r\n\t\t\t\turl: opts.base_url || this.http.url\r\n\t\t\t});\r\n\t\t};\r\n\t\tpublic delete(part:any, doc:any, opts:any=undefined, cb:any=undefined) {\r\n\t\t\tif (typeof opts == 'function') {\r\n\t\t\t\tcb = opts;\r\n\t\t\t\topts = {};\r\n\t\t\t}\r\n\t\t\tif (typeof opts !== 'object') opts = {};\r\n\t\t\tif (opts.fields) {\r\n\t\t\t\tif(typeof opts.fields === 'string') opts.fields = opts.fields.split(' ');\r\n\t\t\t\tlet _doc:any = {};\r\n\t\t\t\tfor(let i = 0; i < opts.fields.length; i++){\r\n\t\t\t\t\t_doc[opts.fields[i]] = doc[opts.fields[i]];\r\n\t\t\t\t}\r\n\t\t\t\tdoc = _doc;\r\n\t\t\t} else {\r\n\t\t\t\tdoc={\r\n\t\t\t\t\t_id:doc._id\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet url = '/api/' + part + '/delete' + (opts.name||'');\r\n\t\t\tthis.http.post(opts.url || url, doc, resp => {\r\n\t\t\t\tif (resp) {\r\n\t\t\t\t\tthis.socket.emit('delete', {\r\n\t\t\t\t\t\t_id: doc._id,\r\n\t\t\t\t\t\tpart: part\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.remove(part, doc);\r\n\t\t\t\t}\r\n\t\t\t\tif (resp && typeof cb == 'function') {\r\n\t\t\t\t\tcb(resp);\r\n\t\t\t\t} else if (typeof cb == 'function') {\r\n\t\t\t\t\tcb(false);\r\n\t\t\t\t}\r\n\t\t\t}, {\r\n\t\t\t\turl: opts.base_url || this.http.url\r\n\t\t\t});\r\n\t\t};\r\n\t\tpublic _id(cb:any){\r\n\t\t\tif(typeof cb == 'function'){\r\n\t\t\t\tthis.http.get('/waw/newId', cb);\r\n\t\t\t}\r\n\t\t};\r\n\t\tpublic to_id(docs:any){\r\n\t\t\tif(!docs) return [];\r\n\t\t\tif(Array.isArray(docs)){\r\n\t\t\t\tdocs = docs.slice();\r\n\t\t\t}else if(typeof docs == 'object'){\r\n\t\t\t\tif(docs._id) return [docs._id];\r\n\t\t\t\tlet _docs = [];\r\n\t\t\t\tfor(let key in docs){\r\n\t\t\t\t\tif(docs[key]) _docs.push(docs[key]._id||docs[key]);\r\n\t\t\t\t}\r\n\t\t\t\tdocs = _docs;\r\n\t\t\t}\r\n\t\t\tfor (let i = 0; i < docs.length; ++i) {\r\n\t\t\t\tif(docs[i]) docs[i] = docs[i]._id || docs[i];\r\n\t\t\t}\r\n\t\t\treturn docs;\r\n\t\t};\r\n\t\tpublic afterWhile(doc:any, cb:any, time=1000){\r\n\t\t\tif(typeof cb == 'function' && typeof time == 'number'){\r\n\t\t\t\tclearTimeout(doc.__updateTimeout);\r\n\t\t\t\tdoc.__updateTimeout = setTimeout(cb, time);\r\n\t\t\t}\r\n\t\t};\r\n\t\tpublic populate(doc:any, field:any, part:any):any{\r\n\t\t\tif(!doc||!field||!part) return;\r\n\t\t\tif(Array.isArray(doc)){\r\n\t\t\t\tfor(let i = 0; i < doc.length; i++){\r\n\t\t\t\t\tthis.populate(doc[i], field, part);\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif(this.data['loaded'+part]){\r\n\t\t\t\tif(Array.isArray(field)){\r\n\t\t\t\t\tfor(let i = 0; i < field.length; i++){\r\n\t\t\t\t\t\tthis.populate(doc, field[i], part);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}else if(field.indexOf('.')>-1){\r\n\t\t\t\t\tfield = field.split('.');\r\n\t\t\t\t\tlet sub = field.shift();\r\n\t\t\t\t\tif(typeof doc[sub] != 'object') return;\r\n\t\t\t\t\treturn this.populate(doc[sub], field.join('.'), part);\r\n\t\t\t\t}\r\n\t\t\t\tif(Array.isArray(doc[field])){\r\n\t\t\t\t\tfor(let i = doc[field].length-1; i >= 0; i--){\r\n\t\t\t\t\t\tif(this.data['obj'+part][doc[field][i]]){\r\n\t\t\t\t\t\t\tdoc[field][i] = this.data['obj'+part][doc[field][i]];\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tdoc[field].splice(i, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}else if(typeof doc[field] === 'string'){\r\n\t\t\t\t\tdoc[field] = this.data['obj'+part][doc[field]] || null;\r\n\t\t\t\t}else return;\r\n\t\t\t}else{\r\n\t\t\t\tsetTimeout(() =>{\r\n\t\t\t\t\tthis.populate(doc, field, part);\r\n\t\t\t\t}, 100);\r\n\t\t\t}\r\n\t\t};\r\n\t\tpublic on(parts:any, cb:any):any {\r\n \t\t if (typeof parts === 'string') {\r\n \t\t parts = parts.split(\" \");\r\n \t\t }\r\n \t\t for (var i = 0; i < parts.length; i++) {\r\n \t\t if (!this.data['loaded'+parts[i]]) {\r\n \t\t return setTimeout( () => {\r\n \t\t this.on(parts, cb);\r\n \t\t }, 100);\r\n \t\t }\r\n \t\t }\r\n \t\t cb(this.data);\r\n \t\t};\r\n \t\tpublic track(index:any, doc:any){ return doc && doc._id && doc._id || index; }\r\n \t/*\r\n\t*\tmongo sort filters\r\n\t*/\r\n \t\tpublic sortAscId(){\r\n \t\t\treturn function(a:any,b:any){\r\n \t\t\t\tif(a._id>b._id) return 1;\r\n \t\t\t\telse return -1;\r\n \t\t\t}\r\n \t\t};\r\n \t\tpublic sortDescId(){\r\n \t\t\treturn function(a:any,b:any){\r\n \t\t\t\tif(a._id<b._id) return 1;\r\n \t\t\t\telse return -1;\r\n \t\t\t}\r\n \t\t};\r\n \t\tpublic sortAscString(opts:any){\r\n \t\t\tif(typeof opts === 'string'){\r\n \t\t\t\topts = {\r\n \t\t\t\t\tfield: opts\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\treturn function(a:any,b:any){\r\n \t\t\t\tif(a[opts.field].toLowerCase()>b[opts.field].toLowerCase()) return 1;\r\n \t\t\t\telse if(a[opts.field].toLowerCase()<b[opts.field].toLowerCase() || !opts.next) return -1;\r\n \t\t\t\telse return opts.next(a,b);\r\n \t\t\t}\r\n \t\t}\r\n \t\tpublic sortDescString(opts:any){\r\n \t\t\tif(typeof opts === 'string'){\r\n \t\t\t\topts = {\r\n \t\t\t\t\tfield: opts\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\treturn function(a:any,b:any){\r\n \t\t\t\tif(a[opts.field].toLowerCase()<b[opts.field].toLowerCase()) return 1;\r\n \t\t\t\telse if(a[opts.field].toLowerCase()>b[opts.field].toLowerCase() || !opts.next) return -1;\r\n \t\t\t\telse return opts.next(a,b);\r\n \t\t\t}\r\n \t\t}\r\n \t\tpublic sortAscDate(opts:any){\r\n \t\t\tif(typeof opts === 'string'){\r\n \t\t\t\topts = {\r\n \t\t\t\t\tfield: opts\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\treturn function(a:any,b:any){\r\n \t\t\t\tif(a[opts.field].getTime()>b[opts.field].getTime()) return 1;\r\n \t\t\t\telse if(a[opts.field].getTime()<b[opts.field].getTime() || !opts.next) return -1;\r\n \t\t\t\telse return opts.next(a,b);\r\n \t\t\t}\r\n \t\t}\r\n \t\tpublic sortDescDate(opts:any){\r\n \t\t\tif(typeof opts === 'string'){\r\n \t\t\t\topts = {\r\n \t\t\t\t\tfield: opts\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\treturn function(a:any,b:any){\r\n \t\t\t\tif(a[opts.field].getTime()<b[opts.field].getTime()) return 1;\r\n \t\t\t\telse if(a[opts.field].getTime()>b[opts.field].getTime() || !opts.next) return -1;\r\n \t\t\t\telse return opts.next(a,b);\r\n \t\t\t}\r\n \t\t}\r\n \t\tpublic sortAscNumber(opts:any){\r\n \t\t\tif(typeof opts === 'string'){\r\n \t\t\t\topts = {\r\n \t\t\t\t\tfield: opts\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\treturn function(a:any,b:any){\r\n \t\t\t\tif(a[opts.field]>b[opts.field]) return 1;\r\n \t\t\t\telse if(a[opts.field]<b[opts.field] || !opts.next) return -1;\r\n \t\t\t\telse return opts.next(a,b);\r\n \t\t\t}\r\n \t\t}\r\n \t\tpublic sortDescNumber(opts:any){\r\n \t\t\tif(typeof opts === 'string'){\r\n \t\t\t\topts = {\r\n \t\t\t\t\tfield: opts\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\treturn function(a:any,b:any){\r\n \t\t\t\tif(a[opts.field]<b[opts.field]) return 1;\r\n \t\t\t\telse if(a[opts.field]>b[opts.field] || !opts.next) return -1;\r\n \t\t\t\telse return opts.next(a,b);\r\n \t\t\t}\r\n \t\t}\r\n \t\tpublic sortAscBoolean(opts:any){\r\n \t\t\tif(typeof opts === 'string'){\r\n \t\t\t\topts = {\r\n \t\t\t\t\tfield: opts\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\treturn function(a:any,b:any){\r\n \t\t\t\tif(!a[opts.field]&&b[opts.field]) return 1;\r\n \t\t\t\telse if(a[opts.field]&&!b[opts.field] || !opts.next) return -1;\r\n \t\t\t\telse return opts.next(a,b);\r\n \t\t\t}\r\n \t\t}\r\n \t\tpublic sortDescBoolean(opts:any){\r\n \t\t\tif(typeof opts === 'string'){\r\n \t\t\t\topts = {\r\n \t\t\t\t\tfield: opts\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\treturn function(a:any,b:any){\r\n \t\t\t\tif(a[opts.field]&&!b[opts.field]) return 1;\r\n \t\t\t\telse if(!a[opts.field]&&b[opts.field] || !opts.next) return -1;\r\n \t\t\t\telse return opts.next(a,b);\r\n \t\t\t}\r\n \t\t}\r\n\t/*\r\n\t*\tmongo replace filters\r\n\t*/\r\n\t\tpublic beArr(val:any, cb:any){\r\n\t\t\tif(!Array.isArray(val)) cb([]);\r\n\t\t\telse cb(val);\r\n\t\t};\r\n\t\tpublic beObj(val:any, cb:any){\r\n\t\t\tif(typeof val != 'object' || Array.isArray(val) || !val){\r\n\t\t\t\tval = {};\r\n\t\t\t}\r\n\t\t\tcb(val);\r\n\t\t};\r\n\t\tpublic beDate(val:any, cb:any) { cb( new Date(val) ); };\r\n\t\tpublic beString(val:any, cb:any){\r\n\t\t\tif(typeof val != 'string'){\r\n\t\t\t\tval = '';\r\n\t\t\t}\r\n\t\t\tcb(val);\r\n\t\t};\r\n\t\tpublic beDoc = (val:any, cb:any)=>{\r\n\t\t\tthis.beObj(val, (val:any)=>{\r\n\t\t\t\tif(!val._id){\r\n\t\t\t\t\tthis._id((_id:any)=>{\r\n\t\t\t\t\t\tval._id = _id;\r\n\t\t\t\t\t\tcb(val);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else cb(val);\r\n\t\t\t});\r\n\t\t};\r\n\t\tpublic forceArr(val:any, cb:any){ cb([]); };\r\n\t\tpublic forceObj(val:any, cb:any){ cb({}); };\r\n\t\tpublic forceString(val:any, cb:any){ cb(''); };\r\n\t\tpublic forceDoc = (val:any, cb:any) => {\r\n\t\t\tthis._id((_id:any)=>{\r\n\t\t\t\tcb({\r\n\t\t\t\t\t_id: _id\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\t\tpublic getCreated(val:any, cb:any, doc:any){\r\n\t\t\tcb(new Date(parseInt(doc._id.substring(0,8), 16)*1000));\r\n\t\t};\r\n\t/*\r\n\t*\tmongo local support functions\r\n\t*/\r\n\t\tprivate replace(doc:any, value:any, rpl:any):any{\r\n\t\t\tif(value.indexOf('.')>-1){\r\n\t\t\t\tvalue = value.split('.');\r\n\t\t\t\tlet sub = value.shift();\r\n\t\t\t\tif(doc[sub] && (typeof doc[sub] != 'object' || Array.isArray(doc[sub])))\r\n\t\t\t\t\treturn;\r\n\t\t\t\tif(!doc[sub]) doc[sub] = {};\r\n\t\t\t\treturn this.replace(doc[sub], value.join('.'), rpl);\r\n\t\t\t}\r\n\t\t\tif(typeof rpl == 'function'){\r\n\t\t\t\trpl(doc[value], function(newValue:any){\r\n\t\t\t\t\tdoc[value] = newValue;\r\n\t\t\t\t}, doc);\r\n\t\t\t}\r\n\t\t};\r\n\t\tpublic renew(part:any, doc:any){\r\n\t\t\tif(!this.data['obj' + part][doc._id]) return this.push(part, doc);\r\n\t\t\tif(this.data['opts'+part].replace){\r\n\t\t\t\tfor(let key in this.data['opts'+part].replace){\r\n\t\t\t\t\tthis.replace(doc, key, this.data['opts'+part].replace[key]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (let each in this.data['obj' + part][doc._id]){\r\n\t\t\t\tthis.data['obj' + part][doc._id][each] = doc[each];\r\n\t\t\t}\r\n\t\t\tfor (let each in doc){\r\n\t\t\t\tthis.data['obj' + part][doc._id][each] = doc[each];\r\n\t\t\t}\r\n\t\t\tfor (let i = 0; i < this.data['opts' + part].fields.length; i++) {\r\n\t\t\t\tconst field = this.data['opts' + part].fields[i];\r\n\t\t\t\tif (!this.data['obj' + part][doc[field]]) {\r\n\t\t\t\t\tthis.data['obj' + part][doc[field]] = doc;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tfor (let each in doc) {\r\n\t\t\t\t\tthis.data['obj' + part][doc[field]][each] = doc[each];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(this.data['opts'+part].groups){\r\n\t\t\t\tfor(let key in this.data['opts'+part].groups){\r\n\t\t\t\t\tlet to_have = true;\r\n\t\t\t\t\tlet g = this.data['opts'+part].groups[key];\r\n\t\t\t\t\tif(typeof g.ignore == 'function' && g.ignore(doc)) to_have = false;\r\n\t\t\t\t\tif(typeof g.allow == 'function' && !g.allow(doc)) to_have = false;\r\n\t\t\t\t\tif(!this.data['obj' + part][key]){\r\n\t\t\t\t\t\tthis.data['obj' + part][key] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet fields:any = {};\r\n\t\t\t\t\tlet set = (field:any) => {\r\n\t\t\t\t\t\tfields[field] = true;\r\n\t\t\t\t\t\tif(!field) return;\r\n\t\t\t\t\t\tif(!Array.isArray(this.data['obj' + part][key][field])){\r\n\t\t\t\t\t\t\tthis.data['obj' + part][key][field] = [];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(to_have){\r\n\t\t\t\t\t\t\tfor (let i = this.data['obj' + part][key][field].length-1; i >= 0; i--){\r\n\t\t\t\t\t\t\t if(this.data['obj' + part][key][field][i]._id == doc._id) return;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.data['obj' + part][key][field].push(doc);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tfor (let i = this.data['obj' + part][key][field].length-1; i >= 0; i--){\r\n\t\t\t\t\t\t\t if(this.data['obj' + part][key][field][i]._id == doc._id){\r\n\t\t\t\t\t\t\t \tthis.data['obj' + part][key][field].splice(i, 1);\r\n\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(typeof g.sort == 'function'){\r\n\t\t\t\t\t\t\tthis.data['obj' + part][key][field].sort(g.sort);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset(g.field(doc, set.bind(this)));\r\n\t\t\t\t\tfor (let field in this.data['obj' + part][key]){\r\n\t\t\t\t\t\tif(fields[field]) continue;\r\n\t\t\t\t\t\tfor (let i = this.data['obj' + part][key][field].length-1; i >= 0; i--){\r\n\t\t\t\t\t\t\tif(this.data['obj' + part][key][field][i]._id == doc._id){\r\n\t\t\t\t\t\t\t\tthis.data['obj' + part][key][field].splice(i, 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(this.data['opts'+part].query){\r\n\t\t\t\tfor(let key in this.data['opts'+part].query){\r\n\t\t\t\t\tlet to_have = true;\r\n\t\t\t\t\tlet query = this.data['opts'+part].query[key];\r\n\t\t\t\t\tif(typeof query.ignore == 'function' && query.ignore(doc)) to_have = false;\r\n\t\t\t\t\tif(typeof query.allow == 'function' && !query.allow(doc)) to_have = false;\r\n\t\t\t\t\tif(!this.data['obj' + part][key]){\r\n\t\t\t\t\t\tthis.data['obj' + part][key] = [];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(to_have){\r\n\t\t\t\t\t\tfor (let i = this.data['obj' + part][key].length-1; i >= 0; i--){\r\n\t\t\t\t\t\t if(this.data['obj' + part][key][i]._id == doc._id) return;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.data['obj' + part][key].push(doc);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tfor (let i = this.data['obj' + part][key].length-1; i >= 0; i--){\r\n\t\t\t\t\t\t if(this.data['obj' + part][key][i]._id == doc._id){\r\n\t\t\t\t\t\t \tthis.data['obj' + part][key].splice(i, 1);\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof query.sort == 'function'){\r\n\t\t\t\t\t\tthis.data['obj' + part][key].sort(query.sort);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tpublic push(part:any, doc:any):any{\r\n\t\t\tif(!this.data['arr' + part]) this.data['arr' + part] = [];\r\n\t\t\tif(!this.data['obj' + part]) this.data['obj' + part] = {};\r\n\t\t\tif(!this.data['opts' + part]) this.data['opts' + part] = {};\r\n\t\t\tif(this.data['obj' + part][doc._id]) return this.renew(part, doc);\r\n\t\t\tif(this.data['opts' + part].replace){\r\n\t\t\t\tfor(let key in this.data['opts'+part].replace){\r\n\t\t\t\t\tthis.replace(doc, key, this.data['opts'+part].replace[key]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(this.data['opts'+part].populate){\r\n\t\t\t\tlet p = this.data['opts'+part].populate;\r\n\t\t\t\tif(Array.isArray(p)){\r\n\t\t\t\t\tfor(let i = 0; i < p.length; i++){\r\n\t\t\t\t\t\tif(typeof p == 'object' && p[i].field && p[i].part){\r\n\t\t\t\t\t\t\tthis.populate(doc, p[i].field, p[i].part);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(typeof p == 'object' && p.field && p.part){\r\n\t\t\t\t\tthis.populate(doc, p.field, p.part);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.data['arr' + part].push(doc);\r\n\t\t\tif(this.data['opts'+part].sort){\r\n\t\t\t\tthis.data['arr' + part].sort(this.data['opts'+part].sort);\r\n\t\t\t}\r\n\t\t\tthis.data['obj' + part][doc._id] = doc;\r\n\t\t\tif(Array.isArray(this.data['opts'+part].use)){\r\n\t\t\t\tfor (let i = 0; i < this.data['opts'+part].use.length; i++){\r\n\t\t\t\t this.data['obj' + part][doc[this.data['opts'+part].use[i]]] = doc;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(this.data['opts'+part].groups){\r\n\t\t\t\tfor(let key in this.data['opts'+part].groups){\r\n\t\t\t\t\tlet g = this.data['opts'+part].groups[key];\r\n\t\t\t\t\tif(typeof g.ignore == 'function' && g.ignore(doc)) continue;\r\n\t\t\t\t\tif(typeof g.allow == 'function' && !g.allow(doc)) continue;\r\n\t\t\t\t\tif(!this.data['obj' + part][key]){\r\n\t\t\t\t\t\tthis.data['obj' + part][key] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet set = (field:any) => {\r\n\t\t\t\t\t\tif(!field) return;\r\n\t\t\t\t\t\tif(!Array.isArray(this.data['obj' + part][key][field])){\r\n\t\t\t\t\t\t\tthis.data['obj' + part][key][field] = [];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.data['obj' + part][key][field].push(doc);\r\n\t\t\t\t\t\tif(typeof g.sort == 'function'){\r\n\t\t\t\t\t\t\tthis.data['obj' + part][key][field].sort(g.sort);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset(g.field(doc, (field:any)=>{\r\n\t\t\t\t\t\tset(field);\r\n\t\t\t\t\t}));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.data['opts' + part].query) {\r\n\t\t\t\tfor (let key in this.data['opts' + part].query) {\r\n\t\t\t\t\tlet query = this.data['opts' + part].query[key];\r\n\t\t\t\t\tif (typeof query.ignore == 'function' && query.ignore(doc)) continue;\r\n\t\t\t\t\tif (typeof query.allow == 'function' && !query.allow(doc)) continue;\r\n\t\t\t\t\tif (!this.data['obj' + part][key]) {\r\n\t\t\t\t\t\tthis.data['obj' + part][key] = [];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.data['obj' + part][key].push(doc);\r\n\t\t\t\t\tif (typeof query.sort == 'function') {\r\n\t\t\t\t\t\tthis.data['obj' + part][key].sort(query.sort);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (let i = 0; i < this.data['opts' + part].fields.length; i++) {\r\n\t\t\t\tconst field = this.data['opts' + part].fields[i];\r\n\t\t\t\tif (!this.data['obj' + part][doc[field]]) {\r\n\t\t\t\t\tthis.data['obj' + part][doc[field]] = doc;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tfor (let each in doc) {\r\n\t\t\t\t\tthis.data['obj' + part][doc[field]][each] = doc[each];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// this.store.setJson('mongo' + part, this.data['arr' + part]);\r\n\t\t};\r\n\t\tpublic remove(part:any, doc:any){\r\n\t\t\tif(!Array.isArray(this.data['arr' + part])) return;\r\n\t\t\tfor (let i = 0; i < this.data['arr' + part].length; i++) {\r\n\t\t\t\tif (this.data['arr' + part][i]._id == doc._id) {\r\n\t\t\t\t\tthis.data['arr' + part].splice(i, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdelete this.data['obj' + part][doc._id];\r\n\t\t\tfor (let i = 0; i < this.data['opts' + part].fields.length; i++) {\r\n\t\t\t\tconst field = this.data['opts' + part].fields[i];\r\n\t\t\t\tdelete this.data['obj' + part][doc[field]];\r\n\t\t\t}\r\n\t\t\tif(this.data['opts'+part].groups){\r\n\t\t\t\tfor(let key in this.data['opts'+part].groups){\r\n\t\t\t\t\tfor(let field in this.data['obj' + part][key]){\r\n\t\t\t\t\t\tfor (let i = this.data['obj' + part][key][field].length-1; i >= 0 ; i--) {\r\n\t\t\t\t\t\t\tif (this.data['obj' + part][key][field][i]._id == doc._id) {\r\n\t\t\t\t\t\t\t\tthis.data['obj' + part][key][field].splice(i, 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(this.data['opts'+part].query){\r\n\t\t\t\tfor(let key in this.data['opts'+part].query){\r\n\t\t\t\t\tfor (let i = this.data['obj' + part][key].length-1; i >= 0 ; i--) {\r\n\t\t\t\t\t\tif (this.data['obj' + part][key][i]._id == doc._id) {\r\n\t\t\t\t\t\t\tthis.data['obj' + part][key].splice(i, 1);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t/*\r\n\t*\tEndof Mongo Service\r\n\t*/\r\n\tconstructor(\r\n\t\tprivate store: StoreService,\r\n\t\tprivate http: HttpService,\r\n\t\tprivate core: CoreService\r\n\t) {\r\n\t\tconsole.warn('Mongo Service is deprecated');\r\n\t\tthis.core.onComplete('socket').then((socket:any)=>{\r\n\t\t\tthis.socket = socket;\r\n\t\t\tsocket.on('create', (created:any) => {\r\n\t\t\t\tthis.fetch(created.part, {\r\n\t\t\t\t\tforce: true,\r\n\t\t\t\t\tquery: {\r\n\t\t\t\t\t\t_id: created._id\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tsocket.on('update', (updated:any) => {\r\n\t\t\t\tthis.fetch(updated.part, {\r\n\t\t\t\t\tforce: true,\r\n\t\t\t\t\tquery: {\r\n\t\t\t\t\t\t_id: updated._id\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tsocket.on('delete', (deleted:any) => {\r\n\t\t\t\tthis.remove(deleted.part, deleted);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class RenderService {\r\n\tconstructor() {}\r\n\tprivate pipes:any = {};\r\n\ton(event: string, cb: any){\r\n\t\tif(!this.pipes[event]) this.pipes[event] = [];\r\n\t\tthis.pipes[event].push(cb);\r\n\t\tconst index = this.pipes[event].length-1;\r\n\t\treturn ()=>{\r\n\t\t\tthis.pipes[event][index] = false;\r\n\t\t};\r\n\t}\r\n\trender(event = '', param = null){\r\n\t\tif(!this.pipes[event]) return;\r\n\t\tfor(let i = 0; i < this.pipes[event].length; i++){\r\n\t\t\tif(typeof this.pipes[event][i] === 'function'){\r\n\t\t\t\tthis.pipes[event][i](param);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CoreService } from './core.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class HashService {\r\n\tprivate replacements = [\r\n\t\t{\r\n\t\t\tfrom: '%20',\r\n\t\t\tto: ' ',\r\n\t\t},\r\n\t];\r\n\tpublic hash: { [key: string]: string } = {};\r\n\tprivate done: boolean = false;\r\n\r\n\tconstructor(private core: CoreService) {\r\n\t\tthis.initialize();\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the hash service by loading the current hash from the URL.\r\n\t */\r\n\tprivate initialize(): void {\r\n\t\tif (!this.core.window.location.hash) {\r\n\t\t\tthis.done = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.load();\r\n\t\tthis.done = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the current hash from the URL into the hash object.\r\n\t */\r\n\tprivate load(): void {\r\n\t\tthis.hash = {};\r\n\t\tconst hashArray = this.core.window.location.hash\r\n\t\t\t.replace('#!#', '')\r\n\t\t\t.replace('#', '')\r\n\t\t\t.split('&');\r\n\r\n\t\tfor (const hashItem of hashArray) {\r\n\t\t\tlet [holder, value] = hashItem.split('=');\r\n\t\t\tholder = this.applyReplacements(holder);\r\n\t\t\tvalue = this.applyReplacements(value);\r\n\t\t\tthis.hash[holder] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Applies replacements to a given string based on the replacements array.\r\n\t *\r\n\t * @param str - The string to apply replacements to.\r\n\t * @returns The string with replacements applied.\r\n\t */\r\n\tprivate applyReplacements(str: string | undefined): string {\r\n\t\tif (!str) return '';\r\n\t\tfor (const replacement of this.replacements) {\r\n\t\t\tstr = str.split(replacement.from).join(replacement.to);\r\n\t\t}\r\n\t\treturn str;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes a callback with the value of a specific hash field once the hash is loaded.\r\n\t *\r\n\t * @param field - The hash field to get the value for.\r\n\t * @param cb - The callback to execute with the value.\r\n\t */\r\n\ton(field: string, cb: (value: string) => void): void {\r\n\t\tif (!this.done) {\r\n\t\t\tsetTimeout(() => this.on(field, cb), 100);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcb(this.hash[field]);\r\n\t}\r\n\r\n\t/**\r\n\t * Saves the current hash object to the URL.\r\n\t */\r\n\tsave(): void {\r\n\t\tconst hash = Object.entries(this.hash)\r\n\t\t\t.map(([key, value]) => `${key}=${value}`)\r\n\t\t\t.join('&');\r\n\t\tthis.core.window.location.hash = hash;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a value for a specific hash field and updates the URL.\r\n\t *\r\n\t * @param field - The hash field to set the value for.\r\n\t * @param value - The value to set.\r\n\t */\r\n\tset(field: string, value: string): void {\r\n\t\tthis.hash[field] = value;\r\n\t\tthis.save();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the value of a specific hash field.\r\n\t *\r\n\t * @param field - The hash field to get the value for.\r\n\t * @returns The value of the hash field.\r\n\t */\r\n\tget(field: string): string | undefined {\r\n\t\treturn this.hash[field];\r\n\t}\r\n\r\n\t/**\r\n\t * Clears a specific hash field or all hash fields and updates the URL.\r\n\t *\r\n\t * @param field - The hash field to clear. If not provided, clears all hash fields.\r\n\t */\r\n\tclear(field?: string): void {\r\n\t\tif (field) {\r\n\t\t\tdelete this.hash[field];\r\n\t\t} else {\r\n\t\t\tthis.hash = {};\r\n\t\t}\r\n\t\tthis.save();\r\n\t}\r\n}\r\n","import {\r\n\tInjectable,\r\n\tInjector,\r\n\tComponentFactoryResolver,\r\n\tComponentRef,\r\n\tEmbeddedViewRef,\r\n\tApplicationRef\r\n} from '@angular/core';\r\nimport { CoreService } from './core.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class DomService {\r\n\tprivate providedIn: Record<string, boolean> = {};\r\n\r\n\tconstructor(\r\n\t\tprivate componentFactoryResolver: ComponentFactoryResolver,\r\n\t\tprivate appRef: ApplicationRef,\r\n\t\tprivate injector: Injector,\r\n\t\tprivate core: CoreService\r\n\t) { }\r\n\r\n\t/**\r\n\t * Appends a component to a specified element by ID.\r\n\t *\r\n\t * @param component - The component to append.\r\n\t * @param options - The options to project into the component.\r\n\t * @param id - The ID of the element to append the component to.\r\n\t * @returns An object containing the native element and the component reference.\r\n\t */\r\n\tappendById(component: any, options: any = {}, id: string): { nativeElement: HTMLElement, componentRef: ComponentRef<any> } {\r\n\t\tconst componentRef = this.componentFactoryResolver\r\n\t\t\t.resolveComponentFactory(component)\r\n\t\t\t.create(this.injector);\r\n\r\n\t\tthis.projectComponentInputs(componentRef, options);\r\n\t\tthis.appRef.attachView(componentRef.hostView);\r\n\t\tconst domElem = (componentRef.hostView as EmbeddedViewRef<any>)\r\n\t\t\t.rootNodes[0] as HTMLElement;\r\n\t\tconst element = this.core.document.getElementById(id);\r\n\t\tif (element && typeof element.appendChild === 'function') {\r\n\t\t\telement.appendChild(domElem);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tnativeElement: domElem,\r\n\t\t\tcomponentRef: componentRef,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Appends a component to a specified element or to the body.\r\n\t *\r\n\t * @param component - The component to append.\r\n\t * @param options - The options to project into the component.\r\n\t * @param element - The element to append the component to. Defaults to body.\r\n\t * @returns An object containing the native element and the component reference.\r\n\t */\r\n\tappendComponent(\r\n\t\tcomponent: any,\r\n\t\toptions: any = {},\r\n\t\telement: HTMLElement = this.core.document.body\r\n\t): { nativeElement: HTMLElement, componentRef: ComponentRef<any> } | void {\r\n\t\tif (options.providedIn) {\r\n\t\t\tif (this.providedIn[options.providedIn]) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.providedIn[options.providedIn] = true;\r\n\t\t}\r\n\r\n\t\tconst componentRef = this.componentFactoryResolver\r\n\t\t\t.resolveComponentFactory(component)\r\n\t\t\t.create(this.injector);\r\n\t\tthis.projectComponentInputs(componentRef, options);\r\n\t\tthis.appRef.attachView(componentRef.hostView);\r\n\t\tconst domElem = (componentRef.hostView as EmbeddedViewRef<any>)\r\n\t\t\t.rootNodes[0] as HTMLElement;\r\n\t\tif (element && typeof element.appendChild === 'function') {\r\n\t\t\telement.appendChild(domElem);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tnativeElement: domElem,\r\n\t\t\tcomponentRef: componentRef,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a reference to a dynamically created component.\r\n\t *\r\n\t * @param component - The component to create.\r\n\t * @param options - The options to project into the component.\r\n\t * @returns The component reference.\r\n\t */\r\n\tgetComponentRef(component: any, options: any = {}): ComponentRef<any> {\r\n\t\tconst componentRef = this.componentFactoryResolver\r\n\t\t\t.resolveComponentFactory(component)\r\n\t\t\t.create(this.injector);\r\n\r\n\t\tthis.projectComponentInputs(componentRef, options);\r\n\t\tthis.appRef.attachView(componentRef.hostView);\r\n\r\n\t\treturn componentRef;\r\n\t}\r\n\r\n\t/**\r\n\t * Projects the inputs onto the component.\r\n\t *\r\n\t * @param component - The component reference.\r\n\t * @param options - The options to project into the component.\r\n\t * @returns The component reference with the projected inputs.\r\n\t */\r\n\tprivate projectComponentInputs(component: ComponentRef<any>, options: any): ComponentRef<any> {\r\n\t\tif (options) {\r\n\t\t\tconst props = Object.getOwnPropertyNames(options);\r\n\t\t\tfor (const prop of props) {\r\n\t\t\t\tcomponent.instance[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn component;\r\n\t}\r\n}\r\n\r\n/*\r\nhttps://stackoverflow.com/questions/39857222/angular2-dynamic-component-injection-in-root/40687392#40687392\r\nhttps://gist.github.com/reed-lawrence/1f6b7c328ad3886e60dc2b0adcf75a97\r\n*/\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'lib-wrapper',\r\n\ttemplateUrl: './wrapper.component.html',\r\n\tstyleUrls: ['./wrapper.component.scss']\r\n})\r\nexport class WrapperComponent{\r\n\tconstructor() {}\r\n}\r\n","<div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomRight\" id=\"bottomRight\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomLeft\" id=\"bottomLeft\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topRight\" id=\"topRight\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topLeft\" id=\"topLeft\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topCenter\" id=\"topCenter\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomCenter\" id=\"bottomCenter\"></div>\r\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-center\" id=\"center\"></div>\r\n</div>\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from '../interfaces/config';\r\nimport { AlertComponent } from '../components/alert/alert.component';\r\nimport { WrapperComponent } from '../components/alert/wrapper/wrapper.component';\r\nimport { DomService } from './dom.service';\r\nimport { CoreService } from './core.service';\r\nimport { Alert, DEFAULT_Alert } from '../interfaces/alert.interface';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AlertService {\r\n\tprivate alert: any;\r\n\tprivate _container: any;\r\n\tconstructor(\r\n\t\tprivate dom: DomService,\r\n\t\tprivate core: CoreService,\r\n\t\t@Inject(CONFIG_TOKEN) @Optional() private config: Config\r\n\t) {\r\n\t\tif (!this.config) this.config = DEFAULT_CONFIG;\r\n\t\tthis.alert = this.config.alert;\r\n\t\tif (!this.alert) {\r\n\t\t\tthis.alert = DEFAULT_Alert;\r\n\t\t} else {\r\n\t\t\tfor (let each in DEFAULT_Alert) {\r\n\t\t\t\tif (this.alert[each]) continue;\r\n\t\t\t\tthis.alert[each] = DEFAULT_Alert[each];\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._container = this.dom.appendComponent(WrapperComponent);\r\n\t}\r\n\tprivate uniques: any = {};\r\n\tprivate shortcuts: any = {\r\n\t\ttl: 'topLeft',\r\n\t\ttc: 'topCenter',\r\n\t\ttr: 'topRight',\r\n\t\tr: 'right',\r\n\t\tbr: 'bottomRight',\r\n\t\tbc: 'bottomCenter',\r\n\t\tbl: 'bottomLeft',\r\n\t\tl: 'left',\r\n\t\tc: 'center',\r\n\t};\r\n\tprivate positionNumber: any = {\r\n\t\ttopLeft: 3,\r\n\t\ttopCenter: 4,\r\n\t\ttopRight: 2,\r\n\t\tright: '',\r\n\t\tbottomRight: 0,\r\n\t\tbottomCenter: 5,\r\n\t\tbottomLeft: 1,\r\n\t\tleft: '',\r\n\t\tcenter: 6,\r\n\t};\r\n\r\n\tshow(opts: any | Alert) {\r\n\t\tif (typeof opts === 'string') {\r\n\t\t\topts = {\r\n\t\t\t\ttext: opts,\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!opts) opts = {};\r\n\t\tif (!opts['type']) opts['type'] = 'info';\r\n\t\tfor (let each in this.alert) {\r\n\t\t\tif (each == 'class') opts[each] = opts[each] + ' ' + this.alert[each];\r\n\t\t\telse if (typeof opts[each] == 'undefined') opts[each] = this.alert[each];\r\n\t\t}\r\n\t\tif (this.shortcuts[opts.position])\r\n\t\t\topts.position = this.shortcuts[opts.position];\r\n\t\tif (!opts.position) opts.position = 'bottomRight';\r\n\t\tvar content: any;\r\n\t\topts.close = () => {\r\n\t\t\tif (content) content.componentRef.destroy();\r\n\t\t\topts.component.nativeElement.remove();\r\n\t\t\tif (typeof (opts as Alert).onClose == 'function')\r\n\t\t\t\t(opts as Alert).onClose();\r\n\t\t};\r\n\t\t// let component = this.dom.appendById(AlertComponent, opts, opts.position);\r\n\t\tlet customElement = false;\r\n\r\n\t\tif (\r\n\t\t\ttypeof opts.component == 'string' &&\r\n\t\t\tthis.alert.alerts[opts.component]\r\n\t\t) {\r\n\t\t\topts.component = this.alert.alerts[opts.component];\r\n\t\t\tcustomElement = true;\r\n\t\t} else {\r\n\t\t\topts.component = this.dom.appendById(AlertComponent, opts, opts.position);\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\ttypeof opts.component === 'function'\r\n\t\t) {\r\n\t\t\tcontent = this.dom.appendComponent(\r\n\t\t\t\topts.component,\r\n\t\t\t\topts,\r\n\t\t\t\tthis._container.nativeElement.children[0].children[this.positionNumber[opts.position] || 0]\r\n\t\t\t\t// component.nativeElement.children[0].children[0].children[0] as HTMLElement\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (opts.unique) {\r\n\t\t\tif (this.uniques[opts.unique]) this.uniques[opts.unique].remove();\r\n\t\t\tthis.uniques[opts.unique] = opts.component.nativeElement;\r\n\t\t}\r\n\r\n\t\tif (typeof opts.timeout !== 'number') {\r\n\t\t\topts.timeout = 2000;\r\n\t\t}\r\n\r\n\t\tif (opts.timeout) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\topts.close();\r\n\t\t\t}, opts.timeout);\r\n\t\t}\r\n\r\n\t\treturn opts.component.nativeElement;\r\n\t}\r\n\topen(opts: Alert) {\r\n\t\tthis.show(opts);\r\n\t}\r\n\tinfo(opts: Alert) {\r\n\t\topts['type'] = 'info';\r\n\t\tthis.show(opts);\r\n\t}\r\n\tsuccess(opts: Alert) {\r\n\t\topts['type'] = 'success';\r\n\t\tthis.show(opts);\r\n\t}\r\n\twarning(opts: Alert) {\r\n\t\topts['type'] = 'warning';\r\n\t\tthis.show(opts);\r\n\t}\r\n\terror(opts: Alert) {\r\n\t\topts['type'] = 'error';\r\n\t\tthis.show(opts);\r\n\t}\r\n\tquestion(opts: Alert) {\r\n\t\topts['type'] = 'question';\r\n\t\tthis.show(opts);\r\n\t}\r\n\tdestroy() {\r\n\t\tthis.core.document.getElementById('bottomRight').innerHTML = '';\r\n\t\tthis.core.document.getElementById('bottomLeft').innerHTML = '';\r\n\t\tthis.core.document.getElementById('bottomCenter').innerHTML = '';\r\n\t\tthis.core.document.getElementById('topRight').innerHTML = '';\r\n\t\tthis.core.document.getElementById('topLeft').innerHTML = '';\r\n\t\tthis.core.document.getElementById('topCenter').innerHTML = '';\r\n\t\tthis.core.document.getElementById('center').innerHTML = '';\r\n\t}\r\n}\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from '../interfaces/config';\r\nimport { LoaderComponent } from '../components/loader/loader.component';\r\nimport { DomService } from './dom.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class LoaderService {\r\n\tpublic loaders:any = [];\r\n\tconstructor(private dom: DomService,\r\n\t\t@Inject(CONFIG_TOKEN) @Optional() private config: Config) {\r\n\t}\r\n\tshow(opts?:any){\r\n\t\tlet component:any;\r\n\t\topts.close = ()=>{\r\n\t\t\tif(component) component.componentRef.destroy();\r\n\t\t\tcomponent.nativeElement.remove();\r\n\t\t\tif(typeof opts.onClose == 'function') opts.onClose();\r\n\t\t};\r\n\t\tif(opts.append){\r\n\t\t\tcomponent = this.dom.appendComponent(LoaderComponent, opts, opts.append);\r\n\t\t}\r\n\t\telse{\r\n\t\t\tcomponent = this.dom.appendComponent(LoaderComponent, opts);\r\n\t\t}\r\n\t\tthis.loaders.push(component);\r\n\t\treturn component.nativeElement;\r\n\t}\r\n\tdestroy(){\r\n\t\tfor (let i = this.loaders.length-1; i >= 0; i--){\r\n\t\t this.loaders[i].componentRef.destroy();\r\n\t\t\tthis.loaders.splice(i,1);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from '../interfaces/config';\r\nimport { CoreService } from './core.service';\r\nimport * as io from 'socket.io-client';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SocketService {\r\n\tprivate _url = '';\r\n\tprivate _io: any;\r\n\tprivate _connected = false;\r\n\tprivate _opts: any = {};\r\n\r\n\tconstructor(\r\n\t\t@Inject(CONFIG_TOKEN) @Optional() private _config: Config,\r\n\t\tprivate _core: CoreService\r\n\t) {\r\n\t\tthis._url = this._core.window.location.origin.replace('4200', '8080');\r\n\t\tif (!this._config) this._config = DEFAULT_CONFIG;\r\n\r\n\t\tif (typeof this._config.socket === 'object') {\r\n\t\t\tif (this._config.socket.url) {\r\n\t\t\t\tthis._url = this._config.socket.url;\r\n\t\t\t}\r\n\r\n\t\t\tif (this._config.socket.opts) {\r\n\t\t\t\tthis._opts = this._config.socket.opts;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._config.socket) {\r\n\t\t\tthis.load();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the URL for the WebSocket connection and reloads the socket.\r\n\t * @param url - The URL of the WebSocket server.\r\n\t */\r\n\tsetUrl(url: string): void {\r\n\t\tthis._url = url;\r\n\t\tif (!this._config.socket) {\r\n\t\t\tthis._config.socket = true;\r\n\t\t}\r\n\t\tthis.load();\r\n\t}\r\n\r\n\t/**\r\n\t * Loads and initializes the WebSocket connection.\r\n\t */\r\n\tprivate load(): void {\r\n\t\tif (io) {\r\n\t\t\tconst ioFunc = (io as any).default ? (io as any).default : io;\r\n\t\t\tthis._io = ioFunc(this._url, this._opts);\r\n\t\t\tthis._io.on('connect', () => {\r\n\t\t\t\tthis._connected = true;\r\n\t\t\t\tthis._core.complete('socket');\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Subscribes to a WebSocket event.\r\n\t * @param to - The event to subscribe to.\r\n\t * @param cb - The callback function to execute when the event is received.\r\n\t */\r\n\ton(to: string, cb: (message: any) => void = () => { }): void {\r\n\t\tif (!this._config.socket) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this._connected) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.on(to, cb);\r\n\t\t\t}, 100);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._io.on(to, cb);\r\n\t}\r\n\r\n\t/**\r\n\t * Emits a message to a WebSocket event.\r\n\t * @param to - The event to emit the message to.\r\n\t * @param message - The message to emit.\r\n\t * @param room - Optional room to emit the message to.\r\n\t */\r\n\temit(to: string, message: any, room: any = false): void {\r\n\t\tif (!this._config.socket) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this._connected) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.emit(to, message, room);\r\n\t\t\t}, 100);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._io.emit(to, message, room);\r\n\t}\r\n}\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { DomService } from './dom.service';\r\nimport { CoreService } from './core.service';\r\nimport { ModalComponent } from '../components/modal/modal.component';\r\nimport { CONFIG_TOKEN, Config } from '../interfaces/config';\r\nimport { Modal } from '../interfaces/modal.interface';\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ModalService {\r\n\tprivate _modal: any;\r\n\tconstructor(private dom: DomService, private core: CoreService,\r\n\t\t@Inject(CONFIG_TOKEN) @Optional() private config: Config) {\r\n\t\tif(!this.config) this.config={};\r\n\t\tif(!this.config.modal) this.config.modal={};\r\n\t\tif(!this.config.modal.modals) this.config.modal.modals={};\r\n\t\tthis._modal = config.modal;\r\n\t}\r\n\r\n\tshow(opts: Modal | any) {\r\n\t\tif (this.locked) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif(typeof opts == 'string' || typeof opts == 'function'){\r\n\t\t\topts = {\r\n\t\t\t\tcomponent: opts\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(!opts || typeof opts != 'object') opts = {};\r\n\t\tif(typeof opts.component == 'string' && this._modal.modals[opts.component]){\r\n\t\t\topts.component = this._modal.modals[opts.component];\r\n\t\t}\r\n\t\tif(typeof opts.component != 'function'){\r\n\t\t\tconsole.log(\"This component does not exists.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif(!opts.class) opts.class='';\r\n\t\tfor (let each in this.config.modal){\r\n\t\t\tif(each==\"class\") opts.class += (opts.class&&' '||'') + this.config.modal.class;\r\n\t\t\telse if(!opts[each]) opts[each] = this._modal[each];\r\n\t\t}\r\n\t\topts.id = Math.floor(Math.random() * Date.now()) + Date.now();\r\n\t\tthis.opened[opts.id] = opts;\r\n\t\tthis.core.document.body.classList.add(\"modalOpened\");\r\n\t\tlet component:any;\r\n\t\tlet content:any;\r\n\t\topts.close = ()=>{\r\n\t\t\tcontent.componentRef.destroy();\r\n\t\t\tcomponent.nativeElement.remove();\r\n\t\t\tif(typeof opts.onClose == 'function') opts.onClose();\r\n\t\t\tdelete this.opened[opts.id];\r\n\t\t\tif(!Object.keys(this.opened).length){\r\n\t\t\t\tthis.core.document.body.classList.remove(\"modalOpened\");\r\n\t\t\t}\r\n\t\t};\r\n\t\tif(typeof opts.timeout == 'number' && opts.timeout>0){\r\n\t\t\tsetTimeout(opts.close, opts.timeout);\r\n\t\t}\r\n\t\tcomponent = this.dom.appendComponent(ModalComponent, opts);\r\n\t\tcontent = this.dom.appendComponent(opts.component, opts, component.nativeElement.children[0].children[0].children[0] as HTMLElement);\r\n\t\treturn component.nativeElement;\r\n\t}\r\n\topen(opts: Modal){ this.show(opts); }\r\n\tsmall(opts: Modal){\r\n\t\tif(typeof opts == 'string' || typeof opts == 'function'){\r\n\t\t\topts = {\r\n\t\t\t\tcomponent: opts\r\n\t\t\t}\r\n\t\t}\r\n\t\topts.size = 'small';\r\n\t\tthis.show(opts);\r\n\t}\r\n\tmid(opts: Modal){\r\n\t\tif(typeof opts == 'string' || typeof opts == 'function'){\r\n\t\t\topts = {\r\n\t\t\t\tcomponent: opts\r\n\t\t\t}\r\n\t\t}\r\n\t\topts.size = 'mid';\r\n\t\tthis.show(opts);\r\n\t}\r\n\tbig(opts: Modal){\r\n\t\tif(typeof opts == 'string' || typeof opts == 'function'){\r\n\t\t\topts = {\r\n\t\t\t\tcomponent: opts\r\n\t\t\t}\r\n\t\t}\r\n\t\topts.size = 'big';\r\n\t\tthis.show(opts);\r\n\t}\r\n\tfull(opts: Modal){\r\n\t\tif(typeof opts == 'string' || typeof opts == 'function'){\r\n\t\t\topts = {\r\n\t\t\t\tcomponent: opts\r\n\t\t\t}\r\n\t\t}\r\n\t\topts.size = 'full';\r\n\t\tthis.show(opts);\r\n\t}\r\n\tprivate opened:any = {};\r\n\tlocked = false;\r\n\tdestroy() {\r\n\t\tif (this.locked) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfor (let each in this.opened){\r\n\t\t this.opened[each].close();\r\n\t\t}\r\n\t\tthis.core.document.body.classList.remove(\"modalOpened\");\r\n\t}\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'lib-files',\r\n\ttemplateUrl: './files.component.html',\r\n\tstyleUrls: ['./files.component.scss']\r\n})\r\nexport class FilesComponent{\r\n\tpublic fs:any;\r\n\tconstructor() {}\r\n}\r\n","<ng-container *ngFor=\"let file of fs.files\">\r\n\t<input [id]=\"file.id\" type=\"file\" name=\"file\" (change)=\"fs.change($event, file); input.value='';\" #input [hidden]=\"true\" [accept]=\"(file.accept) || (file.part && 'image/*') || ''\" [multiple]=\"file.multiple && true || ''\">\r\n</ng-container>","import { Injectable } from '@angular/core';\r\nimport { HttpService } from './http.service';\r\nimport { DomService } from './dom.service';\r\nimport { CoreService } from './core.service';\r\nimport { FilesComponent } from '../components/files/files.component';\r\n\r\ninterface FileOptions {\r\n\tid: string;\r\n\ttype?: string;\r\n\tresize?: number | { width: number; height: number };\r\n\tmultiple?: boolean;\r\n\tmultiple_cb?: (files: { dataUrl: string; file: File }[]) => void;\r\n\tcb?: (dataUrl: string | false, file: File) => void;\r\n\tsave?: boolean;\r\n\tcomplete?: () => void;\r\n\tapi?: string;\r\n\tpart?: string;\r\n\tname?: string;\r\n\tbody?: () => object | object;\r\n\tresp?: (response: any) => void;\r\n\tappend?: (formData: FormData, files: File[]) => void;\r\n\tmultiple_files?: { dataUrl: string; file: File }[];\r\n\tmultiple_counter?: number;\r\n\turl?: string;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class FileService {\r\n\tprivate added: Record<string, FileOptions> = {};\r\n\tprivate files: FileOptions[] = [];\r\n\r\n\tconstructor(\r\n\t\tprivate dom: DomService,\r\n\t\tprivate core: CoreService,\r\n\t\tprivate http: HttpService\r\n\t) {\r\n\t\tthis.dom.appendComponent(FilesComponent, {\r\n\t\t\tfs: this,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a file input configuration.\r\n\t *\r\n\t * @param opts - The file options.\r\n\t */\r\n\tpublic add(opts: FileOptions | string): void | (() => void) {\r\n\t\tif (typeof opts === 'string') {\r\n\t\t\topts = { id: opts };\r\n\t\t}\r\n\r\n\t\tif (!opts.id) {\r\n\t\t\tconsole.log('You have to pass ID into file object');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\topts.type = opts.type || 'image';\r\n\r\n\t\tif (typeof opts.resize === 'number') {\r\n\t\t\topts.resize = { width: opts.resize, height: opts.resize };\r\n\t\t}\r\n\r\n\t\tif (this.added[opts.id]) {\r\n\t\t\tthis.files = this.files.filter((file) => file.id !== opts.id);\r\n\t\t}\r\n\r\n\t\tthis.files.push(opts);\r\n\t\tthis.added[opts.id] = opts;\r\n\r\n\t\tif (opts.save) {\r\n\t\t\treturn () => {\r\n\t\t\t\topts.complete?.();\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles file input change event.\r\n\t *\r\n\t * @param event - The input change event.\r\n\t * @param info - The file options.\r\n\t */\r\n\tpublic change(event: Event, info: FileOptions): void {\r\n\t\tconst input = event.target as HTMLInputElement;\r\n\t\tif (!input.files) return;\r\n\r\n\t\tif (info.type === 'image') {\r\n\t\t\tif (info.multiple) {\r\n\t\t\t\tif (info.multiple_cb) {\r\n\t\t\t\t\tinfo.multiple_files = [];\r\n\t\t\t\t\tinfo.multiple_counter = input.files.length;\r\n\t\t\t\t}\r\n\t\t\t\tArray.from(input.files).forEach((file) => this.process(file, info));\r\n\t\t\t} else {\r\n\t\t\t\tthis.process(input.files[0], info);\r\n\t\t\t}\r\n\t\t} else if (info.type === 'file') {\r\n\t\t\tif (info.multiple) {\r\n\t\t\t\tinfo.multiple_cb?.(Array.from(input.files).map(file => ({ dataUrl: '', file })));\r\n\t\t\t}\r\n\t\t\tArray.from(input.files).forEach((file) => info.cb?.('', file));\r\n\t\t\tif (info.part || info.url) {\r\n\t\t\t\tthis.uploadFiles(info, input.files as any);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconsole.log('Provide type `image` or `file`');\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a file.\r\n\t *\r\n\t * @param part - The part of the API.\r\n\t * @param url - The URL of the file.\r\n\t * @param opts - Additional options.\r\n\t * @param cb - The callback function.\r\n\t */\r\n\tpublic remove(part: string, url: string, opts: any = {}, cb: (resp: any) => void = () => { }): void | (() => void) {\r\n\t\topts.url = url;\r\n\t\tif (opts.save) {\r\n\t\t\treturn () => {\r\n\t\t\t\tthis.http.post(opts.api || `/api/${part}/file/delete`, opts, cb);\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tthis.http.post(opts.api || `/api/${part}/file/delete`, opts, cb);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Uploads files to the server.\r\n\t *\r\n\t * @param info - The file options.\r\n\t * @param files - The files to upload.\r\n\t * @param cb - The callback function.\r\n\t */\r\n\tpublic uploadFiles(info: FileOptions, files: File[], cb: (resp: any) => void = () => { }): void {\r\n\t\tconst formData = new FormData();\r\n\r\n\t\tif (info.append) {\r\n\t\t\tinfo.append(formData, files);\r\n\t\t} else {\r\n\t\t\tfiles.forEach((file, index) => formData.append(`file[${index}]`, file));\r\n\t\t}\r\n\r\n\t\tconst body = typeof info.body === 'function' ? info.body() : (info.body || {});\r\n\t\tObject.entries(body).forEach(([key, value]) => formData.append(key, value));\r\n\r\n\t\tif (info.save) {\r\n\t\t\tinfo.complete = () => {\r\n\t\t\t\tthis.http.post(info.api || `/api/${info.part}/file${info.name ? `/${info.name}` : ''}`, formData, (resp: any) => {\r\n\t\t\t\t\tinfo.resp?.(resp);\r\n\t\t\t\t\tcb(resp);\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tthis.http.post(info.api || `/api/${info.part}/file${info.name ? `/${info.name}` : ''}`, formData, (resp: any) => {\r\n\t\t\t\tinfo.resp?.(resp);\r\n\t\t\t\tcb(resp);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Uploads an image to the server.\r\n\t *\r\n\t * @param info - The file options.\r\n\t * @param cb - The callback function.\r\n\t */\r\n\tpublic image(info: FileOptions, cb: (resp: any) => void = () => { }): void | (() => void) {\r\n\t\tif (info.save) {\r\n\t\t\treturn () => {\r\n\t\t\t\tthis.http.post(info.api || `/api/${info.part}/file${info.name ? `/${info.name}` : ''}`, info, cb);\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tthis.http.post(info.api || `/api/${info.part}/file${info.name ? `/${info.name}` : ''}`, info, cb);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the file information after processing.\r\n\t *\r\n\t * @param dataUrl - The data URL of the processed file.\r\n\t * @param info - The file options.\r\n\t * @param file - The file object.\r\n\t */\r\n\t// private update(dataUrl: string, info: FileOptions, file: File): void {\r\n\tprivate update(dataUrl: string, info: any, file: File): void {\r\n\t\tinfo.cb?.(dataUrl, file);\r\n\t\tif (info.multiple_cb) {\r\n\t\t\tinfo.multiple_files.push({ dataUrl, file });\r\n\t\t\tif (--info.multiple_counter === 0) info.multiple_cb(info.multiple_files);\r\n\t\t}\r\n\r\n\t\tif (!info.part) return;\r\n\r\n\t\tconst obj = typeof info.body === 'function' ? info.body() : (info.body || {});\r\n\t\tobj['dataUrl'] = dataUrl;\r\n\r\n\t\tif (info.save) {\r\n\t\t\tinfo.complete = () => {\r\n\t\t\t\tthis.http.post(info.api || `/api/${info.part}/file${info.name ? `/${info.name}` : ''}`, obj, (resp: any) => {\r\n\t\t\t\t\tinfo.cb?.(resp);\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tthis.http.post(info.api || `/api/${info.part}/file${info.name ? `/${info.name}` : ''}`, obj, (resp: any) => {\r\n\t\t\t\tinfo.cb?.(resp);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes an image file for resizing.\r\n\t *\r\n\t * @param file - The file object.\r\n\t * @param info - The file options.\r\n\t */\r\n\t// private process(file: File, info: FileOptions): void {\r\n\tprivate process(file: File, info: any): void {\r\n\t\tif (!file.type.startsWith('image/')) {\r\n\t\t\tinfo.cb?.(false, file);\r\n\t\t\tif (info.multiple_cb) {\r\n\t\t\t\tinfo.multiple_files.push({ dataUrl: '', file });\r\n\t\t\t\tif (--info.multiple_counter === 0) info.multiple_cb(info.multiple_files);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (info.resize) {\r\n\t\t\tinfo.resize.width = info.resize.width || 1920;\r\n\t\t\tinfo.resize.height = info.resize.height || 1080;\r\n\t\t}\r\n\r\n\t\tconst reader = new FileReader();\r\n\t\treader.onload = (loadEvent) => {\r\n\t\t\tif (!info.resize) {\r\n\t\t\t\treturn this.update(loadEvent.target?.result as string, info, file);\r\n\t\t\t}\r\n\r\n\t\t\tconst canvas = this.core.document.createElement('canvas');\r\n\t\t\tconst img = this.core.document.createElement('img');\r\n\t\t\timg.onload = () => {\r\n\t\t\t\tif (img.width <= info.resize.width && img.height <= info.resize.height) {\r\n\t\t\t\t\treturn this.update(loadEvent.target?.result as string, info, file);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst infoRatio = info.resize.width / info.resize.height;\r\n\t\t\t\tconst imgRatio = img.width / img.height;\r\n\t\t\t\tlet width, height;\r\n\t\t\t\tif (imgRatio > infoRatio) {\r\n\t\t\t\t\twidth = Math.min(info.resize.width, img.width);\r\n\t\t\t\t\theight = width / imgRatio;\r\n\t\t\t\t} else {\r\n\t\t\t\t\theight = Math.min(info.resize.height, img.height);\r\n\t\t\t\t\twidth = height * imgRatio;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcanvas.width = width;\r\n\t\t\t\tcanvas.height = height;\r\n\t\t\t\tconst context = canvas.getContext('2d');\r\n\t\t\t\tcontext.drawImage(img, 0, 0, width, height);\r\n\t\t\t\tconst dataUrl = canvas.toDataURL('image/jpeg', 1);\r\n\t\t\t\tthis.update(dataUrl, info, file);\r\n\t\t\t};\r\n\t\t\timg.src = loadEvent.target?.result as string;\r\n\t\t};\r\n\t\treader.readAsDataURL(file);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CoreService } from './core.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class UiService {\r\n\tprivate variables: { [key: string]: string } = {};\r\n\tprivate _forms: { [key: string]: any } = {};\r\n\t// global variable use for design purposes\r\n\tvar: Record<string, unknown> = {};\r\n\r\n\tconstructor(private core: CoreService) {\r\n\t\tconst storedVariables = this.core.localStorage.getItem('css_variables');\r\n\t\tthis.variables = storedVariables ? JSON.parse(storedVariables) : {};\r\n\t\tfor (const key in this.variables) {\r\n\t\t\tthis.setProperty(key, this.variables[key]);\r\n\t\t}\r\n\t}\r\n\r\n\t/* Forms Management */\r\n\t/**\r\n\t * Manages form states.\r\n\t *\r\n\t * @param id - The form identifier.\r\n\t * @returns The form state object.\r\n\t */\r\n\tpublic form(id: string): any {\r\n\t\tif (typeof id !== 'string') return {};\r\n\t\tif (!this._forms[id]) this._forms[id] = {};\r\n\t\treturn this._forms[id];\r\n\t}\r\n\r\n\t/**\r\n\t * Validates input values based on the specified type.\r\n\t *\r\n\t * @param value - The value to validate.\r\n\t * @param kind - The type of validation.\r\n\t * @param extra - Additional validation criteria.\r\n\t * @returns True if the value is valid, false otherwise.\r\n\t */\r\n\tpublic valid(value: any, kind = 'email', extra = 0): boolean {\r\n\t\tconst validators: { [key: string]: (value: any) => boolean } = {\r\n\t\t\temail: (value) => /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,10})+$/.test(value || ''),\r\n\t\t\ttext: (value) => typeof value === 'string',\r\n\t\t\tarray: (value) => Array.isArray(value),\r\n\t\t\tobject: (value) => typeof value === 'object' && !Array.isArray(value) && value !== null,\r\n\t\t\tnumber: (value) => typeof value === 'number',\r\n\t\t\tpassword: (value) => {\r\n\t\t\t\tif (!value) return false;\r\n\t\t\t\tswitch (extra) {\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn /^((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9]))/.test(value || '');\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn /^(((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{8,})/.test(value || '');\r\n\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\treturn /^((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]))(?=.{8,})/.test(value || '');\r\n\t\t\t\t\tcase 4:\r\n\t\t\t\t\t\treturn /^((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@#$%&!-_]))(?=.{8,})/.test(value || '');\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\treturn !!value;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t};\r\n\t\treturn validators[kind] ? validators[kind](value) : false;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines the strength of a password.\r\n\t *\r\n\t * @param value - The password to evaluate.\r\n\t * @returns The strength level of the password.\r\n\t */\r\n\tpublic level(value = ''): number {\r\n\t\tif (!value) return 0;\r\n\t\tlet level = 0;\r\n\t\tif (value.length > 8) level++;\r\n\t\tif (/[a-z]/.test(value)) level++;\r\n\t\tif (/[A-Z]/.test(value)) level++;\r\n\t\tif (/[1-9]/.test(value)) level++;\r\n\t\tif (/[`!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]/.test(value)) level++;\r\n\t\treturn level;\r\n\t}\r\n\r\n\t/* CSS Management */\r\n\t/**\r\n\t * Saves the CSS variables to local storage.\r\n\t */\r\n\tprivate save(): void {\r\n\t\tthis.core.localStorage.setItem('css_variables', JSON.stringify(this.variables));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a CSS variable.\r\n\t *\r\n\t * @param key - The CSS variable name.\r\n\t * @param value - The CSS variable value.\r\n\t */\r\n\tprivate setProperty(key: string, value: string): void {\r\n\t\tthis.core.document.documentElement.style.setProperty(key, value);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets multiple CSS variables.\r\n\t *\r\n\t * @param variables - The CSS variables to set.\r\n\t * @param opts - Options for setting the variables.\r\n\t */\r\n\tpublic set(variables: { [key: string]: string }, opts: any = {}): void {\r\n\t\tif (typeof opts === 'string') {\r\n\t\t\topts = opts === 'local' ? { local: true } : { host: opts };\r\n\t\t}\r\n\t\tif (opts.host && this.core.window.location.host !== opts.host) return;\r\n\t\tfor (const key in variables) {\r\n\t\t\tif (opts.local) {\r\n\t\t\t\tthis.variables[key] = variables[key];\r\n\t\t\t} else if (this.variables[key]) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tthis.setProperty(key, variables[key]);\r\n\t\t}\r\n\t\tif (opts.local) this.save();\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves the stored CSS variables.\r\n\t *\r\n\t * @returns The stored CSS variables.\r\n\t */\r\n\tpublic get(): { [key: string]: string } {\r\n\t\treturn this.variables;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes specified CSS variables.\r\n\t *\r\n\t * @param keys - The keys of the CSS variables to remove.\r\n\t */\r\n\tpublic remove(keys: string | string[]): void {\r\n\t\tconst keyArray = Array.isArray(keys) ? keys : keys.split(' ');\r\n\t\tfor (const key of keyArray) {\r\n\t\t\tdelete this.variables[key];\r\n\t\t}\r\n\t\tthis.save();\r\n\t}\r\n\r\n\t/**\r\n\t * Generates an array of sample data.\r\n\t *\r\n\t * @param arrLen - The length of the array.\r\n\t * @param type - The type of data to generate.\r\n\t * @returns An array of sample data.\r\n\t */\r\n\tpublic arr(arrLen = 10, type: string = 'number'): any[] {\r\n\t\tconst arr = [];\r\n\t\tfor (let i = 0; i < arrLen; i++) {\r\n\t\t\tswitch (type) {\r\n\t\t\t\tcase 'number':\r\n\t\t\t\t\tarr.push(i + 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'text':\r\n\t\t\t\t\tarr.push(this.text());\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'date':\r\n\t\t\t\t\tarr.push(new Date(new Date().getTime() + i * 86400000));\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tarr.push(type);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn arr;\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a random text string.\r\n\t *\r\n\t * @param length - The length of the text string.\r\n\t * @returns A random text string.\r\n\t */\r\n\tpublic text(length = 10): string {\r\n\t\tconst characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n\t\tlet result = '';\r\n\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\tresult += characters.charAt(Math.floor(Math.random() * characters.length));\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class TimeService {\r\n\tprivate weekDays = [\r\n\t\t'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\r\n\t];\r\n\r\n\tconstructor(private datePipe: DatePipe) { }\r\n\r\n\t/**\r\n\t * Returns the name of the day of the week for a given date.\r\n\t *\r\n\t * @param date - The date for which to get the day of the week.\r\n\t * @param format - The format in which to return the day name. Default is 'long'.\r\n\t * @returns The name of the day of the week.\r\n\t */\r\n\tgetDayName(date: Date, format: 'short' | 'long' = 'long'): string {\r\n\t\tconst dayIndex = date.getDay();\r\n\t\treturn format === 'short' ? this.weekDays[dayIndex].substring(0, 3) : this.weekDays[dayIndex];\r\n\t}\r\n\r\n\t/**\r\n\t * Formats a date according to the specified format and timezone.\r\n\t *\r\n\t * @param date - The date to format.\r\n\t * @param format - The format string (see Angular DatePipe documentation for format options).\r\n\t * @param timezone - The timezone to use for formatting.\r\n\t * @returns The formatted date string.\r\n\t */\r\n\tformatDate(date: Date, format: string = 'mediumDate', timezone: string = 'UTC'): string {\r\n\t\treturn this.datePipe.transform(date, format, timezone) || '';\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a date to a different timezone.\r\n\t *\r\n\t * @param date - The date to convert.\r\n\t * @param timezone - The timezone to convert to.\r\n\t * @returns The date in the new timezone.\r\n\t */\r\n\tconvertToTimezone(date: Date, timezone: string): Date {\r\n\t\treturn new Date(date.toLocaleString('en-US', { timeZone: timezone }));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the start of the day for a given date.\r\n\t *\r\n\t * @param date - The date for which to get the start of the day.\r\n\t * @returns The start of the day (midnight) for the given date.\r\n\t */\r\n\tstartOfDay(date: Date): Date {\r\n\t\tconst newDate = new Date(date);\r\n\t\tnewDate.setHours(0, 0, 0, 0);\r\n\t\treturn newDate;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the end of the day for a given date.\r\n\t *\r\n\t * @param date - The date for which to get the end of the day.\r\n\t * @returns The end of the day (one millisecond before midnight) for the given date.\r\n\t */\r\n\tendOfDay(date: Date): Date {\r\n\t\tconst newDate = new Date(date);\r\n\t\tnewDate.setHours(23, 59, 59, 999);\r\n\t\treturn newDate;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the number of days in a given month and year.\r\n\t *\r\n\t * @param month - The month (0-11).\r\n\t * @param year - The year.\r\n\t * @returns The number of days in the month.\r\n\t */\r\n\tgetDaysInMonth(month: number, year: number): number {\r\n\t\treturn new Date(year, month + 1, 0).getDate();\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if a given year is a leap year.\r\n\t *\r\n\t * @param year - The year to check.\r\n\t * @returns True if the year is a leap year, false otherwise.\r\n\t */\r\n\tisLeapYear(year: number): boolean {\r\n\t\treturn (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a specified number of days to a date.\r\n\t *\r\n\t * @param date - The date to which to add days.\r\n\t * @param days - The number of days to add.\r\n\t * @returns The new date with the added days.\r\n\t */\r\n\taddDays(date: Date, days: number): Date {\r\n\t\tconst newDate = new Date(date);\r\n\t\tnewDate.setDate(newDate.getDate() + days);\r\n\t\treturn newDate;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a specified number of months to a date.\r\n\t *\r\n\t * @param date - The date to which to add months.\r\n\t * @param months - The number of months to add.\r\n\t * @returns The new date with the added months.\r\n\t */\r\n\taddMonths(date: Date, months: number): Date {\r\n\t\tconst newDate = new Date(date);\r\n\t\tnewDate.setMonth(newDate.getMonth() + months);\r\n\t\treturn newDate;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a specified number of years to a date.\r\n\t *\r\n\t * @param date - The date to which to add years.\r\n\t * @param years - The number of years to add.\r\n\t * @returns The new date with the added years.\r\n\t */\r\n\taddYears(date: Date, years: number): Date {\r\n\t\tconst newDate = new Date(date);\r\n\t\tnewDate.setFullYear(newDate.getFullYear() + years);\r\n\t\treturn newDate;\r\n\t}\r\n\r\n\t/**\r\n\t * Subtracts a specified number of days from a date.\r\n\t *\r\n\t * @param date - The date from which to subtract days.\r\n\t * @param days - The number of days to subtract.\r\n\t * @returns The new date with the subtracted days.\r\n\t */\r\n\tsubtractDays(date: Date, days: number): Date {\r\n\t\treturn this.addDays(date, -days);\r\n\t}\r\n\r\n\t/**\r\n\t * Subtracts a specified number of months from a date.\r\n\t *\r\n\t * @param date - The date from which to subtract months.\r\n\t * @param months - The number of months to subtract.\r\n\t * @returns The new date with the subtracted months.\r\n\t */\r\n\tsubtractMonths(date: Date, months: number): Date {\r\n\t\treturn this.addMonths(date, -months);\r\n\t}\r\n\r\n\t/**\r\n\t * Subtracts a specified number of years from a date.\r\n\t *\r\n\t * @param date - The date from which to subtract years.\r\n\t * @param years - The number of years to subtract.\r\n\t * @returns The new date with the subtracted years.\r\n\t */\r\n\tsubtractYears(date: Date, years: number): Date {\r\n\t\treturn this.addYears(date, -years);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if two dates are on the same day.\r\n\t *\r\n\t * @param date1 - The first date.\r\n\t * @param date2 - The second date.\r\n\t * @returns True if the dates are on the same day, false otherwise.\r\n\t */\r\n\tisSameDay(date1: Date, date2: Date): boolean {\r\n\t\treturn (\r\n\t\t\tdate1.getFullYear() === date2.getFullYear() &&\r\n\t\t\tdate1.getMonth() === date2.getMonth() &&\r\n\t\t\tdate1.getDate() === date2.getDate()\r\n\t\t);\r\n\t}\r\n}\r\n","/* initialize */\r\nimport { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from './interfaces/config';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { MetaService } from './services/meta.service';\r\nimport { MetaGuard } from './guard/meta.guard';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n/* directives */\r\nimport { ClickOutsideDirective } from './directives/click-outside.directive';\r\nconst DIRECTIVES = [ClickOutsideDirective];\r\n\r\n/* pipes */\r\nimport { ArrPipe } from './pipes/arr.pipe';\r\nimport { SafePipe } from './pipes/safe.pipe';\r\nimport { SplicePipe } from './pipes/splice.pipe';\r\nimport { SearchPipe } from './pipes/search.pipe';\r\nimport { MongodatePipe } from './pipes/mongodate.pipe';\r\nimport { PaginationPipe } from './pipes/pagination.pipe';\r\nconst PIPES = [\r\n\tArrPipe,\r\n\tSafePipe,\r\n\tSplicePipe,\r\n\tSearchPipe,\r\n\tMongodatePipe,\r\n\tPaginationPipe,\r\n];\r\n\r\n/* components */\r\nimport { WrapperComponent } from './components/alert/wrapper/wrapper.component';\r\nimport { LoaderComponent } from './components/loader/loader.component';\r\nimport { FilesComponent } from './components/files/files.component';\r\nimport { ModalComponent } from './components/modal/modal.component';\r\nimport { AlertComponent } from './components/alert/alert.component';\r\nconst LOCAL_COMPONENTS = [\r\n\tWrapperComponent,\r\n\tFilesComponent\r\n];\r\nconst COMPONENTS = [\r\n\tLoaderComponent,\r\n\tModalComponent,\r\n\tAlertComponent\r\n];\r\n\r\n@NgModule({ declarations: [...LOCAL_COMPONENTS, ...PIPES, ...COMPONENTS, ...DIRECTIVES],\n exports: [...PIPES, ...COMPONENTS, ...DIRECTIVES], imports: [CommonModule, FormsModule], providers: [\n { provide: CONFIG_TOKEN, useValue: DEFAULT_CONFIG },\n MetaGuard,\n MetaService,\n provideHttpClient(withInterceptorsFromDi())\n ] })\r\nexport class WacomModule {\r\n\tstatic forRoot(config: Config = DEFAULT_CONFIG): ModuleWithProviders<WacomModule> {\r\n\t\treturn {\r\n\t\t\tngModule: WacomModule,\r\n\t\t\tproviders: [{\r\n\t\t\t\tprovide: CONFIG_TOKEN,\r\n\t\t\t\tuseValue: config\r\n\t\t\t}]\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n*\tInterfaces\r\n*/\r\n\texport * from './lib/interfaces/config';\r\n\texport * from './lib/interfaces/alert.interface';\r\n\texport * from './lib/interfaces/crud.interface';\r\n/*\r\n*\tGuard\r\n*/\r\n\texport * from './lib/guard/meta.guard';\r\n/*\r\n*\tComponents\r\n*/\r\n\texport * from './lib/components/alert/alert.component';\r\n\texport * from './lib/components/modal/modal.component';\r\n\texport * from './lib/components/loader/loader.component';\r\n/*\r\n*\tDirectives\r\n*/\r\n\texport * from './lib/directives/click-outside.directive';\r\n/*\r\n*\tPipes\r\n*/\r\n\texport * from './lib/pipes/arr.pipe';\r\n\texport * from './lib/pipes/mongodate.pipe';\r\n\texport * from './lib/pipes/pagination.pipe';\r\n\texport * from './lib/pipes/safe.pipe';\r\n\texport * from './lib/pipes/search.pipe';\r\n\texport * from './lib/pipes/splice.pipe';\r\n/*\r\n*\tServices\r\n*/\r\n\texport * from './lib/services/base.service';\r\n\texport * from './lib/services/crud.service';\r\n\texport * from './lib/services/meta.service';\r\n\texport * from './lib/services/store.service';\r\n\texport * from './lib/services/http.service';\r\n\texport * from './lib/services/mongo.service';\r\n\texport * from './lib/services/render.service';\r\n\texport * from './lib/services/hash.service';\r\n\texport * from './lib/services/dom.service';\r\n\texport * from './lib/services/alert.service';\r\n\texport * from './lib/services/loader.service';\r\n\texport * from './lib/services/socket.service';\r\n\texport * from './lib/services/modal.service';\r\n\texport * from './lib/services/file.service';\r\n\texport * from './lib/services/ui.service';\r\n\texport * from './lib/services/core.service';\r\n\texport * from './lib/services/time.service';\r\n/*\r\n*\tInitial\r\n*\r\n*\tmake different kind of modules, one which import all, other for piece by piece\r\n*/\r\n\texport * from './lib/wacom.module';\r\n/*\r\n*\tEnd of Support\r\n*/\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CoreService","i2","i1","i1.StoreService","i2.HttpService","i3.CoreService","i1.DomService","i2.CoreService","i3.HttpService"],"mappings":"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"}
1
+ {"version":3,"file":"wacom.mjs","sources":["../../../projects/wacom/src/lib/interfaces/config.ts","../../../projects/wacom/src/lib/interfaces/alert.interface.ts","../../../projects/wacom/src/lib/services/core.service.ts","../../../projects/wacom/src/lib/services/meta.service.ts","../../../projects/wacom/src/lib/guard/meta.guard.ts","../../../projects/wacom/src/lib/components/alert/alert.component.ts","../../../projects/wacom/src/lib/components/alert/alert.component.html","../../../projects/wacom/src/lib/components/modal/modal.component.ts","../../../projects/wacom/src/lib/components/modal/modal.component.html","../../../projects/wacom/src/lib/components/loader/loader.component.ts","../../../projects/wacom/src/lib/components/loader/loader.component.html","../../../projects/wacom/src/lib/directives/click-outside.directive.ts","../../../projects/wacom/src/lib/pipes/arr.pipe.ts","../../../projects/wacom/src/lib/pipes/mongodate.pipe.ts","../../../projects/wacom/src/lib/pipes/pagination.pipe.ts","../../../projects/wacom/src/lib/pipes/safe.pipe.ts","../../../projects/wacom/src/lib/pipes/search.pipe.ts","../../../projects/wacom/src/lib/pipes/splice.pipe.ts","../../../projects/wacom/src/lib/services/base.service.ts","../../../projects/wacom/src/lib/services/crud.service.ts","../../../projects/wacom/src/lib/services/store.service.ts","../../../projects/wacom/src/lib/services/http.service.ts","../../../projects/wacom/src/lib/services/mongo.service.ts","../../../projects/wacom/src/lib/services/render.service.ts","../../../projects/wacom/src/lib/services/hash.service.ts","../../../projects/wacom/src/lib/services/dom.service.ts","../../../projects/wacom/src/lib/components/alert/wrapper/wrapper.component.ts","../../../projects/wacom/src/lib/components/alert/wrapper/wrapper.component.html","../../../projects/wacom/src/lib/services/alert.service.ts","../../../projects/wacom/src/lib/services/loader.service.ts","../../../projects/wacom/src/lib/services/socket.service.ts","../../../projects/wacom/src/lib/services/modal.service.ts","../../../projects/wacom/src/lib/components/files/files.component.ts","../../../projects/wacom/src/lib/components/files/files.component.html","../../../projects/wacom/src/lib/services/file.service.ts","../../../projects/wacom/src/lib/services/ui.service.ts","../../../projects/wacom/src/lib/services/time.service.ts","../../../projects/wacom/src/lib/wacom.module.ts","../../../projects/wacom/src/public-api.ts","../../../projects/wacom/src/wacom.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport interface Any {\n\t[key: string]: string;\n}\nexport interface Config {\n\tmeta?: {\n\t\tuseTitleSuffix?: boolean;\n\t\twarnMissingGuard?: boolean;\n\t\tdefaults?: {\n\t\t\ttitle?: string;\n\t\t\ttitleSuffix?: string;\n\t\t} & { [key: string]: string | undefined; };\n\t};\n\talert?: {\n\t\talerts?:object;\n\t\ttext?:string;\n\t\ttype?: string;\n\t\ticon?: string;\n\t\tclass?: string;\n\t\tunique?: string;\n\t\tprogress?: boolean;\n\t\tposition?: string;\n\t\ttimeout?: number;\n\t\tclose?: any;\n\t\tbuttons?: any;\n\t};\n\tmodal?: {\n\t\tsize?: any;\n\t\ttimeout?: any;\n\t\ttimestart?: any;\n\t\tclass?:string;\n\t\tmodals?:object;\n\t\tposition?: string;\n\t\tclosable?: boolean;\n\t\tunique?: string;\n\t};\n\tpopup?: {\n\t\tpopups?: object;\n\t};\n\tloader?: {\n\t\tloaders?: object;\n\t};\n\tsocket?: any;\n\thttp?: {\n\t\theaders?: any;\n\t\turl?: string;\n\t},\n\tstore?: {\n\t\tprefix?: string;\n\t\tset?: (\n\t\t\thold: any,\n\t\t\tvalue: any,\n\t\t\tcb?: () => void,\n\t\t\terrCb?: () => void\n\t\t) => Promise<boolean>,\n\t\tget?: (\n\t\t\thold: any,\n\t\t\tcb?: (value: string) => void,\n\t\t\terrCb?: () => void\n\t\t) => Promise<string>,\n\t\tremove?: (\n\t\t\thold: any,\n\t\t\tcb?: () => void,\n\t\t\terrCb?: () => void\n\t\t) => Promise<boolean>,\n\t\tclear?: (\n\t\t\tcb?: () => void,\n\t\t\terrCb?: () => void\n\t\t) => Promise<boolean>\n\t}\n}\nexport const CONFIG_TOKEN = new InjectionToken<Config>('config');\nexport const DEFAULT_CONFIG: Config = {\n\tmeta: {\n\t\tuseTitleSuffix: false,\n\t\twarnMissingGuard: true,\n\t\tdefaults: {}\n\t},\n\tsocket: false,\n\thttp: {\n\t\turl: '',\n\t\theaders: {}\n\t},\n\tstore: {\n\t\tprefix: ''\n\t}\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface Alert {\n\tonClose?: any;\n\talerts?:object;\n\tcomponent?: any;\n\ttext?:string;\n\ticon?:string;\n\ttype?: string;\n\tclass?: string;\n\tunique?: string;\n\tprogress?: boolean;\n\tposition?: string;\n\ttimeout?: any;\n\tclosable?: boolean;\n\tclose?: any;\n\tbuttons?: any;\n\t[x: string]: any;\n}\nexport const DEFAULT_Alert: Alert = {\n\talerts: {},\n\ttext: '',\n\ttype: 'info',\n\tclass: '',\n\tprogress: true,\n\tposition: 'bottomRight',\n\ttimeout: 5000,\n\tclosable: true,\n\tbuttons: []\n}\n","import { Injectable, Inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { Subject, Observable } from 'rxjs';\n\n// Add capitalize method to String prototype if it doesn't already exist\nif (!String.prototype.capitalize) {\n\tString.prototype.capitalize = function (): string {\n\t\tif (this.length > 0) {\n\t\t\treturn this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();\n\t\t}\n\t\treturn '';\n\t};\n}\n\n// Extend the String interface to include the new method\ndeclare global {\n\tinterface String {\n\t\tcapitalize(): string;\n\t}\n}\n\ndeclare var cordova: any;\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class CoreService {\n\tssr = false;\n\tlocalStorage: any; // = localStorage;\n\tnavigator: any; // = navigator;\n\tdocument: any; // = document;\n\twindow: any; // = window;\n\tconstructor(@Inject(PLATFORM_ID) private platformId: boolean) {\n\t\tthis.ssr = isPlatformServer(this.platformId);\n\n\t\tif (isPlatformServer(this.platformId)) {\n\t\t\tthis.localStorage = {\n\t\t\t\tgetItem: () => { },\n\t\t\t\tsetItem: () => { },\n\t\t\t\tremoveItem: () => { },\n\t\t\t\tclear: () => { },\n\t\t\t};\n\n\t\t\tthis.document = {\n\t\t\t\tquerySelectorAll: () => { },\n\t\t\t\taddEventListener: () => { },\n\t\t\t\tremoveEventListener: () => { },\n\t\t\t\tdocumentElement: {},\n\t\t\t\tbody: {},\n\t\t\t};\n\n\t\t\tthis.window = {\n\t\t\t\tlocation: {\n\t\t\t\t\thost: '',\n\t\t\t\t},\n\t\t\t\taddEventListener: () => { },\n\t\t\t\tremoveEventListener: () => { },\n\t\t\t\tsetTimeout: () => { },\n\t\t\t};\n\n\t\t\tthis.navigator = {\n\t\t\t\tuserAgent: '',\n\t\t\t\tplatform: '',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.localStorage = localStorage;\n\n\t\t\tthis.document = document;\n\n\t\t\tthis.window = window;\n\n\t\t\tthis.navigator = navigator;\n\t\t}\n\n\t\tthis.detectDevice();\n\t}\n\n\t/**\n\t * Converts an object to an array. Optionally holds keys instead of values.\n\t *\n\t * @param {any} obj - The object to be converted.\n\t * @param {boolean} [holder=false] - If true, the keys will be held in the array; otherwise, the values will be held.\n\t * @returns {any[]} The resulting array.\n\t */\n\tota(obj: any, holder: boolean = false): any[] {\n\t\tif (Array.isArray(obj)) return obj;\n\t\tif (typeof obj !== 'object' || obj === null) return [];\n\t\tconst arr = [];\n\t\tfor (const each in obj) {\n\t\t\tif (\n\t\t\t\tobj.hasOwnProperty(each) &&\n\t\t\t\t(obj[each] ||\n\t\t\t\t\ttypeof obj[each] === 'number' ||\n\t\t\t\t\ttypeof obj[each] === 'boolean')\n\t\t\t) {\n\t\t\t\tif (holder) {\n\t\t\t\t\tarr.push(each);\n\t\t\t\t} else {\n\t\t\t\t\tarr.push(obj[each]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn arr;\n\t}\n\n\t/**\n\t * Removes elements from `fromArray` that are present in `removeArray` based on a comparison field.\n\t *\n\t * @param {any[]} removeArray - The array of elements to remove.\n\t * @param {any[]} fromArray - The array from which to remove elements.\n\t * @param {string} [compareField='_id'] - The field to use for comparison.\n\t * @returns {any[]} The modified `fromArray` with elements removed.\n\t */\n\tsplice(\n\t\tremoveArray: any[],\n\t\tfromArray: any[],\n\t\tcompareField: string = '_id'\n\t): any[] {\n\t\tif (!Array.isArray(removeArray) || !Array.isArray(fromArray)) {\n\t\t\treturn fromArray;\n\t\t}\n\n\t\tconst removeSet = new Set(\n\t\t\tremoveArray.map((item) => item[compareField])\n\t\t);\n\t\treturn fromArray.filter((item) => !removeSet.has(item[compareField]));\n\t}\n\n\t/**\n\t * Unites multiple _id values into a single unique _id.\n\t * The resulting _id is unique regardless of the order of the input _id values.\n\t *\n\t * @param {...string[]} args - The _id values to be united.\n\t * @returns {string} The unique combined _id.\n\t */\n\tids2id(...args: string[]): string {\n\t\targs.sort((a, b) => {\n\t\t\tif (\n\t\t\t\tNumber(a.toString().substring(0, 8)) >\n\t\t\t\tNumber(b.toString().substring(0, 8))\n\t\t\t) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn -1;\n\t\t});\n\n\t\treturn args.join();\n\t}\n\n\t// After While\n\tprivate _afterWhile: Record<string, number> = {};\n\t/**\n\t * Delays the execution of a callback function for a specified amount of time.\n\t * If called again within that time, the timer resets.\n\t *\n\t * @param {string | object | (() => void)} doc - A unique identifier for the timer, an object to host the timer, or the callback function.\n\t * @param {() => void} [cb] - The callback function to execute after the delay.\n\t * @param {number} [time=1000] - The delay time in milliseconds.\n\t */\n\tafterWhile(\n\t\tdoc: string | object | (() => void),\n\t\tcb?: () => void,\n\t\ttime: number = 1000\n\t): void {\n\t\tif (typeof doc === 'function') {\n\t\t\tcb = doc as () => void;\n\t\t\tdoc = 'common';\n\t\t}\n\n\t\tif (typeof cb === 'function' && typeof time === 'number') {\n\t\t\tif (typeof doc === 'string') {\n\t\t\t\tclearTimeout(this._afterWhile[doc]);\n\t\t\t\tthis._afterWhile[doc] = this.window.setTimeout(cb, time);\n\t\t\t} else if (typeof doc === 'object') {\n\t\t\t\tclearTimeout((doc as { __afterWhile: number }).__afterWhile);\n\t\t\t\t(doc as { __afterWhile: number }).__afterWhile =\n\t\t\t\t\tthis.window.setTimeout(cb, time);\n\t\t\t} else {\n\t\t\t\tconsole.warn('badly configured after while');\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Recursively copies properties from one object to another.\n\t * Handles nested objects, arrays, and Date instances appropriately.\n\t *\n\t * @param from - The source object from which properties are copied.\n\t * @param to - The target object to which properties are copied.\n\t */\n\tcopy(from: any, to: any) {\n\t\tfor (const each in from) {\n\t\t\tif (\n\t\t\t\ttypeof from[each] !== 'object' ||\n\t\t\t\tfrom[each] instanceof Date ||\n\t\t\t\tArray.isArray(from[each]) ||\n\t\t\t\tfrom[each] === null\n\t\t\t) {\n\t\t\t\tto[each] = from[each];\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\ttypeof to[each] !== 'object' ||\n\t\t\t\t\tto[each] instanceof Date ||\n\t\t\t\t\tArray.isArray(to[each]) ||\n\t\t\t\t\tto[each] === null\n\t\t\t\t) {\n\t\t\t\t\tto[each] = {};\n\t\t\t\t}\n\n\t\t\t\tthis.copy(from[each], to[each]);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Device management\n\tdevice: string = '';\n\t/**\n\t * Detects the device type based on the user agent.\n\t */\n\tdetectDevice(): void {\n\t\tconst userAgent =\n\t\t\tthis.navigator.userAgent || this.navigator.vendor || (this.window as any).opera;\n\t\tif (/windows phone/i.test(userAgent)) {\n\t\t\tthis.device = 'Windows Phone';\n\t\t} else if (/android/i.test(userAgent)) {\n\t\t\tthis.device = 'Android';\n\t\t} else if (\n\t\t\t/iPad|iPhone|iPod/.test(userAgent) &&\n\t\t\t!(this.window as any).MSStream\n\t\t) {\n\t\t\tthis.device = 'iOS';\n\t\t} else {\n\t\t\tthis.device = 'Web';\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the device is a mobile device.\n\t * @returns {boolean} - Returns true if the device is a mobile device.\n\t */\n\tisMobile(): boolean {\n\t\treturn (\n\t\t\tthis.device === 'Windows Phone' ||\n\t\t\tthis.device === 'Android' ||\n\t\t\tthis.device === 'iOS'\n\t\t);\n\t}\n\n\t/**\n\t * Checks if the device is a tablet.\n\t * @returns {boolean} - Returns true if the device is a tablet.\n\t */\n\tisTablet(): boolean {\n\t\treturn this.device === 'iOS' && /iPad/.test(navigator.userAgent);\n\t}\n\n\t/**\n\t * Checks if the device is a web browser.\n\t * @returns {boolean} - Returns true if the device is a web browser.\n\t */\n\tisWeb(): boolean {\n\t\treturn this.device === 'Web';\n\t}\n\n\t/**\n\t * Checks if the device is an Android device.\n\t * @returns {boolean} - Returns true if the device is an Android device.\n\t */\n\tisAndroid(): boolean {\n\t\treturn this.device === 'Android';\n\t}\n\n\t/**\n\t * Checks if the device is an iOS device.\n\t * @returns {boolean} - Returns true if the device is an iOS device.\n\t */\n\tisIos(): boolean {\n\t\treturn this.device === 'iOS';\n\t}\n\n\t// Version management\n\tversion = '1.0.0';\n\tappVersion = '';\n\tdateVersion = '';\n\t/**\n\t * Sets the combined version string based on appVersion and dateVersion.\n\t */\n\tsetVersion(): void {\n\t\tthis.version = this.appVersion || '';\n\t\tthis.version += this.version && this.dateVersion ? ' ' : '';\n\t\tthis.version += this.dateVersion || '';\n\t}\n\t/**\n\t * Sets the app version and updates the combined version string.\n\t *\n\t * @param {string} appVersion - The application version to set.\n\t */\n\tsetAppVersion(appVersion: string): void {\n\t\tthis.appVersion = appVersion;\n\t\tthis.setVersion();\n\t}\n\t/**\n\t * Sets the date version and updates the combined version string.\n\t *\n\t * @param {string} dateVersion - The date version to set.\n\t */\n\tsetDateVersion(dateVersion: string): void {\n\t\tthis.dateVersion = dateVersion;\n\t\tthis.setVersion();\n\t}\n\n\t// Signal management\n\tprivate _signals: Record<string, Subject<any>> = {};\n\n\t/**\n\t * Emits a signal, optionally passing data to the listeners.\n\t * @param signal - The name of the signal to emit.\n\t * @param data - Optional data to pass to the listeners.\n\t */\n\temit(signal: string, data?: any): void {\n\t\tif (!this._signals[signal]) {\n\t\t\tthis._signals[signal] = new Subject<any>();\n\t\t}\n\t\tthis._signals[signal].next(data);\n\t}\n\n\t/**\n\t * Returns an Observable that emits values when the specified signal is emitted.\n\t * Multiple components or services can subscribe to this Observable to be notified of the signal.\n\t * @param signal - The name of the signal to listen for.\n\t * @returns An Observable that emits when the signal is emitted.\n\t */\n\ton(signal: string): Observable<any> {\n\t\tif (!this._signals[signal]) {\n\t\t\tthis._signals[signal] = new Subject<any>();\n\t\t}\n\t\treturn this._signals[signal].asObservable();\n\t}\n\n\t/**\n\t * Completes the Subject for a specific signal, effectively stopping any future emissions.\n\t * This also unsubscribes all listeners for the signal.\n\t * @param signal - The name of the signal to stop.\n\t */\n\toff(signal: string): void {\n\t\tif (!this._signals[signal]) return;\n\t\tthis._signals[signal].complete();\n\t\tdelete this._signals[signal];\n\t}\n\n\t// Await management\n\tprivate _completed: Record<string, boolean> = {};\n\tprivate _completeResolvers: Record<string, (() => void)[]> = {};\n\n\t/**\n\t * Marks a task as complete.\n\t * @param task - The task to mark as complete, identified by a string.\n\t */\n\tcomplete(task: string): void {\n\t\tthis._completed[task] = true;\n\t\tif (this._completeResolvers[task]) {\n\t\t\tthis._completeResolvers[task].forEach((resolve) => resolve());\n\t\t\tthis._completeResolvers[task] = [];\n\t\t}\n\t}\n\n\t/**\n\t * Returns a Promise that resolves when the specified task is complete.\n\t * @param task - The task to watch for completion, identified by a string.\n\t * @returns A Promise that resolves when the task is complete.\n\t */\n\tonComplete(task: string): Promise<void> {\n\t\tif (this._completed[task]) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\treturn new Promise((resolve) => {\n\t\t\tif (!this._completeResolvers[task]) {\n\t\t\t\tthis._completeResolvers[task] = [];\n\t\t\t}\n\t\t\tthis._completeResolvers[task].push(resolve);\n\t\t});\n\t}\n\n\t/**\n\t * Checks if a task is completed.\n\t * @param task - The task to check, identified by a string.\n\t * @returns True if the task is completed, false otherwise.\n\t */\n\tcompleted(task: string): boolean {\n\t\treturn !!this._completed[task];\n\t}\n\n\t// Locking management\n\tprivate _locked: Record<string, boolean> = {};\n\tprivate _unlockResolvers: Record<string, (() => void)[]> = {};\n\n\t/**\n\t * Locks a resource to prevent concurrent access.\n\t * @param which - The resource to lock, identified by a string.\n\t */\n\tlock(which: string): void {\n\t\tthis._locked[which] = true;\n\t\tif (!this._unlockResolvers[which]) {\n\t\t\tthis._unlockResolvers[which] = [];\n\t\t}\n\t}\n\n\t/**\n\t * Unlocks a resource, allowing access.\n\t * @param which - The resource to unlock, identified by a string.\n\t */\n\tunlock(which: string): void {\n\t\tthis._locked[which] = false;\n\t\tif (this._unlockResolvers[which]) {\n\t\t\tthis._unlockResolvers[which].forEach((resolve) => resolve());\n\t\t\tthis._unlockResolvers[which] = [];\n\t\t}\n\t}\n\n\t/**\n\t * Returns a Promise that resolves when the specified resource is unlocked.\n\t * @param which - The resource to watch for unlocking, identified by a string.\n\t * @returns A Promise that resolves when the resource is unlocked.\n\t */\n\tonUnlock(which: string): Promise<void> {\n\t\tif (!this._locked[which]) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\treturn new Promise((resolve) => {\n\t\t\tif (!this._unlockResolvers[which]) {\n\t\t\t\tthis._unlockResolvers[which] = [];\n\t\t\t}\n\t\t\tthis._unlockResolvers[which].push(resolve);\n\t\t});\n\t}\n\n\t/**\n\t * Checks if a resource is locked.\n\t * @param which - The resource to check, identified by a string.\n\t * @returns True if the resource is locked, false otherwise.\n\t */\n\tlocked(which: string): boolean {\n\t\treturn !!this._locked[which];\n\t}\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Title, Meta } from '@angular/platform-browser';\nimport { Router, Route } from '@angular/router';\nimport { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from '../interfaces/config';\nimport { CoreService } from './core.service';\n\nconst isDefined = (val: any) => typeof val !== 'undefined';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class MetaService {\n\tprivate _meta: any;\n\n\tconstructor(\n\t\tprivate router: Router,\n\t\tprivate meta: Meta,\n\t\tprivate core: CoreService,\n\t\tprivate titleService: Title,\n\t\t@Inject(CONFIG_TOKEN) @Optional() private config: Config\n\t) {\n\t\tthis.config = this.config || DEFAULT_CONFIG;\n\t\tthis._meta = this.config.meta || {};\n\t\tthis._warnMissingGuard();\n\t}\n\n\t/**\n\t * Sets the default meta tags.\n\t *\n\t * @param defaults - The default meta tags.\n\t */\n\tsetDefaults(defaults: { [key: string]: string }): void {\n\t\tthis._meta.defaults = defaults;\n\t}\n\n\t/**\n\t * Sets the title and optional title suffix.\n\t *\n\t * @param title - The title to set.\n\t * @param titleSuffix - The title suffix to append.\n\t * @returns The MetaService instance.\n\t */\n\tsetTitle(title?: string, titleSuffix?: string): MetaService {\n\t\tlet titleContent = isDefined(title) ? title : this._meta.defaults['title'] || '';\n\t\tif (this._meta.useTitleSuffix) {\n\t\t\ttitleContent += isDefined(titleSuffix) ? titleSuffix : this._meta.defaults['titleSuffix'] || '';\n\t\t}\n\t\tthis._updateMetaTag('title', titleContent);\n\t\tthis._updateMetaTag('og:title', titleContent);\n\t\tthis.titleService.setTitle(titleContent);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets link tags.\n\t *\n\t * @param links - The links to set.\n\t * @returns The MetaService instance.\n\t */\n\tsetLink(links: { [key: string]: string }): MetaService {\n\t\tObject.keys(links).forEach(rel => {\n\t\t\tlet link: HTMLLinkElement = this.core.document.createElement('link');\n\t\t\tlink.setAttribute('rel', rel);\n\t\t\tlink.setAttribute('href', links[rel]);\n\t\t\tthis.core.document.head.appendChild(link);\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a meta tag.\n\t *\n\t * @param tag - The meta tag name.\n\t * @param value - The meta tag value.\n\t * @param prop - The meta tag property.\n\t * @returns The MetaService instance.\n\t */\n\tsetTag(tag: string, value: string, prop?: string): MetaService {\n\t\tif (tag === 'title' || tag === 'titleSuffix') {\n\t\t\tthrow new Error(`Attempt to set ${tag} through 'setTag': 'title' and 'titleSuffix' are reserved tag names. Please use 'MetaService.setTitle' instead`);\n\t\t}\n\t\tconst content = isDefined(value) ? value : this._meta.defaults[tag] || '';\n\t\tthis._updateMetaTag(tag, content, prop);\n\t\tif (tag === 'description') {\n\t\t\tthis._updateMetaTag('og:description', content, prop);\n\t\t\tthis._updateMetaTag('twitter:description', content, prop);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Updates a meta tag.\n\t *\n\t * @param tag - The meta tag name.\n\t * @param value - The meta tag value.\n\t * @param prop - The meta tag property.\n\t */\n\tprivate _updateMetaTag(tag: string, value: string, prop?: string): void {\n\t\tprop = prop || (tag.startsWith('og:') || tag.startsWith('twitter:') ? 'property' : 'name');\n\t\tthis.meta.updateTag({ [prop]: tag, content: value });\n\t}\n\n\t/**\n\t * Removes a meta tag.\n\t *\n\t * @param tag - The meta tag name.\n\t * @param prop - The meta tag property.\n\t */\n\tremoveTag(tag: string, prop?: string): void {\n\t\tprop = prop || (tag.startsWith('og:') || tag.startsWith('twitter:') ? 'property' : 'name');\n\t\tthis.meta.removeTag(`${prop}=\"${tag}\"`);\n\t}\n\n\t/**\n\t * Warns about missing meta guards in routes.\n\t */\n\tprivate _warnMissingGuard(): void {\n\t\tif (isDefined(this._meta.warnMissingGuard) && !this._meta.warnMissingGuard) {\n\t\t\treturn;\n\t\t}\n\t\tconst hasDefaultMeta = !!Object.keys(this._meta.defaults).length;\n\t\tconst hasMetaGuardInArr = (it: any) => (it && it.IDENTIFIER === 'MetaGuard');\n\t\tlet hasShownWarnings = false;\n\t\tthis.router.config.forEach((route: Route) => {\n\t\t\tconst hasRouteMeta = route.data && route.data['meta'];\n\t\t\tconst showWarning = !isDefined(route.redirectTo) && (hasDefaultMeta || hasRouteMeta) && !(route.canActivate || []).some(hasMetaGuardInArr);\n\t\t\tif (showWarning) {\n\t\t\t\tconsole.warn(`Route with path \"${route.path}\" has ${hasRouteMeta ? '' : 'default '}meta tags, but does not use MetaGuard. Please add MetaGuard to the canActivate array in your route configuration`);\n\t\t\t\thasShownWarnings = true;\n\t\t\t}\n\t\t});\n\t\tif (hasShownWarnings) {\n\t\t\tconsole.warn(`To disable these warnings, set metaConfig.warnMissingGuard: false in your MetaConfig passed to MetaModule.forRoot()`);\n\t\t}\n\t}\n}\n","import { Injectable, Inject, Optional } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { MetaService } from '../services/meta.service';\nimport { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from '../interfaces/config';\n\n@Injectable()\nexport class MetaGuard {\n\tpublic static IDENTIFIER = 'MetaGuard';\n\tprivate _meta: any;\n\tpublic constructor(\n\t\tprivate metaService: MetaService,\n\t\t@Inject(CONFIG_TOKEN) @Optional() private config: Config\n\t) {\n\t\tthis._meta = config.meta;\n\t\tif (!this.config) this.config = DEFAULT_CONFIG;\n\t}\n\tpublic canActivate(\n\t\troute: ActivatedRouteSnapshot,\n\t\tstate: RouterStateSnapshot\n\t): boolean {\n\t\tthis._processRouteMetaTags(route.data && route.data['meta']);\n\t\treturn true;\n\t}\n\tprivate _processRouteMetaTags(meta: any = {}) {\n\t\tif (meta.disableUpdate) {\n\t\t\treturn;\n\t\t}\n\t\tif (meta.title) {\n\t\t\tthis.metaService.setTitle(meta.title, meta.titleSuffix);\n\t\t}\n\t\tif (Array.isArray(meta.links)) {\n\t\t\tthis.metaService.setLink(meta.links);\n\t\t} else if (typeof meta.links === 'string') {\n\t\t\tthis.metaService.setLink(meta.links.split(' '));\n\t\t}\n\t\tif (Array.isArray(this._meta.defaults?.links)) {\n\t\t\tthis.metaService.setLink(this._meta.defaults?.links);\n\t\t} else if (typeof this._meta.defaults?.links === 'string') {\n\t\t\tthis.metaService.setLink(this._meta.defaults?.links.split(' '));\n\t\t}\n\t\tObject.keys(meta).forEach((prop) => {\n\t\t\tif (\n\t\t\t\tprop === 'title' ||\n\t\t\t\tprop === 'titleSuffix' ||\n\t\t\t\tprop === 'links'\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tObject.keys(meta[prop]).forEach((key) => {\n\t\t\t\tthis.metaService.setTag(key, meta[prop][key], prop);\n\t\t\t});\n\t\t});\n\t\tObject.keys(this._meta.defaults).forEach((key) => {\n\t\t\tif (\n\t\t\t\tkey in meta ||\n\t\t\t\tkey === 'title' ||\n\t\t\t\tkey === 'titleSuffix' ||\n\t\t\t\tkey === 'links'\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.metaService.setTag(key, this._meta.defaults[key]);\n\t\t});\n\t}\n}\n","import { Component, ViewChild } from '@angular/core';\nimport { CoreService } from '../../services/core.service';\n\n@Component({\n\tselector: 'alert',\n\ttemplateUrl: './alert.component.html',\n\tstyleUrls: ['./alert.component.scss'],\n})\nexport class AlertComponent {\n\t@ViewChild('alert', { static: false }) alert: any;\n\tcomponent: any;\n\ttext: string = '';\n\tclass: string = '';\n\ttype: string = 'info';\n\tprogress: boolean = true;\n\tposition: string = 'bottomRight'; // [bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter or center]\n\ticon: string = '';\n\ttimeout: any = 5000;\n\tclose: any;\n\tclosable: any = true;\n\tbuttons: any = []; /*[{text, callback}]*/\n\n\tconstructor(public core: CoreService) {\n\t\tsetTimeout(() => {\n\t\t\tif (this.timeout) {\n\t\t\t\tlet remaining = JSON.parse(JSON.stringify(this.timeout));\n\t\t\t\tlet timer = setTimeout(() => {\n\t\t\t\t\tthis.remove();\n\t\t\t\t}, remaining);\n\t\t\t\tlet start = new Date();\n\t\t\t\tthis.alert.nativeElement.addEventListener(\n\t\t\t\t\t'mouseenter',\n\t\t\t\t\t() => {\n\t\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\t\tremaining -= new Date().getTime() - start.getTime();\n\t\t\t\t\t},\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tthis.alert.nativeElement.addEventListener(\n\t\t\t\t\t'mouseleave',\n\t\t\t\t\t() => {\n\t\t\t\t\t\tstart = new Date();\n\t\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\t\ttimer = core.window.setTimeout(() => {\n\t\t\t\t\t\t\tthis.remove();\n\t\t\t\t\t\t}, remaining);\n\t\t\t\t\t},\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\tpublic delete_animation = false;\n\tremove() {\n\t\tthis.delete_animation = true;\n\t\tsetTimeout(() => {\n\t\t\tthis.close();\n\t\t\tthis.delete_animation = false;\n\t\t}, 350);\n\t}\n}\n","<div\n *ngIf=\"text\"\n [ngClass]=\"class\"\n class=\"waw-alert-container height\"\n [class._close]=\"delete_animation\"\n>\n <div\n [class.waw-alert-color-blue]=\"type == 'info'\"\n [class.waw-alert-color-red]=\"type == 'error'\"\n [class.waw-alert-color-green]=\"type == 'success'\"\n [class.waw-alert-color-orange]=\"type == 'warning'\"\n [class.waw-alert-color-yellow]=\"type == 'question'\"\n class=\"waw-alert bounceInUp waw-alert-theme-light waw-alert-animateInside waw-alert-opened\"\n #alert\n >\n <div class=\"waw-alert__progress\" *ngIf=\"progress\">\n <span\n [ngStyle]=\"{ 'animation-duration': (timeout + 350) / 1000 + 's' }\"\n ></span>\n </div>\n <div class=\"waw-alert-body\">\n <div *ngIf=\"!component\" class=\"waw-alert-texts\">\n <div *ngIf=\"icon\" class=\"{{ icon }}\"></div>\n <div class=\"waw-alert-message slideIn\">{{ text }}</div>\n </div>\n <div *ngIf=\"!component && type == 'question'\">\n <button\n class=\"alert-btn\"\n *ngFor=\"let b of buttons\"\n (click)=\"remove(); b.callback && b.callback()\"\n >\n {{ b.text }}\n </button>\n </div>\n <div class=\"waw-alert__close\" *ngIf=\"closable\" (click)=\"remove()\"></div>\n </div>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'lib-modal',\n\ttemplateUrl: './modal.component.html',\n\tstyleUrls: ['./modal.component.scss'],\n})\nexport class ModalComponent implements OnInit {\n\tclass: string = '';\n\tsize: string = 'flex';\n\tclosable: boolean = true;\n\tclose: any;\n\tonOpen: any;\n\ttimestart: any;\n\ttimeout: any;\n\tshowModal = false;\n\tallowClose = true;\n\tonClickOutside: any;\n\tngOnInit() {\n\t\tif (typeof this.onClickOutside !== 'function') {\n\t\t\tthis.onClickOutside = this.close;\n\t\t\t// this.onClickOutside = () => {\n\t\t\t// \tif (this.allowClose) {\n\t\t\t// \t\tthis.close();\n\t\t\t// \t}\n\n\t\t\t// \tthis.allowClose = true;\n\t\t\t// };\n\t\t}\n\n\t\tif (typeof this.onOpen == 'function') this.onOpen();\n\n\t\twindow.addEventListener('popstate', this.popStateListener.bind(this));\n\t}\n\n\tngAfterViewInit() {\n\t\tsetTimeout(() => {\n\t\t\tthis.showModal = true;\n\t\t}, this.timestart || 0);\n\t}\n\n\tngOnDestroy(): void {\n\t\twindow.removeEventListener('popstate', this.popStateListener.bind(this));\n\t}\n\n\tpopStateListener(e: Event) {\n\t\tthis.close();\n\t}\n}\n","<div [hidden]=\"!showModal\" class=\"modal\" [ngClass]=\"class + ' ' + size\" (click)=\"onClickOutside()\">\n\t<!-- (click)=\"$event.stopPropagation()\" -->\n\t<!-- <div class=\"modal-content\" (mousedown)=\"allowClose = false\"> -->\n\t<div class=\"modal-content\" (click)=\"$event.stopPropagation();\">\n\t\t<div><!-- Content Will Drop Here --></div>\n\t\t<span class=\"close\" (click)=\"close()\" *ngIf=\"closable\">&times;</span>\n\t</div>\n</div>\n","import { Component, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'lib-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss']\n})\n\nexport class LoaderComponent {\n @ViewChild('loader', { static: false }) loader: any;\n public text: string = \"Loading\";\n public class: string = \"\";\n public progress: boolean = true;\n public timeout: number = 5000;\n public close: any;\n public closable: any = true;\n constructor() { }\n ngOnInit(){\n if(this.timeout){\n setTimeout(()=>{\n this.close();\n }, this.timeout)\n }\n }\n}\n","<div style=\"position: fixed; width: 100%; height: 100%; left: 0; top: 0; background-color: #334d6e; display: flex; justify-content: center; align-items: center; z-index: 999999;\" #loader>\n\t<span class=\"close\" (click)=\"close()\" *ngIf=\"closable\">&times;</span>\n\t<span style=\"font-size: 30px; color: white;\">\n\t\t{{text}}\n\t</span>\n</div>","import { Directive, ElementRef, EventEmitter, Output, HostListener } from '@angular/core';\n\n@Directive({\n\tselector: '[clickOutside]'\n})\nexport class ClickOutsideDirective {\n\t@Output() clickOutside: EventEmitter<Event> = new EventEmitter<Event>();\n\n\tconstructor(private elementRef: ElementRef) { }\n\n\t@HostListener('document:click', ['$event'])\n\tonClick(event: Event): void {\n\t\tconst clickedInside = this.elementRef.nativeElement.contains(event.target);\n\t\tif (!clickedInside) {\n\t\t\tthis.clickOutside.emit(event);\n\t\t}\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'arr'\n})\nexport class ArrPipe implements PipeTransform {\n\ttransform(data: any, type?: any, refresh?:any): any {\n\t\tif(!data) { return []; }\n\t\tif(typeof data == 'string') return data.split(type||' ');\n\t\tif(Array.isArray(data)) { return data; }\n\t\tif(typeof data != 'object') { return []; }\n\t\tlet arr = [];\n\t\tfor (let each in data) {\n\t\t\tif(!data[each]) continue;\n\t\t\tif(type == 'prop'){\n\t\t\t\tarr.push(each);\n\t\t\t}else if(type == 'value'){\n\t\t\t\tarr.push(data[each]);\n\t\t\t}else{\n\t\t\t\tarr.push({\n\t\t\t\t\tprop: each,\n\t\t\t\t\tvalue: data[each]\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn arr;\n\t}\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'mongodate'\n})\nexport class MongodatePipe implements PipeTransform {\n\ttransform(_id: any){\n\t\tif(!_id) return new Date();\n\t\tlet timestamp = _id.toString().substring(0,8);\n\t\treturn new Date(parseInt(timestamp,16)*1000);\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'page',\n\tpure: false\n})\nexport class PaginationPipe implements PipeTransform {\n\ttransform(arr: any, config:any, sort:any, search=''): any {\n if(!Array.isArray(arr)) return [];\n\t\tarr = arr.slice();\n\t\tfor (let i = 0; i < arr.length; i++){\n\t\t arr[i].num = i+1;\n\t\t}\n\t\tif(sort.direction) {\n arr.sort((a:any, b:any)=> {\n if (a[sort.title] < b[sort.title]) {\n return (sort.direction=='desc') ? 1 : -1;\n }\n if (a[sort.title] > b[sort.title]) {\n return (sort.direction=='desc') ? -1 : 1;\n }\n return 0;\n })\n }\n\t\treturn arr.slice((config.page-1)*config.perPage, config.page*config.perPage);;\n\t}\n}","import { Pipe } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n@Pipe({name: 'safe'})\nexport class SafePipe {\n\tconstructor(private sanitizer: DomSanitizer){}\n\ttransform(html: any) {\n\t\treturn this.sanitizer.bypassSecurityTrustResourceUrl(html);\n\t}\n}","import { Pipe, PipeTransform } from '@angular/core';\n/*\n*\tAuthor: Honchar Denys\n*\tSearch for any content in any type of given documents\n*\tAlways returning an array, even if nothing is provided\n*/\n@Pipe({\n\tname: 'search'\n})\nexport class SearchPipe implements PipeTransform {\n\tprivate c = 0;\n\t// transform(given: any, search?: any, fields?: any, l?: any, i?: any, reload?: any): any {\n\ttransform(given: any, s?: any, f?: any, l?: any, i?: any, reload?: any): any {\n\t\t// given stands for the provided array with docs\n\t\t// s stands for search\n\t\t// f stands for fields\n\t\t// l stands for limit\n\t\t// i stands for ignore filter\n\t\t// start stands for start the limit\n\t\tif (!s) {\n\t\t\treturn given;\n\t\t}\n\t\tif (typeof f == 'number') {\n\t\t\tl = f;\n\t\t\tf = null;\n\t\t}\n\t\tif (i || !s) {\n\t\t\tif (l && Array.isArray(given)) return given.slice(0, l);\n\t\t\telse return given || [];\n\t\t}\n\t\tlet _arr: any = [], _check: any = {};\n\t\tif (!Array.isArray(s) && typeof s == 'object') {\n\t\t\tlet _s = [];\n\t\t\tfor (let key in s) {\n\t\t\t\tif (s[key]) _s.push(key);\n\t\t\t}\n\t\t\ts = _s;\n\t\t}\n\t\tif (typeof s == 'string') {\n\t\t\ts = [s];\n\t\t}\n\t\tif (!f) f = ['name'];\n\t\tif (typeof f == 'string') f = f.split(' ');\n\t\tlet sub_test = function (obj: any, _f: any, initObj: any, check: any): any {\n\t\t\tif (!obj) return;\n\t\t\tif (_f.indexOf('.') > -1) {\n\t\t\t\tlet sub = _f.split('.');\n\t\t\t\tlet nsub = sub.shift();\n\t\t\t\tif (Array.isArray(obj[nsub])) {\n\t\t\t\t\tfor (let s = 0; s < obj[nsub].length; s++) {\n\t\t\t\t\t\tsub_test(obj[nsub][s], sub.join('.'), initObj, check);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\treturn sub_test(obj[nsub], sub.join('.'), initObj, check);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let j = 0; j < s.length; j++) {\n\t\t\t\tlet b = false;\n\t\t\t\tif (obj[_f] && (typeof obj[_f] == 'string' || typeof obj[_f] == 'number') &&\n\t\t\t\t\ttypeof s[j] == 'string' &&\n\t\t\t\t\t(obj[_f].toString().toLowerCase().indexOf(s[j].toLowerCase()) > -1 ||\n\t\t\t\t\t\ts[j].toLowerCase().indexOf(obj[_f].toString().toLowerCase()) > -1)) {\n\t\t\t\t\tif (!_check[check]) _arr.push(initObj);\n\t\t\t\t\t_check[check] = true;\n\t\t\t\t\tb = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (b) break;\n\t\t\t}\n\t\t}\n\t\tlet test = function (obj: any, check: any) {\n\t\t\tfor (let i = 0; i < f.length; i++) {\n\t\t\t\tsub_test(obj, f[i], obj, check);\n\t\t\t}\n\t\t}\n\t\tif (Array.isArray(given)) {\n\t\t\tfor (let i = 0; i < given.length; i++) {\n\t\t\t\ttest(given[i], i);\n\t\t\t}\n\t\t} else if (typeof given == 'object') {\n\t\t\tfor (let key in given) {\n\t\t\t\ttest(given[key], key);\n\t\t\t}\n\t\t}\n\t\tif (l) return _arr.splice(0, l);\n\t\treturn _arr;\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'splice'\n})\nexport class SplicePipe implements PipeTransform {\n\ttransform(from: any, which: any, refresh?:number): any {\n\t\tif(Array.isArray(from)) from = { arr: from, prop: '_id' };\n\t\tlet arr = which.keep && [] || from.arr.slice();\n\t\tif(Array.isArray(which)) which = { arr: which, prop: '_id' };\n\t\tfor (let i = from.arr.length-1; i >= 0; i--){\n\t\t\tfor (let j = 0; j < which.arr.length; j++){\n\t\t\t\tif(from.prop && which.prop){\n\t\t\t\t\tif(from.arr[i][from.prop] == which.arr[j][which.prop]){\n\t\t\t\t\t\tif(which.keep){\n\t\t\t\t\t\t\tarr.push(from.arr[i]);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tarr.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}else if(from.prop){\n\t\t\t\t\tif(from.arr[i][from.prop] == which.arr[j]){\n\t\t\t\t\t\tif(which.keep){\n\t\t\t\t\t\t\tarr.push(from.arr[i]);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tarr.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}else if(which.prop){\n\t\t\t\t\tif(from.arr[i] == which.arr[j][which.prop]){\n\t\t\t\t\t\tif(which.keep){\n\t\t\t\t\t\t\tarr.push(from.arr[i]);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tarr.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}else if(from.arr[i] == which.arr[j]){\n\t\t\t\t\tif(which.keep){\n\t\t\t\t\t\tarr.push(from.arr[i]);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tarr.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn arr;\n\t}\n}\n","import { Injectable } from '@angular/core';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class BaseService {\n\tpublic now = new Date().getTime();\n\tpublic _now = ()=>{\n\t\tthis.now = new Date().getTime();\n\t}\n\tconstructor() {}\n}\n","import { Observable } from 'rxjs';\nimport { HttpService } from './http.service';\nimport { StoreService } from './store.service';\nimport { AlertService } from './alert.service';\nimport { CoreService } from './core.service';\nimport { CrudDocument } from '../interfaces/crud.interface';\n\ninterface CrudOptions<Document> {\n\tname?: string;\n\talert?: string;\n\tcallback?: (resp: Document | Document[]) => void;\n\terrCallback?: (resp: unknown) => void;\n}\n\ninterface CrudConfig<Document> {\n\tname: string;\n\t_id?: string;\n\treplace?: (doc: Document) => void;\n}\n\ninterface GetConfig {\n\tpage?: number;\n\tperPage?: number;\n}\n\nexport abstract class CrudService<Document extends CrudDocument> {\n\tprivate _url = '/api/';\n\tprivate docs: Document[] = [];\n\tprivate _perPage = 20;\n\tprivate _names: string[] = [];\n\tprivate _configuredDocs: Record<string, unknown> = {};\n\tprivate _docsConfiguration: Record<\n\t\tstring,\n\t\t(doc: Document, container: unknown) => void\n\t> = {};\n\tprivate _docsReset: Record<string, () => unknown> = {};\n\n\tconstructor(\n\t\tprivate _config: CrudConfig<Document>,\n\t\tprivate _http: HttpService,\n\t\tprivate _store: StoreService,\n\t\tprivate _alert: AlertService,\n\t\tprivate _core: CoreService\n\t) {\n\t\tthis._url += this._config.name;\n\t\tthis._store.getJson('docs_' + this._config.name, (docs) => {\n\t\t\tif (docs) {\n\t\t\t\tthis.docs = docs;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Generates a unique ID for a document.\n\t *\n\t * @param doc - The document for which to generate the ID.\n\t * @returns The unique ID as a string.\n\t */\n\tprivate _id(doc: Document): string {\n\t\treturn (doc as unknown as Record<string, unknown>)[\n\t\t\tthis._config._id || '_id'\n\t\t]?.toString() as string;\n\t}\n\n\t/**\n\t * Sets the documents in the local storage.\n\t */\n\tprivate setDocs(): void {\n\t\tthis._store.setJson('docs_' + this._config.name, this.docs);\n\t}\n\n\t/**\n\t * Adds a document to the local storage.\n\t *\n\t * @param doc - The document to add.\n\t */\n\tprivate addDoc(doc: Document): void {\n\t\tif (this._config.replace) {\n\t\t\tthis._config.replace(doc);\n\t\t}\n\t\tconst existingDoc = this.docs.find(\n\t\t\t(d) => this._id(d) === this._id(doc)\n\t\t);\n\t\tif (existingDoc) {\n\t\t\tthis._core.copy(doc, existingDoc);\n\t\t\tthis._core.copy(existingDoc, doc);\n\t\t} else {\n\t\t\tthis.docs.push(doc);\n\t\t}\n\t\tthis.setDocs();\n\t}\n\n\t/**\n\t * Creates a new document with a temporary ID.\n\t *\n\t * @returns A new document instance.\n\t */\n\tnew(): Document {\n\t\treturn {\n\t\t\t_id: Date.now().toString(),\n\t\t\t__created: false,\n\t\t\t__modified: false,\n\t\t} as Document;\n\t}\n\n\t/**\n\t * Retrieves a document by its ID.\n\t *\n\t * @param _id - The document ID.\n\t * @returns The document instance.\n\t */\n\tdoc(_id: string): Document {\n\t\treturn this.docs.find((d) => this._id(d) === _id) || this.new();\n\t}\n\n\t/**\n\t * Configures documents for a specific name.\n\t *\n\t * @param name - The configuration name.\n\t * @param config - The configuration function.\n\t * @param reset - The reset function.\n\t * @returns The configured documents.\n\t */\n\tconfigDocs(\n\t\tname: string,\n\t\tconfig: (doc: Document, container: unknown) => void,\n\t\treset: () => unknown\n\t): unknown {\n\t\tif (this._names.includes(name)) {\n\t\t\treturn this.getConfigedDocs(name);\n\t\t}\n\t\tthis._names.push(name);\n\t\tthis._docsReset[name] = reset;\n\t\tthis._docsConfiguration[name] = config;\n\t\tthis.reconfigureDocs(name);\n\t\treturn this.getConfigedDocs(name);\n\t}\n\n\t/**\n\t * Retrieves the configured documents for a specific name.\n\t *\n\t * @param name - The configuration name.\n\t * @returns The configured documents.\n\t */\n\tgetConfigedDocs(name: string): unknown {\n\t\treturn this._configuredDocs[name];\n\t}\n\n\t/**\n\t * Reconfigures documents for a specific name or all names.\n\t *\n\t * @param name - The configuration name (optional).\n\t */\n\treconfigureDocs(name: string = ''): void {\n\t\tconst names = name ? [name] : this._names;\n\t\tfor (const _name of names) {\n\t\t\tthis._configuredDocs[_name] = this._docsReset[_name]();\n\t\t\tfor (const doc of this.docs) {\n\t\t\t\tthis._docsConfiguration[_name](\n\t\t\t\t\tdoc,\n\t\t\t\t\tthis._configuredDocs[_name]\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Sets the number of documents per page.\n\t *\n\t * @param _perPage - The number of documents per page.\n\t */\n\tsetPerPage(_perPage: number): void {\n\t\tthis._perPage = _perPage;\n\t}\n\n\t/**\n\t * Retrieves documents from the API.\n\t *\n\t * @param config - The get configuration.\n\t * @param options - The CRUD options.\n\t * @returns An observable of the retrieved documents.\n\t */\n\tget(\n\t\tconfig: GetConfig = {},\n\t\toptions: CrudOptions<Document> = {}\n\t): Observable<Document[]> {\n\t\tconst url = `${this._url}/get${options.name || ''}`;\n\t\tconst params =\n\t\t\ttypeof config.page === 'number'\n\t\t\t\t? `?skip=${this._perPage * (config.page - 1)}&limit=${\n\t\t\t\t\t\tthis._perPage\n\t\t\t\t }`\n\t\t\t\t: '';\n\t\tconst obs = this._http.get(`${url}${params}`);\n\t\tobs.subscribe(\n\t\t\t(resp: unknown) => {\n\t\t\t\t(resp as Document[]).forEach((doc) => this.addDoc(doc));\n\t\t\t\tif (options.callback) options.callback(resp as Document[]);\n\t\t\t},\n\t\t\t(err: unknown) => {\n\t\t\t\tif (options.errCallback) options.errCallback(err);\n\t\t\t}\n\t\t);\n\t\treturn obs as Observable<Document[]>;\n\t}\n\n\t/**\n\t * Creates a new document in the API.\n\t *\n\t * @param doc - The document to create.\n\t * @param options - The CRUD options.\n\t * @returns An observable of the created document or void if the document was already created.\n\t */\n\tcreate(\n\t\tdoc: Document,\n\t\toptions: CrudOptions<Document> = {}\n\t): Observable<Document> | void {\n\t\tif (doc.__created) return;\n\t\tdoc.__created = true;\n\t\tconst obs = this._http.post(\n\t\t\t`${this._url}/create${options.name || ''}`,\n\t\t\tdoc\n\t\t);\n\t\tobs.subscribe(\n\t\t\t(resp: unknown) => {\n\t\t\t\tif (resp) {\n\t\t\t\t\tthis._core.copy(resp, doc);\n\t\t\t\t\tthis.addDoc(doc);\n\t\t\t\t\tthis.reconfigureDocs();\n\t\t\t\t\tif (options.callback) options.callback(doc);\n\t\t\t\t\tif (options.alert)\n\t\t\t\t\t\tthis._alert.show({\n\t\t\t\t\t\t\tunique: `${this._config.name}create`,\n\t\t\t\t\t\t\ttext: options.alert,\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tdoc.__created = false;\n\t\t\t\t\tif (options.errCallback) options.errCallback(resp);\n\t\t\t\t}\n\t\t\t\tthis._core.emit(`${this._config.name}_create`, doc);\n\t\t\t},\n\t\t\t(err: unknown) => {\n\t\t\t\tdoc.__created = false;\n\t\t\t\tif (options.errCallback) options.errCallback(err);\n\t\t\t}\n\t\t);\n\t\treturn obs as Observable<Document>;\n\t}\n\n\t/**\n\t * Fetches a document from the API based on a query.\n\t *\n\t * @param query - The query object.\n\t * @param options - The CRUD options.\n\t * @returns An observable of the fetched document.\n\t */\n\tfetch(\n\t\tquery: object = {},\n\t\toptions: CrudOptions<Document> = {}\n\t): Observable<Document> {\n\t\tconst obs = this._http.post(\n\t\t\t`${this._url}/fetch${options.name || ''}`,\n\t\t\tquery\n\t\t);\n\t\tobs.subscribe(\n\t\t\t(resp: unknown) => {\n\t\t\t\tif (resp) {\n\t\t\t\t\tthis.addDoc(resp as Document);\n\t\t\t\t\tthis.reconfigureDocs();\n\t\t\t\t\tif (options.callback) options.callback(resp as Document);\n\t\t\t\t\tif (options.alert)\n\t\t\t\t\t\tthis._alert.show({\n\t\t\t\t\t\t\tunique: `${this._config.name}create`,\n\t\t\t\t\t\t\ttext: options.alert,\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tif (options.errCallback) options.errCallback(resp as Document);\n\t\t\t\t}\n\t\t\t},\n\t\t\t(err: unknown) => {\n\t\t\t\tif (options.errCallback) options.errCallback(err);\n\t\t\t}\n\t\t);\n\t\treturn obs as Observable<Document>;\n\t}\n\n\t/**\n\t * Updates a document after a specified delay.\n\t *\n\t * @param doc - The document to update.\n\t * @param options - The CRUD options.\n\t */\n\tupdateAfterWhile(doc: Document, options: CrudOptions<Document> = {}): void {\n\t\tdoc.__modified = true;\n\t\tthis._core.afterWhile(this._id(doc), () => {\n\t\t\tthis.update(doc, options);\n\t\t});\n\t}\n\n\t/**\n\t * Updates a document in the API.\n\t *\n\t * @param doc - The document to update.\n\t * @param options - The CRUD options.\n\t * @returns An observable of the updated document.\n\t */\n\tupdate(\n\t\tdoc: Document,\n\t\toptions: CrudOptions<Document> = {}\n\t): Observable<Document> {\n\t\tdoc.__modified = true;\n\t\tconst obs = this._http.post(\n\t\t\t`${this._url}/update${options.name || ''}`,\n\t\t\tdoc\n\t\t);\n\t\tobs.subscribe(\n\t\t\t(resp: unknown) => {\n\t\t\t\tif (resp) {\n\t\t\t\t\tdoc.__modified = false;\n\t\t\t\t\tthis._core.copy(resp, doc);\n\t\t\t\t\tif (options.callback) options.callback(doc);\n\t\t\t\t\tif (options.alert)\n\t\t\t\t\t\tthis._alert.show({\n\t\t\t\t\t\t\tunique: `${this._config.name}update`,\n\t\t\t\t\t\t\ttext: options.alert,\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tif (options.errCallback) options.errCallback(resp);\n\t\t\t\t}\n\t\t\t\tthis._core.emit(`${this._config.name}_update`, doc);\n\t\t\t},\n\t\t\t(err: unknown) => {\n\t\t\t\tif (options.errCallback) options.errCallback(err);\n\t\t\t}\n\t\t);\n\t\treturn obs as Observable<Document>;\n\t}\n\n\t/**\n\t * Deletes a document from the API.\n\t *\n\t * @param doc - The document to delete.\n\t * @param options - The CRUD options.\n\t * @returns An observable of the deleted document.\n\t */\n\tdelete(\n\t\tdoc: Document,\n\t\toptions: CrudOptions<Document> = {}\n\t): Observable<Document> {\n\t\tconst obs = this._http.post(\n\t\t\t`${this._url}/delete${options.name || ''}`,\n\t\t\tdoc\n\t\t);\n\t\tobs.subscribe(\n\t\t\t(resp: unknown) => {\n\t\t\t\tif (resp) {\n\t\t\t\t\tthis.docs = this.docs.filter(\n\t\t\t\t\t\t(d) => this._id(d) !== this._id(doc)\n\t\t\t\t\t);\n\t\t\t\t\tthis.setDocs();\n\t\t\t\t\tthis.reconfigureDocs();\n\t\t\t\t\tif (options.callback) options.callback(doc);\n\t\t\t\t\tif (options.alert)\n\t\t\t\t\t\tthis._alert.show({\n\t\t\t\t\t\t\tunique: `${this._config.name}delete`,\n\t\t\t\t\t\t\ttext: options.alert,\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tif (options.errCallback) options.errCallback(resp);\n\t\t\t\t}\n\t\t\t\tthis._core.emit(`${this._config.name}_delete`, doc);\n\t\t\t},\n\t\t\t(err: unknown) => {\n\t\t\t\tif (options.errCallback) options.errCallback(err);\n\t\t\t}\n\t\t);\n\t\treturn obs as Observable<Document>;\n\t}\n}\n","import { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from '../interfaces/config';\nimport { Injectable, Inject, Optional } from '@angular/core';\nimport { CoreService } from './core.service';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class StoreService {\n\tprivate _prefix = '';\n\n\tconstructor(\n\t\t@Inject(CONFIG_TOKEN) @Optional() private config: Config,\n\t\tprivate core: CoreService\n\t) {\n\t\tthis.config = this.config || DEFAULT_CONFIG;\n\t}\n\n\t/**\n\t * Sets the prefix for storage keys.\n\t *\n\t * @param prefix - The prefix to set.\n\t */\n\tsetPrefix(prefix: string): void {\n\t\tthis._prefix = prefix;\n\t}\n\n\t/**\n\t * Sets a value in storage.\n\t *\n\t * @param key - The storage key.\n\t * @param value - The value to store.\n\t * @param callback - The callback to execute on success.\n\t * @param errCallback - The callback to execute on error.\n\t */\n\tset(\n\t\tkey: string,\n\t\tvalue: string,\n\t\tcallback: () => void = () => { },\n\t\terrCallback: () => void = () => { }\n\t): void {\n\t\tkey = this.applyPrefix(key);\n\n\t\tif (this.config.store?.set) {\n\t\t\tthis.config.store.set(key, value, callback, errCallback);\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tthis.core.localStorage.setItem(key, value);\n\t\t\t\tcallback();\n\t\t\t} catch (e) {\n\t\t\t\terrCallback();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Sets a value in storage asynchronously.\n\t *\n\t * @param key - The storage key.\n\t * @param value - The value to store.\n\t * @returns A promise that resolves to a boolean indicating success.\n\t */\n\tasync setAsync(\n\t\tkey: string,\n\t\tvalue: string\n\t): Promise<boolean> {\n\t\tkey = this.applyPrefix(key);\n\n\t\ttry {\n\t\t\tif (this.config.store?.set) {\n\t\t\t\tawait this.config.store.set(key, value);\n\t\t\t} else {\n\t\t\t\tthis.core.localStorage.setItem(key, value);\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\tconsole.error(err);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Gets a value from storage.\n\t *\n\t * @param key - The storage key.\n\t * @param callback - The callback to execute with the retrieved value.\n\t * @param errCallback - The callback to execute on error.\n\t */\n\tget(\n\t\tkey: string,\n\t\tcallback: (value: string) => void = () => { },\n\t\terrCallback: () => void = () => { }\n\t): void {\n\t\tkey = this.applyPrefix(key);\n\n\t\tif (this.config.store?.get) {\n\t\t\tthis.config.store.get(key, callback, errCallback);\n\t\t} else {\n\t\t\tconst value = this.core.localStorage.getItem(key) || '';\n\t\t\tcallback(value);\n\t\t}\n\t}\n\n\t/**\n\t * Gets a value from storage asynchronously.\n\t *\n\t * @param key - The storage key.\n\t * @returns A promise that resolves to the retrieved value.\n\t */\n\tasync getAsync(\n\t\tkey: string\n\t): Promise<string> {\n\t\tkey = this.applyPrefix(key);\n\n\t\ttry {\n\t\t\tif (this.config.store?.get) {\n\t\t\t\treturn await this.config.store.get(key);\n\t\t\t} else {\n\t\t\t\treturn this.core.localStorage.getItem(key) || '';\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.error(err);\n\t\t\treturn '';\n\t\t}\n\t}\n\n\t/**\n\t * Sets a JSON value in storage.\n\t *\n\t * @param key - The storage key.\n\t * @param value - The value to store.\n\t * @param callback - The callback to execute on success.\n\t * @param errCallback - The callback to execute on error.\n\t */\n\tsetJson(\n\t\tkey: string,\n\t\tvalue: any,\n\t\tcallback: () => void = () => { },\n\t\terrCallback: () => void = () => { }\n\t): void {\n\t\tthis.set(key, JSON.stringify(value), callback, errCallback);\n\t}\n\n\t/**\n\t * Sets a JSON value in storage asynchronously.\n\t *\n\t * @param key - The storage key.\n\t * @param value - The value to store.\n\t * @returns A promise that resolves to a boolean indicating success.\n\t */\n\tasync setJsonAsync(\n\t\tkey: string,\n\t\tvalue: any\n\t): Promise<boolean> {\n\t\treturn this.setAsync(key, JSON.stringify(value));\n\t}\n\n\t/**\n\t * Gets a JSON value from storage.\n\t *\n\t * @param key - The storage key.\n\t * @param callback - The callback to execute with the retrieved value.\n\t * @param errCallback - The callback to execute on error.\n\t */\n\tgetJson(\n\t\tkey: string,\n\t\tcallback: (value: any) => void = () => { },\n\t\terrCallback: () => void = () => { }\n\t): void {\n\t\tthis.get(key, (value: string) => {\n\t\t\ttry {\n\t\t\t\tconst parsedValue = JSON.parse(value);\n\t\t\t\tcallback(parsedValue);\n\t\t\t} catch (e) {\n\t\t\t\tcallback(null);\n\t\t\t}\n\t\t}, errCallback);\n\t}\n\n\t/**\n\t * Gets a JSON value from storage asynchronously.\n\t *\n\t * @param key - The storage key.\n\t * @returns A promise that resolves to the retrieved value.\n\t */\n\tasync getJsonAsync<T = any>(key: string): Promise<T | null> {\n\t\tconst value = await this.getAsync(key);\n\t\ttry {\n\t\t\treturn JSON.parse(value);\n\t\t} catch (err) {\n\t\t\tconsole.error(err);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Removes a value from storage.\n\t *\n\t * @param key - The storage key.\n\t * @param callback - The callback to execute on success.\n\t * @param errCallback - The callback to execute on error.\n\t * @returns A promise that resolves to a boolean indicating success.\n\t */\n\tasync remove(\n\t\tkey: string,\n\t\tcallback?: () => void,\n\t\terrCallback?: () => void\n\t): Promise<boolean> {\n\t\tkey = this.applyPrefix(key);\n\n\t\ttry {\n\t\t\tif (this.config.store?.remove) {\n\t\t\t\tawait this.config.store.remove(key, callback, errCallback);\n\t\t\t} else {\n\t\t\t\tthis.core.localStorage.removeItem(key);\n\t\t\t}\n\t\t\tcallback?.();\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\tconsole.error(err);\n\t\t\terrCallback?.();\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Clears all values from storage.\n\t *\n\t * @param callback - The callback to execute on success.\n\t * @param errCallback - The callback to execute on error.\n\t * @returns A promise that resolves to a boolean indicating success.\n\t */\n\tasync clear(\n\t\tcallback?: () => void,\n\t\terrCallback?: () => void\n\t): Promise<boolean> {\n\t\ttry {\n\t\t\tif (this.config.store?.clear) {\n\t\t\t\tawait this.config.store.clear();\n\t\t\t} else {\n\t\t\t\tthis.core.localStorage.clear();\n\t\t\t}\n\t\t\tcallback?.();\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\tconsole.error(err);\n\t\t\terrCallback?.();\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Applies the configured prefix to a storage key.\n\t *\n\t * @param key - The storage key.\n\t * @returns The prefixed storage key.\n\t */\n\tprivate applyPrefix(key: string): string {\n\t\tif (this.config.store?.prefix) {\n\t\t\tkey = this.config.store.prefix + key;\n\t\t}\n\t\tif (this._prefix) {\n\t\t\tkey = this._prefix + key;\n\t\t}\n\t\treturn key;\n\t}\n}\n","import { Injectable, Inject, Optional } from '@angular/core';\nimport { CONFIG_TOKEN, Config } from '../interfaces/config';\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { EMPTY, Observable, ReplaySubject } from 'rxjs';\nimport { catchError, first } from 'rxjs/operators';\nimport { StoreService } from './store.service';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class HttpService {\n\t// An array of error handling callbacks\n\terrors: ((err: HttpErrorResponse, retry?: () => void) => {})[] = [];\n\n\t// Base URL for HTTP requests\n\turl = '';\n\n\t// Flag to lock the service to prevent multiple requests\n\tlocked = false;\n\n\t// Array to store setTimeout IDs for managing request locks\n\tawaitLocked: any[] = [];\n\n\t// Configuration object for HTTP settings\n\tprivate _http: any;\n\n\t// Object to store HTTP headers\n\tprivate _headers: any = {};\n\n\t// Instance of HttpHeaders with current headers\n\tprivate _http_headers = new HttpHeaders(this._headers);\n\n\tconstructor(\n\t\tprivate store: StoreService,\n\t\tprivate http: HttpClient,\n\t\t@Inject(CONFIG_TOKEN) @Optional() private _config: Config\n\t) {\n\t\t// Initialize HTTP configuration and headers from injected config\n\t\tthis._http = this._config.http || {};\n\n\t\tif (typeof this._http.headers === 'object') {\n\t\t\tfor (const header in this._http.headers) {\n\t\t\t\tthis._headers[header] = this._http.headers[header];\n\t\t\t}\n\t\t\tthis._http_headers = new HttpHeaders(this._headers);\n\t\t}\n\n\t\t// Retrieve and set the base URL and headers from the store\n\t\tthis.store.get('http_url', (url: any) => {\n\t\t\tthis.url = url || this._http.url || '';\n\t\t});\n\n\t\tthis.store.getJson('http_headers', (headers: any) => {\n\t\t\tif (headers) {\n\t\t\t\tfor (const header in headers) {\n\t\t\t\t\tthis._headers[header] = headers[header];\n\t\t\t\t}\n\t\t\t\tthis._http_headers = new HttpHeaders(this._headers);\n\t\t\t}\n\t\t});\n\t}\n\n\t// Set a new base URL and save it in the store\n\tsetUrl(url: string) {\n\t\tthis.url = url;\n\t\tthis.store.set('http_url', url);\n\t}\n\n\t// Remove the base URL and revert to the default or stored one\n\tremoveUrl() {\n\t\tthis.url = this._http.url || '';\n\t\tthis.store.remove('http_url');\n\t}\n\n\t// Set a new HTTP header and update the stored headers\n\tset(key: any, value: any) {\n\t\tthis._headers[key] = value;\n\t\tthis.store.setJson('http_headers', this._headers);\n\t\tthis._http_headers = new HttpHeaders(this._headers);\n\t}\n\n\t// Get the value of a specific HTTP header\n\theader(key: any) {\n\t\treturn this._headers[key];\n\t}\n\n\t// Remove a specific HTTP header and update the stored headers\n\tremove(key: any) {\n\t\tdelete this._headers[key];\n\t\tthis._http_headers = new HttpHeaders(this._headers);\n\t\tthis.store.setJson('http_headers', this._headers);\n\t}\n\n\t// Internal method to make HTTP requests based on the method type\n\tprivate _httpMethod(method: string, _url: string, doc: unknown, headers: any): Observable<any> {\n\t\tif (method === 'post') {\n\t\t\treturn this.http.post<any>(_url, doc, headers);\n\t\t} else if (method === 'put') {\n\t\t\treturn this.http.put<any>(_url, doc, headers);\n\t\t} else if (method === 'patch') {\n\t\t\treturn this.http.patch<any>(_url, doc, headers);\n\t\t} else if (method === 'delete') {\n\t\t\treturn this.http.delete<any>(_url, headers);\n\t\t} else {\n\t\t\treturn this.http.get<any>(_url, headers);\n\t\t}\n\t}\n\n\t/**\n\t * Internal method to handle HTTP POST requests.\n\t * - Manages request locking to prevent simultaneous requests.\n\t * - Returns an Observable that emits the HTTP response.\n\t * - Supports callback functions for legacy code.\n\t */\n\tprivate _post(\n\t\turl: string,\n\t\tdoc: unknown,\n\t\tcallback = (resp: unknown) => { },\n\t\topts: any = {},\n\t\tmethod = 'post'\n\t): Observable<any> {\n\t\tif (typeof opts === 'function') {\n\t\t\topts = { err: opts };\n\t\t}\n\n\t\tif (!opts.err) {\n\t\t\topts.err = (err: HttpErrorResponse) => { };\n\t\t}\n\n\t\t// Handle request locking to avoid multiple simultaneous requests\n\t\tif (this.locked && !opts.skipLock) {\n\t\t\treturn new Observable(observer => {\n\t\t\t\tconst wait = setTimeout(() => {\n\t\t\t\t\tthis._post(url, doc, callback, opts, method).subscribe(observer);\n\t\t\t\t}, 100);\n\t\t\t\tthis.awaitLocked.push(wait);\n\t\t\t});\n\t\t}\n\n\t\tconst _url = (opts.url || this.url) + url;\n\t\tthis.prepare_handle(_url, doc);\n\n\t\t// Using ReplaySubject to allow multiple subscriptions without re-triggering the HTTP request\n\t\tconst responseSubject = new ReplaySubject<any>(1);\n\n\t\tthis._httpMethod(method, _url, doc, { headers: this._http_headers })\n\t\t\t.pipe(\n\t\t\t\tfirst(),\n\t\t\t\tcatchError((error: HttpErrorResponse) => {\n\t\t\t\t\tthis.handleError(opts.err, () => {\n\t\t\t\t\t\tthis._post(url, doc, callback, opts, method).subscribe(responseSubject);\n\t\t\t\t\t})(error);\n\t\t\t\t\tresponseSubject.error(error);\n\t\t\t\t\treturn EMPTY;\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: (resp: unknown) => {\n\t\t\t\t\tthis.response_handle(_url, resp, () => callback(resp));\n\t\t\t\t\tresponseSubject.next(resp);\n\t\t\t\t\tresponseSubject.complete();\n\t\t\t\t},\n\t\t\t\terror: (err) => responseSubject.error(err),\n\t\t\t\tcomplete: () => responseSubject.complete(),\n\t\t\t});\n\n\t\treturn responseSubject.asObservable();\n\t}\n\n\t/**\n\t * Public method to perform a POST request.\n\t * - Supports legacy callback usage.\n\t * - Returns an Observable for reactive programming.\n\t */\n\tpost(url: string, doc: any, callback = (resp: any) => { }, opts: any = {}): Observable<any> {\n\t\treturn this._post(url, doc, callback, opts);\n\t}\n\n\t/**\n\t * Public method to perform a PUT request.\n\t * - Supports legacy callback usage.\n\t * - Returns an Observable for reactive programming.\n\t */\n\tput(url: string, doc: any, callback = (resp: any) => { }, opts: any = {}): Observable<any> {\n\t\treturn this._post(url, doc, callback, opts, 'put');\n\t}\n\n\t/**\n\t * Public method to perform a PATCH request.\n\t * - Supports legacy callback usage.\n\t * - Returns an Observable for reactive programming.\n\t */\n\tpatch(url: string, doc: any, callback = (resp: any) => { }, opts: any = {}): Observable<any> {\n\t\treturn this._post(url, doc, callback, opts, 'patch');\n\t}\n\n\t/**\n\t * Public method to perform a DELETE request.\n\t * - Supports legacy callback usage.\n\t * - Returns an Observable for reactive programming.\n\t */\n\tdelete(url: string, callback = (resp: any) => { }, opts: any = {}): Observable<any> {\n\t\treturn this._post(url, null, callback, opts, 'delete');\n\t}\n\n\t/**\n\t * Public method to perform a GET request.\n\t * - Supports legacy callback usage.\n\t * - Returns an Observable for reactive programming.\n\t */\n\tget(url: string, callback = (resp: any) => { }, opts: any = {}): Observable<any> {\n\t\treturn this._post(url, null, callback, opts, 'get');\n\t}\n\n\t// Clear all pending request locks\n\tclearLocked() {\n\t\tfor (const awaitLocked of this.awaitLocked) {\n\t\t\tclearTimeout(awaitLocked);\n\t\t}\n\t\tthis.awaitLocked = [];\n\t}\n\n\t// Lock the service to prevent multiple simultaneous requests\n\tlock() {\n\t\tthis.locked = true;\n\t}\n\n\t// Unlock the service to allow new requests\n\tunlock() {\n\t\tthis.locked = false;\n\t}\n\n\t/**\n\t * Handles HTTP errors.\n\t * - Calls provided error callback and retries the request if needed.\n\t */\n\tprivate handleError(callback: any, retry: () => void) {\n\t\treturn (error: HttpErrorResponse): Promise<void> => {\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tthis.err_handle(error, callback, retry);\n\t\t\t\tresolve();\n\t\t\t});\n\t\t};\n\t}\n\n\t/**\n\t * Internal method to trigger error handling callbacks.\n\t */\n\tprivate err_handle(\n\t\terr: HttpErrorResponse,\n\t\tnext: (err: HttpErrorResponse) => void,\n\t\tretry: () => void\n\t) {\n\t\tif (typeof next === 'function') {\n\t\t\tnext(err);\n\t\t}\n\n\t\tfor (const callback of this.errors) {\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\tcallback(err, retry);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Placeholder method for handling request preparation (can be customized)\n\tprivate prepare_handle(url: string, body: unknown) { }\n\n\t// Placeholder method for handling the response (can be customized)\n\tprivate response_handle(url: string, body: unknown, next: () => void) {\n\t\tif (typeof next === 'function') {\n\t\t\tnext();\n\t\t}\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpService } from './http.service';\nimport { CoreService } from './core.service';\nimport { Subject } from 'rxjs';\nimport { StoreService } from './store.service';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class MongoService {\n\t/*\n\t*\tData will be storage for all information we are pulling from waw crud.\n\t*\tdata['arr' + part] will host all docs from collection part in array form\n\t*\tdata['obj' + part] will host all docs from collection part in object form\n\t*\t\tand all groups collecitons provided\n\t*\tdata['opts' + part] will host options for docs from collection part\n\t*\t\tWill be initialized only inside get\n\t*\t\tWill be used inside push\n\t*/\n\t\tprivate data:any = {};\n\t\tprivate socket: any = {\n\t\t\temit: (which:any, doc:any) => {\n\t\t\t\tconsole.log(which, doc, 'is not used on sockets');\n\t\t\t}\n\t\t};\n\t/*\n\t*\twaw crud connect functions\n\t*/\n\t\tpublic config(part:any, opts:any){\n\t\t\tif(this.data['opts' + part]) return;\n\t\t\tif(!this.data['arr' + part]) this.data['arr' + part] = [];\n\t\t\tif(!this.data['obj' + part]) this.data['obj' + part] = {};\n\t\t\tif(this.data['opts' + part]){\n\t\t\t\tfor (let each in opts){\n\t\t\t\t this.data['opts' + part][each] = opts[each];\n\t\t\t\t}\n\t\t\t}else this.data['opts' + part] = opts = opts||{};\n\t\t\tif(typeof opts.use === 'string'){\n\t\t\t\topts.use = opts.use.split(' ');\n\t\t\t}\n\t\t\tif(opts.query){\n\t\t\t\tfor(let key in opts.query){\n\t\t\t\t\tif(typeof opts.query[key] == 'function'){\n\t\t\t\t\t\topts.query[key] = {\n\t\t\t\t\t\t\tallow: opts.query[key]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.data['obj' + part][key] = [];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(opts.groups){\n\t\t\t\tif(typeof opts.groups === 'string'){\n\t\t\t\t\topts.groups = opts.groups.split(' ');\n\t\t\t\t}\n\t\t\t\tif(Array.isArray(opts.groups)){\n\t\t\t\t\tlet arr = opts.groups;\n\t\t\t\t\topts.groups = {};\n\t\t\t\t\tfor(let i = 0; i < arr.length; i++){\n\t\t\t\t\t\tif(typeof arr[i] === 'string'){\n\t\t\t\t\t\t\topts.groups[arr[i]] = true;\n\t\t\t\t\t\t}else {\n\t\t\t\t\t\t\tfor(let key in arr[i]){\n\t\t\t\t\t\t\t\tif(typeof arr[i][key] == 'function'){\n\t\t\t\t\t\t\t\t\tarr[i][key] = {\n\t\t\t\t\t\t\t\t\t\tfield: arr[i][key]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\topts.groups[key] = arr[i][key];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let key in opts.groups){\n\t\t\t\t\tif(typeof opts.groups[key] == 'boolean'){\n\t\t\t\t\t\tif(opts.groups[key]){\n\t\t\t\t\t\t\topts.groups[key] = {\n\t\t\t\t\t\t\t\tfield: function(doc:any){\n\t\t\t\t\t\t\t\t\treturn doc[key];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tdelete opts.groups[key];\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof opts.groups[key] != 'object'){\n\t\t\t\t\t\tdelete opts.groups[key];\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof opts.groups[key].field != 'function'){\n\t\t\t\t\t\tdelete opts.groups[key];\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif(Array.isArray(this.data['obj' + part][key])){\n\t\t\t\t\t\tconsole.warn('You can have same field groups with query. Field '+key+' is not used in groups.');\n\t\t\t\t\t\tdelete opts.groups[key];\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tthis.data['obj' + part][key] = {};\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(opts.fields) {\n\t\t\t\tif (typeof opts.fields === 'string') {\n\t\t\t\t\topts.fields = opts.fields.split(' ');\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!Array.isArray(opts.fields)) {\n\t\t\t\topts.fields = [];\n\t\t\t}\n\t\t\t// this.store.getJson('mongo' + part, data => {\n\t\t\t// \tif (data && Array.isArray(data)) {\n\t\t\t// \t\tfor (let i = 0; i < data.length; i++) {\n\t\t\t// \t\t\tthis.push(part, data[i]);\n\t\t\t// \t\t}\n\t\t\t// \t}\n\t\t\t// });\n\t\t\treturn {\n\t\t\t\tarr: this.data['arr' + part],\n\t\t\t\tobj: this.data['obj' + part]\n\t\t\t};\n\t\t};\n\t\tpublic create(part:any, doc:any=undefined, cb:any=undefined, opts:any={}) {\n\t\t\tif (typeof doc == 'function') {\n\t\t\t\tif(cb) opts = cb;\n\t\t\t\tcb = doc;\n\t\t\t\tdoc = {};\n\t\t\t}\n\t\t\tif(typeof opts == 'function'){\n\t\t\t\topts = {\n\t\t\t\t\terr: opts\n\t\t\t\t};\n\t\t\t}\n\t\t\tif(typeof doc != 'object') doc={};\n\t\t\tif(doc.___created && !opts.allow_multiple) return;\n\t\t\tdoc.___created = true;\n\t\t\tthis.http.post(opts.url || '/api/' + part + '/create', doc || {}, resp => {\n\t\t\t\tif (resp) {\n\t\t\t\t\tthis.socket.emit('create', {\n\t\t\t\t\t\t_id: resp._id,\n\t\t\t\t\t\tpart: part\n\t\t\t\t\t});\n\t\t\t\t\tthis.push(part, resp);\n\t\t\t\t\tif (typeof cb == 'function') cb(resp);\n\t\t\t\t}else if (typeof cb == 'function') {\n\t\t\t\t\tcb(false);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\turl: opts.base_url || this.http.url\n\t\t\t});\n\t\t};\n\t\tpublic fetch(part:any, opts:any=undefined, cb:any=undefined) {\n\t\t\tif(opts.query && opts.query._id && !opts.force &&\n\t\t\t\tthis.data['obj' + part][opts.query._id]){\n\t\t\t\treturn this.data['obj' + part][opts.query._id];\n\t\t\t}\n\t\t\tif (typeof opts == 'function') {\n\t\t\t\tcb = opts;\n\t\t\t\topts = {};\n\t\t\t}\n\t\t\tif(!opts) opts = {};\n\t\t\tthis.config(part, opts); // remove this in future\n\t\t\tlet url = '/api/' + part + '/fetch'+(opts.name||''), doc:any;\n\t\t\tif(opts.query && opts.query._id && this.data['obj' + part][opts.query._id]){\n\t\t\t\tdoc = this.data['obj' + part][opts.query._id];\n\t\t\t}else{\n\t\t\t\tdoc = {};\n\t\t\t\tfor(let key in this.data['opts'+part].replace){\n\t\t\t\t\tthis.replace(doc, key, this.data['opts'+part].replace[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.http.post(opts.url || url, (opts.query||{}), resp => {\n\t\t\t\tif(!resp) return cb&&cb(false);\n\t\t\t\tfor (let each in resp){\n\t\t\t\t doc[each] = resp[each];\n\t\t\t\t}\n\t\t\t\tfor (let each in doc){\n\t\t\t\t doc[each] = resp[each];\n\t\t\t\t}\n\t\t\t\tthis.push(part, doc);\n\t\t\t\tif (resp && typeof cb == 'function') {\n\t\t\t\t\tcb(doc);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\turl: opts.base_url || this.http.url\n\t\t\t});\n\t\t\treturn doc;\n\t\t};\n\t\tpublic get(part:any, opts:any=undefined, cb:any=undefined) {\n\t\t\tif (typeof opts == 'function') {\n\t\t\t\tcb = opts;\n\t\t\t\topts = {};\n\t\t\t}\n\t\t\tif(!opts) opts = {};\n\t\t\tthis.config(part, opts); // remove this in future\n\t\t\tlet url = '/api/' + part + '/get'+(opts.name||'')+(opts.param||'');\n\t\t\tthis.http.get(opts.url || url, resp => {\n\t\t\t\tif (Array.isArray(resp)) {\n\t\t\t\t\tfor (let i = 0; i < resp.length; i++) {\n\t\t\t\t\t\tthis.push(part,resp[i]);\n\t\t\t\t\t}\n\t\t\t\t\tif (!opts.paginate) {\n\t\t\t\t\t\tfor (let i = 0; i < this.data['arr' + part].length; i++) {\n\t\t\t\t\t\t\tlet remove = true;\n\t\t\t\t\t\t\tfor (let j = 0; j < resp.length; j++) {\n\t\t\t\t\t\t\t\tif (resp[j]._id === this.data['arr' + part][i]._id) {\n\t\t\t\t\t\t\t\t\tremove = false;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (remove) {\n\t\t\t\t\t\t\t\tthis.remove(part, this.data['arr' + part][i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof cb == 'function') cb(this.data['arr' + part], this.data['obj' + part], opts.name||'', resp);\n\t\t\t\t} else if (typeof cb == 'function') {\n\t\t\t\t\tcb(this.data['arr' + part], this.data['obj' + part], opts.name||'', resp);\n\t\t\t\t}\n\t\t\t\tthis.data['loaded'+part]=true;\n\t\t\t}, {\n\t\t\t\turl: opts.base_url || this.http.url\n\t\t\t});\n\t\t\treturn this.data['arr' + part];\n\t\t};\n\t\tpublic set(part:any, opts:any=undefined, resp:any=undefined) {\n\t\t\tif (Array.isArray(opts)) {\n\t\t\t\tresp = opts;\n\t\t\t\topts = undefined;\n\t\t\t}\n\t\t\tif(opts) this.config(part, opts);\n\t\t\tif (Array.isArray(resp)) {\n\t\t\t\tfor (let i = 0; i < resp.length; i++) {\n\t\t\t\t\tthis.push(part, resp[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tarr: this.data['arr' + part],\n\t\t\t\tobj: this.data['obj' + part]\n\t\t\t}\n\t\t};\n\t\tprivate prepare_update(part:any, doc:any, opts:any){\n\t\t\tif(opts.fields){\n\t\t\t\tif(typeof opts.fields === 'string') opts.fields = opts.fields.split(' ');\n\t\t\t\tlet _doc:any = {};\n\t\t\t\tfor(let i = 0; i < opts.fields.length; i++){\n\t\t\t\t\t_doc[opts.fields[i]] = doc[opts.fields[i]];\n\t\t\t\t}\n\t\t\t\tdoc = _doc;\n\t\t\t}else this.renew(part, doc);\n\t\t\tif(typeof opts.rewrite == 'object' && Object.values(opts.rewrite).length){\n\t\t\t\tdoc = JSON.parse(JSON.stringify(doc));\n\t\t\t\tfor(let key in opts.rewrite){\n\t\t\t\t\tthis.replace(doc, key, opts.rewrite[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn doc;\n\t\t};\n\t\tpublic update(part:any, doc:any, opts:any=undefined, cb:any=undefined) {\n\t\t\tif (typeof opts == 'function'){\n\t\t\t\tcb = opts;\n\t\t\t\topts = {};\n\t\t\t}\n\t\t\tif(typeof opts != 'object') opts = {};\n\t\t\tdoc = this.prepare_update(part, doc, opts);\n\t\t\tlet url = '/api/' + part + '/update' + (opts.name||'');\n\t\t\tthis.http.post(opts.url || url, doc, resp => {\n\t\t\t\tif(resp){\n\t\t\t\t\tthis.socket.emit('update', {\n\t\t\t\t\t\t_id: doc._id,\n\t\t\t\t\t\tpart: part\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (resp && typeof cb == 'function') {\n\t\t\t\t\tcb(resp);\n\t\t\t\t} else if (typeof cb == 'function') {\n\t\t\t\t\tcb(false);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\turl: opts.base_url || this.http.url\n\t\t\t});\n\t\t};\n\t\tpublic unique(part:any, doc:any, opts:any=undefined, cb:any=undefined) {\n\t\t\tif (typeof opts == 'function'){\n\t\t\t\tcb = opts;\n\t\t\t\topts = {};\n\t\t\t}\n\t\t\tif(typeof opts != 'object') opts = {};\n\t\t\tdoc = this.prepare_update(part, doc, opts);\n\t\t\tlet url = '/api/' + part + '/unique' + (opts.name||'');\n\t\t\tthis.http.post(opts.url || url, doc, resp => {\n\t\t\t\tif(resp){\n\t\t\t\t\tthis.socket.emit('update', {\n\t\t\t\t\t\t_id: doc._id,\n\t\t\t\t\t\tpart: part\n\t\t\t\t\t});\n\t\t\t\t\tlet current_doc = this.data['obj' + part][doc._id];\n\t\t\t\t\tfor (let each in doc){\n\t\t\t\t\t current_doc[each] = doc[each];\n\t\t\t\t\t}\n\t\t\t\t\tthis.renew(part, current_doc);\n\t\t\t\t}\n\t\t\t\tif ((resp || typeof resp === 'string') && typeof cb == 'function') {\n\t\t\t\t\tcb(resp);\n\t\t\t\t} else if (typeof cb == 'function') {\n\t\t\t\t\tcb(false);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\turl: opts.base_url || this.http.url\n\t\t\t});\n\t\t};\n\t\tpublic delete(part:any, doc:any, opts:any=undefined, cb:any=undefined) {\n\t\t\tif (typeof opts == 'function') {\n\t\t\t\tcb = opts;\n\t\t\t\topts = {};\n\t\t\t}\n\t\t\tif (typeof opts !== 'object') opts = {};\n\t\t\tif (opts.fields) {\n\t\t\t\tif(typeof opts.fields === 'string') opts.fields = opts.fields.split(' ');\n\t\t\t\tlet _doc:any = {};\n\t\t\t\tfor(let i = 0; i < opts.fields.length; i++){\n\t\t\t\t\t_doc[opts.fields[i]] = doc[opts.fields[i]];\n\t\t\t\t}\n\t\t\t\tdoc = _doc;\n\t\t\t} else {\n\t\t\t\tdoc={\n\t\t\t\t\t_id:doc._id\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet url = '/api/' + part + '/delete' + (opts.name||'');\n\t\t\tthis.http.post(opts.url || url, doc, resp => {\n\t\t\t\tif (resp) {\n\t\t\t\t\tthis.socket.emit('delete', {\n\t\t\t\t\t\t_id: doc._id,\n\t\t\t\t\t\tpart: part\n\t\t\t\t\t});\n\t\t\t\t\tthis.remove(part, doc);\n\t\t\t\t}\n\t\t\t\tif (resp && typeof cb == 'function') {\n\t\t\t\t\tcb(resp);\n\t\t\t\t} else if (typeof cb == 'function') {\n\t\t\t\t\tcb(false);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\turl: opts.base_url || this.http.url\n\t\t\t});\n\t\t};\n\t\tpublic _id(cb:any){\n\t\t\tif(typeof cb == 'function'){\n\t\t\t\tthis.http.get('/waw/newId', cb);\n\t\t\t}\n\t\t};\n\t\tpublic to_id(docs:any){\n\t\t\tif(!docs) return [];\n\t\t\tif(Array.isArray(docs)){\n\t\t\t\tdocs = docs.slice();\n\t\t\t}else if(typeof docs == 'object'){\n\t\t\t\tif(docs._id) return [docs._id];\n\t\t\t\tlet _docs = [];\n\t\t\t\tfor(let key in docs){\n\t\t\t\t\tif(docs[key]) _docs.push(docs[key]._id||docs[key]);\n\t\t\t\t}\n\t\t\t\tdocs = _docs;\n\t\t\t}\n\t\t\tfor (let i = 0; i < docs.length; ++i) {\n\t\t\t\tif(docs[i]) docs[i] = docs[i]._id || docs[i];\n\t\t\t}\n\t\t\treturn docs;\n\t\t};\n\t\tpublic afterWhile(doc:any, cb:any, time=1000){\n\t\t\tif(typeof cb == 'function' && typeof time == 'number'){\n\t\t\t\tclearTimeout(doc.__updateTimeout);\n\t\t\t\tdoc.__updateTimeout = setTimeout(cb, time);\n\t\t\t}\n\t\t};\n\t\tpublic populate(doc:any, field:any, part:any):any{\n\t\t\tif(!doc||!field||!part) return;\n\t\t\tif(Array.isArray(doc)){\n\t\t\t\tfor(let i = 0; i < doc.length; i++){\n\t\t\t\t\tthis.populate(doc[i], field, part);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(this.data['loaded'+part]){\n\t\t\t\tif(Array.isArray(field)){\n\t\t\t\t\tfor(let i = 0; i < field.length; i++){\n\t\t\t\t\t\tthis.populate(doc, field[i], part);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}else if(field.indexOf('.')>-1){\n\t\t\t\t\tfield = field.split('.');\n\t\t\t\t\tlet sub = field.shift();\n\t\t\t\t\tif(typeof doc[sub] != 'object') return;\n\t\t\t\t\treturn this.populate(doc[sub], field.join('.'), part);\n\t\t\t\t}\n\t\t\t\tif(Array.isArray(doc[field])){\n\t\t\t\t\tfor(let i = doc[field].length-1; i >= 0; i--){\n\t\t\t\t\t\tif(this.data['obj'+part][doc[field][i]]){\n\t\t\t\t\t\t\tdoc[field][i] = this.data['obj'+part][doc[field][i]];\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tdoc[field].splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}else if(typeof doc[field] === 'string'){\n\t\t\t\t\tdoc[field] = this.data['obj'+part][doc[field]] || null;\n\t\t\t\t}else return;\n\t\t\t}else{\n\t\t\t\tsetTimeout(() =>{\n\t\t\t\t\tthis.populate(doc, field, part);\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t};\n\t\tpublic on(parts:any, cb:any):any {\n \t\t if (typeof parts === 'string') {\n \t\t parts = parts.split(\" \");\n \t\t }\n \t\t for (var i = 0; i < parts.length; i++) {\n \t\t if (!this.data['loaded'+parts[i]]) {\n \t\t return setTimeout( () => {\n \t\t this.on(parts, cb);\n \t\t }, 100);\n \t\t }\n \t\t }\n \t\t cb(this.data);\n \t\t};\n \t\tpublic track(index:any, doc:any){ return doc && doc._id && doc._id || index; }\n \t/*\n\t*\tmongo sort filters\n\t*/\n \t\tpublic sortAscId(){\n \t\t\treturn function(a:any,b:any){\n \t\t\t\tif(a._id>b._id) return 1;\n \t\t\t\telse return -1;\n \t\t\t}\n \t\t};\n \t\tpublic sortDescId(){\n \t\t\treturn function(a:any,b:any){\n \t\t\t\tif(a._id<b._id) return 1;\n \t\t\t\telse return -1;\n \t\t\t}\n \t\t};\n \t\tpublic sortAscString(opts:any){\n \t\t\tif(typeof opts === 'string'){\n \t\t\t\topts = {\n \t\t\t\t\tfield: opts\n \t\t\t\t}\n \t\t\t}\n \t\t\treturn function(a:any,b:any){\n \t\t\t\tif(a[opts.field].toLowerCase()>b[opts.field].toLowerCase()) return 1;\n \t\t\t\telse if(a[opts.field].toLowerCase()<b[opts.field].toLowerCase() || !opts.next) return -1;\n \t\t\t\telse return opts.next(a,b);\n \t\t\t}\n \t\t}\n \t\tpublic sortDescString(opts:any){\n \t\t\tif(typeof opts === 'string'){\n \t\t\t\topts = {\n \t\t\t\t\tfield: opts\n \t\t\t\t}\n \t\t\t}\n \t\t\treturn function(a:any,b:any){\n \t\t\t\tif(a[opts.field].toLowerCase()<b[opts.field].toLowerCase()) return 1;\n \t\t\t\telse if(a[opts.field].toLowerCase()>b[opts.field].toLowerCase() || !opts.next) return -1;\n \t\t\t\telse return opts.next(a,b);\n \t\t\t}\n \t\t}\n \t\tpublic sortAscDate(opts:any){\n \t\t\tif(typeof opts === 'string'){\n \t\t\t\topts = {\n \t\t\t\t\tfield: opts\n \t\t\t\t}\n \t\t\t}\n \t\t\treturn function(a:any,b:any){\n \t\t\t\tif(a[opts.field].getTime()>b[opts.field].getTime()) return 1;\n \t\t\t\telse if(a[opts.field].getTime()<b[opts.field].getTime() || !opts.next) return -1;\n \t\t\t\telse return opts.next(a,b);\n \t\t\t}\n \t\t}\n \t\tpublic sortDescDate(opts:any){\n \t\t\tif(typeof opts === 'string'){\n \t\t\t\topts = {\n \t\t\t\t\tfield: opts\n \t\t\t\t}\n \t\t\t}\n \t\t\treturn function(a:any,b:any){\n \t\t\t\tif(a[opts.field].getTime()<b[opts.field].getTime()) return 1;\n \t\t\t\telse if(a[opts.field].getTime()>b[opts.field].getTime() || !opts.next) return -1;\n \t\t\t\telse return opts.next(a,b);\n \t\t\t}\n \t\t}\n \t\tpublic sortAscNumber(opts:any){\n \t\t\tif(typeof opts === 'string'){\n \t\t\t\topts = {\n \t\t\t\t\tfield: opts\n \t\t\t\t}\n \t\t\t}\n \t\t\treturn function(a:any,b:any){\n \t\t\t\tif(a[opts.field]>b[opts.field]) return 1;\n \t\t\t\telse if(a[opts.field]<b[opts.field] || !opts.next) return -1;\n \t\t\t\telse return opts.next(a,b);\n \t\t\t}\n \t\t}\n \t\tpublic sortDescNumber(opts:any){\n \t\t\tif(typeof opts === 'string'){\n \t\t\t\topts = {\n \t\t\t\t\tfield: opts\n \t\t\t\t}\n \t\t\t}\n \t\t\treturn function(a:any,b:any){\n \t\t\t\tif(a[opts.field]<b[opts.field]) return 1;\n \t\t\t\telse if(a[opts.field]>b[opts.field] || !opts.next) return -1;\n \t\t\t\telse return opts.next(a,b);\n \t\t\t}\n \t\t}\n \t\tpublic sortAscBoolean(opts:any){\n \t\t\tif(typeof opts === 'string'){\n \t\t\t\topts = {\n \t\t\t\t\tfield: opts\n \t\t\t\t}\n \t\t\t}\n \t\t\treturn function(a:any,b:any){\n \t\t\t\tif(!a[opts.field]&&b[opts.field]) return 1;\n \t\t\t\telse if(a[opts.field]&&!b[opts.field] || !opts.next) return -1;\n \t\t\t\telse return opts.next(a,b);\n \t\t\t}\n \t\t}\n \t\tpublic sortDescBoolean(opts:any){\n \t\t\tif(typeof opts === 'string'){\n \t\t\t\topts = {\n \t\t\t\t\tfield: opts\n \t\t\t\t}\n \t\t\t}\n \t\t\treturn function(a:any,b:any){\n \t\t\t\tif(a[opts.field]&&!b[opts.field]) return 1;\n \t\t\t\telse if(!a[opts.field]&&b[opts.field] || !opts.next) return -1;\n \t\t\t\telse return opts.next(a,b);\n \t\t\t}\n \t\t}\n\t/*\n\t*\tmongo replace filters\n\t*/\n\t\tpublic beArr(val:any, cb:any){\n\t\t\tif(!Array.isArray(val)) cb([]);\n\t\t\telse cb(val);\n\t\t};\n\t\tpublic beObj(val:any, cb:any){\n\t\t\tif(typeof val != 'object' || Array.isArray(val) || !val){\n\t\t\t\tval = {};\n\t\t\t}\n\t\t\tcb(val);\n\t\t};\n\t\tpublic beDate(val:any, cb:any) { cb( new Date(val) ); };\n\t\tpublic beString(val:any, cb:any){\n\t\t\tif(typeof val != 'string'){\n\t\t\t\tval = '';\n\t\t\t}\n\t\t\tcb(val);\n\t\t};\n\t\tpublic beDoc = (val:any, cb:any)=>{\n\t\t\tthis.beObj(val, (val:any)=>{\n\t\t\t\tif(!val._id){\n\t\t\t\t\tthis._id((_id:any)=>{\n\t\t\t\t\t\tval._id = _id;\n\t\t\t\t\t\tcb(val);\n\t\t\t\t\t});\n\t\t\t\t}else cb(val);\n\t\t\t});\n\t\t};\n\t\tpublic forceArr(val:any, cb:any){ cb([]); };\n\t\tpublic forceObj(val:any, cb:any){ cb({}); };\n\t\tpublic forceString(val:any, cb:any){ cb(''); };\n\t\tpublic forceDoc = (val:any, cb:any) => {\n\t\t\tthis._id((_id:any)=>{\n\t\t\t\tcb({\n\t\t\t\t\t_id: _id\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tpublic getCreated(val:any, cb:any, doc:any){\n\t\t\tcb(new Date(parseInt(doc._id.substring(0,8), 16)*1000));\n\t\t};\n\t/*\n\t*\tmongo local support functions\n\t*/\n\t\tprivate replace(doc:any, value:any, rpl:any):any{\n\t\t\tif(value.indexOf('.')>-1){\n\t\t\t\tvalue = value.split('.');\n\t\t\t\tlet sub = value.shift();\n\t\t\t\tif(doc[sub] && (typeof doc[sub] != 'object' || Array.isArray(doc[sub])))\n\t\t\t\t\treturn;\n\t\t\t\tif(!doc[sub]) doc[sub] = {};\n\t\t\t\treturn this.replace(doc[sub], value.join('.'), rpl);\n\t\t\t}\n\t\t\tif(typeof rpl == 'function'){\n\t\t\t\trpl(doc[value], function(newValue:any){\n\t\t\t\t\tdoc[value] = newValue;\n\t\t\t\t}, doc);\n\t\t\t}\n\t\t};\n\t\tpublic renew(part:any, doc:any){\n\t\t\tif(!this.data['obj' + part][doc._id]) return this.push(part, doc);\n\t\t\tif(this.data['opts'+part].replace){\n\t\t\t\tfor(let key in this.data['opts'+part].replace){\n\t\t\t\t\tthis.replace(doc, key, this.data['opts'+part].replace[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let each in this.data['obj' + part][doc._id]){\n\t\t\t\tthis.data['obj' + part][doc._id][each] = doc[each];\n\t\t\t}\n\t\t\tfor (let each in doc){\n\t\t\t\tthis.data['obj' + part][doc._id][each] = doc[each];\n\t\t\t}\n\t\t\tfor (let i = 0; i < this.data['opts' + part].fields.length; i++) {\n\t\t\t\tconst field = this.data['opts' + part].fields[i];\n\t\t\t\tif (!this.data['obj' + part][doc[field]]) {\n\t\t\t\t\tthis.data['obj' + part][doc[field]] = doc;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tfor (let each in doc) {\n\t\t\t\t\tthis.data['obj' + part][doc[field]][each] = doc[each];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(this.data['opts'+part].groups){\n\t\t\t\tfor(let key in this.data['opts'+part].groups){\n\t\t\t\t\tlet to_have = true;\n\t\t\t\t\tlet g = this.data['opts'+part].groups[key];\n\t\t\t\t\tif(typeof g.ignore == 'function' && g.ignore(doc)) to_have = false;\n\t\t\t\t\tif(typeof g.allow == 'function' && !g.allow(doc)) to_have = false;\n\t\t\t\t\tif(!this.data['obj' + part][key]){\n\t\t\t\t\t\tthis.data['obj' + part][key] = {};\n\t\t\t\t\t}\n\t\t\t\t\tlet fields:any = {};\n\t\t\t\t\tlet set = (field:any) => {\n\t\t\t\t\t\tfields[field] = true;\n\t\t\t\t\t\tif(!field) return;\n\t\t\t\t\t\tif(!Array.isArray(this.data['obj' + part][key][field])){\n\t\t\t\t\t\t\tthis.data['obj' + part][key][field] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(to_have){\n\t\t\t\t\t\t\tfor (let i = this.data['obj' + part][key][field].length-1; i >= 0; i--){\n\t\t\t\t\t\t\t if(this.data['obj' + part][key][field][i]._id == doc._id) return;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.data['obj' + part][key][field].push(doc);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (let i = this.data['obj' + part][key][field].length-1; i >= 0; i--){\n\t\t\t\t\t\t\t if(this.data['obj' + part][key][field][i]._id == doc._id){\n\t\t\t\t\t\t\t \tthis.data['obj' + part][key][field].splice(i, 1);\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(typeof g.sort == 'function'){\n\t\t\t\t\t\t\tthis.data['obj' + part][key][field].sort(g.sort);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tset(g.field(doc, set.bind(this)));\n\t\t\t\t\tfor (let field in this.data['obj' + part][key]){\n\t\t\t\t\t\tif(fields[field]) continue;\n\t\t\t\t\t\tfor (let i = this.data['obj' + part][key][field].length-1; i >= 0; i--){\n\t\t\t\t\t\t\tif(this.data['obj' + part][key][field][i]._id == doc._id){\n\t\t\t\t\t\t\t\tthis.data['obj' + part][key][field].splice(i, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(this.data['opts'+part].query){\n\t\t\t\tfor(let key in this.data['opts'+part].query){\n\t\t\t\t\tlet to_have = true;\n\t\t\t\t\tlet query = this.data['opts'+part].query[key];\n\t\t\t\t\tif(typeof query.ignore == 'function' && query.ignore(doc)) to_have = false;\n\t\t\t\t\tif(typeof query.allow == 'function' && !query.allow(doc)) to_have = false;\n\t\t\t\t\tif(!this.data['obj' + part][key]){\n\t\t\t\t\t\tthis.data['obj' + part][key] = [];\n\t\t\t\t\t}\n\t\t\t\t\tif(to_have){\n\t\t\t\t\t\tfor (let i = this.data['obj' + part][key].length-1; i >= 0; i--){\n\t\t\t\t\t\t if(this.data['obj' + part][key][i]._id == doc._id) return;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.data['obj' + part][key].push(doc);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (let i = this.data['obj' + part][key].length-1; i >= 0; i--){\n\t\t\t\t\t\t if(this.data['obj' + part][key][i]._id == doc._id){\n\t\t\t\t\t\t \tthis.data['obj' + part][key].splice(i, 1);\n\t\t\t\t\t\t }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof query.sort == 'function'){\n\t\t\t\t\t\tthis.data['obj' + part][key].sort(query.sort);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tpublic push(part:any, doc:any):any{\n\t\t\tif(!this.data['arr' + part]) this.data['arr' + part] = [];\n\t\t\tif(!this.data['obj' + part]) this.data['obj' + part] = {};\n\t\t\tif(!this.data['opts' + part]) this.data['opts' + part] = {};\n\t\t\tif(this.data['obj' + part][doc._id]) return this.renew(part, doc);\n\t\t\tif(this.data['opts' + part].replace){\n\t\t\t\tfor(let key in this.data['opts'+part].replace){\n\t\t\t\t\tthis.replace(doc, key, this.data['opts'+part].replace[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(this.data['opts'+part].populate){\n\t\t\t\tlet p = this.data['opts'+part].populate;\n\t\t\t\tif(Array.isArray(p)){\n\t\t\t\t\tfor(let i = 0; i < p.length; i++){\n\t\t\t\t\t\tif(typeof p == 'object' && p[i].field && p[i].part){\n\t\t\t\t\t\t\tthis.populate(doc, p[i].field, p[i].part);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else if(typeof p == 'object' && p.field && p.part){\n\t\t\t\t\tthis.populate(doc, p.field, p.part);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.data['arr' + part].push(doc);\n\t\t\tif(this.data['opts'+part].sort){\n\t\t\t\tthis.data['arr' + part].sort(this.data['opts'+part].sort);\n\t\t\t}\n\t\t\tthis.data['obj' + part][doc._id] = doc;\n\t\t\tif(Array.isArray(this.data['opts'+part].use)){\n\t\t\t\tfor (let i = 0; i < this.data['opts'+part].use.length; i++){\n\t\t\t\t this.data['obj' + part][doc[this.data['opts'+part].use[i]]] = doc;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(this.data['opts'+part].groups){\n\t\t\t\tfor(let key in this.data['opts'+part].groups){\n\t\t\t\t\tlet g = this.data['opts'+part].groups[key];\n\t\t\t\t\tif(typeof g.ignore == 'function' && g.ignore(doc)) continue;\n\t\t\t\t\tif(typeof g.allow == 'function' && !g.allow(doc)) continue;\n\t\t\t\t\tif(!this.data['obj' + part][key]){\n\t\t\t\t\t\tthis.data['obj' + part][key] = {};\n\t\t\t\t\t}\n\t\t\t\t\tlet set = (field:any) => {\n\t\t\t\t\t\tif(!field) return;\n\t\t\t\t\t\tif(!Array.isArray(this.data['obj' + part][key][field])){\n\t\t\t\t\t\t\tthis.data['obj' + part][key][field] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.data['obj' + part][key][field].push(doc);\n\t\t\t\t\t\tif(typeof g.sort == 'function'){\n\t\t\t\t\t\t\tthis.data['obj' + part][key][field].sort(g.sort);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tset(g.field(doc, (field:any)=>{\n\t\t\t\t\t\tset(field);\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.data['opts' + part].query) {\n\t\t\t\tfor (let key in this.data['opts' + part].query) {\n\t\t\t\t\tlet query = this.data['opts' + part].query[key];\n\t\t\t\t\tif (typeof query.ignore == 'function' && query.ignore(doc)) continue;\n\t\t\t\t\tif (typeof query.allow == 'function' && !query.allow(doc)) continue;\n\t\t\t\t\tif (!this.data['obj' + part][key]) {\n\t\t\t\t\t\tthis.data['obj' + part][key] = [];\n\t\t\t\t\t}\n\t\t\t\t\tthis.data['obj' + part][key].push(doc);\n\t\t\t\t\tif (typeof query.sort == 'function') {\n\t\t\t\t\t\tthis.data['obj' + part][key].sort(query.sort);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let i = 0; i < this.data['opts' + part].fields.length; i++) {\n\t\t\t\tconst field = this.data['opts' + part].fields[i];\n\t\t\t\tif (!this.data['obj' + part][doc[field]]) {\n\t\t\t\t\tthis.data['obj' + part][doc[field]] = doc;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tfor (let each in doc) {\n\t\t\t\t\tthis.data['obj' + part][doc[field]][each] = doc[each];\n\t\t\t\t}\n\t\t\t}\n\t\t\t// this.store.setJson('mongo' + part, this.data['arr' + part]);\n\t\t};\n\t\tpublic remove(part:any, doc:any){\n\t\t\tif(!Array.isArray(this.data['arr' + part])) return;\n\t\t\tfor (let i = 0; i < this.data['arr' + part].length; i++) {\n\t\t\t\tif (this.data['arr' + part][i]._id == doc._id) {\n\t\t\t\t\tthis.data['arr' + part].splice(i, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tdelete this.data['obj' + part][doc._id];\n\t\t\tfor (let i = 0; i < this.data['opts' + part].fields.length; i++) {\n\t\t\t\tconst field = this.data['opts' + part].fields[i];\n\t\t\t\tdelete this.data['obj' + part][doc[field]];\n\t\t\t}\n\t\t\tif(this.data['opts'+part].groups){\n\t\t\t\tfor(let key in this.data['opts'+part].groups){\n\t\t\t\t\tfor(let field in this.data['obj' + part][key]){\n\t\t\t\t\t\tfor (let i = this.data['obj' + part][key][field].length-1; i >= 0 ; i--) {\n\t\t\t\t\t\t\tif (this.data['obj' + part][key][field][i]._id == doc._id) {\n\t\t\t\t\t\t\t\tthis.data['obj' + part][key][field].splice(i, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(this.data['opts'+part].query){\n\t\t\t\tfor(let key in this.data['opts'+part].query){\n\t\t\t\t\tfor (let i = this.data['obj' + part][key].length-1; i >= 0 ; i--) {\n\t\t\t\t\t\tif (this.data['obj' + part][key][i]._id == doc._id) {\n\t\t\t\t\t\t\tthis.data['obj' + part][key].splice(i, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t/*\n\t*\tEndof Mongo Service\n\t*/\n\tconstructor(\n\t\tprivate store: StoreService,\n\t\tprivate http: HttpService,\n\t\tprivate core: CoreService\n\t) {\n\t\tconsole.warn('Mongo Service is deprecated');\n\t\tthis.core.onComplete('socket').then((socket:any)=>{\n\t\t\tthis.socket = socket;\n\t\t\tsocket.on('create', (created:any) => {\n\t\t\t\tthis.fetch(created.part, {\n\t\t\t\t\tforce: true,\n\t\t\t\t\tquery: {\n\t\t\t\t\t\t_id: created._id\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t\tsocket.on('update', (updated:any) => {\n\t\t\t\tthis.fetch(updated.part, {\n\t\t\t\t\tforce: true,\n\t\t\t\t\tquery: {\n\t\t\t\t\t\t_id: updated._id\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t\tsocket.on('delete', (deleted:any) => {\n\t\t\t\tthis.remove(deleted.part, deleted);\n\t\t\t});\n\t\t});\n\t}\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class RenderService {\n\tconstructor() {}\n\tprivate pipes:any = {};\n\ton(event: string, cb: any){\n\t\tif(!this.pipes[event]) this.pipes[event] = [];\n\t\tthis.pipes[event].push(cb);\n\t\tconst index = this.pipes[event].length-1;\n\t\treturn ()=>{\n\t\t\tthis.pipes[event][index] = false;\n\t\t};\n\t}\n\trender(event = '', param = null){\n\t\tif(!this.pipes[event]) return;\n\t\tfor(let i = 0; i < this.pipes[event].length; i++){\n\t\t\tif(typeof this.pipes[event][i] === 'function'){\n\t\t\t\tthis.pipes[event][i](param);\n\t\t\t}\n\t\t}\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { CoreService } from './core.service';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class HashService {\n\tprivate replacements = [\n\t\t{\n\t\t\tfrom: '%20',\n\t\t\tto: ' ',\n\t\t},\n\t];\n\tpublic hash: { [key: string]: string } = {};\n\tprivate done: boolean = false;\n\n\tconstructor(private core: CoreService) {\n\t\tthis.initialize();\n\t}\n\n\t/**\n\t * Initializes the hash service by loading the current hash from the URL.\n\t */\n\tprivate initialize(): void {\n\t\tif (!this.core.window.location.hash) {\n\t\t\tthis.done = true;\n\t\t\treturn;\n\t\t}\n\t\tthis.load();\n\t\tthis.done = true;\n\t}\n\n\t/**\n\t * Loads the current hash from the URL into the hash object.\n\t */\n\tprivate load(): void {\n\t\tthis.hash = {};\n\t\tconst hashArray = this.core.window.location.hash\n\t\t\t.replace('#!#', '')\n\t\t\t.replace('#', '')\n\t\t\t.split('&');\n\n\t\tfor (const hashItem of hashArray) {\n\t\t\tlet [holder, value] = hashItem.split('=');\n\t\t\tholder = this.applyReplacements(holder);\n\t\t\tvalue = this.applyReplacements(value);\n\t\t\tthis.hash[holder] = value;\n\t\t}\n\t}\n\n\t/**\n\t * Applies replacements to a given string based on the replacements array.\n\t *\n\t * @param str - The string to apply replacements to.\n\t * @returns The string with replacements applied.\n\t */\n\tprivate applyReplacements(str: string | undefined): string {\n\t\tif (!str) return '';\n\t\tfor (const replacement of this.replacements) {\n\t\t\tstr = str.split(replacement.from).join(replacement.to);\n\t\t}\n\t\treturn str;\n\t}\n\n\t/**\n\t * Executes a callback with the value of a specific hash field once the hash is loaded.\n\t *\n\t * @param field - The hash field to get the value for.\n\t * @param cb - The callback to execute with the value.\n\t */\n\ton(field: string, cb: (value: string) => void): void {\n\t\tif (!this.done) {\n\t\t\tsetTimeout(() => this.on(field, cb), 100);\n\t\t\treturn;\n\t\t}\n\t\tcb(this.hash[field]);\n\t}\n\n\t/**\n\t * Saves the current hash object to the URL.\n\t */\n\tsave(): void {\n\t\tconst hash = Object.entries(this.hash)\n\t\t\t.map(([key, value]) => `${key}=${value}`)\n\t\t\t.join('&');\n\t\tthis.core.window.location.hash = hash;\n\t}\n\n\t/**\n\t * Sets a value for a specific hash field and updates the URL.\n\t *\n\t * @param field - The hash field to set the value for.\n\t * @param value - The value to set.\n\t */\n\tset(field: string, value: string): void {\n\t\tthis.hash[field] = value;\n\t\tthis.save();\n\t}\n\n\t/**\n\t * Gets the value of a specific hash field.\n\t *\n\t * @param field - The hash field to get the value for.\n\t * @returns The value of the hash field.\n\t */\n\tget(field: string): string | undefined {\n\t\treturn this.hash[field];\n\t}\n\n\t/**\n\t * Clears a specific hash field or all hash fields and updates the URL.\n\t *\n\t * @param field - The hash field to clear. If not provided, clears all hash fields.\n\t */\n\tclear(field?: string): void {\n\t\tif (field) {\n\t\t\tdelete this.hash[field];\n\t\t} else {\n\t\t\tthis.hash = {};\n\t\t}\n\t\tthis.save();\n\t}\n}\n","import {\n\tInjectable,\n\tInjector,\n\tComponentFactoryResolver,\n\tComponentRef,\n\tEmbeddedViewRef,\n\tApplicationRef\n} from '@angular/core';\nimport { CoreService } from './core.service';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class DomService {\n\tprivate providedIn: Record<string, boolean> = {};\n\n\tconstructor(\n\t\tprivate componentFactoryResolver: ComponentFactoryResolver,\n\t\tprivate appRef: ApplicationRef,\n\t\tprivate injector: Injector,\n\t\tprivate core: CoreService\n\t) { }\n\n\t/**\n\t * Appends a component to a specified element by ID.\n\t *\n\t * @param component - The component to append.\n\t * @param options - The options to project into the component.\n\t * @param id - The ID of the element to append the component to.\n\t * @returns An object containing the native element and the component reference.\n\t */\n\tappendById(component: any, options: any = {}, id: string): { nativeElement: HTMLElement, componentRef: ComponentRef<any> } {\n\t\tconst componentRef = this.componentFactoryResolver\n\t\t\t.resolveComponentFactory(component)\n\t\t\t.create(this.injector);\n\n\t\tthis.projectComponentInputs(componentRef, options);\n\t\tthis.appRef.attachView(componentRef.hostView);\n\t\tconst domElem = (componentRef.hostView as EmbeddedViewRef<any>)\n\t\t\t.rootNodes[0] as HTMLElement;\n\t\tconst element = this.core.document.getElementById(id);\n\t\tif (element && typeof element.appendChild === 'function') {\n\t\t\telement.appendChild(domElem);\n\t\t}\n\t\treturn {\n\t\t\tnativeElement: domElem,\n\t\t\tcomponentRef: componentRef,\n\t\t};\n\t}\n\n\t/**\n\t * Appends a component to a specified element or to the body.\n\t *\n\t * @param component - The component to append.\n\t * @param options - The options to project into the component.\n\t * @param element - The element to append the component to. Defaults to body.\n\t * @returns An object containing the native element and the component reference.\n\t */\n\tappendComponent(\n\t\tcomponent: any,\n\t\toptions: any = {},\n\t\telement: HTMLElement = this.core.document.body\n\t): { nativeElement: HTMLElement, componentRef: ComponentRef<any> } | void {\n\t\tif (options.providedIn) {\n\t\t\tif (this.providedIn[options.providedIn]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.providedIn[options.providedIn] = true;\n\t\t}\n\n\t\tconst componentRef = this.componentFactoryResolver\n\t\t\t.resolveComponentFactory(component)\n\t\t\t.create(this.injector);\n\t\tthis.projectComponentInputs(componentRef, options);\n\t\tthis.appRef.attachView(componentRef.hostView);\n\t\tconst domElem = (componentRef.hostView as EmbeddedViewRef<any>)\n\t\t\t.rootNodes[0] as HTMLElement;\n\t\tif (element && typeof element.appendChild === 'function') {\n\t\t\telement.appendChild(domElem);\n\t\t}\n\t\treturn {\n\t\t\tnativeElement: domElem,\n\t\t\tcomponentRef: componentRef,\n\t\t};\n\t}\n\n\t/**\n\t * Gets a reference to a dynamically created component.\n\t *\n\t * @param component - The component to create.\n\t * @param options - The options to project into the component.\n\t * @returns The component reference.\n\t */\n\tgetComponentRef(component: any, options: any = {}): ComponentRef<any> {\n\t\tconst componentRef = this.componentFactoryResolver\n\t\t\t.resolveComponentFactory(component)\n\t\t\t.create(this.injector);\n\n\t\tthis.projectComponentInputs(componentRef, options);\n\t\tthis.appRef.attachView(componentRef.hostView);\n\n\t\treturn componentRef;\n\t}\n\n\t/**\n\t * Projects the inputs onto the component.\n\t *\n\t * @param component - The component reference.\n\t * @param options - The options to project into the component.\n\t * @returns The component reference with the projected inputs.\n\t */\n\tprivate projectComponentInputs(component: ComponentRef<any>, options: any): ComponentRef<any> {\n\t\tif (options) {\n\t\t\tconst props = Object.getOwnPropertyNames(options);\n\t\t\tfor (const prop of props) {\n\t\t\t\tcomponent.instance[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t\treturn component;\n\t}\n}\n\n/*\nhttps://stackoverflow.com/questions/39857222/angular2-dynamic-component-injection-in-root/40687392#40687392\nhttps://gist.github.com/reed-lawrence/1f6b7c328ad3886e60dc2b0adcf75a97\n*/\n","import { Component } from '@angular/core';\n\n@Component({\n\tselector: 'lib-wrapper',\n\ttemplateUrl: './wrapper.component.html',\n\tstyleUrls: ['./wrapper.component.scss']\n})\nexport class WrapperComponent{\n\tconstructor() {}\n}\n","<div>\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomRight\" id=\"bottomRight\"></div>\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomLeft\" id=\"bottomLeft\"></div>\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topRight\" id=\"topRight\"></div>\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topLeft\" id=\"topLeft\"></div>\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-topCenter\" id=\"topCenter\"></div>\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-bottomCenter\" id=\"bottomCenter\"></div>\n\t<div class=\"waw-alert-wrapper waw-alert-wrapper-center\" id=\"center\"></div>\n</div>\n","import { Injectable, Inject, Optional } from '@angular/core';\nimport { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from '../interfaces/config';\nimport { AlertComponent } from '../components/alert/alert.component';\nimport { WrapperComponent } from '../components/alert/wrapper/wrapper.component';\nimport { DomService } from './dom.service';\nimport { CoreService } from './core.service';\nimport { Alert, DEFAULT_Alert } from '../interfaces/alert.interface';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class AlertService {\n\tprivate alert: any;\n\tprivate _container: any;\n\tconstructor(\n\t\tprivate dom: DomService,\n\t\tprivate core: CoreService,\n\t\t@Inject(CONFIG_TOKEN) @Optional() private config: Config\n\t) {\n\t\tif (!this.config) this.config = DEFAULT_CONFIG;\n\t\tthis.alert = this.config.alert;\n\t\tif (!this.alert) {\n\t\t\tthis.alert = DEFAULT_Alert;\n\t\t} else {\n\t\t\tfor (let each in DEFAULT_Alert) {\n\t\t\t\tif (this.alert[each]) continue;\n\t\t\t\tthis.alert[each] = DEFAULT_Alert[each];\n\t\t\t}\n\t\t}\n\t\tthis._container = this.dom.appendComponent(WrapperComponent);\n\t}\n\tprivate uniques: any = {};\n\tprivate shortcuts: any = {\n\t\ttl: 'topLeft',\n\t\ttc: 'topCenter',\n\t\ttr: 'topRight',\n\t\tr: 'right',\n\t\tbr: 'bottomRight',\n\t\tbc: 'bottomCenter',\n\t\tbl: 'bottomLeft',\n\t\tl: 'left',\n\t\tc: 'center',\n\t};\n\tprivate positionNumber: any = {\n\t\ttopLeft: 3,\n\t\ttopCenter: 4,\n\t\ttopRight: 2,\n\t\tright: '',\n\t\tbottomRight: 0,\n\t\tbottomCenter: 5,\n\t\tbottomLeft: 1,\n\t\tleft: '',\n\t\tcenter: 6,\n\t};\n\n\tshow(opts: any | Alert) {\n\t\tif (typeof opts === 'string') {\n\t\t\topts = {\n\t\t\t\ttext: opts,\n\t\t\t};\n\t\t}\n\t\tif (!opts) opts = {};\n\t\tif (!opts['type']) opts['type'] = 'info';\n\t\tfor (let each in this.alert) {\n\t\t\tif (each == 'class') opts[each] = opts[each] + ' ' + this.alert[each];\n\t\t\telse if (typeof opts[each] == 'undefined') opts[each] = this.alert[each];\n\t\t}\n\t\tif (this.shortcuts[opts.position])\n\t\t\topts.position = this.shortcuts[opts.position];\n\t\tif (!opts.position) opts.position = 'bottomRight';\n\t\tvar content: any;\n\t\topts.close = () => {\n\t\t\tif (content) content.componentRef.destroy();\n\t\t\topts.component.nativeElement.remove();\n\t\t\tif (typeof (opts as Alert).onClose == 'function')\n\t\t\t\t(opts as Alert).onClose();\n\t\t};\n\t\t// let component = this.dom.appendById(AlertComponent, opts, opts.position);\n\t\tlet customElement = false;\n\n\t\tif (\n\t\t\ttypeof opts.component == 'string' &&\n\t\t\tthis.alert.alerts[opts.component]\n\t\t) {\n\t\t\topts.component = this.alert.alerts[opts.component];\n\t\t\tcustomElement = true;\n\t\t} else {\n\t\t\topts.component = this.dom.appendById(AlertComponent, opts, opts.position);\n\t\t}\n\n\t\tif (\n\t\t\ttypeof opts.component === 'function'\n\t\t) {\n\t\t\tcontent = this.dom.appendComponent(\n\t\t\t\topts.component,\n\t\t\t\topts,\n\t\t\t\tthis._container.nativeElement.children[0].children[this.positionNumber[opts.position] || 0]\n\t\t\t\t// component.nativeElement.children[0].children[0].children[0] as HTMLElement\n\t\t\t);\n\t\t}\n\n\t\tif (opts.unique) {\n\t\t\tif (this.uniques[opts.unique]) this.uniques[opts.unique].remove();\n\t\t\tthis.uniques[opts.unique] = opts.component.nativeElement;\n\t\t}\n\n\t\tif (typeof opts.timeout !== 'number') {\n\t\t\topts.timeout = 2000;\n\t\t}\n\n\t\tif (opts.timeout) {\n\t\t\tsetTimeout(() => {\n\t\t\t\topts.close();\n\t\t\t}, opts.timeout);\n\t\t}\n\n\t\treturn opts.component.nativeElement;\n\t}\n\topen(opts: Alert) {\n\t\tthis.show(opts);\n\t}\n\tinfo(opts: Alert) {\n\t\topts['type'] = 'info';\n\t\tthis.show(opts);\n\t}\n\tsuccess(opts: Alert) {\n\t\topts['type'] = 'success';\n\t\tthis.show(opts);\n\t}\n\twarning(opts: Alert) {\n\t\topts['type'] = 'warning';\n\t\tthis.show(opts);\n\t}\n\terror(opts: Alert) {\n\t\topts['type'] = 'error';\n\t\tthis.show(opts);\n\t}\n\tquestion(opts: Alert) {\n\t\topts['type'] = 'question';\n\t\tthis.show(opts);\n\t}\n\tdestroy() {\n\t\tthis.core.document.getElementById('bottomRight').innerHTML = '';\n\t\tthis.core.document.getElementById('bottomLeft').innerHTML = '';\n\t\tthis.core.document.getElementById('bottomCenter').innerHTML = '';\n\t\tthis.core.document.getElementById('topRight').innerHTML = '';\n\t\tthis.core.document.getElementById('topLeft').innerHTML = '';\n\t\tthis.core.document.getElementById('topCenter').innerHTML = '';\n\t\tthis.core.document.getElementById('center').innerHTML = '';\n\t}\n}\n","import { Injectable, Inject, Optional } from '@angular/core';\nimport { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from '../interfaces/config';\nimport { LoaderComponent } from '../components/loader/loader.component';\nimport { DomService } from './dom.service';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class LoaderService {\n\tpublic loaders:any = [];\n\tconstructor(private dom: DomService,\n\t\t@Inject(CONFIG_TOKEN) @Optional() private config: Config) {\n\t}\n\tshow(opts?:any){\n\t\tlet component:any;\n\t\topts.close = ()=>{\n\t\t\tif(component) component.componentRef.destroy();\n\t\t\tcomponent.nativeElement.remove();\n\t\t\tif(typeof opts.onClose == 'function') opts.onClose();\n\t\t};\n\t\tif(opts.append){\n\t\t\tcomponent = this.dom.appendComponent(LoaderComponent, opts, opts.append);\n\t\t}\n\t\telse{\n\t\t\tcomponent = this.dom.appendComponent(LoaderComponent, opts);\n\t\t}\n\t\tthis.loaders.push(component);\n\t\treturn component.nativeElement;\n\t}\n\tdestroy(){\n\t\tfor (let i = this.loaders.length-1; i >= 0; i--){\n\t\t this.loaders[i].componentRef.destroy();\n\t\t\tthis.loaders.splice(i,1);\n\t\t}\n\t}\n}\n","import { Injectable, Inject, Optional } from '@angular/core';\nimport { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from '../interfaces/config';\nimport { CoreService } from './core.service';\nimport * as io from 'socket.io-client';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class SocketService {\n\tprivate _url = '';\n\tprivate _io: any;\n\tprivate _connected = false;\n\tprivate _opts: any = {};\n\n\tconstructor(\n\t\t@Inject(CONFIG_TOKEN) @Optional() private _config: Config,\n\t\tprivate _core: CoreService\n\t) {\n\t\tthis._url = this._core.window.location.origin.replace('4200', '8080');\n\t\tif (!this._config) this._config = DEFAULT_CONFIG;\n\n\t\tif (typeof this._config.socket === 'object') {\n\t\t\tif (this._config.socket.url) {\n\t\t\t\tthis._url = this._config.socket.url;\n\t\t\t}\n\n\t\t\tif (this._config.socket.opts) {\n\t\t\t\tthis._opts = this._config.socket.opts;\n\t\t\t}\n\t\t}\n\n\t\tif (this._config.socket) {\n\t\t\tthis.load();\n\t\t}\n\t}\n\n\t/**\n\t * Sets the URL for the WebSocket connection and reloads the socket.\n\t * @param url - The URL of the WebSocket server.\n\t */\n\tsetUrl(url: string): void {\n\t\tthis._url = url;\n\t\tif (!this._config.socket) {\n\t\t\tthis._config.socket = true;\n\t\t}\n\t\tthis.load();\n\t}\n\n\t/**\n\t * Loads and initializes the WebSocket connection.\n\t */\n\tprivate load(): void {\n\t\tif (io) {\n\t\t\tconst ioFunc = (io as any).default ? (io as any).default : io;\n\t\t\tthis._io = ioFunc(this._url, this._opts);\n\t\t\tthis._io.on('connect', () => {\n\t\t\t\tthis._connected = true;\n\t\t\t\tthis._core.complete('socket');\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Subscribes to a WebSocket event.\n\t * @param to - The event to subscribe to.\n\t * @param cb - The callback function to execute when the event is received.\n\t */\n\ton(to: string, cb: (message: any) => void = () => { }): void {\n\t\tif (!this._config.socket) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._connected) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.on(to, cb);\n\t\t\t}, 100);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._io.on(to, cb);\n\t}\n\n\t/**\n\t * Emits a message to a WebSocket event.\n\t * @param to - The event to emit the message to.\n\t * @param message - The message to emit.\n\t * @param room - Optional room to emit the message to.\n\t */\n\temit(to: string, message: any, room: any = false): void {\n\t\tif (!this._config.socket) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._connected) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.emit(to, message, room);\n\t\t\t}, 100);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._io.emit(to, message, room);\n\t}\n}\n","import { Injectable, Inject, Optional } from '@angular/core';\nimport { DomService } from './dom.service';\nimport { CoreService } from './core.service';\nimport { ModalComponent } from '../components/modal/modal.component';\nimport { CONFIG_TOKEN, Config } from '../interfaces/config';\nimport { Modal } from '../interfaces/modal.interface';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class ModalService {\n\tprivate _modal: any;\n\tconstructor(private dom: DomService, private core: CoreService,\n\t\t@Inject(CONFIG_TOKEN) @Optional() private config: Config) {\n\t\tif(!this.config) this.config={};\n\t\tif(!this.config.modal) this.config.modal={};\n\t\tif(!this.config.modal.modals) this.config.modal.modals={};\n\t\tthis._modal = config.modal;\n\t}\n\n\tshow(opts: Modal | any) {\n\t\tif (this.locked) {\n\t\t\treturn;\n\t\t}\n\t\tif(typeof opts == 'string' || typeof opts == 'function'){\n\t\t\topts = {\n\t\t\t\tcomponent: opts\n\t\t\t}\n\t\t}\n\t\tif(!opts || typeof opts != 'object') opts = {};\n\t\tif(typeof opts.component == 'string' && this._modal.modals[opts.component]){\n\t\t\topts.component = this._modal.modals[opts.component];\n\t\t}\n\t\tif(typeof opts.component != 'function'){\n\t\t\tconsole.log(\"This component does not exists.\");\n\t\t\treturn;\n\t\t}\n\t\tif(!opts.class) opts.class='';\n\t\tfor (let each in this.config.modal){\n\t\t\tif(each==\"class\") opts.class += (opts.class&&' '||'') + this.config.modal.class;\n\t\t\telse if(!opts[each]) opts[each] = this._modal[each];\n\t\t}\n\t\topts.id = Math.floor(Math.random() * Date.now()) + Date.now();\n\t\tthis.opened[opts.id] = opts;\n\t\tthis.core.document.body.classList.add(\"modalOpened\");\n\t\tlet component:any;\n\t\tlet content:any;\n\t\topts.close = ()=>{\n\t\t\tcontent.componentRef.destroy();\n\t\t\tcomponent.nativeElement.remove();\n\t\t\tif(typeof opts.onClose == 'function') opts.onClose();\n\t\t\tdelete this.opened[opts.id];\n\t\t\tif(!Object.keys(this.opened).length){\n\t\t\t\tthis.core.document.body.classList.remove(\"modalOpened\");\n\t\t\t}\n\t\t};\n\t\tif(typeof opts.timeout == 'number' && opts.timeout>0){\n\t\t\tsetTimeout(opts.close, opts.timeout);\n\t\t}\n\t\tcomponent = this.dom.appendComponent(ModalComponent, opts);\n\t\tcontent = this.dom.appendComponent(opts.component, opts, component.nativeElement.children[0].children[0].children[0] as HTMLElement);\n\t\treturn component.nativeElement;\n\t}\n\topen(opts: Modal){ this.show(opts); }\n\tsmall(opts: Modal){\n\t\tif(typeof opts == 'string' || typeof opts == 'function'){\n\t\t\topts = {\n\t\t\t\tcomponent: opts\n\t\t\t}\n\t\t}\n\t\topts.size = 'small';\n\t\tthis.show(opts);\n\t}\n\tmid(opts: Modal){\n\t\tif(typeof opts == 'string' || typeof opts == 'function'){\n\t\t\topts = {\n\t\t\t\tcomponent: opts\n\t\t\t}\n\t\t}\n\t\topts.size = 'mid';\n\t\tthis.show(opts);\n\t}\n\tbig(opts: Modal){\n\t\tif(typeof opts == 'string' || typeof opts == 'function'){\n\t\t\topts = {\n\t\t\t\tcomponent: opts\n\t\t\t}\n\t\t}\n\t\topts.size = 'big';\n\t\tthis.show(opts);\n\t}\n\tfull(opts: Modal){\n\t\tif(typeof opts == 'string' || typeof opts == 'function'){\n\t\t\topts = {\n\t\t\t\tcomponent: opts\n\t\t\t}\n\t\t}\n\t\topts.size = 'full';\n\t\tthis.show(opts);\n\t}\n\tprivate opened:any = {};\n\tlocked = false;\n\tdestroy() {\n\t\tif (this.locked) {\n\t\t\treturn;\n\t\t}\n\t\tfor (let each in this.opened){\n\t\t this.opened[each].close();\n\t\t}\n\t\tthis.core.document.body.classList.remove(\"modalOpened\");\n\t}\n}\n","import { Component } from '@angular/core';\n\n@Component({\n\tselector: 'lib-files',\n\ttemplateUrl: './files.component.html',\n\tstyleUrls: ['./files.component.scss']\n})\nexport class FilesComponent{\n\tpublic fs:any;\n\tconstructor() {}\n}\n","<ng-container *ngFor=\"let file of fs.files\">\n\t<input [id]=\"file.id\" type=\"file\" name=\"file\" (change)=\"fs.change($event, file); input.value='';\" #input [hidden]=\"true\" [accept]=\"(file.accept) || (file.part && 'image/*') || ''\" [multiple]=\"file.multiple && true || ''\">\n</ng-container>","import { Injectable } from '@angular/core';\nimport { HttpService } from './http.service';\nimport { DomService } from './dom.service';\nimport { CoreService } from './core.service';\nimport { FilesComponent } from '../components/files/files.component';\n\ninterface FileOptions {\n\tid: string;\n\ttype?: string;\n\tresize?: number | { width: number; height: number };\n\tmultiple?: boolean;\n\tmultiple_cb?: (files: { dataUrl: string; file: File }[]) => void;\n\tcb?: (dataUrl: string | false, file: File) => void;\n\tsave?: boolean;\n\tcomplete?: () => void;\n\tapi?: string;\n\tpart?: string;\n\tname?: string;\n\tbody?: () => object | object;\n\tresp?: (response: any) => void;\n\tappend?: (formData: FormData, files: File[]) => void;\n\tmultiple_files?: { dataUrl: string; file: File }[];\n\tmultiple_counter?: number;\n\turl?: string;\n}\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class FileService {\n\tprivate added: Record<string, FileOptions> = {};\n\tprivate files: FileOptions[] = [];\n\n\tconstructor(\n\t\tprivate dom: DomService,\n\t\tprivate core: CoreService,\n\t\tprivate http: HttpService\n\t) {\n\t\tthis.dom.appendComponent(FilesComponent, {\n\t\t\tfs: this,\n\t\t});\n\t}\n\n\t/**\n\t * Adds a file input configuration.\n\t *\n\t * @param opts - The file options.\n\t */\n\tpublic add(opts: FileOptions | string): void | (() => void) {\n\t\tif (typeof opts === 'string') {\n\t\t\topts = { id: opts };\n\t\t}\n\n\t\tif (!opts.id) {\n\t\t\tconsole.log('You have to pass ID into file object');\n\t\t\treturn;\n\t\t}\n\n\t\topts.type = opts.type || 'image';\n\n\t\tif (typeof opts.resize === 'number') {\n\t\t\topts.resize = { width: opts.resize, height: opts.resize };\n\t\t}\n\n\t\tif (this.added[opts.id]) {\n\t\t\tthis.files = this.files.filter((file) => file.id !== opts.id);\n\t\t}\n\n\t\tthis.files.push(opts);\n\t\tthis.added[opts.id] = opts;\n\n\t\tif (opts.save) {\n\t\t\treturn () => {\n\t\t\t\topts.complete?.();\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Handles file input change event.\n\t *\n\t * @param event - The input change event.\n\t * @param info - The file options.\n\t */\n\tpublic change(event: Event, info: FileOptions): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (!input.files) return;\n\n\t\tif (info.type === 'image') {\n\t\t\tif (info.multiple) {\n\t\t\t\tif (info.multiple_cb) {\n\t\t\t\t\tinfo.multiple_files = [];\n\t\t\t\t\tinfo.multiple_counter = input.files.length;\n\t\t\t\t}\n\t\t\t\tArray.from(input.files).forEach((file) => this.process(file, info));\n\t\t\t} else {\n\t\t\t\tthis.process(input.files[0], info);\n\t\t\t}\n\t\t} else if (info.type === 'file') {\n\t\t\tif (info.multiple) {\n\t\t\t\tinfo.multiple_cb?.(Array.from(input.files).map(file => ({ dataUrl: '', file })));\n\t\t\t}\n\t\t\tArray.from(input.files).forEach((file) => info.cb?.('', file));\n\t\t\tif (info.part || info.url) {\n\t\t\t\tthis.uploadFiles(info, input.files as any);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log('Provide type `image` or `file`');\n\t\t}\n\t}\n\n\t/**\n\t * Removes a file.\n\t *\n\t * @param part - The part of the API.\n\t * @param url - The URL of the file.\n\t * @param opts - Additional options.\n\t * @param cb - The callback function.\n\t */\n\tpublic remove(part: string, url: string, opts: any = {}, cb: (resp: any) => void = () => { }): void | (() => void) {\n\t\topts.url = url;\n\t\tif (opts.save) {\n\t\t\treturn () => {\n\t\t\t\tthis.http.post(opts.api || `/api/${part}/file/delete`, opts, cb);\n\t\t\t};\n\t\t} else {\n\t\t\tthis.http.post(opts.api || `/api/${part}/file/delete`, opts, cb);\n\t\t}\n\t}\n\n\t/**\n\t * Uploads files to the server.\n\t *\n\t * @param info - The file options.\n\t * @param files - The files to upload.\n\t * @param cb - The callback function.\n\t */\n\tpublic uploadFiles(info: FileOptions, files: File[], cb: (resp: any) => void = () => { }): void {\n\t\tconst formData = new FormData();\n\n\t\tif (info.append) {\n\t\t\tinfo.append(formData, files);\n\t\t} else {\n\t\t\tfiles.forEach((file, index) => formData.append(`file[${index}]`, file));\n\t\t}\n\n\t\tconst body = typeof info.body === 'function' ? info.body() : (info.body || {});\n\t\tObject.entries(body).forEach(([key, value]) => formData.append(key, value));\n\n\t\tif (info.save) {\n\t\t\tinfo.complete = () => {\n\t\t\t\tthis.http.post(info.api || `/api/${info.part}/file${info.name ? `/${info.name}` : ''}`, formData, (resp: any) => {\n\t\t\t\t\tinfo.resp?.(resp);\n\t\t\t\t\tcb(resp);\n\t\t\t\t});\n\t\t\t};\n\t\t} else {\n\t\t\tthis.http.post(info.api || `/api/${info.part}/file${info.name ? `/${info.name}` : ''}`, formData, (resp: any) => {\n\t\t\t\tinfo.resp?.(resp);\n\t\t\t\tcb(resp);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Uploads an image to the server.\n\t *\n\t * @param info - The file options.\n\t * @param cb - The callback function.\n\t */\n\tpublic image(info: FileOptions, cb: (resp: any) => void = () => { }): void | (() => void) {\n\t\tif (info.save) {\n\t\t\treturn () => {\n\t\t\t\tthis.http.post(info.api || `/api/${info.part}/file${info.name ? `/${info.name}` : ''}`, info, cb);\n\t\t\t};\n\t\t} else {\n\t\t\tthis.http.post(info.api || `/api/${info.part}/file${info.name ? `/${info.name}` : ''}`, info, cb);\n\t\t}\n\t}\n\n\t/**\n\t * Updates the file information after processing.\n\t *\n\t * @param dataUrl - The data URL of the processed file.\n\t * @param info - The file options.\n\t * @param file - The file object.\n\t */\n\t// private update(dataUrl: string, info: FileOptions, file: File): void {\n\tprivate update(dataUrl: string, info: any, file: File): void {\n\t\tinfo.cb?.(dataUrl, file);\n\t\tif (info.multiple_cb) {\n\t\t\tinfo.multiple_files.push({ dataUrl, file });\n\t\t\tif (--info.multiple_counter === 0) info.multiple_cb(info.multiple_files);\n\t\t}\n\n\t\tif (!info.part) return;\n\n\t\tconst obj = typeof info.body === 'function' ? info.body() : (info.body || {});\n\t\tobj['dataUrl'] = dataUrl;\n\n\t\tif (info.save) {\n\t\t\tinfo.complete = () => {\n\t\t\t\tthis.http.post(info.api || `/api/${info.part}/file${info.name ? `/${info.name}` : ''}`, obj, (resp: any) => {\n\t\t\t\t\tinfo.cb?.(resp);\n\t\t\t\t});\n\t\t\t};\n\t\t} else {\n\t\t\tthis.http.post(info.api || `/api/${info.part}/file${info.name ? `/${info.name}` : ''}`, obj, (resp: any) => {\n\t\t\t\tinfo.cb?.(resp);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Processes an image file for resizing.\n\t *\n\t * @param file - The file object.\n\t * @param info - The file options.\n\t */\n\t// private process(file: File, info: FileOptions): void {\n\tprivate process(file: File, info: any): void {\n\t\tif (!file.type.startsWith('image/')) {\n\t\t\tinfo.cb?.(false, file);\n\t\t\tif (info.multiple_cb) {\n\t\t\t\tinfo.multiple_files.push({ dataUrl: '', file });\n\t\t\t\tif (--info.multiple_counter === 0) info.multiple_cb(info.multiple_files);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (info.resize) {\n\t\t\tinfo.resize.width = info.resize.width || 1920;\n\t\t\tinfo.resize.height = info.resize.height || 1080;\n\t\t}\n\n\t\tconst reader = new FileReader();\n\t\treader.onload = (loadEvent) => {\n\t\t\tif (!info.resize) {\n\t\t\t\treturn this.update(loadEvent.target?.result as string, info, file);\n\t\t\t}\n\n\t\t\tconst canvas = this.core.document.createElement('canvas');\n\t\t\tconst img = this.core.document.createElement('img');\n\t\t\timg.onload = () => {\n\t\t\t\tif (img.width <= info.resize.width && img.height <= info.resize.height) {\n\t\t\t\t\treturn this.update(loadEvent.target?.result as string, info, file);\n\t\t\t\t}\n\n\t\t\t\tconst infoRatio = info.resize.width / info.resize.height;\n\t\t\t\tconst imgRatio = img.width / img.height;\n\t\t\t\tlet width, height;\n\t\t\t\tif (imgRatio > infoRatio) {\n\t\t\t\t\twidth = Math.min(info.resize.width, img.width);\n\t\t\t\t\theight = width / imgRatio;\n\t\t\t\t} else {\n\t\t\t\t\theight = Math.min(info.resize.height, img.height);\n\t\t\t\t\twidth = height * imgRatio;\n\t\t\t\t}\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\t\t\t\tconst context = canvas.getContext('2d');\n\t\t\t\tcontext.drawImage(img, 0, 0, width, height);\n\t\t\t\tconst dataUrl = canvas.toDataURL('image/jpeg', 1);\n\t\t\t\tthis.update(dataUrl, info, file);\n\t\t\t};\n\t\t\timg.src = loadEvent.target?.result as string;\n\t\t};\n\t\treader.readAsDataURL(file);\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { CoreService } from './core.service';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class UiService {\n\tprivate variables: { [key: string]: string } = {};\n\tprivate _forms: { [key: string]: any } = {};\n\t// global variable use for design purposes\n\tvar: Record<string, unknown> = {};\n\n\tconstructor(private core: CoreService) {\n\t\tconst storedVariables = this.core.localStorage.getItem('css_variables');\n\t\tthis.variables = storedVariables ? JSON.parse(storedVariables) : {};\n\t\tfor (const key in this.variables) {\n\t\t\tthis.setProperty(key, this.variables[key]);\n\t\t}\n\t}\n\n\t/* Forms Management */\n\t/**\n\t * Manages form states.\n\t *\n\t * @param id - The form identifier.\n\t * @returns The form state object.\n\t */\n\tpublic form(id: string): any {\n\t\tif (typeof id !== 'string') return {};\n\t\tif (!this._forms[id]) this._forms[id] = {};\n\t\treturn this._forms[id];\n\t}\n\n\t/**\n\t * Validates input values based on the specified type.\n\t *\n\t * @param value - The value to validate.\n\t * @param kind - The type of validation.\n\t * @param extra - Additional validation criteria.\n\t * @returns True if the value is valid, false otherwise.\n\t */\n\tpublic valid(value: any, kind = 'email', extra = 0): boolean {\n\t\tconst validators: { [key: string]: (value: any) => boolean } = {\n\t\t\temail: (value) => /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,10})+$/.test(value || ''),\n\t\t\ttext: (value) => typeof value === 'string',\n\t\t\tarray: (value) => Array.isArray(value),\n\t\t\tobject: (value) => typeof value === 'object' && !Array.isArray(value) && value !== null,\n\t\t\tnumber: (value) => typeof value === 'number',\n\t\t\tpassword: (value) => {\n\t\t\t\tif (!value) return false;\n\t\t\t\tswitch (extra) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn /^((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9]))/.test(value || '');\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn /^(((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{8,})/.test(value || '');\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn /^((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]))(?=.{8,})/.test(value || '');\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\treturn /^((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@#$%&!-_]))(?=.{8,})/.test(value || '');\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn !!value;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t\treturn validators[kind] ? validators[kind](value) : false;\n\t}\n\n\t/**\n\t * Determines the strength of a password.\n\t *\n\t * @param value - The password to evaluate.\n\t * @returns The strength level of the password.\n\t */\n\tpublic level(value = ''): number {\n\t\tif (!value) return 0;\n\t\tlet level = 0;\n\t\tif (value.length > 8) level++;\n\t\tif (/[a-z]/.test(value)) level++;\n\t\tif (/[A-Z]/.test(value)) level++;\n\t\tif (/[1-9]/.test(value)) level++;\n\t\tif (/[`!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]/.test(value)) level++;\n\t\treturn level;\n\t}\n\n\t/* CSS Management */\n\t/**\n\t * Saves the CSS variables to local storage.\n\t */\n\tprivate save(): void {\n\t\tthis.core.localStorage.setItem('css_variables', JSON.stringify(this.variables));\n\t}\n\n\t/**\n\t * Sets a CSS variable.\n\t *\n\t * @param key - The CSS variable name.\n\t * @param value - The CSS variable value.\n\t */\n\tprivate setProperty(key: string, value: string): void {\n\t\tthis.core.document.documentElement.style.setProperty(key, value);\n\t}\n\n\t/**\n\t * Sets multiple CSS variables.\n\t *\n\t * @param variables - The CSS variables to set.\n\t * @param opts - Options for setting the variables.\n\t */\n\tpublic set(variables: { [key: string]: string }, opts: any = {}): void {\n\t\tif (typeof opts === 'string') {\n\t\t\topts = opts === 'local' ? { local: true } : { host: opts };\n\t\t}\n\t\tif (opts.host && this.core.window.location.host !== opts.host) return;\n\t\tfor (const key in variables) {\n\t\t\tif (opts.local) {\n\t\t\t\tthis.variables[key] = variables[key];\n\t\t\t} else if (this.variables[key]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.setProperty(key, variables[key]);\n\t\t}\n\t\tif (opts.local) this.save();\n\t}\n\n\t/**\n\t * Retrieves the stored CSS variables.\n\t *\n\t * @returns The stored CSS variables.\n\t */\n\tpublic get(): { [key: string]: string } {\n\t\treturn this.variables;\n\t}\n\n\t/**\n\t * Removes specified CSS variables.\n\t *\n\t * @param keys - The keys of the CSS variables to remove.\n\t */\n\tpublic remove(keys: string | string[]): void {\n\t\tconst keyArray = Array.isArray(keys) ? keys : keys.split(' ');\n\t\tfor (const key of keyArray) {\n\t\t\tdelete this.variables[key];\n\t\t}\n\t\tthis.save();\n\t}\n\n\t/**\n\t * Generates an array of sample data.\n\t *\n\t * @param arrLen - The length of the array.\n\t * @param type - The type of data to generate.\n\t * @returns An array of sample data.\n\t */\n\tpublic arr(arrLen = 10, type: string = 'number'): any[] {\n\t\tconst arr = [];\n\t\tfor (let i = 0; i < arrLen; i++) {\n\t\t\tswitch (type) {\n\t\t\t\tcase 'number':\n\t\t\t\t\tarr.push(i + 1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'text':\n\t\t\t\t\tarr.push(this.text());\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'date':\n\t\t\t\t\tarr.push(new Date(new Date().getTime() + i * 86400000));\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tarr.push(type);\n\t\t\t}\n\t\t}\n\t\treturn arr;\n\t}\n\n\t/**\n\t * Generates a random text string.\n\t *\n\t * @param length - The length of the text string.\n\t * @returns A random text string.\n\t */\n\tpublic text(length = 10): string {\n\t\tconst characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\t\tlet result = '';\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tresult += characters.charAt(Math.floor(Math.random() * characters.length));\n\t\t}\n\t\treturn result;\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { DatePipe } from '@angular/common';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class TimeService {\n\tprivate weekDays = [\n\t\t'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n\t];\n\n\tconstructor(private datePipe: DatePipe) { }\n\n\t/**\n\t * Returns the name of the day of the week for a given date.\n\t *\n\t * @param date - The date for which to get the day of the week.\n\t * @param format - The format in which to return the day name. Default is 'long'.\n\t * @returns The name of the day of the week.\n\t */\n\tgetDayName(date: Date, format: 'short' | 'long' = 'long'): string {\n\t\tconst dayIndex = date.getDay();\n\t\treturn format === 'short' ? this.weekDays[dayIndex].substring(0, 3) : this.weekDays[dayIndex];\n\t}\n\n\t/**\n\t * Formats a date according to the specified format and timezone.\n\t *\n\t * @param date - The date to format.\n\t * @param format - The format string (see Angular DatePipe documentation for format options).\n\t * @param timezone - The timezone to use for formatting.\n\t * @returns The formatted date string.\n\t */\n\tformatDate(date: Date, format: string = 'mediumDate', timezone: string = 'UTC'): string {\n\t\treturn this.datePipe.transform(date, format, timezone) || '';\n\t}\n\n\t/**\n\t * Converts a date to a different timezone.\n\t *\n\t * @param date - The date to convert.\n\t * @param timezone - The timezone to convert to.\n\t * @returns The date in the new timezone.\n\t */\n\tconvertToTimezone(date: Date, timezone: string): Date {\n\t\treturn new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n\t}\n\n\t/**\n\t * Returns the start of the day for a given date.\n\t *\n\t * @param date - The date for which to get the start of the day.\n\t * @returns The start of the day (midnight) for the given date.\n\t */\n\tstartOfDay(date: Date): Date {\n\t\tconst newDate = new Date(date);\n\t\tnewDate.setHours(0, 0, 0, 0);\n\t\treturn newDate;\n\t}\n\n\t/**\n\t * Returns the end of the day for a given date.\n\t *\n\t * @param date - The date for which to get the end of the day.\n\t * @returns The end of the day (one millisecond before midnight) for the given date.\n\t */\n\tendOfDay(date: Date): Date {\n\t\tconst newDate = new Date(date);\n\t\tnewDate.setHours(23, 59, 59, 999);\n\t\treturn newDate;\n\t}\n\n\t/**\n\t * Returns the number of days in a given month and year.\n\t *\n\t * @param month - The month (0-11).\n\t * @param year - The year.\n\t * @returns The number of days in the month.\n\t */\n\tgetDaysInMonth(month: number, year: number): number {\n\t\treturn new Date(year, month + 1, 0).getDate();\n\t}\n\n\t/**\n\t * Checks if a given year is a leap year.\n\t *\n\t * @param year - The year to check.\n\t * @returns True if the year is a leap year, false otherwise.\n\t */\n\tisLeapYear(year: number): boolean {\n\t\treturn (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n\t}\n\n\t/**\n\t * Adds a specified number of days to a date.\n\t *\n\t * @param date - The date to which to add days.\n\t * @param days - The number of days to add.\n\t * @returns The new date with the added days.\n\t */\n\taddDays(date: Date, days: number): Date {\n\t\tconst newDate = new Date(date);\n\t\tnewDate.setDate(newDate.getDate() + days);\n\t\treturn newDate;\n\t}\n\n\t/**\n\t * Adds a specified number of months to a date.\n\t *\n\t * @param date - The date to which to add months.\n\t * @param months - The number of months to add.\n\t * @returns The new date with the added months.\n\t */\n\taddMonths(date: Date, months: number): Date {\n\t\tconst newDate = new Date(date);\n\t\tnewDate.setMonth(newDate.getMonth() + months);\n\t\treturn newDate;\n\t}\n\n\t/**\n\t * Adds a specified number of years to a date.\n\t *\n\t * @param date - The date to which to add years.\n\t * @param years - The number of years to add.\n\t * @returns The new date with the added years.\n\t */\n\taddYears(date: Date, years: number): Date {\n\t\tconst newDate = new Date(date);\n\t\tnewDate.setFullYear(newDate.getFullYear() + years);\n\t\treturn newDate;\n\t}\n\n\t/**\n\t * Subtracts a specified number of days from a date.\n\t *\n\t * @param date - The date from which to subtract days.\n\t * @param days - The number of days to subtract.\n\t * @returns The new date with the subtracted days.\n\t */\n\tsubtractDays(date: Date, days: number): Date {\n\t\treturn this.addDays(date, -days);\n\t}\n\n\t/**\n\t * Subtracts a specified number of months from a date.\n\t *\n\t * @param date - The date from which to subtract months.\n\t * @param months - The number of months to subtract.\n\t * @returns The new date with the subtracted months.\n\t */\n\tsubtractMonths(date: Date, months: number): Date {\n\t\treturn this.addMonths(date, -months);\n\t}\n\n\t/**\n\t * Subtracts a specified number of years from a date.\n\t *\n\t * @param date - The date from which to subtract years.\n\t * @param years - The number of years to subtract.\n\t * @returns The new date with the subtracted years.\n\t */\n\tsubtractYears(date: Date, years: number): Date {\n\t\treturn this.addYears(date, -years);\n\t}\n\n\t/**\n\t * Checks if two dates are on the same day.\n\t *\n\t * @param date1 - The first date.\n\t * @param date2 - The second date.\n\t * @returns True if the dates are on the same day, false otherwise.\n\t */\n\tisSameDay(date1: Date, date2: Date): boolean {\n\t\treturn (\n\t\t\tdate1.getFullYear() === date2.getFullYear() &&\n\t\t\tdate1.getMonth() === date2.getMonth() &&\n\t\t\tdate1.getDate() === date2.getDate()\n\t\t);\n\t}\n\n\t/**\n\t * Returns the ISO week number for a given date.\n\t *\n\t * @param date - The date for which to get the week number.\n\t * @returns The ISO week number (1-53).\n\t */\n\tgetWeekNumber(date: Date): number {\n\t\tconst tempDate = new Date(date.getTime());\n\t\ttempDate.setHours(0, 0, 0, 0);\n\t\t// Set to nearest Thursday: current date + 4 - current day number, making Thursday day 4\n\t\ttempDate.setDate(tempDate.getDate() + 4 - (tempDate.getDay() || 7));\n\t\tconst yearStart = new Date(tempDate.getFullYear(), 0, 1);\n\t\t// Calculate full weeks to nearest Thursday\n\t\treturn Math.ceil((((tempDate.getTime() - yearStart.getTime()) / 86400000) + 1) / 7);\n\t}\n\n\t/**\n\t * Returns the number of weeks in a month for a given month and year.\n\t *\n\t * @param month - The month (0-11).\n\t * @param year - The year.\n\t * @returns The number of weeks in the month.\n\t */\n\tgetWeeksInMonth(month: number, year: number): number {\n\t\tconst firstDayOfMonth = new Date(year, month, 1);\n\t\tconst lastDayOfMonth = new Date(year, month + 1, 0);\n\t\t// Get ISO week numbers for the first and last day of the month\n\t\tconst firstWeek = this.getWeekNumber(firstDayOfMonth);\n\t\tlet lastWeek = this.getWeekNumber(lastDayOfMonth);\n\t\t// Special case: when January 1st is in the last week of the previous year\n\t\tif (firstWeek > lastWeek) {\n\t\t\tlastWeek = this.getWeekNumber(new Date(year, 11, 31)); // Get week of the last day of the year\n\t\t}\n\t\treturn lastWeek - firstWeek + 1;\n\t}\n}\n","/* initialize */\nimport { CONFIG_TOKEN, Config, DEFAULT_CONFIG } from './interfaces/config';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { MetaService } from './services/meta.service';\nimport { MetaGuard } from './guard/meta.guard';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/* directives */\nimport { ClickOutsideDirective } from './directives/click-outside.directive';\nconst DIRECTIVES = [ClickOutsideDirective];\n\n/* pipes */\nimport { ArrPipe } from './pipes/arr.pipe';\nimport { SafePipe } from './pipes/safe.pipe';\nimport { SplicePipe } from './pipes/splice.pipe';\nimport { SearchPipe } from './pipes/search.pipe';\nimport { MongodatePipe } from './pipes/mongodate.pipe';\nimport { PaginationPipe } from './pipes/pagination.pipe';\nconst PIPES = [\n\tArrPipe,\n\tSafePipe,\n\tSplicePipe,\n\tSearchPipe,\n\tMongodatePipe,\n\tPaginationPipe,\n];\n\n/* components */\nimport { WrapperComponent } from './components/alert/wrapper/wrapper.component';\nimport { LoaderComponent } from './components/loader/loader.component';\nimport { FilesComponent } from './components/files/files.component';\nimport { ModalComponent } from './components/modal/modal.component';\nimport { AlertComponent } from './components/alert/alert.component';\nconst LOCAL_COMPONENTS = [\n\tWrapperComponent,\n\tFilesComponent\n];\nconst COMPONENTS = [\n\tLoaderComponent,\n\tModalComponent,\n\tAlertComponent\n];\n\n@NgModule({ declarations: [...LOCAL_COMPONENTS, ...PIPES, ...COMPONENTS, ...DIRECTIVES],\n exports: [...PIPES, ...COMPONENTS, ...DIRECTIVES], imports: [CommonModule, FormsModule], providers: [\n { provide: CONFIG_TOKEN, useValue: DEFAULT_CONFIG },\n MetaGuard,\n MetaService,\n provideHttpClient(withInterceptorsFromDi())\n ] })\nexport class WacomModule {\n\tstatic forRoot(config: Config = DEFAULT_CONFIG): ModuleWithProviders<WacomModule> {\n\t\treturn {\n\t\t\tngModule: WacomModule,\n\t\t\tproviders: [{\n\t\t\t\tprovide: CONFIG_TOKEN,\n\t\t\t\tuseValue: config\n\t\t\t}]\n\t\t}\n\t}\n}\n","/*\n*\tInterfaces\n*/\n\texport * from './lib/interfaces/config';\n\texport * from './lib/interfaces/alert.interface';\n\texport * from './lib/interfaces/crud.interface';\n/*\n*\tGuard\n*/\n\texport * from './lib/guard/meta.guard';\n/*\n*\tComponents\n*/\n\texport * from './lib/components/alert/alert.component';\n\texport * from './lib/components/modal/modal.component';\n\texport * from './lib/components/loader/loader.component';\n/*\n*\tDirectives\n*/\n\texport * from './lib/directives/click-outside.directive';\n/*\n*\tPipes\n*/\n\texport * from './lib/pipes/arr.pipe';\n\texport * from './lib/pipes/mongodate.pipe';\n\texport * from './lib/pipes/pagination.pipe';\n\texport * from './lib/pipes/safe.pipe';\n\texport * from './lib/pipes/search.pipe';\n\texport * from './lib/pipes/splice.pipe';\n/*\n*\tServices\n*/\n\texport * from './lib/services/base.service';\n\texport * from './lib/services/crud.service';\n\texport * from './lib/services/meta.service';\n\texport * from './lib/services/store.service';\n\texport * from './lib/services/http.service';\n\texport * from './lib/services/mongo.service';\n\texport * from './lib/services/render.service';\n\texport * from './lib/services/hash.service';\n\texport * from './lib/services/dom.service';\n\texport * from './lib/services/alert.service';\n\texport * from './lib/services/loader.service';\n\texport * from './lib/services/socket.service';\n\texport * from './lib/services/modal.service';\n\texport * from './lib/services/file.service';\n\texport * from './lib/services/ui.service';\n\texport * from './lib/services/core.service';\n\texport * from './lib/services/time.service';\n/*\n*\tInitial\n*\n*\tmake different kind of modules, one which import all, other for piece by piece\n*/\n\texport * from './lib/wacom.module';\n/*\n*\tEnd of Support\n*/\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CoreService","i2","i1","i1.StoreService","i2.HttpService","i3.CoreService","i1.DomService","i2.CoreService","i3.HttpService"],"mappings":"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"}