coer-elements 0.0.43 → 0.0.44
Sign up to get free protection for your applications and to get access to all the features.
- package/components/lib/coer-button/coer-button.component.d.ts +1 -1
- package/esm2022/components/lib/coer-button/coer-button.component.mjs +2 -2
- package/esm2022/components/lib/coer-checkbox/coer-checkbox.component.mjs +2 -2
- package/esm2022/components/lib/coer-filebox/coer-filebox.component.mjs +2 -2
- package/esm2022/components/lib/coer-grid/coer-grid.component.mjs +2 -2
- package/esm2022/components/lib/coer-numberbox/coer-numberbox.component.mjs +2 -2
- package/esm2022/components/lib/coer-page-title/coer-page-title.component.mjs +2 -2
- package/esm2022/components/lib/coer-selectbox/coer-selectbox.component.mjs +2 -2
- package/esm2022/components/lib/coer-switch/coer-switch.component.mjs +2 -2
- package/esm2022/components/lib/coer-tab/coer-tab.component.mjs +2 -2
- package/esm2022/components/lib/coer-textarea/coer-textarea.component.mjs +2 -2
- package/esm2022/components/lib/coer-textbox/coer-textbox.component.mjs +2 -2
- package/esm2022/tools/lib/coer-alert/coer-alert.component.mjs +2 -2
- package/fesm2022/coer-elements-components.mjs +22 -22
- package/fesm2022/coer-elements-components.mjs.map +1 -1
- package/fesm2022/coer-elements-tools.mjs +2 -2
- package/fesm2022/coer-elements-tools.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/coer-elements.css +131 -1
- package/styles/colors.scss +13 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"coer-elements-tools.mjs","sources":["../../../projects/coer-elements/tools/lib/tools.ts","../../../projects/coer-elements/tools/lib/colors.class.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.html","../../../projects/coer-elements/tools/lib/breadcrumbs.class.ts","../../../projects/coer-elements/tools/lib/coer-grid.templates.ts","../../../projects/coer-elements/tools/lib/control-value.class.ts","../../../projects/coer-elements/tools/lib/date-time.class.ts","../../../projects/coer-elements/tools/lib/files.class.ts","../../../projects/coer-elements/tools/lib/menu.class.ts","../../../projects/coer-elements/tools/lib/source.class.ts","../../../projects/coer-elements/tools/lib/page.class.ts","../../../projects/coer-elements/tools/lib/screen.class.ts","../../../projects/coer-elements/tools/lib/service.class.ts","../../../projects/coer-elements/tools/coer-elements-tools.ts"],"sourcesContent":["import { signal } from \"@angular/core\";\r\nconst reference_signal = signal<any>({});\r\n\r\nexport const Tools = {\r\n /** Generate a Guid */\r\n GetGuid: (seed: string = 'coer-system') => {\r\n let time = new Date().getTime();\r\n seed = seed.toString().trim()\r\n return seed + `-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, (c) => {\r\n const random = (time + Math.random() * 16) % 16 | 0\r\n time = Math.floor(time / 16)\r\n return (c == 'x' ? random : (random & 0x3 | 0x8)).toString(16)\r\n })\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined, false otherwise */\r\n IsNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n IsNotNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */\r\n IsOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n if (typeof value === 'string' && value.trim() === '') return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if has string value and is not only whitespace, false otherwise */\r\n IsNotOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n if (typeof value === 'string' && value.trim() === '') return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Break reference of a object or array */\r\n BreakReference: <T>(object: T): T => {\r\n if (object === null) return object;\r\n if (typeof object === 'undefined') return object;\r\n if (typeof object === 'string') return object;\r\n if (typeof object === 'number') return object;\r\n if (typeof object === 'boolean') return object;\r\n const OBJECT = JSON.parse(JSON.stringify(object))\r\n return (Array.isArray(OBJECT)) ? [...OBJECT] : { ...OBJECT }\r\n },\r\n\r\n\r\n /** Clean extra whitespaces */\r\n CleanUpBlanks: (text: string | number): string => {\r\n if(Tools.IsNull(text)) return '';\r\n let worlds: string[] = String(text).split(' ');\r\n worlds = worlds.filter(x => x.length > 0);\r\n return worlds.join(' ');\r\n },\r\n\r\n\r\n /** Get properties of an object */\r\n GetObjectProperties: <T>(obj: T | null | undefined): string[] => {\r\n const properties: string[] = [];\r\n if (obj === null) return properties;\r\n if (typeof obj === 'undefined') return properties;\r\n if (typeof obj === 'string') return properties;\r\n if (typeof obj === 'number') return properties;\r\n if (typeof obj === 'boolean') return properties;\r\n for(const property in obj) properties.push(String(property));\r\n return properties;\r\n },\r\n\r\n\r\n /**\r\n * Set an index and merge more arrays of the same type\r\n * */\r\n SetIndex: <T>(array: T[], ...args: T[][]): T[] => {\r\n let index = 0;\r\n for (const arg of args) {\r\n array = Tools.BreakReference(array).concat(Tools.BreakReference(arg));\r\n }\r\n\r\n return Tools.BreakReference(array).map(item => Object.assign({ index: index++ }, item));\r\n },\r\n\r\n\r\n /** Set First Char To Lower */\r\n FirstCharToLower: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toLowerCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Set First Char To Upper */\r\n FirstCharToUpper: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toUpperCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Sort an array in ascending order by property */\r\n SortBy: <T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] => {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return -1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return 1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(x[property] - Number(y[property])));\r\n }\r\n }\r\n },\r\n\r\n\r\n /** Sort an array in descending order by property */\r\n SortByDesc: <T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] => {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return 1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return -1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(Number(y[property])) - x[property]);\r\n }\r\n }\r\n },\r\n\r\n\r\n /** Return a string with forman numeric */\r\n GetNumericFormat: (value: string | number | null | undefined, decimals: number = 0): string => {\r\n if (Tools.IsOnlyWhiteSpace(value) || isNaN(Number(value))) {\r\n return '0';\r\n }\r\n\r\n let valueInteger = '';\r\n let valueDecimal = '';\r\n value = value!.toString().replaceAll(' ', '');\r\n\r\n if (value.includes('.') || (decimals > 0)) {\r\n valueInteger = value.includes('.') ? value.split('.')[0] : value;\r\n\r\n if (decimals > 0) {\r\n const PADDING = decimals - valueDecimal.length;\r\n valueDecimal = value.includes('.') ? value.split('.')[1] : '';\r\n for(let i = 0; i < PADDING; i++) valueDecimal += '0';\r\n valueDecimal = valueDecimal.substring(0, decimals);\r\n valueDecimal = `.${valueDecimal}`;\r\n }\r\n }\r\n\r\n else {\r\n valueInteger = value;\r\n }\r\n\r\n let counter = 0;\r\n const VALUE_INTEGER_ARRAY: string[] = [];\r\n for(const char of valueInteger.split('').reverse()) {\r\n if (counter == 3) {\r\n VALUE_INTEGER_ARRAY.push(',');\r\n counter = 0;\r\n }\r\n\r\n VALUE_INTEGER_ARRAY.push(char);\r\n ++counter;\r\n }\r\n\r\n valueInteger = VALUE_INTEGER_ARRAY.reverse().join('');\r\n return `${valueInteger}${valueDecimal}`;\r\n },\r\n\r\n\r\n /** Wait the time indicated */\r\n Sleep: (milliseconds: number = 0, reference: string | null = null) => {\r\n if (Tools.IsNull(reference)) {\r\n return new Promise(Resolve => setTimeout(Resolve, milliseconds));\r\n }\r\n\r\n else return new Promise<void>(Resolve => {\r\n reference = reference!.replaceAll(' ', '_').toLowerCase();\r\n\r\n if (reference_signal().hasOwnProperty(reference)) {\r\n clearInterval(reference_signal()[reference!]);\r\n }\r\n\r\n reference_signal.set(Object.assign(reference_signal(), {\r\n [reference!]: setTimeout(() => {\r\n Resolve();\r\n clearInterval(reference_signal()[reference!]);\r\n const _reference = { ...reference_signal() };\r\n delete _reference[reference!];\r\n reference_signal.set({ ..._reference });\r\n }, milliseconds)\r\n }));\r\n });\r\n }\r\n};","export class Colors {\r\n\r\n public static readonly blue = '#0d6efd';\r\n public static readonly gray = '#6c757d';\r\n public static readonly green = '#198754';\r\n public static readonly yellow = '#ffc107';\r\n public static readonly red = '#dc3545';\r\n public static readonly white = '#f5f5f5';\r\n public static readonly black = '#252525';\r\n public static readonly orange = '#fd6031';\r\n public static readonly purple = '#a615bc';\r\n\r\n\r\n /** Returns the color palette in hexadecimal */\r\n private static readonly colorsHex = new Map<string, string>([\r\n ['blue' , '#0d6efd'],\r\n ['gray' , '#6c757d'],\r\n ['green' , '#198754'],\r\n ['yellow', '#ffc107'],\r\n ['red' , '#dc3545'],\r\n ['white' , '#f5f5f5'],\r\n ['black' , '#252525'],\r\n ['orange', '#fd6031'],\r\n ['purple', '#a615bc'],\r\n ]);\r\n\r\n\r\n /** Returns the color palette in RGB */\r\n private static readonly ColorsRGB = new Map<string, number[]>([\r\n ['blue', [13, 110, 253]],\r\n ['gray', [108, 117, 125]],\r\n ['green', [25, 135, 84 ]],\r\n ['yellow', [225, 193, 7 ]],\r\n ['red', [220, 53 , 69 ]],\r\n ['white', [245, 245, 245]],\r\n ['black', [37 , 37 , 37 ]],\r\n ['orange', [253, 96 , 49 ]],\r\n ['purple', [166, 21, 188]],\r\n ]);\r\n\r\n\r\n /** Returns a random color in hexadecimal */\r\n public static GetRandomColorHex = (): string => \"#xxxxxx\".replace(/x/g, () => (Math.random() * 16 | 0).toString(16));\r\n\r\n\r\n /** Returns the number of colors requested */\r\n public static GetColorHexList(quantity: number): string[] {\r\n const colors: string[] = [];\r\n let counter: number = 0;\r\n\r\n while (counter < quantity) {\r\n for (const color of this.colorsHex.values()) {\r\n colors.push(color);\r\n if (++counter === quantity) break;\r\n }\r\n }\r\n\r\n return colors;\r\n }\r\n\r\n\r\n /** Returns the number of colors requested with opacity */\r\n public static GetColorRGBList(quantity: number): string[] {\r\n const colors: string[] = [];\r\n\r\n let alpha: number = 1.0;\r\n let counter: number = 0;\r\n let lastColor = [...Array.from(this.ColorsRGB.keys())].pop();\r\n\r\n while (counter < quantity) {\r\n for (const [color, value] of this.ColorsRGB.entries()) {\r\n colors.push(`rgba(${value[0]}, ${value[1]}, ${value[2]}, ${alpha})`);\r\n\r\n if (color === lastColor) alpha -= 0.2;\r\n if (++counter === quantity) break;\r\n }\r\n }\r\n\r\n return colors;\r\n }\r\n}","import { Component } from '@angular/core';\r\nimport { Tools } from '../tools';\r\nimport { Colors } from '../colors.class';\r\nimport * as bootstrap from 'bootstrap';\r\nimport Swal from 'sweetalert2'\r\n\r\n@Component({\r\n selector: 'coer-alert',\r\n templateUrl: './coer-alert.component.html',\r\n styleUrls: ['./coer-alert.component.scss'],\r\n standalone: true\r\n})\r\nexport class CoerAlert {\r\n\r\n /** */\r\n public Success(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Success';\r\n const alertSuccessTitle = document.getElementById('alert-success-title')!;\r\n alertSuccessTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-check-circle fa-beat');\r\n const alertSuccessIcon = document.getElementById('alert-success-icon')!;\r\n this.SetIcon(alertSuccessIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertSuccessMessage = document.getElementById('alert-success-message')!;\r\n alertSuccessMessage.innerHTML = message!;\r\n\r\n //Toast\r\n const alertSuccess = document.getElementById('alert-success')!;\r\n this.SetAutoHide(alertSuccess, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertSuccess);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Error(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Error';\r\n const alertErrorTitle = document.getElementById('alert-error-title')!;\r\n alertErrorTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-exclamation-octagon fa-beat');\r\n const alertErrorIcon = document.getElementById('alert-error-icon')!;\r\n this.SetIcon(alertErrorIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertErrorBody = document.getElementById('alert-error-message')!;\r\n alertErrorBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertError = document.getElementById('alert-error')!;\r\n this.SetAutoHide(alertError, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertError);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Info(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Info';\r\n const alertInfoTitle = document.getElementById('alert-info-title')!;\r\n alertInfoTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-info-circle fa-beat');\r\n const alertInfoIcon = document.getElementById('alert-info-icon')!;\r\n this.SetIcon(alertInfoIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertInfoBody = document.getElementById('alert-info-message')!;\r\n alertInfoBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertInfo = document.getElementById('alert-info')!;\r\n this.SetAutoHide(alertInfo, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertInfo);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Warning(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Warning';\r\n const alertWarningTitle = document.getElementById('alert-warning-title')!;\r\n alertWarningTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-exclamation-triangle-fill fa-beat');\r\n const alertWarningIcon = document.getElementById('alert-warning-icon')!;\r\n this.SetIcon(alertWarningIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertWarningBody = document.getElementById('alert-warning-message')!;\r\n alertWarningBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertWarning = document.getElementById('alert-warning')!;\r\n this.SetAutoHide(alertWarning, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertWarning);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n protected Close(alert: 'alert-success' | 'alert-error' | 'alert-info' | 'alert-warning') {\r\n return new Promise<void>(Resolve => {\r\n const element = document.getElementById(alert)!;\r\n const toast = bootstrap.Toast.getOrCreateInstance(element);\r\n toast.hide();\r\n\r\n setTimeout(() => { Resolve() }, 200);\r\n })\r\n }\r\n\r\n\r\n /** */\r\n public Confirm(\r\n message: string = 'Proceed?',\r\n alertType: 'warning' | 'danger' | 'success' | 'info' = 'warning',\r\n icon: string | null = null) {\r\n return new Promise<boolean>(Resolve => {\r\n let color: string;\r\n let iconType: 'warning' | 'error' | 'success' | 'info';\r\n switch(alertType) {\r\n case 'danger': {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-octagon';\r\n iconType = 'error';\r\n color = Colors.red;\r\n break;\r\n };\r\n\r\n case 'success': {\r\n if (Tools.IsNull(icon)) icon = 'bi-check-circle';\r\n iconType = 'info';\r\n color = Colors.green;\r\n break;\r\n };\r\n\r\n case 'info': {\r\n if (Tools.IsNull(icon)) icon = 'bi-info-circle';\r\n iconType = 'error';\r\n color = Colors.black;\r\n break\r\n };\r\n\r\n default: {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-triangle-fill';\r\n iconType = 'warning';\r\n color = Colors.yellow; \r\n break;\r\n }\r\n }\r\n\r\n switch(icon) {\r\n case 'delete': icon = 'fa-regular fa-trash-can'; break;\r\n }\r\n\r\n Swal.fire({\r\n icon: iconType,\r\n iconColor: 'transparent',\r\n iconHtml: `<i class=\"${icon}\" style=\"color: ${color};\"></i>`,\r\n html: message,\r\n showConfirmButton: true,\r\n confirmButtonText: 'Yes',\r\n confirmButtonColor: color,\r\n focusConfirm: true,\r\n showDenyButton: true,\r\n denyButtonColor: color,\r\n focusDeny: false,\r\n reverseButtons: true,\r\n allowOutsideClick: false,\r\n allowEscapeKey: false,\r\n allowEnterKey: true,\r\n customClass: {\r\n denyButton: 'sweet-alert-button',\r\n confirmButton: 'sweet-alert-button'\r\n }\r\n }).then(({ value }) => setTimeout(() => Resolve(value)));\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private SetIcon(element: HTMLElement, icon: string): void {\r\n for (const item of [...element.classList.value.split(' ')]) {\r\n if (item.length > 0) {\r\n element.classList.remove(item);\r\n element.classList.remove('q');\r\n }\r\n }\r\n\r\n icon = icon.trim();\r\n const hasWhiteSpaces: RegExp = / /;\r\n if (hasWhiteSpaces.test(icon)) {\r\n const classes = icon.split(' ');\r\n for (const icon of classes) element.classList.add(icon);\r\n }\r\n\r\n else element.classList.add(icon);\r\n }\r\n\r\n\r\n /** */\r\n private SetAutoHide(element: HTMLElement, autohide: number | null): void {\r\n element.removeAttribute('data-bs-autohide');\r\n element.removeAttribute('data-bs-delay');\r\n\r\n if (autohide && autohide > 0) {\r\n if (autohide < 1000) autohide = 1000;\r\n element.setAttribute('data-bs-autohide', 'true');\r\n element.setAttribute('data-bs-delay', String(autohide));\r\n }\r\n\r\n else element.setAttribute('data-bs-autohide', 'false');\r\n }\r\n\r\n\r\n /** */\r\n private GetIcon(title: string, icon: string | null, iconDefault: string): string {\r\n if (icon == null || icon == '') {\r\n title = title.replaceAll(' ', '').toUpperCase();\r\n\r\n switch(title) {\r\n case 'ENABLED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVE': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'DISABLE': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DISABLED': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DELETE': return 'fa-regular fa-trash-can';\r\n case 'DELETED': return 'fa-regular fa-trash-can';\r\n default: return iconDefault;\r\n }\r\n }\r\n\r\n return icon;\r\n }\r\n}","<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>","import { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Tools } from './tools';\r\n\r\nexport class Breadcrumbs {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Add(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n const paths = breadcrumbs.map(item => item.path);\r\n\r\n if (!paths.includes(path)) {\r\n breadcrumbs.push({ page, path });\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IAppSource[] {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('breadcrumbs')) {\r\n return Tools.BreakReference(storage.breadcrumbs);\r\n }\r\n }\r\n\r\n return [];\r\n }\r\n\r\n\r\n /** */\r\n public static GetFirst(): IAppSource | null {\r\n const breadcrumbs = this.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\r\n public static Save(breadcrumbs: IAppSource[]): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { breadcrumbs });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Remove(path: string): void {\r\n let breadcrumbs = this.Get();\r\n const index = breadcrumbs.findIndex(x => x.path.toLowerCase().trim() === path.toLowerCase().trim());\r\n\r\n if (index >= 0) {\r\n breadcrumbs = Tools.BreakReference(breadcrumbs).splice(0, index + 1);\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static SetLast(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs[breadcrumbs.length - 1] = { page, path };\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static RemoveLast(): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs.pop();\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n}","import { IGridCoerSwitch, IGridCoerTextBox, IGridItem } from \"coer-elements/interfaces\";\r\n\r\nexport const GridTemplates = {\r\n\r\n /** Template for boolean property */\r\n isActiveTemplate: (item: IGridItem<any>): string => {\r\n if (item.value) {\r\n return `\r\n <span class='text-green-bold'>\r\n <i class=\"fa-solid fa-circle-check\"></i> Active\r\n </span>\r\n `;\r\n }\r\n\r\n else {\r\n return `\r\n <span class='text-gray-bold'>\r\n <i class=\"fa-solid fa-circle-minus\"></i> Disabled\r\n </span>\r\n `;\r\n }\r\n },\r\n\r\n\r\n /** Template for boolean property */\r\n coerSwitchTemplate: (item: IGridItem<any>): IGridCoerSwitch => ({\r\n isInput: true,\r\n tooltip: `${item.value ? 'Active' : 'Disabled' }`\r\n }),\r\n\r\n\r\n /** Template for text property */\r\n coerTextboxTemplate: (item: IGridItem<any>): IGridCoerTextBox => ({\r\n isInput: true,\r\n isInvalid: item.value.length <= 0\r\n }),\r\n\r\n\r\n /** Template for text property */\r\n coerIconTemplate: (icon: string, color: string = 'black'): string => {\r\n return `<i class='${icon} d-block w-100 text-center' style='color: ${color};'></i>`;\r\n }\r\n}","import { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { forwardRef } from \"@angular/core\";\r\n\r\nexport const CONTROL_VALUE = <T>(component: T) => {\r\n return {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => component),\r\n multi: true\r\n }\r\n}\r\n\r\n\r\nexport class ControlValue implements ControlValueAccessor {\r\n\r\n //Variables\r\n protected _value: any;\r\n private _isTouched: boolean = false;\r\n protected _UpdateValue!: Function;\r\n private _IsTouched!: Function;\r\n\r\n\r\n public get isTouched() {\r\n return this._isTouched;\r\n }\r\n\r\n\r\n /** */\r\n protected SetValue(value: any): void {\r\n if(typeof this._UpdateValue === 'function') {\r\n this._UpdateValue(value);\r\n }\r\n\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public SetTouched(isTouched: boolean): void {\r\n if(typeof this._IsTouched === 'function') {\r\n this._IsTouched(isTouched);\r\n }\r\n\r\n this._isTouched = isTouched;\r\n }\r\n\r\n\r\n /** */\r\n public writeValue(value: any): void {\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnChange(callback: Function): void {\r\n this._UpdateValue = callback;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnTouched(callback: Function): void {\r\n this._IsTouched = callback;\r\n }\r\n\r\n \r\n /** */\r\n public setDisabledState(isDisabled: boolean): void {}\r\n}","import moment from \"moment\";\r\n\r\nexport class DateTime {\r\n /** Get UTC Offset */\r\n public static GetOffset(): number {\r\n return moment().utcOffset();\r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static GetFormatDB(date: string | Date | moment.Moment): string {\r\n if ((typeof date === 'string')) date = date.replaceAll('/', '-');\r\n return moment(date).format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert UTC Date to Local Zone */\r\n public static ToLocalZone(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).add(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert Local Zone Date to UTC */\r\n public static ToUTC(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).subtract(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** DD MMM YYYY */\r\n public static GetDateFormat(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).parseZone().local(true).format('DD MMM YYYY');\r\n }\r\n}","import { Tools } from \"./tools\";\r\nimport * as XLSX from 'xlsx';\r\n\r\nexport class Files {\r\n public static readonly EXCEL_EXTENSIONS: string[] = ['xls', 'xlsx', 'csv'];\r\n\r\n /** Get Extension File */\r\n public static GetExtension(file: File): string | null {\r\n const fileName = file.name;\r\n\r\n if (fileName.includes('.')) {\r\n let worlds = fileName.split('.') as string[];\r\n\r\n if (worlds.length > 0) {\r\n let extension = worlds.pop()!;\r\n extension = extension.trim().toLowerCase();\r\n if (extension.length > 0) return extension;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** Is Excel File */\r\n public static IsExcel(file: File): boolean {\r\n const EXTENSION = Files.GetExtension(file);\r\n\r\n return Tools.IsNotNull(EXTENSION)\r\n ? this.EXCEL_EXTENSIONS.includes(EXTENSION!)\r\n : false;\r\n }\r\n\r\n\r\n /** Read excel file */\r\n public static ReadExcel<T>(file: File) {\r\n return new Promise<{ columns: string[]; rows: T[]; }>(Resolve => {\r\n let columns: string[] = [];\r\n let rows: T[] = [];\r\n\r\n const reader = new FileReader();\r\n reader.readAsArrayBuffer(file);\r\n\r\n reader.onload = () => {\r\n const dataBytes = new Uint8Array(reader.result as any);\r\n\r\n if (dataBytes) {\r\n const workbook = XLSX.read(dataBytes, {});\r\n const sheet = workbook.Sheets[workbook.SheetNames[0]];\r\n let dataSheet: any[] = XLSX.utils.sheet_to_json(sheet, {\r\n header: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\r\n });\r\n\r\n //Get Headers\r\n for(const column in dataSheet[0]) {\r\n columns.push(Tools.FirstCharToLower(String(dataSheet[0][column]).replaceAll(' ', '')));\r\n }\r\n\r\n //Get Rows\r\n rows = XLSX.utils.sheet_to_json(sheet, { header: columns });\r\n rows.shift();\r\n\r\n rows = rows.map(row => {\r\n const item = Tools.BreakReference<any>(row);\r\n delete item['__rowNum__'];\r\n return item;\r\n });\r\n }\r\n\r\n Resolve({ columns, rows });\r\n }\r\n\r\n reader.onerror = () => { Resolve({ columns, rows }) }\r\n });\r\n }\r\n\r\n\r\n /** Export to excel file */\r\n public static ExportExcel<T>(data: T[], fileName: string = 'coer_report', sheetName: string = 'Sheet1') {\r\n sheetName = Tools.CleanUpBlanks(sheetName);\r\n fileName = Tools.CleanUpBlanks(fileName);\r\n\r\n if(fileName.endsWith('.xls') || fileName.endsWith('.xlsx') || fileName.endsWith('.csv')) {\r\n if (fileName.endsWith('.xls')) {\r\n fileName = fileName.replaceAll('.xls', '.xlsx');\r\n }\r\n\r\n if (fileName.endsWith('.csv')) {\r\n fileName = fileName.replaceAll('.csv', '.xlsx');\r\n }\r\n }\r\n\r\n else {\r\n fileName += '.xlsx';\r\n }\r\n\r\n const WORK_SHEET = XLSX.utils.json_to_sheet(data);\r\n const WORK_BOOK = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(WORK_BOOK, WORK_SHEET, sheetName);\r\n XLSX.writeFile(WORK_BOOK, fileName);\r\n }\r\n\r\n\r\n /** Convert file to string base64 */\r\n public static ConvertToBase64(file: File) {\r\n return new Promise<string>(Resolve => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n\r\n reader.onload = () => {\r\n Resolve(reader.result?.toString() || '');\r\n }\r\n\r\n reader.onerror = () => Resolve('');\r\n });\r\n }\r\n}","import { IMenuOptionSelected } from \"coer-elements/interfaces\";\r\n\r\nexport class Menu {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static SetSelectedOption(menu: IMenuOptionSelected): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { menu });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static GetSelectedOption(): IMenuOptionSelected | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('menu')) {\r\n return storage.menu;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}","import { inject } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\nimport { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Breadcrumbs } from \"./breadcrumbs.class\";\r\nimport { Tools } from \"./tools\";\r\n\r\nexport class Source {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Set(page: string): void {\r\n const ROUTER = inject(Router);\r\n\r\n let path = ROUTER.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n Breadcrumbs.Add(page, path);\r\n\r\n const breadcrumbs = Breadcrumbs.Get();\r\n\r\n if(breadcrumbs.length >= 2) {\r\n breadcrumbs.pop();\r\n const breadcrumb = breadcrumbs.pop()!;\r\n this.Save({ page: breadcrumb.page, path: breadcrumb.path });\r\n }\r\n\r\n else this.Save(null);\r\n }\r\n\r\n\r\n /** */\r\n private static Save(source: IAppSource | null): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { source });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IAppSource | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('source')) {\r\n return storage.source;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n public static GetRoot(): IAppSource | null {\r\n const breadcrumbs = Breadcrumbs.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\r\n public static SetPageResponse<T>(pageResponse: T): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { pageResponse });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static GetPageResponse<T>(): T | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n return Tools.BreakReference(storage.pageResponse);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n public static ClearPageResponse(): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n delete storage.pageResponse;\r\n }\r\n\r\n storage = Object.assign({}, storage);\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Reset(): void {\r\n sessionStorage.removeItem(this.storage);\r\n }\r\n}","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { AfterViewInit, Component, Inject, inject, OnDestroy } from '@angular/core';\r\nimport { IAppSource, IBreadcrumb, IGoBack } from 'coer-elements/interfaces';\r\nimport { GridTemplates } from './coer-grid.templates';\r\nimport { CoerAlert } from './coer-alert/coer-alert.component';\r\nimport { Breadcrumbs } from './breadcrumbs.class';\r\nimport { Source } from './source.class';\r\nimport { Tools } from './tools';\r\n\r\n@Component({ template: '' })\r\nexport class Page implements AfterViewInit, OnDestroy {\r\n\r\n //Injection\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly router = inject(Router);\r\n private readonly activatedRoute = inject(ActivatedRoute);\r\n\r\n /** */\r\n protected isUpdate: boolean = false;\r\n\r\n /** */\r\n protected isLoading: boolean = false;\r\n\r\n /** */\r\n protected isReadyPage: boolean = false;\r\n\r\n /** */\r\n protected enableAnimations: boolean = false;\r\n\r\n /** */\r\n protected routeParams: any;\r\n\r\n /** */\r\n protected queryParams: any;\r\n\r\n /** */\r\n protected breadcrumbs: IBreadcrumb[] = [];\r\n\r\n /** */\r\n protected pageResponse: any = null;\r\n\r\n /** */\r\n protected goBack: IGoBack = { show: false };\r\n\r\n //Private Variables\r\n private _page: string = '';\r\n private _source: IAppSource | null = null;\r\n private _preventDestroy: boolean = false;\r\n\r\n\r\n constructor(@Inject(String) page: string) {\r\n this.SetPageName(page);\r\n this.__SetSource();\r\n this.__GetSource();\r\n this.__GetNavigation();\r\n this.__SetGoBack();\r\n this.GetPageResponse();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.routeParams = this.activatedRoute.snapshot.params;\r\n this.queryParams = this.activatedRoute.snapshot.queryParams;\r\n\r\n setTimeout(() => {\r\n this.isReadyPage = true;\r\n this.RunPage();\r\n setTimeout(() => { this.enableAnimations = true }, 1000);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this._preventDestroy) Source.ClearPageResponse();\r\n }\r\n\r\n /** Main method. Starts after ngAfterViewInit() */\r\n protected RunPage(): void {};\r\n\r\n\r\n /** Rename the last breadcrumb and update the url id */\r\n protected SetPageName(name: string, id: string | number | null = null): void {\r\n this._page = name;\r\n\r\n let path = this.router.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n if (id) {\r\n const PATH_ARRAY = path.split('/');\r\n const PATH_ID = Tools.BreakReference(PATH_ARRAY).pop();\r\n if (PATH_ID) {\r\n PATH_ARRAY[PATH_ARRAY.length - 1] = String(id);\r\n path = PATH_ARRAY.join('/');\r\n }\r\n }\r\n\r\n if (this.breadcrumbs.length > 0) {\r\n this.breadcrumbs[this.breadcrumbs.length - 1].page = name;\r\n this.breadcrumbs[this.breadcrumbs.length - 1].path = path;\r\n Breadcrumbs.SetLast(name, path);\r\n }\r\n\r\n this.router.navigateByUrl(path)\r\n }\r\n\r\n\r\n /** */\r\n private __SetSource(): void {\r\n Source.Set(this._page);\r\n }\r\n\r\n\r\n /** */\r\n private __GetSource(): void {\r\n this._source = Source.Get();\r\n }\r\n\r\n\r\n /** */\r\n protected GetPageResponse(): void {\r\n this.pageResponse = Source.GetPageResponse();\r\n }\r\n\r\n\r\n /** */\r\n private __GetNavigation(): void {\r\n if (this._source) {\r\n this.breadcrumbs = Breadcrumbs.Get().map(item => Object.assign({\r\n page: item.page,\r\n path: item.path,\r\n click: this.GoBack(item.path)\r\n }));\r\n }\r\n\r\n else this.breadcrumbs = [{ page: this._page }];\r\n }\r\n\r\n\r\n /** */\r\n private __SetGoBack(): void {\r\n if (this._source) {\r\n this.goBack = {\r\n show: true,\r\n path: this._source.path,\r\n click: this.GoBack()\r\n };\r\n }\r\n }\r\n\r\n\r\n /** */\r\n private GoBack = (path?: string) => (() => {\r\n if (path) Breadcrumbs.Remove(path);\r\n else Breadcrumbs.RemoveLast();\r\n });\r\n\r\n\r\n /** Navigate to previous page */\r\n protected GoToSource<T>(pageResponse: T | null = null): void {\r\n if(this._source) {\r\n Breadcrumbs.RemoveLast();\r\n this.SetPageResponse(pageResponse);\r\n Tools.Sleep().then(_ => this.router.navigateByUrl(this._source!.path));\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected SetPageResponse<T>(pageResponse: T | null = null): void {\r\n if (Tools.IsNotNull(pageResponse)) {\r\n this._preventDestroy = true;\r\n Source.SetPageResponse(pageResponse);\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected ReloadPage(): void {\r\n Breadcrumbs.RemoveLast();\r\n setTimeout(() => window.location.reload());\r\n }\r\n\r\n\r\n /** */\r\n protected Log(value: any, log: string | null = null): void {\r\n if (Tools.IsNotNull(log)) console.log({ log, value });\r\n else console.log(value);\r\n }\r\n\r\n\r\n //Grid Templates\r\n protected isActiveTemplate = GridTemplates.isActiveTemplate;\r\n protected coerSwitchTemplate = GridTemplates.coerSwitchTemplate;\r\n protected coerTextboxTemplate = GridTemplates.coerTextboxTemplate;\r\n protected coerIconTemplate = GridTemplates.coerIconTemplate;\r\n\r\n\r\n //Tools\r\n protected IsNull = Tools.IsNull;\r\n protected IsNotNull = Tools.IsNotNull;\r\n protected IsOnlyWhiteSpace = Tools.IsOnlyWhiteSpace;\r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace;\r\n}","\r\nimport { IScreenSize } from \"coer-elements/interfaces\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport class Screen {\r\n\r\n public static get WINDOW_WIDTH(): number {\r\n return window.innerWidth;\r\n }\r\n\r\n\r\n public static get WINDOW_HEIGHT(): number {\r\n return window.innerHeight;\r\n }\r\n\r\n\r\n public static get DEVICE_WIDTH(): number {\r\n return window.screen.width;\r\n }\r\n\r\n\r\n public static get DEVICE_HEIGHT(): number {\r\n return window.screen.height;\r\n }\r\n\r\n\r\n public static get BREAKPOINT(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' {\r\n if (window.innerWidth < 576) return 'xs';\r\n else if (window.innerWidth >= 576 && window.innerWidth < 768) return 'sm';\r\n else if (window.innerWidth >= 768 && window.innerWidth < 992) return 'md';\r\n else if (window.innerWidth >= 992 && window.innerWidth < 1200) return 'lg';\r\n else if (window.innerWidth >= 1200 && window.innerWidth < 1400) return 'xl';\r\n else return 'xxl';\r\n }\r\n\r\n\r\n /** */\r\n public static Resize = new Observable<IScreenSize>(subscriber => {\r\n window.addEventListener(\"load\", () => {\r\n window.dispatchEvent(new Event('resize'));\r\n });\r\n\r\n window.onresize = () => {\r\n subscriber.next({\r\n width: this.WINDOW_WIDTH,\r\n height: this.WINDOW_HEIGHT,\r\n breakpoin: this.BREAKPOINT\r\n });\r\n }\r\n });\r\n\r\n\r\n /** */\r\n public static BackButtonBrowser = new Observable<string>(subscriber => {\r\n window.addEventListener('popstate', popStateEvent => {\r\n if (popStateEvent.state && popStateEvent.target) {\r\n subscriber.next((popStateEvent.target as any).location.href);\r\n }\r\n });\r\n });\r\n}","import { inject } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse, HttpEvent, HttpRequest } from \"@angular/common/http\";\r\nimport { CoerAlert } from \"./coer-alert/coer-alert.component\";\r\nimport { IHttpRequest, IHttpResponse } from \"coer-elements/interfaces\";\r\nimport { Tools } from \"./tools\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nexport class Service {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly http = inject(HttpClient);\r\n\r\n protected httpCode = {\r\n Ok: 200,\r\n Created: 201,\r\n NoContent: 204,\r\n BadRequest: 400,\r\n Unauthorize: 401,\r\n NotFound: 404,\r\n NotAllowed: 405,\r\n NotAcceptable: 406,\r\n Conflict: 409,\r\n PayloadTooLarge: 413,\r\n InnerError: 500\r\n }\r\n\r\n\r\n //Subscriptions\r\n private _GET$!: Subscription;\r\n private _POST$!: Subscription;\r\n private _PUT$!: Subscription;\r\n private _PATCH$!: Subscription;\r\n private _DELETE$!: Subscription;\r\n\r\n\r\n /** */\r\n private ReleaseSubscription(subscription: Subscription): void {\r\n if (subscription && !subscription.closed) subscription.unsubscribe();\r\n }\r\n\r\n\r\n /** HTTP GET */\r\n protected HTTP_GET<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._GET$);\r\n \r\n this._GET$ = this.http.request<T>(new HttpRequest(\"GET\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._GET$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._GET$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"GET\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** HTTP POST */\r\n protected HTTP_POST<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._POST$);\r\n \r\n this._POST$ = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._POST$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._POST$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** HTTP PUT */\r\n protected HTTP_PUT<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._PUT$);\r\n \r\n this._PUT$ = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PUT$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._PUT$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** HTTP PATCH */\r\n protected HTTP_PATCH<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._PATCH$);\r\n \r\n this._PATCH$ = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** HTTP DELETE */\r\n protected HTTP_DELETE<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._DELETE$);\r\n \r\n this._DELETE$ = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private AlertError(httpError: HttpErrorResponse, message?: string): void {\r\n if (httpError.status >= 500) {\r\n if (Tools.IsNotOnlyWhiteSpace(message)) {\r\n this.alert.Error(message, `BUG ${httpError.status}`, 'fa-solid fa-bug', null);\r\n }\r\n }\r\n\r\n else if (httpError.status < 500) {\r\n switch(httpError.status) {\r\n case 400: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');\r\n break;\r\n }\r\n\r\n case 401: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');\r\n break;\r\n }\r\n\r\n case 404: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');\r\n break;\r\n }\r\n\r\n case 405: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');\r\n break;\r\n }\r\n\r\n case 406: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');\r\n break;\r\n }\r\n\r\n case 409: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');\r\n break;\r\n }\r\n\r\n case 413: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');\r\n break;\r\n }\r\n\r\n default: {\r\n if (httpError.status <= 0) {\r\n this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);\r\n }\r\n\r\n else this.alert.Warning(httpError.error?.message || httpError.error);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;AACA,MAAM,gBAAgB,GAAG,MAAM,CAAM,EAAE,CAAC,CAAC;AAE5B,MAAA,KAAK,GAAG;;AAEjB,IAAA,OAAO,EAAE,CAAC,IAAe,GAAA,aAAa,KAAI;QACtC,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;QAC7B,OAAO,IAAI,GAAG,CAAA,qCAAA,CAAuC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI;AACzE,YAAA,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;YACnD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;YAC5B,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,MAAM,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;AAClE,SAAC,CAAC,CAAA;KACL;;AAID,IAAA,MAAM,EAAE,CAAI,KAA2B,KAAa;QAChD,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC;QACrC,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;AAChC,QAAA,OAAO,KAAK,CAAC;KAChB;;AAID,IAAA,SAAS,EAAE,CAAI,KAA2B,KAAa;QACnD,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,KAAK,CAAC;QACtC,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,KAAK,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC;KACf;;AAID,IAAA,gBAAgB,EAAE,CAAI,KAA2B,KAAa;QAC1D,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC;QACrC,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;QAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;AAClE,QAAA,OAAO,KAAK,CAAC;KAChB;;AAID,IAAA,mBAAmB,EAAE,CAAI,KAA2B,KAAa;QAC7D,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,KAAK,CAAC;QACtC,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,KAAK,CAAC;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;AAAE,YAAA,OAAO,KAAK,CAAC;AACnE,QAAA,OAAO,IAAI,CAAC;KACf;;AAID,IAAA,cAAc,EAAE,CAAI,MAAS,KAAO;QAChC,IAAI,MAAM,KAAK,IAAI;AAAE,YAAA,OAAO,MAAM,CAAC;QACnC,IAAI,OAAO,MAAM,KAAK,WAAW;AAAE,YAAA,OAAO,MAAM,CAAC;QACjD,IAAI,OAAO,MAAM,KAAK,QAAQ;AAAE,YAAA,OAAO,MAAM,CAAC;QAC9C,IAAI,OAAO,MAAM,KAAK,QAAQ;AAAE,YAAA,OAAO,MAAM,CAAC;QAC9C,IAAI,OAAO,MAAM,KAAK,SAAS;AAAE,YAAA,OAAO,MAAM,CAAC;AAC/C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;QACjD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;KAC/D;;AAID,IAAA,aAAa,EAAE,CAAC,IAAqB,KAAY;AAC7C,QAAA,IAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;QACjC,IAAI,MAAM,GAAa,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/C,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1C,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC3B;;AAID,IAAA,mBAAmB,EAAE,CAAI,GAAyB,KAAc;QAC5D,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,UAAU,CAAC;QACpC,IAAI,OAAO,GAAG,KAAK,WAAW;AAAE,YAAA,OAAO,UAAU,CAAC;QAClD,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,YAAA,OAAO,UAAU,CAAC;QAC/C,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,YAAA,OAAO,UAAU,CAAC;QAC/C,IAAI,OAAO,GAAG,KAAK,SAAS;AAAE,YAAA,OAAO,UAAU,CAAC;QAChD,KAAI,MAAM,QAAQ,IAAI,GAAG;YAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7D,QAAA,OAAO,UAAU,CAAC;KACrB;AAGD;;AAEK;AACL,IAAA,QAAQ,EAAE,CAAI,KAAU,EAAE,GAAG,IAAW,KAAS;QAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpB,YAAA,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;SACzE;QAED,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;KAC3F;;AAID,IAAA,gBAAgB,EAAE,CAAC,IAA+B,KAAY;AAC1D,QAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;QAE5C,MAAM,SAAS,GAAa,EAAE,CAAC;AAC/B,QAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,IAAG,CAAC,KAAK,CAAC;gBAAE,SAAS,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;;gBAC9C,SAAS,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC;AAED,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC7B;;AAID,IAAA,gBAAgB,EAAE,CAAC,IAA+B,KAAY;AAC1D,QAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;QAE5C,MAAM,SAAS,GAAa,EAAE,CAAC;AAC/B,QAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,IAAG,CAAC,KAAK,CAAC;gBAAE,SAAS,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;;gBAC9C,SAAS,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC;AAED,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC7B;;IAID,MAAM,EAAE,CAAI,KAAU,EAAE,QAAgB,EAAE,YAAA,GAAoC,QAAQ,KAAS;QAC3F,QAAQ,YAAY;YAChB,KAAK,QAAQ,EAAE;gBACX,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,KAAI;oBACjC,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;wBAAE,OAAO,CAAC,CAAC,CAAC;yBAC9F,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;AAAE,wBAAA,OAAO,CAAC,CAAC;;AAClG,wBAAA,OAAO,CAAC,CAAC;AAClB,iBAAC,CAAC,CAAC;aACN;YAED,KAAK,QAAQ,EAAE;gBACX,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aACpF;SACJ;KACJ;;IAID,UAAU,EAAE,CAAI,KAAU,EAAE,QAAgB,EAAE,YAAA,GAAoC,QAAQ,KAAS;QAC/F,QAAQ,YAAY;YAChB,KAAK,QAAQ,EAAE;gBACX,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,KAAI;oBACjC,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;AAAE,wBAAA,OAAO,CAAC,CAAC;yBAC7F,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;wBAAE,OAAO,CAAC,CAAC,CAAC;;AACnG,wBAAA,OAAO,CAAC,CAAC;AAClB,iBAAC,CAAC,CAAC;aACN;YAED,KAAK,QAAQ,EAAE;gBACX,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;aACpF;SACJ;KACJ;;AAID,IAAA,gBAAgB,EAAE,CAAC,KAAyC,EAAE,QAAmB,GAAA,CAAC,KAAY;AAC1F,QAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AACvD,YAAA,OAAO,GAAG,CAAC;SACd;QAED,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,YAAY,GAAG,EAAE,CAAC;AACtB,QAAA,KAAK,GAAG,KAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAE9C,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE;YACvC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAEjE,YAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AACd,gBAAA,MAAM,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;gBAC/C,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC9D,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE;oBAAE,YAAY,IAAI,GAAG,CAAC;gBACrD,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACnD,gBAAA,YAAY,GAAG,CAAA,CAAA,EAAI,YAAY,CAAA,CAAE,CAAC;aACrC;SACJ;aAEI;YACD,YAAY,GAAG,KAAK,CAAC;SACxB;QAED,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,mBAAmB,GAAa,EAAE,CAAC;AACzC,QAAA,KAAI,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE;AAChD,YAAA,IAAI,OAAO,IAAI,CAAC,EAAE;AACd,gBAAA,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9B,OAAO,GAAG,CAAC,CAAC;aACf;AAED,YAAA,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,YAAA,EAAE,OAAO,CAAC;SACb;QAED,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtD,QAAA,OAAO,CAAG,EAAA,YAAY,CAAG,EAAA,YAAY,EAAE,CAAC;KAC3C;;IAID,KAAK,EAAE,CAAC,YAAuB,GAAA,CAAC,EAAE,SAA2B,GAAA,IAAI,KAAI;AACjE,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACzB,YAAA,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;SACpE;;AAEI,YAAA,OAAO,IAAI,OAAO,CAAO,OAAO,IAAG;AACpC,gBAAA,SAAS,GAAG,SAAU,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gBAE1D,IAAI,gBAAgB,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AAC9C,oBAAA,aAAa,CAAC,gBAAgB,EAAE,CAAC,SAAU,CAAC,CAAC,CAAC;iBACjD;gBAED,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE;AACnD,oBAAA,CAAC,SAAU,GAAG,UAAU,CAAC,MAAK;AAC1B,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,aAAa,CAAC,gBAAgB,EAAE,CAAC,SAAU,CAAC,CAAC,CAAC;AAC9C,wBAAA,MAAM,UAAU,GAAG,EAAE,GAAG,gBAAgB,EAAE,EAAE,CAAC;AAC7C,wBAAA,OAAO,UAAU,CAAC,SAAU,CAAC,CAAC;wBAC9B,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;qBAC3C,EAAE,YAAY,CAAC;AACnB,iBAAA,CAAC,CAAC,CAAC;AACR,aAAC,CAAC,CAAC;KACN;;;MCnOQ,MAAM,CAAA;aAEQ,IAAI,CAAA,IAAA,GAAK,SAAS,CAAC,EAAA;aACnB,IAAI,CAAA,IAAA,GAAK,SAAS,CAAC,EAAA;aACnB,IAAK,CAAA,KAAA,GAAI,SAAS,CAAC,EAAA;aACnB,IAAM,CAAA,MAAA,GAAG,SAAS,CAAC,EAAA;aACnB,IAAG,CAAA,GAAA,GAAM,SAAS,CAAC,EAAA;aACnB,IAAK,CAAA,KAAA,GAAI,SAAS,CAAC,EAAA;aACnB,IAAK,CAAA,KAAA,GAAI,SAAS,CAAC,EAAA;aACnB,IAAM,CAAA,MAAA,GAAG,SAAS,CAAC,EAAA;aACnB,IAAM,CAAA,MAAA,GAAG,SAAS,CAAC,EAAA;;aAIlB,IAAS,CAAA,SAAA,GAAG,IAAI,GAAG,CAAiB;QACxD,CAAC,MAAM,EAAI,SAAS,CAAC;QACrB,CAAC,MAAM,EAAI,SAAS,CAAC;QACrB,CAAC,OAAO,EAAG,SAAS,CAAC;QACrB,CAAC,QAAQ,EAAE,SAAS,CAAC;QACrB,CAAC,KAAK,EAAK,SAAS,CAAC;QACrB,CAAC,OAAO,EAAG,SAAS,CAAC;QACrB,CAAC,OAAO,EAAG,SAAS,CAAC;QACrB,CAAC,QAAQ,EAAE,SAAS,CAAC;QACrB,CAAC,QAAQ,EAAE,SAAS,CAAC;AACxB,KAAA,CAAC,CAAC,EAAA;;aAIqB,IAAS,CAAA,SAAA,GAAG,IAAI,GAAG,CAAmB;QAC1D,CAAC,MAAM,EAAY,CAAC,EAAE,EAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC,MAAM,EAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC,OAAO,EAAW,CAAC,EAAE,EAAG,GAAG,EAAE,EAAE,CAAE,CAAC;QACnC,CAAC,QAAQ,EAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAG,CAAC;QACnC,CAAC,KAAK,EAAa,CAAC,GAAG,EAAE,EAAE,EAAG,EAAE,CAAE,CAAC;QACnC,CAAC,OAAO,EAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC,OAAO,EAAW,CAAC,EAAE,EAAG,EAAE,EAAG,EAAE,CAAE,CAAC;QACnC,CAAC,QAAQ,EAAU,CAAC,GAAG,EAAE,EAAE,EAAG,EAAE,CAAE,CAAC;QACnC,CAAC,QAAQ,EAAU,CAAC,GAAG,EAAE,EAAE,EAAG,GAAG,CAAC,CAAC;AACtC,KAAA,CAAC,CAAC,EAAA;;AAIW,IAAA,SAAA,IAAA,CAAA,iBAAiB,GAAG,MAAc,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAA;;IAI9G,OAAO,eAAe,CAAC,QAAgB,EAAA;QAC1C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,OAAO,GAAW,CAAC,CAAC;AAExB,QAAA,OAAO,OAAO,GAAG,QAAQ,EAAE;YACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE;AACzC,gBAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnB,IAAI,EAAE,OAAO,KAAK,QAAQ;oBAAE,MAAM;aACrC;SACJ;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;;IAIM,OAAO,eAAe,CAAC,QAAgB,EAAA;QAC1C,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,KAAK,GAAW,GAAG,CAAC;QACxB,IAAI,OAAO,GAAW,CAAC,CAAC;AACxB,QAAA,IAAI,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAE7D,QAAA,OAAO,OAAO,GAAG,QAAQ,EAAE;AACvB,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE;gBACnD,MAAM,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,KAAK,CAAC,CAAC,CAAC,CAAA,EAAA,EAAK,KAAK,CAAC,CAAC,CAAC,CAAA,EAAA,EAAK,KAAK,CAAC,CAAC,CAAC,CAAK,EAAA,EAAA,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;gBAErE,IAAI,KAAK,KAAK,SAAS;oBAAE,KAAK,IAAI,GAAG,CAAC;gBACtC,IAAI,EAAE,OAAO,KAAK,QAAQ;oBAAE,MAAM;aACrC;SACJ;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;;;MCnEQ,SAAS,CAAA;;IAGX,OAAO,CAAC,OAAyB,GAAA,IAAI,EAAE,KAAA,GAAuB,IAAI,EAAE,IAAsB,GAAA,IAAI,EAAE,QAAA,GAA0B,IAAI,EAAA;;AAEjI,QAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,SAAS,CAAC;QACrD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAE,CAAC;AAC1E,QAAA,iBAAiB,CAAC,WAAW,GAAG,KAAK,CAAC;;QAGtC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAM,EAAE,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAC7D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAE,CAAC;AACxE,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;;AAGrC,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,GAAG,EAAE,CAAC;QACxC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAE,CAAC;AAC9E,QAAA,mBAAmB,CAAC,SAAS,GAAG,OAAQ,CAAC;;QAGzC,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAE,CAAC;AAC/D,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,EAAE,CAAC;KAChB;;IAIM,KAAK,CAAC,OAAyB,GAAA,IAAI,EAAE,KAAA,GAAuB,IAAI,EAAE,IAAsB,GAAA,IAAI,EAAE,QAAA,GAA0B,IAAI,EAAA;;AAE/H,QAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,OAAO,CAAC;QACnD,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAE,CAAC;AACtE,QAAA,eAAe,CAAC,WAAW,GAAG,KAAK,CAAC;;QAGpC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAM,EAAE,IAAI,EAAE,gCAAgC,CAAC,CAAC;QACpE,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAE,CAAC;AACpE,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;;AAGnC,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,GAAG,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAE,CAAC;AACvE,QAAA,cAAc,CAAC,SAAS,GAAG,OAAQ,CAAC;;QAGpC,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAE,CAAC;AAC3D,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEvC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,EAAE,CAAC;KAChB;;IAIM,IAAI,CAAC,OAAyB,GAAA,IAAI,EAAE,KAAA,GAAuB,IAAI,EAAE,IAAsB,GAAA,IAAI,EAAE,QAAA,GAA0B,IAAI,EAAA;;AAE9H,QAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,MAAM,CAAC;QAClD,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAE,CAAC;AACpE,QAAA,cAAc,CAAC,WAAW,GAAG,KAAK,CAAC;;QAGnC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAM,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAE,CAAC;AAClE,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;;AAGlC,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,GAAG,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAE,CAAC;AACrE,QAAA,aAAa,CAAC,SAAS,GAAG,OAAQ,CAAC;;QAGnC,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAE,CAAC;AACzD,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC7D,KAAK,CAAC,IAAI,EAAE,CAAC;KAChB;;IAIM,OAAO,CAAC,OAAyB,GAAA,IAAI,EAAE,KAAA,GAAuB,IAAI,EAAE,IAAsB,GAAA,IAAI,EAAE,QAAA,GAA0B,IAAI,EAAA;;AAEjI,QAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,SAAS,CAAC;QACrD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAE,CAAC;AAC1E,QAAA,iBAAiB,CAAC,WAAW,GAAG,KAAK,CAAC;;QAGtC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAM,EAAE,IAAI,EAAE,sCAAsC,CAAC,CAAC;QAC1E,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAE,CAAC;AACxE,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;;AAGrC,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,GAAG,EAAE,CAAC;QACxC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAE,CAAC;AAC3E,QAAA,gBAAgB,CAAC,SAAS,GAAG,OAAQ,CAAC;;QAGtC,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAE,CAAC;AAC/D,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,EAAE,CAAC;KAChB;;AAIS,IAAA,KAAK,CAAC,KAAuE,EAAA;AACnF,QAAA,OAAO,IAAI,OAAO,CAAO,OAAO,IAAG;YAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAE,CAAC;YAChD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC3D,KAAK,CAAC,IAAI,EAAE,CAAC;AAEb,YAAA,UAAU,CAAC,MAAK,EAAG,OAAO,EAAE,CAAA,EAAE,EAAE,GAAG,CAAC,CAAC;AACzC,SAAC,CAAC,CAAA;KACL;;IAIM,OAAO,CACV,UAAkB,UAAU,EAC5B,YAAuD,SAAS,EAChE,OAAsB,IAAI,EAAA;AAC1B,QAAA,OAAO,IAAI,OAAO,CAAU,OAAO,IAAG;AAClC,YAAA,IAAI,KAAa,CAAC;AAClB,YAAA,IAAI,QAAkD,CAAC;YACvD,QAAO,SAAS;AACZ,gBAAA,KAAK,QAAQ;oBAAE;AACX,wBAAA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;4BAAE,IAAI,GAAG,wBAAwB,CAAC;wBACxD,QAAQ,GAAG,OAAO,CAAC;AACnB,wBAAA,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;wBACnB,MAAM;qBACT;oBAAA,CAAC;AAEF,gBAAA,KAAK,SAAS;oBAAE;AACZ,wBAAA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;4BAAE,IAAI,GAAG,iBAAiB,CAAC;wBACjD,QAAQ,GAAG,MAAM,CAAC;AAClB,wBAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;wBACrB,MAAM;qBACT;oBAAA,CAAC;AAEF,gBAAA,KAAK,MAAM;oBAAE;AACT,wBAAA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;4BAAE,IAAI,GAAG,gBAAgB,CAAC;wBAChD,QAAQ,GAAG,OAAO,CAAC;AACnB,wBAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;wBACrB,MAAK;qBACR;oBAAA,CAAC;gBAEF,SAAS;AACL,oBAAA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;wBAAE,IAAI,GAAG,8BAA8B,CAAC;oBAC9D,QAAQ,GAAG,SAAS,CAAC;AACrB,oBAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;oBACtB,MAAM;iBACT;aACJ;YAED,QAAO,IAAI;AACP,gBAAA,KAAK,QAAQ;oBAAE,IAAI,GAAG,yBAAyB,CAAC;oBAAC,MAAM;aAC1D;YAED,IAAI,CAAC,IAAI,CAAC;AACN,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,SAAS,EAAE,aAAa;AACxB,gBAAA,QAAQ,EAAE,CAAA,UAAA,EAAa,IAAI,CAAA,gBAAA,EAAmB,KAAK,CAAS,OAAA,CAAA;AAC5D,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,iBAAiB,EAAE,IAAI;AACvB,gBAAA,iBAAiB,EAAE,KAAK;AACxB,gBAAA,kBAAkB,EAAE,KAAK;AACzB,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,iBAAiB,EAAE,KAAK;AACxB,gBAAA,cAAc,EAAE,KAAK;AACrB,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,WAAW,EAAE;AACT,oBAAA,UAAU,EAAE,oBAAoB;AAChC,oBAAA,aAAa,EAAE,oBAAoB;AACtC,iBAAA;aACJ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,UAAU,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7D,SAAC,CAAC,CAAC;KACN;;IAIO,OAAO,CAAC,OAAoB,EAAE,IAAY,EAAA;AAC9C,QAAA,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;AACxD,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,gBAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,gBAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACjC;SACJ;AAED,QAAA,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,cAAc,GAAW,GAAG,CAAC;AACnC,QAAA,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChC,KAAK,MAAM,IAAI,IAAI,OAAO;AAAE,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC3D;;AAEI,YAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC;;IAIO,WAAW,CAAC,OAAoB,EAAE,QAAuB,EAAA;AAC7D,QAAA,OAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAC5C,QAAA,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;AAEzC,QAAA,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE;YAC1B,IAAI,QAAQ,GAAG,IAAI;gBAAE,QAAQ,GAAG,IAAI,CAAC;AACrC,YAAA,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YACjD,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC3D;;AAEI,YAAA,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;KAC1D;;AAIO,IAAA,OAAO,CAAC,KAAa,EAAE,IAAmB,EAAE,WAAmB,EAAA;QACnE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE;AAC5B,YAAA,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAEhD,QAAO,KAAK;AACR,gBAAA,KAAK,SAAS,EAAE,OAAO,0CAA0C,CAAC;AAClE,gBAAA,KAAK,QAAQ,EAAE,OAAO,0CAA0C,CAAC;AACjE,gBAAA,KAAK,SAAS,EAAE,OAAO,0CAA0C,CAAC;AAClE,gBAAA,KAAK,SAAS,EAAE,OAAO,4CAA4C,CAAC;AACpE,gBAAA,KAAK,UAAU,EAAE,OAAO,4CAA4C,CAAC;AACrE,gBAAA,KAAK,QAAQ,EAAE,OAAO,yBAAyB,CAAC;AAChD,gBAAA,KAAK,SAAS,EAAE,OAAO,yBAAyB,CAAC;AACjD,gBAAA,SAAS,OAAO,WAAW,CAAC;aAC/B;SACJ;AAED,QAAA,OAAO,IAAI,CAAC;KACf;+GA9OQ,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,SAAS,sECZtB,+rEAuDQ,EAAA,MAAA,EAAA,CAAA,86IAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD3CK,SAAS,EAAA,UAAA,EAAA,CAAA;kBANrB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cAGV,IAAI,EAAA,QAAA,EAAA,+rEAAA,EAAA,MAAA,EAAA,CAAA,86IAAA,CAAA,EAAA,CAAA;;;MEPP,WAAW,CAAA;aAEI,IAAO,CAAA,OAAA,GAAG,aAAa,CAAC,EAAA;;AAGzC,IAAA,OAAO,GAAG,CAAC,IAAY,EAAE,IAAY,EAAA;AACxC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/B,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACvB,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1B;KACJ;;AAIM,IAAA,OAAO,GAAG,GAAA;QACb,IAAI,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;QAE1D,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE9B,YAAA,IAAI,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;gBACvC,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;aACpD;SACJ;AAED,QAAA,OAAO,EAAE,CAAC;KACb;;AAIM,IAAA,OAAO,QAAQ,GAAA;AAClB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/B,QAAA,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,EAAG,GAAG,IAAI,CAAC;KACjE;;IAIM,OAAO,IAAI,CAAC,WAAyB,EAAA;QACxC,IAAI,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;AAC1D,QAAA,IAAI,OAAO;AAAE,YAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C,QAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;AACtD,QAAA,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;KACjE;;IAIM,OAAO,MAAM,CAAC,IAAY,EAAA;AAC7B,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC7B,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAEpG,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACZ,YAAA,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1B;KACJ;;AAIM,IAAA,OAAO,OAAO,CAAC,IAAY,EAAE,IAAY,EAAA;AAC5C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE/B,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrD,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1B;KACJ;;AAIM,IAAA,OAAO,UAAU,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE/B,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,WAAW,CAAC,GAAG,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1B;KACJ;;;AChFQ,MAAA,aAAa,GAAG;;AAGzB,IAAA,gBAAgB,EAAE,CAAC,IAAoB,KAAY;AAC/C,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,OAAO,CAAA;;;;aAIN,CAAC;SACL;aAEI;YACD,OAAO,CAAA;;;;aAIN,CAAC;SACL;KACJ;;AAID,IAAA,kBAAkB,EAAE,CAAC,IAAoB,MAAuB;AAC5D,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,UAAW,CAAE,CAAA;KACpD,CAAC;;AAIF,IAAA,mBAAmB,EAAE,CAAC,IAAoB,MAAwB;AAC9D,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;KACpC,CAAC;;AAIF,IAAA,gBAAgB,EAAE,CAAC,IAAY,EAAE,KAAgB,GAAA,OAAO,KAAY;AAChE,QAAA,OAAO,CAAa,UAAA,EAAA,IAAI,CAA6C,0CAAA,EAAA,KAAK,SAAS,CAAC;KACvF;;;ACtCQ,MAAA,aAAa,GAAG,CAAI,SAAY,KAAI;IAC7C,OAAO;AACH,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,WAAW,EAAE,UAAU,CAAC,MAAM,SAAS,CAAC;AACxC,QAAA,KAAK,EAAE,IAAI;KACd,CAAA;AACL,EAAC;MAGY,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;QAIY,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;KAkDvC;AA7CG,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;;AAIS,IAAA,QAAQ,CAAC,KAAU,EAAA;AACzB,QAAA,IAAG,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,EAAE;AACxC,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC5B;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;;AAIM,IAAA,UAAU,CAAC,SAAkB,EAAA;AAChC,QAAA,IAAG,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;AACtC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SAC9B;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC/B;;AAIM,IAAA,UAAU,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;;AAIM,IAAA,gBAAgB,CAAC,QAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;KAChC;;AAIM,IAAA,iBAAiB,CAAC,QAAkB,EAAA;AACvC,QAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;KAC9B;;IAIM,gBAAgB,CAAC,UAAmB,EAAA,GAAU;AACxD;;MChEY,QAAQ,CAAA;;AAEV,IAAA,OAAO,SAAS,GAAA;AACnB,QAAA,OAAO,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC;KAC/B;;IAIM,OAAO,WAAW,CAAC,IAAmC,EAAA;AACzD,QAAA,KAAK,OAAO,IAAI,KAAK,QAAQ;YAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;KACrD;;IAIM,OAAO,WAAW,CAAC,IAAmC,EAAA;AACzD,QAAA,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAClC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;KAC1F;;IAIM,OAAO,KAAK,CAAC,IAAmC,EAAA;AACnD,QAAA,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAClC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;KAC/F;;IAIM,OAAO,aAAa,CAAC,IAAmC,EAAA;AAC3D,QAAA,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAClC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KACrE;AACJ;;MChCY,KAAK,CAAA;aACS,IAAgB,CAAA,gBAAA,GAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAA;;IAGpE,OAAO,YAAY,CAAC,IAAU,EAAA;AACjC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;AAE3B,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACxB,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAa,CAAC;AAE7C,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,gBAAA,IAAI,SAAS,GAAG,MAAM,CAAC,GAAG,EAAG,CAAC;gBAC9B,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC3C,gBAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;AAAE,oBAAA,OAAO,SAAS,CAAC;aAC9C;SACJ;AAED,QAAA,OAAO,IAAI,CAAC;KACf;;IAIM,OAAO,OAAO,CAAC,IAAU,EAAA;QAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAE3C,QAAA,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;cAC3B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAU,CAAC;cAC1C,KAAK,CAAC;KACf;;IAIM,OAAO,SAAS,CAAI,IAAU,EAAA;AACjC,QAAA,OAAO,IAAI,OAAO,CAAoC,OAAO,IAAG;YAC5D,IAAI,OAAO,GAAa,EAAE,CAAC;YAC3B,IAAI,IAAI,GAAQ,EAAE,CAAC;AAEnB,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAChC,YAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAE/B,YAAA,MAAM,CAAC,MAAM,GAAG,MAAK;gBACjB,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAa,CAAC,CAAC;gBAEvD,IAAI,SAAS,EAAE;oBACX,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC1C,oBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtD,IAAI,SAAS,GAAU,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;wBACnD,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7I,qBAAA,CAAC,CAAC;;oBAGH,KAAI,MAAM,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;wBAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;qBAC1F;;AAGD,oBAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;oBAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;AAEb,oBAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;wBAClB,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAM,GAAG,CAAC,CAAC;AAC5C,wBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1B,wBAAA,OAAO,IAAI,CAAC;AAChB,qBAAC,CAAC,CAAC;iBACN;AAED,gBAAA,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/B,aAAC,CAAA;AAED,YAAA,MAAM,CAAC,OAAO,GAAG,QAAQ,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA,EAAE,CAAA;AACzD,SAAC,CAAC,CAAC;KACN;;IAIM,OAAO,WAAW,CAAI,IAAS,EAAE,QAAmB,GAAA,aAAa,EAAE,SAAA,GAAoB,QAAQ,EAAA;AAClG,QAAA,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAA,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACrF,YAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC3B,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aACnD;AAED,YAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC3B,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aACnD;SACJ;aAEI;YACD,QAAQ,IAAI,OAAO,CAAC;SACvB;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KACvC;;IAIM,OAAO,eAAe,CAAC,IAAU,EAAA;AACpC,QAAA,OAAO,IAAI,OAAO,CAAS,OAAO,IAAG;AACjC,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAChC,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAE3B,YAAA,MAAM,CAAC,MAAM,GAAG,MAAK;gBACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,aAAC,CAAA;YAED,MAAM,CAAC,OAAO,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACN;;;MCjHQ,IAAI,CAAA;aAEW,IAAO,CAAA,OAAA,GAAG,aAAa,CAAC,EAAA;;IAGzC,OAAO,iBAAiB,CAAC,IAAyB,EAAA;QACrD,IAAI,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;AAC1D,QAAA,IAAI,OAAO;AAAE,YAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C,QAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,QAAA,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;KACjE;;AAIM,IAAA,OAAO,iBAAiB,GAAA;QAC3B,IAAI,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;QAE1D,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE9B,YAAA,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;gBAChC,OAAO,OAAO,CAAC,IAAI,CAAC;aACvB;SACJ;AAED,QAAA,OAAO,IAAI,CAAC;KACf;;;MCtBQ,MAAM,CAAA;aAES,IAAO,CAAA,OAAA,GAAG,aAAa,CAAC,EAAA;;IAGzC,OAAO,GAAG,CAAC,IAAY,EAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAE9B,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAElD,QAAA,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAE5B,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AAEtC,QAAA,IAAG,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;YACxB,WAAW,CAAC,GAAG,EAAE,CAAC;AAClB,YAAA,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAG,CAAC;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;SAC/D;;AAEI,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxB;;IAIO,OAAO,IAAI,CAAC,MAAyB,EAAA;QACzC,IAAI,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;AAC1D,QAAA,IAAI,OAAO;AAAE,YAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C,QAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACjD,QAAA,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;KACjE;;AAIM,IAAA,OAAO,GAAG,GAAA;QACb,IAAI,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;QAE1D,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE9B,YAAA,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBAClC,OAAO,OAAO,CAAC,MAAM,CAAC;aACzB;SACJ;AAED,QAAA,OAAO,IAAI,CAAC;KACf;;AAIM,IAAA,OAAO,OAAO,GAAA;AACjB,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AACtC,QAAA,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,EAAG,GAAG,IAAI,CAAC;KACjE;;IAIM,OAAO,eAAe,CAAI,YAAe,EAAA;QAC5C,IAAI,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;AAC1D,QAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;AACvD,QAAA,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;KACjE;;AAIM,IAAA,OAAO,eAAe,GAAA;QACzB,IAAI,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;QAE1D,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE9B,YAAA,IAAI,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;gBACxC,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;aACrD;SACJ;AAED,QAAA,OAAO,IAAI,CAAC;KACf;;AAIM,IAAA,OAAO,iBAAiB,GAAA;QAC3B,IAAI,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;AAC1D,QAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE9B,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;YACxC,OAAO,OAAO,CAAC,YAAY,CAAC;SAC/B;QAED,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACrC,QAAA,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;KACjE;;AAIM,IAAA,OAAO,KAAK,GAAA;AACf,QAAA,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3C;;;MC/FQ,IAAI,CAAA;AAwCb,IAAA,WAAA,CAA4B,IAAY,EAAA;;AArCrB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;;QAG/C,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;;QAG1B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;;QAG3B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;;QAG7B,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;;QASlC,IAAW,CAAA,WAAA,GAAkB,EAAE,CAAC;;QAGhC,IAAY,CAAA,YAAA,GAAQ,IAAI,CAAC;;AAGzB,QAAA,IAAA,CAAA,MAAM,GAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;QAGpC,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAO,CAAA,OAAA,GAAsB,IAAI,CAAC;QAClC,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;;QAuGjC,IAAM,CAAA,MAAA,GAAG,CAAC,IAAa,MAAM,MAAK;AACtC,YAAA,IAAI,IAAI;AAAE,gBAAA,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;gBAC9B,WAAW,CAAC,UAAU,EAAE,CAAC;AAClC,SAAC,CAAC,CAAC;;AAqCO,QAAA,IAAA,CAAA,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC;AAClD,QAAA,IAAA,CAAA,kBAAkB,GAAG,aAAa,CAAC,kBAAkB,CAAC;AACtD,QAAA,IAAA,CAAA,mBAAmB,GAAG,aAAa,CAAC,mBAAmB,CAAC;AACxD,QAAA,IAAA,CAAA,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC;;AAIlD,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACtB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;AAC1C,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;AArJtD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAED,eAAe,GAAA;QACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC;QAE5D,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,CAAC;AACf,YAAA,UAAU,CAAC,MAAK,EAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7D,SAAC,CAAC,CAAC;KAEN;IAED,WAAW,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;KACzD;;AAGS,IAAA,OAAO,MAAW;;;AAIlB,IAAA,WAAW,CAAC,IAAY,EAAE,EAAA,GAA6B,IAAI,EAAA;AACjE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAElB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAElD,IAAI,EAAE,EAAE;YACJ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;YACvD,IAAI,OAAO,EAAE;AACT,gBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC/C,gBAAA,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC/B;SACJ;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1D,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1D,YAAA,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACnC;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;KAClC;;IAIO,WAAW,GAAA;AACf,QAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;;IAIO,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;KAC/B;;IAIS,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;KAChD;;IAIO,eAAe,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;gBAC3D,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,aAAA,CAAC,CAAC,CAAC;SACP;;AAEI,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAClD;;IAIO,WAAW,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,MAAM,GAAG;AACV,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;AACvB,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;aACvB,CAAC;SACL;KACJ;;IAWS,UAAU,CAAI,eAAyB,IAAI,EAAA;AACjD,QAAA,IAAG,IAAI,CAAC,OAAO,EAAE;YACb,WAAW,CAAC,UAAU,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YACnC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAC1E;KACJ;;;IAIS,eAAe,CAAI,eAAyB,IAAI,EAAA;AACtD,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,YAAA,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;SACxC;KACJ;;;IAIS,UAAU,GAAA;QAChB,WAAW,CAAC,UAAU,EAAE,CAAC;QACzB,UAAU,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;KAC9C;;AAIS,IAAA,GAAG,CAAC,KAAU,EAAE,GAAA,GAAqB,IAAI,EAAA;AAC/C,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;;AACjD,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC3B;AAhLQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAI,kBAwCO,MAAM,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAxCjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAI,oDADM,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FACZ,IAAI,EAAA,UAAA,EAAA,CAAA;kBADhB,SAAS;mBAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;;0BAyCV,MAAM;2BAAC,MAAM,CAAA;;;MC9CjB,MAAM,CAAA;AAER,IAAA,WAAW,YAAY,GAAA;QAC1B,OAAO,MAAM,CAAC,UAAU,CAAC;KAC5B;AAGM,IAAA,WAAW,aAAa,GAAA;QAC3B,OAAO,MAAM,CAAC,WAAW,CAAC;KAC7B;AAGM,IAAA,WAAW,YAAY,GAAA;AAC1B,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;KAC9B;AAGM,IAAA,WAAW,aAAa,GAAA;AAC3B,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KAC/B;AAGM,IAAA,WAAW,UAAU,GAAA;AACxB,QAAA,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG;AAAE,YAAA,OAAO,IAAI,CAAC;aACpC,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG;AAAE,YAAA,OAAO,IAAI,CAAC;aACrE,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG;AAAE,YAAA,OAAO,IAAI,CAAC;aACrE,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;aACtE,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;;AACvE,YAAA,OAAO,KAAK,CAAC;KACrB;;AAIa,IAAA,SAAA,IAAA,CAAA,MAAM,GAAG,IAAI,UAAU,CAAc,UAAU,IAAG;AAC5D,QAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;YACjC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,CAAC,QAAQ,GAAG,MAAK;YACnB,UAAU,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,IAAI,CAAC,YAAY;gBACxB,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;AAC7B,aAAA,CAAC,CAAC;AACP,SAAC,CAAA;AACL,KAAC,CAAC,CAAC,EAAA;;AAIW,IAAA,SAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,UAAU,CAAS,UAAU,IAAG;AAClE,QAAA,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,IAAG;YAChD,IAAI,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE;gBAC7C,UAAU,CAAC,IAAI,CAAE,aAAa,CAAC,MAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAChE;AACL,SAAC,CAAC,CAAC;AACP,KAAC,CAAC,CAAC,EAAA;;;MCpDM,OAAO,CAAA;AAApB,IAAA,WAAA,GAAA;;AAGuB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAEnC,QAAA,IAAA,CAAA,QAAQ,GAAG;AACjB,YAAA,EAAE,EAAE,GAAG;AACP,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,WAAW,EAAE,GAAG;AAChB,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,aAAa,EAAE,GAAG;AAClB,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,eAAe,EAAE,GAAG;AACpB,YAAA,UAAU,EAAE,GAAG;SAClB,CAAA;KA6cJ;;AAjcW,IAAA,mBAAmB,CAAC,YAA0B,EAAA;AAClD,QAAA,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM;YAAE,YAAY,CAAC,WAAW,EAAE,CAAC;KACxE;;AAIS,IAAA,QAAQ,CAAI,OAAwB,EAAE,cAAA,GAA0B,IAAI,EAAA;AAC1E,QAAA,OAAO,IAAI,OAAO,CAAmB,OAAO,IAAG;YAC3C,IAAG,cAAc,EAAE;AACf,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAErC,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACxI,oBAAA,IAAI,EAAE,CAAC,QAA4B,KAAI;AACnC,wBAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACnB,4BAAA,OAAO,CAAC;gCACJ,IAAI,EAAE,KAAK,CAAC,cAAc,CAAI,QAAQ,CAAC,IAAI,CAAC;gCAC5C,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC5B,gCAAA,EAAE,EAAE,IAAI;AACX,6BAAA,CAAC,CAAC;yBACN;qBACJ;AAED,oBAAA,KAAK,EAAE,CAAC,SAA4B,KAAI;AACpC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACrC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAE/C,wBAAA,OAAO,CAAC;AACJ,4BAAA,IAAI,EAAE,EAAS;4BACf,MAAM,EAAE,SAAS,CAAC,MAAM;4BACxB,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK;AACpD,4BAAA,EAAE,EAAE,KAAK;AACZ,yBAAA,CAAC,CAAC;qBACN;oBAED,QAAQ,EAAE,MAAK;AACX,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAErC,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;4BACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;yBAC5C;qBACJ;AACJ,iBAAA,CAAC,CAAC;aACN;iBAEI;AACD,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAChJ,oBAAA,IAAI,EAAE,CAAC,QAA4B,KAAI;AACnC,wBAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACnB,4BAAA,OAAO,CAAC;gCACJ,IAAI,EAAE,KAAK,CAAC,cAAc,CAAI,QAAQ,CAAC,IAAI,CAAC;gCAC5C,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC5B,gCAAA,EAAE,EAAE,IAAI;AACX,6BAAA,CAAC,CAAC;yBACN;qBACJ;AAED,oBAAA,KAAK,EAAE,CAAC,SAA4B,KAAI;AACpC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;wBACvC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAE/C,wBAAA,OAAO,CAAC;AACJ,4BAAA,IAAI,EAAE,EAAS;4BACf,MAAM,EAAE,SAAS,CAAC,MAAM;4BACxB,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK;AACpD,4BAAA,EAAE,EAAE,KAAK;AACZ,yBAAA,CAAC,CAAC;qBACN;oBAED,QAAQ,EAAE,MAAK;AACX,wBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;wBAEvC,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;4BACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;yBAC5C;qBACJ;AACJ,iBAAA,CAAC,CAAC;aACN;AACL,SAAC,CAAC,CAAC;KACN;;AAIS,IAAA,SAAS,CAAI,OAAwB,EAAE,cAAA,GAA0B,IAAI,EAAA;AAC3E,QAAA,OAAO,IAAI,OAAO,CAAmB,OAAO,IAAG;YAC3C,IAAG,cAAc,EAAE;AACf,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEtC,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACxJ,oBAAA,IAAI,EAAE,CAAC,QAA4B,KAAI;AACnC,wBAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACnB,4BAAA,OAAO,CAAC;gCACJ,IAAI,EAAE,KAAK,CAAC,cAAc,CAAI,QAAQ,CAAC,IAAI,CAAC;gCAC5C,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC5B,gCAAA,EAAE,EAAE,IAAI;AACX,6BAAA,CAAC,CAAC;yBACN;qBACJ;AAED,oBAAA,KAAK,EAAE,CAAC,SAA4B,KAAI;AACpC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACtC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAE/C,wBAAA,OAAO,CAAC;AACJ,4BAAA,IAAI,EAAE,EAAS;4BACf,MAAM,EAAE,SAAS,CAAC,MAAM;4BACxB,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK;AACpD,4BAAA,EAAE,EAAE,KAAK;AACZ,yBAAA,CAAC,CAAC;qBACN;oBAED,QAAQ,EAAE,MAAK;AACX,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAEtC,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;4BACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;yBAC5C;qBACJ;AACJ,iBAAA,CAAC,CAAC;aACN;iBAEI;AACD,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/J,oBAAA,IAAI,EAAE,CAAC,QAA4B,KAAI;AACnC,wBAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACnB,4BAAA,OAAO,CAAC;gCACJ,IAAI,EAAE,KAAK,CAAC,cAAc,CAAI,QAAQ,CAAC,IAAI,CAAC;gCAC5C,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC5B,gCAAA,EAAE,EAAE,IAAI;AACX,6BAAA,CAAC,CAAC;yBACN;qBACJ;AAED,oBAAA,KAAK,EAAE,CAAC,SAA4B,KAAI;AACpC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;wBACvC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAE/C,wBAAA,OAAO,CAAC;AACJ,4BAAA,IAAI,EAAE,EAAS;4BACf,MAAM,EAAE,SAAS,CAAC,MAAM;4BACxB,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK;AACpD,4BAAA,EAAE,EAAE,KAAK;AACZ,yBAAA,CAAC,CAAC;qBACN;oBAED,QAAQ,EAAE,MAAK;AACX,wBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;wBAEvC,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;4BACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;yBAC5C;qBACJ;AACJ,iBAAA,CAAC,CAAC;aACN;AACL,SAAC,CAAC,CAAC;KACN;;AAIS,IAAA,QAAQ,CAAI,OAAwB,EAAE,cAAA,GAA0B,IAAI,EAAA;AAC1E,QAAA,OAAO,IAAI,OAAO,CAAsB,OAAO,IAAG;YAC9C,IAAG,cAAc,EAAE;AACf,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAErC,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACtJ,oBAAA,IAAI,EAAE,CAAC,QAA4B,KAAI;AACnC,wBAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACnB,4BAAA,OAAO,CAAC;AACJ,gCAAA,IAAI,EAAE,EAAS;gCACf,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC5B,gCAAA,EAAE,EAAE,IAAI;AACX,6BAAA,CAAC,CAAC;yBACN;qBACJ;AAED,oBAAA,KAAK,EAAE,CAAC,SAA4B,KAAI;AACpC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACrC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAE/C,wBAAA,OAAO,CAAC;AACJ,4BAAA,IAAI,EAAE,EAAS;4BACf,MAAM,EAAE,SAAS,CAAC,MAAM;4BACxB,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK;AACpD,4BAAA,EAAE,EAAE,KAAK;AACZ,yBAAA,CAAC,CAAC;qBACN;oBAED,QAAQ,EAAE,MAAK;AACX,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAErC,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACjD,4BAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,mCAAmC,CAAC,CAAC;yBAC5F;qBACJ;AACJ,iBAAA,CAAC,CAAC;aACN;iBAEI;AACD,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9J,oBAAA,IAAI,EAAE,CAAC,QAA4B,KAAI;AACnC,wBAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACnB,4BAAA,OAAO,CAAC;AACJ,gCAAA,IAAI,EAAE,EAAS;gCACf,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC5B,gCAAA,EAAE,EAAE,IAAI;AACX,6BAAA,CAAC,CAAC;yBACN;qBACJ;AAED,oBAAA,KAAK,EAAE,CAAC,SAA4B,KAAI;AACpC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;wBACvC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAE/C,wBAAA,OAAO,CAAC;AACJ,4BAAA,IAAI,EAAE,EAAS;4BACf,MAAM,EAAE,SAAS,CAAC,MAAM;4BACxB,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK;AACpD,4BAAA,EAAE,EAAE,KAAK;AACZ,yBAAA,CAAC,CAAC;qBACN;oBAED,QAAQ,EAAE,MAAK;AACX,wBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;wBAEvC,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACjD,4BAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,mCAAmC,CAAC,CAAC;yBAC5F;qBACJ;AACJ,iBAAA,CAAC,CAAC;aACN;AACL,SAAC,CAAC,CAAC;KACN;;AAIS,IAAA,UAAU,CAAI,OAAwB,EAAE,cAAA,GAA0B,IAAI,EAAA;AAC5E,QAAA,OAAO,IAAI,OAAO,CAAsB,OAAO,IAAG;YAC9C,IAAG,cAAc,EAAE;AACf,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEvC,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1J,oBAAA,IAAI,EAAE,CAAC,QAA4B,KAAI;AACnC,wBAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACnB,4BAAA,OAAO,CAAC;AACJ,gCAAA,IAAI,EAAE,EAAS;gCACf,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC5B,gCAAA,EAAE,EAAE,IAAI;AACX,6BAAA,CAAC,CAAC;yBACN;qBACJ;AAED,oBAAA,KAAK,EAAE,CAAC,SAA4B,KAAI;AACpC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACvC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAE/C,wBAAA,OAAO,CAAC;AACJ,4BAAA,IAAI,EAAE,EAAS;4BACf,MAAM,EAAE,SAAS,CAAC,MAAM;4BACxB,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK;AACpD,4BAAA,EAAE,EAAE,KAAK;AACZ,yBAAA,CAAC,CAAC;qBACN;oBAED,QAAQ,EAAE,MAAK;AACX,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAEvC,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACjD,4BAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,mCAAmC,CAAC,CAAC;yBAC5F;qBACJ;AACJ,iBAAA,CAAC,CAAC;aACN;iBAEI;AACD,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAChK,oBAAA,IAAI,EAAE,CAAC,QAA4B,KAAI;AACnC,wBAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACnB,4BAAA,OAAO,CAAC;AACJ,gCAAA,IAAI,EAAE,EAAS;gCACf,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC5B,gCAAA,EAAE,EAAE,IAAI;AACX,6BAAA,CAAC,CAAC;yBACN;qBACJ;AAED,oBAAA,KAAK,EAAE,CAAC,SAA4B,KAAI;AACpC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;wBACvC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAE/C,wBAAA,OAAO,CAAC;AACJ,4BAAA,IAAI,EAAE,EAAS;4BACf,MAAM,EAAE,SAAS,CAAC,MAAM;4BACxB,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK;AACpD,4BAAA,EAAE,EAAE,KAAK;AACZ,yBAAA,CAAC,CAAC;qBACN;oBAED,QAAQ,EAAE,MAAK;AACX,wBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;wBAEvC,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACjD,4BAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,mCAAmC,CAAC,CAAC;yBAC5F;qBACJ;AACJ,iBAAA,CAAC,CAAC;aACN;AACL,SAAC,CAAC,CAAC;KACN;;AAIS,IAAA,WAAW,CAAI,OAAwB,EAAE,cAAA,GAA0B,IAAI,EAAA;AAC7E,QAAA,OAAO,IAAI,OAAO,CAAsB,OAAO,IAAG;YAC9C,IAAG,cAAc,EAAE;AACf,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAExC,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,IAAI,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9I,oBAAA,IAAI,EAAE,CAAC,QAA4B,KAAI;AACnC,wBAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACnB,4BAAA,OAAO,CAAC;AACJ,gCAAA,IAAI,EAAE,EAAS;gCACf,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC5B,gCAAA,EAAE,EAAE,IAAI;AACX,6BAAA,CAAC,CAAC;yBACN;qBACJ;AAED,oBAAA,KAAK,EAAE,CAAC,SAA4B,KAAI;AACpC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACxC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAE/C,wBAAA,OAAO,CAAC;AACJ,4BAAA,IAAI,EAAE,EAAS;4BACf,MAAM,EAAE,SAAS,CAAC,MAAM;4BACxB,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK;AACpD,4BAAA,EAAE,EAAE,KAAK;AACZ,yBAAA,CAAC,CAAC;qBACN;oBAED,QAAQ,EAAE,MAAK;AACX,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACxC,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACjD,4BAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAC;yBAClF;qBACJ;AACJ,iBAAA,CAAC,CAAC;aACN;iBAEI;AACD,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,IAAI,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACnJ,oBAAA,IAAI,EAAE,CAAC,QAA4B,KAAI;AACnC,wBAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACnB,4BAAA,OAAO,CAAC;AACJ,gCAAA,IAAI,EAAE,EAAS;gCACf,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC5B,gCAAA,EAAE,EAAE,IAAI;AACX,6BAAA,CAAC,CAAC;yBACN;qBACJ;AAED,oBAAA,KAAK,EAAE,CAAC,SAA4B,KAAI;AACpC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;wBACvC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAE/C,wBAAA,OAAO,CAAC;AACJ,4BAAA,IAAI,EAAE,EAAS;4BACf,MAAM,EAAE,SAAS,CAAC,MAAM;4BACxB,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK;AACpD,4BAAA,EAAE,EAAE,KAAK;AACZ,yBAAA,CAAC,CAAC;qBACN;oBAED,QAAQ,EAAE,MAAK;AACX,wBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;wBACvC,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACjD,4BAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAC;yBAClF;qBACJ;AACJ,iBAAA,CAAC,CAAC;aACN;AACL,SAAC,CAAC,CAAC;KACN;;IAIO,UAAU,CAAC,SAA4B,EAAE,OAAgB,EAAA;AAC7D,QAAA,IAAI,SAAS,CAAC,MAAM,IAAI,GAAG,EAAE;AACzB,YAAA,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE;AACpC,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA,IAAA,EAAO,SAAS,CAAC,MAAM,CAAE,CAAA,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;aACjF;SACJ;AAEI,aAAA,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE;AAC7B,YAAA,QAAO,SAAS,CAAC,MAAM;gBACnB,KAAK,GAAG,EAAE;AACN,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,0CAA0C,CAAC,CAAC;oBAC3H,MAAM;iBACT;gBAED,KAAK,GAAG,EAAE;AACN,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,uCAAuC,CAAC,CAAC;oBACxH,MAAM;iBACT;gBAED,KAAK,GAAG,EAAE;AACN,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,8BAA8B,CAAC,CAAC;oBAC7G,MAAM;iBACT;gBAED,KAAK,GAAG,EAAE;AACN,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,kCAAkC,CAAC,CAAC;oBACnH,MAAM;iBACT;gBAED,KAAK,GAAG,EAAE;AACN,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE,qCAAqC,CAAC,CAAC;oBACzH,MAAM;iBACT;gBAED,KAAK,GAAG,EAAE;AACN,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,gCAAgC,CAAC,CAAC;oBAC9G,MAAM;iBACT;gBAED,KAAK,GAAG,EAAE;AACN,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,kCAAkC,CAAC,CAAC;oBACjH,MAAM;iBACT;gBAED,SAAS;AACL,oBAAA,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;AACvB,wBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,cAAc,EAAE,qCAAqC,EAAE,IAAI,CAAC,CAAC;qBACzG;;AAEI,wBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;oBACrE,MAAM;iBACT;aACJ;SACJ;KACJ;AACJ;;ACteD;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"coer-elements-tools.mjs","sources":["../../../projects/coer-elements/tools/lib/tools.ts","../../../projects/coer-elements/tools/lib/colors.class.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.html","../../../projects/coer-elements/tools/lib/breadcrumbs.class.ts","../../../projects/coer-elements/tools/lib/coer-grid.templates.ts","../../../projects/coer-elements/tools/lib/control-value.class.ts","../../../projects/coer-elements/tools/lib/date-time.class.ts","../../../projects/coer-elements/tools/lib/files.class.ts","../../../projects/coer-elements/tools/lib/menu.class.ts","../../../projects/coer-elements/tools/lib/source.class.ts","../../../projects/coer-elements/tools/lib/page.class.ts","../../../projects/coer-elements/tools/lib/screen.class.ts","../../../projects/coer-elements/tools/lib/service.class.ts","../../../projects/coer-elements/tools/coer-elements-tools.ts"],"sourcesContent":["import { signal } from \"@angular/core\";\r\nconst reference_signal = signal<any>({});\r\n\r\nexport const Tools = {\r\n /** Generate a Guid */\r\n GetGuid: (seed: string = 'coer-system') => {\r\n let time = new Date().getTime();\r\n seed = seed.toString().trim()\r\n return seed + `-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, (c) => {\r\n const random = (time + Math.random() * 16) % 16 | 0\r\n time = Math.floor(time / 16)\r\n return (c == 'x' ? random : (random & 0x3 | 0x8)).toString(16)\r\n })\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined, false otherwise */\r\n IsNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n IsNotNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */\r\n IsOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n if (typeof value === 'string' && value.trim() === '') return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if has string value and is not only whitespace, false otherwise */\r\n IsNotOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n if (typeof value === 'string' && value.trim() === '') return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Break reference of a object or array */\r\n BreakReference: <T>(object: T): T => {\r\n if (object === null) return object;\r\n if (typeof object === 'undefined') return object;\r\n if (typeof object === 'string') return object;\r\n if (typeof object === 'number') return object;\r\n if (typeof object === 'boolean') return object;\r\n const OBJECT = JSON.parse(JSON.stringify(object))\r\n return (Array.isArray(OBJECT)) ? [...OBJECT] : { ...OBJECT }\r\n },\r\n\r\n\r\n /** Clean extra whitespaces */\r\n CleanUpBlanks: (text: string | number): string => {\r\n if(Tools.IsNull(text)) return '';\r\n let worlds: string[] = String(text).split(' ');\r\n worlds = worlds.filter(x => x.length > 0);\r\n return worlds.join(' ');\r\n },\r\n\r\n\r\n /** Get properties of an object */\r\n GetObjectProperties: <T>(obj: T | null | undefined): string[] => {\r\n const properties: string[] = [];\r\n if (obj === null) return properties;\r\n if (typeof obj === 'undefined') return properties;\r\n if (typeof obj === 'string') return properties;\r\n if (typeof obj === 'number') return properties;\r\n if (typeof obj === 'boolean') return properties;\r\n for(const property in obj) properties.push(String(property));\r\n return properties;\r\n },\r\n\r\n\r\n /**\r\n * Set an index and merge more arrays of the same type\r\n * */\r\n SetIndex: <T>(array: T[], ...args: T[][]): T[] => {\r\n let index = 0;\r\n for (const arg of args) {\r\n array = Tools.BreakReference(array).concat(Tools.BreakReference(arg));\r\n }\r\n\r\n return Tools.BreakReference(array).map(item => Object.assign({ index: index++ }, item));\r\n },\r\n\r\n\r\n /** Set First Char To Lower */\r\n FirstCharToLower: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toLowerCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Set First Char To Upper */\r\n FirstCharToUpper: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toUpperCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Sort an array in ascending order by property */\r\n SortBy: <T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] => {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return -1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return 1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(x[property] - Number(y[property])));\r\n }\r\n }\r\n },\r\n\r\n\r\n /** Sort an array in descending order by property */\r\n SortByDesc: <T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] => {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return 1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return -1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(Number(y[property])) - x[property]);\r\n }\r\n }\r\n },\r\n\r\n\r\n /** Return a string with forman numeric */\r\n GetNumericFormat: (value: string | number | null | undefined, decimals: number = 0): string => {\r\n if (Tools.IsOnlyWhiteSpace(value) || isNaN(Number(value))) {\r\n return '0';\r\n }\r\n\r\n let valueInteger = '';\r\n let valueDecimal = '';\r\n value = value!.toString().replaceAll(' ', '');\r\n\r\n if (value.includes('.') || (decimals > 0)) {\r\n valueInteger = value.includes('.') ? value.split('.')[0] : value;\r\n\r\n if (decimals > 0) {\r\n const PADDING = decimals - valueDecimal.length;\r\n valueDecimal = value.includes('.') ? value.split('.')[1] : '';\r\n for(let i = 0; i < PADDING; i++) valueDecimal += '0';\r\n valueDecimal = valueDecimal.substring(0, decimals);\r\n valueDecimal = `.${valueDecimal}`;\r\n }\r\n }\r\n\r\n else {\r\n valueInteger = value;\r\n }\r\n\r\n let counter = 0;\r\n const VALUE_INTEGER_ARRAY: string[] = [];\r\n for(const char of valueInteger.split('').reverse()) {\r\n if (counter == 3) {\r\n VALUE_INTEGER_ARRAY.push(',');\r\n counter = 0;\r\n }\r\n\r\n VALUE_INTEGER_ARRAY.push(char);\r\n ++counter;\r\n }\r\n\r\n valueInteger = VALUE_INTEGER_ARRAY.reverse().join('');\r\n return `${valueInteger}${valueDecimal}`;\r\n },\r\n\r\n\r\n /** Wait the time indicated */\r\n Sleep: (milliseconds: number = 0, reference: string | null = null) => {\r\n if (Tools.IsNull(reference)) {\r\n return new Promise(Resolve => setTimeout(Resolve, milliseconds));\r\n }\r\n\r\n else return new Promise<void>(Resolve => {\r\n reference = reference!.replaceAll(' ', '_').toLowerCase();\r\n\r\n if (reference_signal().hasOwnProperty(reference)) {\r\n clearInterval(reference_signal()[reference!]);\r\n }\r\n\r\n reference_signal.set(Object.assign(reference_signal(), {\r\n [reference!]: setTimeout(() => {\r\n Resolve();\r\n clearInterval(reference_signal()[reference!]);\r\n const _reference = { ...reference_signal() };\r\n delete _reference[reference!];\r\n reference_signal.set({ ..._reference });\r\n }, milliseconds)\r\n }));\r\n });\r\n }\r\n};","export class Colors {\r\n\r\n public static readonly blue = '#0d6efd';\r\n public static readonly gray = '#6c757d';\r\n public static readonly green = '#198754';\r\n public static readonly yellow = '#ffc107';\r\n public static readonly red = '#dc3545';\r\n public static readonly white = '#f5f5f5';\r\n public static readonly black = '#252525';\r\n public static readonly orange = '#fd6031';\r\n public static readonly purple = '#a615bc';\r\n\r\n\r\n /** Returns the color palette in hexadecimal */\r\n private static readonly colorsHex = new Map<string, string>([\r\n ['blue' , '#0d6efd'],\r\n ['gray' , '#6c757d'],\r\n ['green' , '#198754'],\r\n ['yellow', '#ffc107'],\r\n ['red' , '#dc3545'],\r\n ['white' , '#f5f5f5'],\r\n ['black' , '#252525'],\r\n ['orange', '#fd6031'],\r\n ['purple', '#a615bc'],\r\n ]);\r\n\r\n\r\n /** Returns the color palette in RGB */\r\n private static readonly ColorsRGB = new Map<string, number[]>([\r\n ['blue', [13, 110, 253]],\r\n ['gray', [108, 117, 125]],\r\n ['green', [25, 135, 84 ]],\r\n ['yellow', [225, 193, 7 ]],\r\n ['red', [220, 53 , 69 ]],\r\n ['white', [245, 245, 245]],\r\n ['black', [37 , 37 , 37 ]],\r\n ['orange', [253, 96 , 49 ]],\r\n ['purple', [166, 21, 188]],\r\n ]);\r\n\r\n\r\n /** Returns a random color in hexadecimal */\r\n public static GetRandomColorHex = (): string => \"#xxxxxx\".replace(/x/g, () => (Math.random() * 16 | 0).toString(16));\r\n\r\n\r\n /** Returns the number of colors requested */\r\n public static GetColorHexList(quantity: number): string[] {\r\n const colors: string[] = [];\r\n let counter: number = 0;\r\n\r\n while (counter < quantity) {\r\n for (const color of this.colorsHex.values()) {\r\n colors.push(color);\r\n if (++counter === quantity) break;\r\n }\r\n }\r\n\r\n return colors;\r\n }\r\n\r\n\r\n /** Returns the number of colors requested with opacity */\r\n public static GetColorRGBList(quantity: number): string[] {\r\n const colors: string[] = [];\r\n\r\n let alpha: number = 1.0;\r\n let counter: number = 0;\r\n let lastColor = [...Array.from(this.ColorsRGB.keys())].pop();\r\n\r\n while (counter < quantity) {\r\n for (const [color, value] of this.ColorsRGB.entries()) {\r\n colors.push(`rgba(${value[0]}, ${value[1]}, ${value[2]}, ${alpha})`);\r\n\r\n if (color === lastColor) alpha -= 0.2;\r\n if (++counter === quantity) break;\r\n }\r\n }\r\n\r\n return colors;\r\n }\r\n}","import { Component } from '@angular/core';\r\nimport { Tools } from '../tools';\r\nimport { Colors } from '../colors.class';\r\nimport * as bootstrap from 'bootstrap';\r\nimport Swal from 'sweetalert2'\r\n\r\n@Component({\r\n selector: 'coer-alert',\r\n templateUrl: './coer-alert.component.html',\r\n styleUrls: ['./coer-alert.component.scss'],\r\n standalone: true\r\n})\r\nexport class CoerAlert {\r\n\r\n /** */\r\n public Success(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Success';\r\n const alertSuccessTitle = document.getElementById('alert-success-title')!;\r\n alertSuccessTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-check-circle fa-beat');\r\n const alertSuccessIcon = document.getElementById('alert-success-icon')!;\r\n this.SetIcon(alertSuccessIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertSuccessMessage = document.getElementById('alert-success-message')!;\r\n alertSuccessMessage.innerHTML = message!;\r\n\r\n //Toast\r\n const alertSuccess = document.getElementById('alert-success')!;\r\n this.SetAutoHide(alertSuccess, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertSuccess);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Error(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Error';\r\n const alertErrorTitle = document.getElementById('alert-error-title')!;\r\n alertErrorTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-exclamation-octagon fa-beat');\r\n const alertErrorIcon = document.getElementById('alert-error-icon')!;\r\n this.SetIcon(alertErrorIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertErrorBody = document.getElementById('alert-error-message')!;\r\n alertErrorBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertError = document.getElementById('alert-error')!;\r\n this.SetAutoHide(alertError, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertError);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Info(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Info';\r\n const alertInfoTitle = document.getElementById('alert-info-title')!;\r\n alertInfoTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-info-circle fa-beat');\r\n const alertInfoIcon = document.getElementById('alert-info-icon')!;\r\n this.SetIcon(alertInfoIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertInfoBody = document.getElementById('alert-info-message')!;\r\n alertInfoBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertInfo = document.getElementById('alert-info')!;\r\n this.SetAutoHide(alertInfo, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertInfo);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Warning(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Warning';\r\n const alertWarningTitle = document.getElementById('alert-warning-title')!;\r\n alertWarningTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-exclamation-triangle-fill fa-beat');\r\n const alertWarningIcon = document.getElementById('alert-warning-icon')!;\r\n this.SetIcon(alertWarningIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertWarningBody = document.getElementById('alert-warning-message')!;\r\n alertWarningBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertWarning = document.getElementById('alert-warning')!;\r\n this.SetAutoHide(alertWarning, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertWarning);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n protected Close(alert: 'alert-success' | 'alert-error' | 'alert-info' | 'alert-warning') {\r\n return new Promise<void>(Resolve => {\r\n const element = document.getElementById(alert)!;\r\n const toast = bootstrap.Toast.getOrCreateInstance(element);\r\n toast.hide();\r\n\r\n setTimeout(() => { Resolve() }, 200);\r\n })\r\n }\r\n\r\n\r\n /** */\r\n public Confirm(\r\n message: string = 'Proceed?',\r\n alertType: 'warning' | 'danger' | 'success' | 'info' = 'warning',\r\n icon: string | null = null) {\r\n return new Promise<boolean>(Resolve => {\r\n let color: string;\r\n let iconType: 'warning' | 'error' | 'success' | 'info';\r\n switch(alertType) {\r\n case 'danger': {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-octagon';\r\n iconType = 'error';\r\n color = Colors.red;\r\n break;\r\n };\r\n\r\n case 'success': {\r\n if (Tools.IsNull(icon)) icon = 'bi-check-circle';\r\n iconType = 'info';\r\n color = Colors.green;\r\n break;\r\n };\r\n\r\n case 'info': {\r\n if (Tools.IsNull(icon)) icon = 'bi-info-circle';\r\n iconType = 'error';\r\n color = Colors.black;\r\n break\r\n };\r\n\r\n default: {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-triangle-fill';\r\n iconType = 'warning';\r\n color = Colors.yellow; \r\n break;\r\n }\r\n }\r\n\r\n switch(icon) {\r\n case 'delete': icon = 'fa-regular fa-trash-can'; break;\r\n }\r\n\r\n Swal.fire({\r\n icon: iconType,\r\n iconColor: 'transparent',\r\n iconHtml: `<i class=\"${icon}\" style=\"color: ${color};\"></i>`,\r\n html: message,\r\n showConfirmButton: true,\r\n confirmButtonText: 'Yes',\r\n confirmButtonColor: color,\r\n focusConfirm: true,\r\n showDenyButton: true,\r\n denyButtonColor: color,\r\n focusDeny: false,\r\n reverseButtons: true,\r\n allowOutsideClick: false,\r\n allowEscapeKey: false,\r\n allowEnterKey: true,\r\n customClass: {\r\n denyButton: 'sweet-alert-button',\r\n confirmButton: 'sweet-alert-button'\r\n }\r\n }).then(({ value }) => setTimeout(() => Resolve(value)));\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private SetIcon(element: HTMLElement, icon: string): void {\r\n for (const item of [...element.classList.value.split(' ')]) {\r\n if (item.length > 0) {\r\n element.classList.remove(item);\r\n element.classList.remove('q');\r\n }\r\n }\r\n\r\n icon = icon.trim();\r\n const hasWhiteSpaces: RegExp = / /;\r\n if (hasWhiteSpaces.test(icon)) {\r\n const classes = icon.split(' ');\r\n for (const icon of classes) element.classList.add(icon);\r\n }\r\n\r\n else element.classList.add(icon);\r\n }\r\n\r\n\r\n /** */\r\n private SetAutoHide(element: HTMLElement, autohide: number | null): void {\r\n element.removeAttribute('data-bs-autohide');\r\n element.removeAttribute('data-bs-delay');\r\n\r\n if (autohide && autohide > 0) {\r\n if (autohide < 1000) autohide = 1000;\r\n element.setAttribute('data-bs-autohide', 'true');\r\n element.setAttribute('data-bs-delay', String(autohide));\r\n }\r\n\r\n else element.setAttribute('data-bs-autohide', 'false');\r\n }\r\n\r\n\r\n /** */\r\n private GetIcon(title: string, icon: string | null, iconDefault: string): string {\r\n if (icon == null || icon == '') {\r\n title = title.replaceAll(' ', '').toUpperCase();\r\n\r\n switch(title) {\r\n case 'ENABLED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVE': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'DISABLE': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DISABLED': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DELETE': return 'fa-regular fa-trash-can';\r\n case 'DELETED': return 'fa-regular fa-trash-can';\r\n default: return iconDefault;\r\n }\r\n }\r\n\r\n return icon;\r\n }\r\n}","<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>","import { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Tools } from './tools';\r\n\r\nexport class Breadcrumbs {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Add(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n const paths = breadcrumbs.map(item => item.path);\r\n\r\n if (!paths.includes(path)) {\r\n breadcrumbs.push({ page, path });\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IAppSource[] {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('breadcrumbs')) {\r\n return Tools.BreakReference(storage.breadcrumbs);\r\n }\r\n }\r\n\r\n return [];\r\n }\r\n\r\n\r\n /** */\r\n public static GetFirst(): IAppSource | null {\r\n const breadcrumbs = this.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\r\n public static Save(breadcrumbs: IAppSource[]): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { breadcrumbs });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Remove(path: string): void {\r\n let breadcrumbs = this.Get();\r\n const index = breadcrumbs.findIndex(x => x.path.toLowerCase().trim() === path.toLowerCase().trim());\r\n\r\n if (index >= 0) {\r\n breadcrumbs = Tools.BreakReference(breadcrumbs).splice(0, index + 1);\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static SetLast(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs[breadcrumbs.length - 1] = { page, path };\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static RemoveLast(): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs.pop();\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n}","import { IGridCoerSwitch, IGridCoerTextBox, IGridItem } from \"coer-elements/interfaces\";\r\n\r\nexport const GridTemplates = {\r\n\r\n /** Template for boolean property */\r\n isActiveTemplate: (item: IGridItem<any>): string => {\r\n if (item.value) {\r\n return `\r\n <span class='text-green-bold'>\r\n <i class=\"fa-solid fa-circle-check\"></i> Active\r\n </span>\r\n `;\r\n }\r\n\r\n else {\r\n return `\r\n <span class='text-gray-bold'>\r\n <i class=\"fa-solid fa-circle-minus\"></i> Disabled\r\n </span>\r\n `;\r\n }\r\n },\r\n\r\n\r\n /** Template for boolean property */\r\n coerSwitchTemplate: (item: IGridItem<any>): IGridCoerSwitch => ({\r\n isInput: true,\r\n tooltip: `${item.value ? 'Active' : 'Disabled' }`\r\n }),\r\n\r\n\r\n /** Template for text property */\r\n coerTextboxTemplate: (item: IGridItem<any>): IGridCoerTextBox => ({\r\n isInput: true,\r\n isInvalid: item.value.length <= 0\r\n }),\r\n\r\n\r\n /** Template for text property */\r\n coerIconTemplate: (icon: string, color: string = 'black'): string => {\r\n return `<i class='${icon} d-block w-100 text-center' style='color: ${color};'></i>`;\r\n }\r\n}","import { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { forwardRef } from \"@angular/core\";\r\n\r\nexport const CONTROL_VALUE = <T>(component: T) => {\r\n return {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => component),\r\n multi: true\r\n }\r\n}\r\n\r\n\r\nexport class ControlValue implements ControlValueAccessor {\r\n\r\n //Variables\r\n protected _value: any;\r\n private _isTouched: boolean = false;\r\n protected _UpdateValue!: Function;\r\n private _IsTouched!: Function;\r\n\r\n\r\n public get isTouched() {\r\n return this._isTouched;\r\n }\r\n\r\n\r\n /** */\r\n protected SetValue(value: any): void {\r\n if(typeof this._UpdateValue === 'function') {\r\n this._UpdateValue(value);\r\n }\r\n\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public SetTouched(isTouched: boolean): void {\r\n if(typeof this._IsTouched === 'function') {\r\n this._IsTouched(isTouched);\r\n }\r\n\r\n this._isTouched = isTouched;\r\n }\r\n\r\n\r\n /** */\r\n public writeValue(value: any): void {\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnChange(callback: Function): void {\r\n this._UpdateValue = callback;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnTouched(callback: Function): void {\r\n this._IsTouched = callback;\r\n }\r\n\r\n \r\n /** */\r\n public setDisabledState(isDisabled: boolean): void {}\r\n}","import moment from \"moment\";\r\n\r\nexport class DateTime {\r\n /** Get UTC Offset */\r\n public static GetOffset(): number {\r\n return moment().utcOffset();\r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static GetFormatDB(date: string | Date | moment.Moment): string {\r\n if ((typeof date === 'string')) date = date.replaceAll('/', '-');\r\n return moment(date).format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert UTC Date to Local Zone */\r\n public static ToLocalZone(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).add(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert Local Zone Date to UTC */\r\n public static ToUTC(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).subtract(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** DD MMM YYYY */\r\n public static GetDateFormat(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).parseZone().local(true).format('DD MMM YYYY');\r\n }\r\n}","import { Tools } from \"./tools\";\r\nimport * as XLSX from 'xlsx';\r\n\r\nexport class Files {\r\n public static readonly EXCEL_EXTENSIONS: string[] = ['xls', 'xlsx', 'csv'];\r\n\r\n /** Get Extension File */\r\n public static GetExtension(file: File): string | null {\r\n const fileName = file.name;\r\n\r\n if (fileName.includes('.')) {\r\n let worlds = fileName.split('.') as string[];\r\n\r\n if (worlds.length > 0) {\r\n let extension = worlds.pop()!;\r\n extension = extension.trim().toLowerCase();\r\n if (extension.length > 0) return extension;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** Is Excel File */\r\n public static IsExcel(file: File): boolean {\r\n const EXTENSION = Files.GetExtension(file);\r\n\r\n return Tools.IsNotNull(EXTENSION)\r\n ? this.EXCEL_EXTENSIONS.includes(EXTENSION!)\r\n : false;\r\n }\r\n\r\n\r\n /** Read excel file */\r\n public static ReadExcel<T>(file: File) {\r\n return new Promise<{ columns: string[]; rows: T[]; }>(Resolve => {\r\n let columns: string[] = [];\r\n let rows: T[] = [];\r\n\r\n const reader = new FileReader();\r\n reader.readAsArrayBuffer(file);\r\n\r\n reader.onload = () => {\r\n const dataBytes = new Uint8Array(reader.result as any);\r\n\r\n if (dataBytes) {\r\n const workbook = XLSX.read(dataBytes, {});\r\n const sheet = workbook.Sheets[workbook.SheetNames[0]];\r\n let dataSheet: any[] = XLSX.utils.sheet_to_json(sheet, {\r\n header: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\r\n });\r\n\r\n //Get Headers\r\n for(const column in dataSheet[0]) {\r\n columns.push(Tools.FirstCharToLower(String(dataSheet[0][column]).replaceAll(' ', '')));\r\n }\r\n\r\n //Get Rows\r\n rows = XLSX.utils.sheet_to_json(sheet, { header: columns });\r\n rows.shift();\r\n\r\n rows = rows.map(row => {\r\n const item = Tools.BreakReference<any>(row);\r\n delete item['__rowNum__'];\r\n return item;\r\n });\r\n }\r\n\r\n Resolve({ columns, rows });\r\n }\r\n\r\n reader.onerror = () => { Resolve({ columns, rows }) }\r\n });\r\n }\r\n\r\n\r\n /** Export to excel file */\r\n public static ExportExcel<T>(data: T[], fileName: string = 'coer_report', sheetName: string = 'Sheet1') {\r\n sheetName = Tools.CleanUpBlanks(sheetName);\r\n fileName = Tools.CleanUpBlanks(fileName);\r\n\r\n if(fileName.endsWith('.xls') || fileName.endsWith('.xlsx') || fileName.endsWith('.csv')) {\r\n if (fileName.endsWith('.xls')) {\r\n fileName = fileName.replaceAll('.xls', '.xlsx');\r\n }\r\n\r\n if (fileName.endsWith('.csv')) {\r\n fileName = fileName.replaceAll('.csv', '.xlsx');\r\n }\r\n }\r\n\r\n else {\r\n fileName += '.xlsx';\r\n }\r\n\r\n const WORK_SHEET = XLSX.utils.json_to_sheet(data);\r\n const WORK_BOOK = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(WORK_BOOK, WORK_SHEET, sheetName);\r\n XLSX.writeFile(WORK_BOOK, fileName);\r\n }\r\n\r\n\r\n /** Convert file to string base64 */\r\n public static ConvertToBase64(file: File) {\r\n return new Promise<string>(Resolve => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n\r\n reader.onload = () => {\r\n Resolve(reader.result?.toString() || '');\r\n }\r\n\r\n reader.onerror = () => Resolve('');\r\n });\r\n }\r\n}","import { IMenuOptionSelected } from \"coer-elements/interfaces\";\r\n\r\nexport class Menu {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static SetSelectedOption(menu: IMenuOptionSelected): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { menu });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static GetSelectedOption(): IMenuOptionSelected | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('menu')) {\r\n return storage.menu;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}","import { inject } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\nimport { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Breadcrumbs } from \"./breadcrumbs.class\";\r\nimport { Tools } from \"./tools\";\r\n\r\nexport class Source {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Set(page: string): void {\r\n const ROUTER = inject(Router);\r\n\r\n let path = ROUTER.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n Breadcrumbs.Add(page, path);\r\n\r\n const breadcrumbs = Breadcrumbs.Get();\r\n\r\n if(breadcrumbs.length >= 2) {\r\n breadcrumbs.pop();\r\n const breadcrumb = breadcrumbs.pop()!;\r\n this.Save({ page: breadcrumb.page, path: breadcrumb.path });\r\n }\r\n\r\n else this.Save(null);\r\n }\r\n\r\n\r\n /** */\r\n private static Save(source: IAppSource | null): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { source });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IAppSource | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('source')) {\r\n return storage.source;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n public static GetRoot(): IAppSource | null {\r\n const breadcrumbs = Breadcrumbs.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\r\n public static SetPageResponse<T>(pageResponse: T): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { pageResponse });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static GetPageResponse<T>(): T | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n return Tools.BreakReference(storage.pageResponse);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n public static ClearPageResponse(): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n delete storage.pageResponse;\r\n }\r\n\r\n storage = Object.assign({}, storage);\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Reset(): void {\r\n sessionStorage.removeItem(this.storage);\r\n }\r\n}","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { AfterViewInit, Component, Inject, inject, OnDestroy } from '@angular/core';\r\nimport { IAppSource, IBreadcrumb, IGoBack } from 'coer-elements/interfaces';\r\nimport { GridTemplates } from './coer-grid.templates';\r\nimport { CoerAlert } from './coer-alert/coer-alert.component';\r\nimport { Breadcrumbs } from './breadcrumbs.class';\r\nimport { Source } from './source.class';\r\nimport { Tools } from './tools';\r\n\r\n@Component({ template: '' })\r\nexport class Page implements AfterViewInit, OnDestroy {\r\n\r\n //Injection\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly router = inject(Router);\r\n private readonly activatedRoute = inject(ActivatedRoute);\r\n\r\n /** */\r\n protected isUpdate: boolean = false;\r\n\r\n /** */\r\n protected isLoading: boolean = false;\r\n\r\n /** */\r\n protected isReadyPage: boolean = false;\r\n\r\n /** */\r\n protected enableAnimations: boolean = false;\r\n\r\n /** */\r\n protected routeParams: any;\r\n\r\n /** */\r\n protected queryParams: any;\r\n\r\n /** */\r\n protected breadcrumbs: IBreadcrumb[] = [];\r\n\r\n /** */\r\n protected pageResponse: any = null;\r\n\r\n /** */\r\n protected goBack: IGoBack = { show: false };\r\n\r\n //Private Variables\r\n private _page: string = '';\r\n private _source: IAppSource | null = null;\r\n private _preventDestroy: boolean = false;\r\n\r\n\r\n constructor(@Inject(String) page: string) {\r\n this.SetPageName(page);\r\n this.__SetSource();\r\n this.__GetSource();\r\n this.__GetNavigation();\r\n this.__SetGoBack();\r\n this.GetPageResponse();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.routeParams = this.activatedRoute.snapshot.params;\r\n this.queryParams = this.activatedRoute.snapshot.queryParams;\r\n\r\n setTimeout(() => {\r\n this.isReadyPage = true;\r\n this.RunPage();\r\n setTimeout(() => { this.enableAnimations = true }, 1000);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this._preventDestroy) Source.ClearPageResponse();\r\n }\r\n\r\n /** Main method. Starts after ngAfterViewInit() */\r\n protected RunPage(): void {};\r\n\r\n\r\n /** Rename the last breadcrumb and update the url id */\r\n protected SetPageName(name: string, id: string | number | null = null): void {\r\n this._page = name;\r\n\r\n let path = this.router.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n if (id) {\r\n const PATH_ARRAY = path.split('/');\r\n const PATH_ID = Tools.BreakReference(PATH_ARRAY).pop();\r\n if (PATH_ID) {\r\n PATH_ARRAY[PATH_ARRAY.length - 1] = String(id);\r\n path = PATH_ARRAY.join('/');\r\n }\r\n }\r\n\r\n if (this.breadcrumbs.length > 0) {\r\n this.breadcrumbs[this.breadcrumbs.length - 1].page = name;\r\n this.breadcrumbs[this.breadcrumbs.length - 1].path = path;\r\n Breadcrumbs.SetLast(name, path);\r\n }\r\n\r\n this.router.navigateByUrl(path)\r\n }\r\n\r\n\r\n /** */\r\n private __SetSource(): void {\r\n Source.Set(this._page);\r\n }\r\n\r\n\r\n /** */\r\n private __GetSource(): void {\r\n this._source = Source.Get();\r\n }\r\n\r\n\r\n /** */\r\n protected GetPageResponse(): void {\r\n this.pageResponse = Source.GetPageResponse();\r\n }\r\n\r\n\r\n /** */\r\n private __GetNavigation(): void {\r\n if (this._source) {\r\n this.breadcrumbs = Breadcrumbs.Get().map(item => Object.assign({\r\n page: item.page,\r\n path: item.path,\r\n click: this.GoBack(item.path)\r\n }));\r\n }\r\n\r\n else this.breadcrumbs = [{ page: this._page }];\r\n }\r\n\r\n\r\n /** */\r\n private __SetGoBack(): void {\r\n if (this._source) {\r\n this.goBack = {\r\n show: true,\r\n path: this._source.path,\r\n click: this.GoBack()\r\n };\r\n }\r\n }\r\n\r\n\r\n /** */\r\n private GoBack = (path?: string) => (() => {\r\n if (path) Breadcrumbs.Remove(path);\r\n else Breadcrumbs.RemoveLast();\r\n });\r\n\r\n\r\n /** Navigate to previous page */\r\n protected GoToSource<T>(pageResponse: T | null = null): void {\r\n if(this._source) {\r\n Breadcrumbs.RemoveLast();\r\n this.SetPageResponse(pageResponse);\r\n Tools.Sleep().then(_ => this.router.navigateByUrl(this._source!.path));\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected SetPageResponse<T>(pageResponse: T | null = null): void {\r\n if (Tools.IsNotNull(pageResponse)) {\r\n this._preventDestroy = true;\r\n Source.SetPageResponse(pageResponse);\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected ReloadPage(): void {\r\n Breadcrumbs.RemoveLast();\r\n setTimeout(() => window.location.reload());\r\n }\r\n\r\n\r\n /** */\r\n protected Log(value: any, log: string | null = null): void {\r\n if (Tools.IsNotNull(log)) console.log({ log, value });\r\n else console.log(value);\r\n }\r\n\r\n\r\n //Grid Templates\r\n protected isActiveTemplate = GridTemplates.isActiveTemplate;\r\n protected coerSwitchTemplate = GridTemplates.coerSwitchTemplate;\r\n protected coerTextboxTemplate = GridTemplates.coerTextboxTemplate;\r\n protected coerIconTemplate = GridTemplates.coerIconTemplate;\r\n\r\n\r\n //Tools\r\n protected IsNull = Tools.IsNull;\r\n protected IsNotNull = Tools.IsNotNull;\r\n protected IsOnlyWhiteSpace = Tools.IsOnlyWhiteSpace;\r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace;\r\n}","\r\nimport { IScreenSize } from \"coer-elements/interfaces\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport class Screen {\r\n\r\n public static get WINDOW_WIDTH(): number {\r\n return window.innerWidth;\r\n }\r\n\r\n\r\n public static get WINDOW_HEIGHT(): number {\r\n return window.innerHeight;\r\n }\r\n\r\n\r\n public static get DEVICE_WIDTH(): number {\r\n return window.screen.width;\r\n }\r\n\r\n\r\n public static get DEVICE_HEIGHT(): number {\r\n return window.screen.height;\r\n }\r\n\r\n\r\n public static get BREAKPOINT(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' {\r\n if (window.innerWidth < 576) return 'xs';\r\n else if (window.innerWidth >= 576 && window.innerWidth < 768) return 'sm';\r\n else if (window.innerWidth >= 768 && window.innerWidth < 992) return 'md';\r\n else if (window.innerWidth >= 992 && window.innerWidth < 1200) return 'lg';\r\n else if (window.innerWidth >= 1200 && window.innerWidth < 1400) return 'xl';\r\n else return 'xxl';\r\n }\r\n\r\n\r\n /** */\r\n public static Resize = new Observable<IScreenSize>(subscriber => {\r\n window.addEventListener(\"load\", () => {\r\n window.dispatchEvent(new Event('resize'));\r\n });\r\n\r\n window.onresize = () => {\r\n subscriber.next({\r\n width: this.WINDOW_WIDTH,\r\n height: this.WINDOW_HEIGHT,\r\n breakpoin: this.BREAKPOINT\r\n });\r\n }\r\n });\r\n\r\n\r\n /** */\r\n public static BackButtonBrowser = new Observable<string>(subscriber => {\r\n window.addEventListener('popstate', popStateEvent => {\r\n if (popStateEvent.state && popStateEvent.target) {\r\n subscriber.next((popStateEvent.target as any).location.href);\r\n }\r\n });\r\n });\r\n}","import { inject } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse, HttpEvent, HttpRequest } from \"@angular/common/http\";\r\nimport { CoerAlert } from \"./coer-alert/coer-alert.component\";\r\nimport { IHttpRequest, IHttpResponse } from \"coer-elements/interfaces\";\r\nimport { Tools } from \"./tools\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nexport class Service {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly http = inject(HttpClient);\r\n\r\n protected httpCode = {\r\n Ok: 200,\r\n Created: 201,\r\n NoContent: 204,\r\n BadRequest: 400,\r\n Unauthorize: 401,\r\n NotFound: 404,\r\n NotAllowed: 405,\r\n NotAcceptable: 406,\r\n Conflict: 409,\r\n PayloadTooLarge: 413,\r\n InnerError: 500\r\n }\r\n\r\n\r\n //Subscriptions\r\n private _GET$!: Subscription;\r\n private _POST$!: Subscription;\r\n private _PUT$!: Subscription;\r\n private _PATCH$!: Subscription;\r\n private _DELETE$!: Subscription;\r\n\r\n\r\n /** */\r\n private ReleaseSubscription(subscription: Subscription): void {\r\n if (subscription && !subscription.closed) subscription.unsubscribe();\r\n }\r\n\r\n\r\n /** HTTP GET */\r\n protected HTTP_GET<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._GET$);\r\n \r\n this._GET$ = this.http.request<T>(new HttpRequest(\"GET\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._GET$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._GET$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"GET\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** HTTP POST */\r\n protected HTTP_POST<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._POST$);\r\n \r\n this._POST$ = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._POST$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._POST$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** HTTP PUT */\r\n protected HTTP_PUT<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._PUT$);\r\n \r\n this._PUT$ = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PUT$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._PUT$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** HTTP PATCH */\r\n protected HTTP_PATCH<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._PATCH$);\r\n \r\n this._PATCH$ = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** HTTP DELETE */\r\n protected HTTP_DELETE<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._DELETE$);\r\n \r\n this._DELETE$ = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private AlertError(httpError: HttpErrorResponse, message?: string): void {\r\n if (httpError.status >= 500) {\r\n if (Tools.IsNotOnlyWhiteSpace(message)) {\r\n this.alert.Error(message, `BUG ${httpError.status}`, 'fa-solid fa-bug', null);\r\n }\r\n }\r\n\r\n else if (httpError.status < 500) {\r\n switch(httpError.status) {\r\n case 400: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');\r\n break;\r\n }\r\n\r\n case 401: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');\r\n break;\r\n }\r\n\r\n case 404: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');\r\n break;\r\n }\r\n\r\n case 405: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');\r\n break;\r\n }\r\n\r\n case 406: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');\r\n break;\r\n }\r\n\r\n case 409: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');\r\n break;\r\n }\r\n\r\n case 413: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');\r\n break;\r\n }\r\n\r\n default: {\r\n if (httpError.status <= 0) {\r\n this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);\r\n }\r\n\r\n else this.alert.Warning(httpError.error?.message || httpError.error);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|