{"version":3,"file":"zek.mjs","sources":["../../../projects/zek/src/lib/models/print.model.ts","../../../projects/zek/src/lib/utils/object-helper.ts","../../../projects/zek/src/lib/utils/array-helper.ts","../../../projects/zek/src/lib/utils/base64-helper.ts","../../../projects/zek/src/lib/utils/bitwise-helper.ts","../../../projects/zek/src/lib/utils/bootstrap.helper.ts","../../../projects/zek/src/lib/utils/convert.ts","../../../projects/zek/src/lib/utils/css-helper.ts","../../../projects/zek/src/lib/utils/overlap-helper.ts","../../../projects/zek/src/lib/utils/time-helper.ts","../../../projects/zek/src/lib/utils/date-helper.ts","../../../projects/zek/src/lib/utils/error-helper.ts","../../../projects/zek/src/lib/utils/excel-helper.ts","../../../projects/zek/src/lib/utils/file.helper.ts","../../../projects/zek/src/lib/utils/filter-helper.ts","../../../projects/zek/src/lib/utils/guid.ts","../../../projects/zek/src/lib/utils/handler.ts","../../../projects/zek/src/lib/utils/html-helper.ts","../../../projects/zek/src/lib/utils/jwt-helper.ts","../../../projects/zek/src/lib/utils/math-helper.ts","../../../projects/zek/src/lib/utils/pager-helper.ts","../../../projects/zek/src/lib/utils/random-helper.ts","../../../projects/zek/src/lib/utils/storage-helper.ts","../../../projects/zek/src/lib/utils/string-helper.ts","../../../projects/zek/src/lib/utils/thenBy.ts","../../../projects/zek/src/lib/utils/interval-helper.ts","../../../projects/zek/src/lib/utils/tmp-helper.ts","../../../projects/zek/src/lib/utils/url-helper.ts","../../../projects/zek/src/lib/utils/validation-helper.ts","../../../projects/zek/src/lib/services/auth.service.ts","../../../projects/zek/src/lib/services/auth-guard.service.ts","../../../projects/zek/src/lib/services/base.service.ts","../../../projects/zek/src/lib/services/cache-helper.ts","../../../projects/zek/src/lib/services/crud.service.ts","../../../projects/zek/src/lib/services/alert.service.ts","../../../projects/zek/src/lib/services/http-error-handler.service.ts","../../../projects/zek/src/lib/tokens.ts","../../../projects/zek/src/lib/services/web.api.ts","../../../projects/zek/src/lib/services/file.service.ts","../../../projects/zek/src/lib/components/core.component.ts","../../../projects/zek/src/lib/components/base.component.ts","../../../projects/zek/src/lib/components/core-ui.component.ts","../../../projects/zek/src/lib/components/edit-base.component.ts","../../../projects/zek/src/lib/models/edit-base.model.ts","../../../projects/zek/src/lib/models/filter.model.ts","../../../projects/zek/src/lib/models/gender.model.ts","../../../projects/zek/src/lib/models/id-name.model.ts","../../../projects/zek/src/lib/models/key-pair.model.ts","../../../projects/zek/src/lib/models/list-base.model.ts","../../../projects/zek/src/lib/models/month.model.ts","../../../projects/zek/src/lib/models/pager.model.ts","../../../projects/zek/src/lib/models/tree.model.ts","../../../projects/zek/src/lib/models/valid-event-args.model.ts","../../../projects/zek/src/lib/components/list-base.component.ts","../../../projects/zek/src/lib/directives/delayed-input.directive.ts","../../../projects/zek/src/lib/modules/age/age.pipe.ts","../../../projects/zek/src/lib/modules/alert/alert/alert.ts","../../../projects/zek/src/lib/modules/alert/alert/alert.html","../../../projects/zek/src/lib/modules/alert/toast/toast.ts","../../../projects/zek/src/lib/modules/alert/toast/toast.html","../../../projects/zek/src/lib/modules/alert/validation/validation.ts","../../../projects/zek/src/lib/modules/alert/validation/validation.html","../../../projects/zek/src/lib/modules/autocomplete/autocomplete.directive.ts","../../../projects/zek/src/lib/modules/bb/bb.component.ts","../../../projects/zek/src/lib/modules/bb/bb.component.html","../../../projects/zek/src/lib/modules/bb/bb-modal-toolbar.ts","../../../projects/zek/src/lib/modules/bb/bb-modal-toolbar.html","../../../projects/zek/src/lib/modules/bb/bb.module.ts","../../../projects/zek/src/lib/modules/bb/bb-modal-base.ts","../../../projects/zek/src/lib/modules/callback/callback.pipe.ts","../../../projects/zek/src/lib/modules/card/card/card.ts","../../../projects/zek/src/lib/modules/card/card/card.html","../../../projects/zek/src/lib/modules/countdown/countdown.ts","../../../projects/zek/src/lib/modules/countdown/countdown.html","../../../projects/zek/src/lib/modules/date-ago/date-ago.pipe.ts","../../../projects/zek/src/lib/modules/datepicker/date-value-accessor.ts","../../../projects/zek/src/lib/modules/datepicker/datepicker.module.ts","../../../projects/zek/src/lib/modules/dropdown/dropdown.ts","../../../projects/zek/src/lib/modules/dropdown/dropdown.html","../../../projects/zek/src/lib/modules/edit-toolbar/edit-toolbar.ts","../../../projects/zek/src/lib/modules/edit-toolbar/edit-toolbar.html","../../../projects/zek/src/lib/modules/file/file-size.pipe.ts","../../../projects/zek/src/lib/modules/file-input/file-input.ts","../../../projects/zek/src/lib/modules/file-input/file-input.html","../../../projects/zek/src/lib/modules/modal/modal/modal.component.ts","../../../projects/zek/src/lib/modules/modal/modal/modal.component.html","../../../projects/zek/src/lib/modules/modal/filter-modal/filter-modal.component.ts","../../../projects/zek/src/lib/modules/modal/filter-modal/filter-modal.component.html","../../../projects/zek/src/lib/modules/modal/sum-modal/sum-modal.component.ts","../../../projects/zek/src/lib/modules/modal/sum-modal/sum-modal.component.html","../../../projects/zek/src/lib/modules/modal/modal.module.ts","../../../projects/zek/src/lib/modules/safe/safe.pipe.ts","../../../projects/zek/src/lib/modules/file-viewer/file-viewer.ts","../../../projects/zek/src/lib/modules/file-viewer/file-viewer.html","../../../projects/zek/src/lib/modules/google-login-button/loader.ts","../../../projects/zek/src/lib/modules/google-login-button/google-login-button.ts","../../../projects/zek/src/lib/modules/google-login-button/module.ts","../../../projects/zek/src/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.ts","../../../projects/zek/src/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.html","../../../projects/zek/src/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.ts","../../../projects/zek/src/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.html","../../../projects/zek/src/lib/modules/list-toolbar/list-toolbar.ts","../../../projects/zek/src/lib/modules/list-toolbar/list-toolbar.html","../../../projects/zek/src/lib/modules/loading/loading-interceptor.ts","../../../projects/zek/src/lib/modules/loading/loading.ts","../../../projects/zek/src/lib/modules/loading/loading.module.ts","../../../projects/zek/src/lib/modules/loading/index.ts","../../../projects/zek/src/lib/modules/numeric/numeric.directive.ts","../../../projects/zek/src/lib/modules/page-title/page-title.component.ts","../../../projects/zek/src/lib/modules/page-title/page-title.component.html","../../../projects/zek/src/lib/modules/pager/pager/pager.ts","../../../projects/zek/src/lib/modules/pager/pager/pager.html","../../../projects/zek/src/lib/modules/validator/field-validator.ts","../../../projects/zek/src/lib/modules/validator/field-validator.html","../../../projects/zek/src/lib/modules/password/password.ts","../../../projects/zek/src/lib/modules/password/password.html","../../../projects/zek/src/lib/modules/progress/progress.ts","../../../projects/zek/src/lib/modules/progress/progress.html","../../../projects/zek/src/lib/modules/radio/radio.ts","../../../projects/zek/src/lib/modules/radio/radio.html","../../../projects/zek/src/lib/modules/readonly/readonly.directive.ts","../../../projects/zek/src/lib/modules/recaptcha/loader.ts","../../../projects/zek/src/lib/modules/recaptcha/recaptcha.service.ts","../../../projects/zek/src/lib/modules/recaptcha/recaptcha.module.ts","../../../projects/zek/src/lib/modules/select/select.ts","../../../projects/zek/src/lib/modules/select/select.html","../../../projects/zek/src/lib/modules/select2/select2.ts","../../../projects/zek/src/lib/modules/select2/select2.html","../../../projects/zek/src/lib/modules/select2-multiple/select2-multiple.ts","../../../projects/zek/src/lib/modules/select2-multiple/select2-multiple.html","../../../projects/zek/src/lib/modules/sort/sort.ts","../../../projects/zek/src/lib/modules/sort/sort-button-group/sort-button-group.ts","../../../projects/zek/src/lib/modules/sort/sort-button-group/sort-button-group.html","../../../projects/zek/src/lib/modules/tag/tag.ts","../../../projects/zek/src/lib/modules/tag/tag.html","../../../projects/zek/src/lib/modules/time/time.pipe.ts","../../../projects/zek/src/lib/modules/time/time.module.ts","../../../projects/zek/src/lib/modules/time/timer-service.ts","../../../projects/zek/src/lib/modules/tooltip/tooltip.ts","../../../projects/zek/src/lib/modules/utc-to-local/local-to-utc.pipe.ts","../../../projects/zek/src/lib/modules/utc-to-local/utc-to-local.pipe.ts","../../../projects/zek/src/lib/modules/validators/validator.ts","../../../projects/zek/src/lib/modules/validators/directive.ts","../../../projects/zek/src/lib/modules/validators/module.ts","../../../projects/zek/src/lib/modules/wizard/wizard/wizard.ts","../../../projects/zek/src/lib/modules/wizard/wizard/wizard.html","../../../projects/zek/src/lib/modules/wizard/wizard2/wizard2.ts","../../../projects/zek/src/lib/modules/wizard/wizard2/wizard2.html","../../../projects/zek/src/lib/zek.module.ts","../../../projects/zek/src/public-api.ts","../../../projects/zek/src/zek.ts"],"sourcesContent":["export enum PrintType {\r\n    Show = 1,\r\n    Pdf = 2\r\n}","\r\nexport class ObjectHelper {\r\n    static isDefined(value: any) {\r\n        return typeof value !== 'undefined' && value !== null;\r\n    }\r\n\r\n    static isObject(value: any) {\r\n        return this.isDefined(value) && typeof value === 'object';\r\n    }\r\n\r\n\r\n    /**\r\n     * Check if the object is a string or array before evaluating the length attribute.\r\n     * This avoids falsely rejecting objects that contain a custom length attribute.\r\n     * For example, the object {id: 1, length: 0, width: 0} should not be returned as empty.\r\n     */\r\n    static isEmptyValue(value: any): boolean {\r\n        return !this.isDefined(value) || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0);\r\n    }\r\n\r\n\r\n    static isEmpty(obj: any) {\r\n        if (!this.isDefined(obj))\r\n            return true;\r\n        // if (typeof obj === 'undefined' || obj === null)\r\n        //     return true;\r\n        for (const prop in obj) {\r\n            const v = obj[prop];\r\n            if (!this.isEmptyValue(v))\r\n                return false;\r\n            // if (typeof (obj[prop]) !== undefined && obj[prop] !== null && obj[prop] !== '') {\r\n            //     return false;\r\n            // }\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n\r\n    /**\r\n     * @deprecated The method should not be used. please use deleteNullFields\r\n     */\r\n    static deleteNullKeys(val: any) {\r\n        this.deleteNullFields(val);\r\n    }\r\n\r\n    static deleteNullFields<T extends {}>(val: T) {\r\n        if (!val) return;\r\n        for (let key in val) {\r\n            let tmp = val[key];\r\n            if (tmp === undefined || tmp === null) {\r\n                delete val[key];\r\n            }\r\n        }\r\n        return val\r\n    }\r\n\r\n    static assignFields<T extends {}, U extends {}>(target: T, source: U): T {\r\n        let t: any = target;\r\n        let s: any = source;\r\n        for (const key of Object.keys(target)) {\r\n            let v = s[key];\r\n            if (typeof v !== 'undefined') {\r\n                t[key] = v;\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n\r\n\r\n\r\n    static deepCopy<T = any>(value: any): T {\r\n        // 1. Guard clause: if value is null or not an object, return it.\r\n        // (This handles primitives and breaks recursion)\r\n        if (!this.isObject(value))\r\n            return value;\r\n\r\n        // 2. Handle Arrays\r\n        if (Array.isArray(value)) {\r\n            return value.map(x => this.deepCopy(x)) as any;\r\n        }\r\n\r\n        // 3. Handle Objects\r\n        const output: any = {};\r\n        for (const key of Object.keys(value)) {\r\n            const v = value[key];\r\n            if (this.isObject(v)) {\r\n                output[key] = this.deepCopy(v);\r\n            } else {\r\n                Object.assign(output, { [key]: v });\r\n            }\r\n        }\r\n\r\n        return output as T;\r\n    }\r\n\r\n    static deepEquals(a: any, b: any): boolean {\r\n        // 1. Strict equality for primitives\r\n        if (a === b) return true;\r\n\r\n        // 2. If one is null/undefined or types differ → not equal\r\n        if (a == null || b == null || typeof a !== typeof b)\r\n            return false;\r\n\r\n        // 3. Date comparison\r\n        if (a instanceof Date && b instanceof Date) {\r\n            return a.getTime() === b.getTime();\r\n        }\r\n\r\n        // 4. Arrays\r\n        if (Array.isArray(a)) {\r\n            if (!Array.isArray(b)) return false;\r\n            if (a.length !== b.length) return false;\r\n\r\n            for (let i = 0; i < a.length; i++) {\r\n                if (!this.deepEquals(a[i], b[i])) return false;\r\n            }\r\n            return true;\r\n        }\r\n\r\n        // 5. Objects\r\n        if (this.isObject(a)) {\r\n            if (!this.isObject(b)) return false;\r\n\r\n            const keysA = Object.keys(a);\r\n            const keysB = Object.keys(b);\r\n\r\n            if (keysA.length !== keysB.length) return false;\r\n\r\n            for (const key of keysA) {\r\n                if (!keysB.includes(key)) return false;\r\n                if (!this.deepEquals(a[key], b[key])) return false;\r\n            }\r\n            return true;\r\n        }\r\n\r\n        // 6. Fallback\r\n        return false;\r\n    }\r\n\r\n\r\n\r\n}","// import { KeyPair } from \"../models/key-pair.model\";\r\n// import { Tree } from \"../models/tree.model\";\r\n\r\nimport { IdName, KeyPair, KeyPairEx, Tree } from \"../models\";\r\nimport { IFlattenTree, IFlattenTreeNode, INode, ITreeNode } from \"../models/tree\";\r\nimport { ObjectHelper } from \"./object-helper\";\r\n\r\n\r\n\r\nexport class ArrayHelper {\r\n    static insert(array: any[], index: number, item: any) {\r\n        array.splice(index, 0, item);\r\n    }\r\n\r\n\r\n    /**\r\n     * Remove item from array\r\n     * @param array \r\n     * @param item item to remove\r\n     */\r\n    static remove(array: any[], item: any) {\r\n        const index = array.indexOf(item);\r\n        if (index > -1) { // only splice array when item is found\r\n            array.splice(index, 1); // 2nd parameter means remove one item only\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Remove all items from array\r\n     * @param array \r\n     * @param item item to remove\r\n     */\r\n    static removeAll(array: any[], item: any) {\r\n        var i = 0;\r\n        while (i < array.length) {\r\n            if (array[i] === item) {\r\n                array.splice(i, 1);\r\n            } else {\r\n                ++i;\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    static move(array: any[], fromIndex: number, toIndex: number) {\r\n\r\n        const item = array[fromIndex];\r\n        array.splice(fromIndex, 1);//remove item frrom array\r\n        array.splice(toIndex, 0, item);//insert item into array\r\n        return array;\r\n    }\r\n\r\n    static contains(value: any[], v: any) {\r\n        for (let i = 0; i < value.length; i++) {\r\n            if (value[i] === v) return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n\r\n    static isArray(value: any) {\r\n        return Array.isArray(value) && value.length > 0;\r\n    }\r\n    // static distinct(value: any[]) {\r\n    //     var arr: any[] = [];\r\n    //     for (var i = 0; i < value.length; i++) {\r\n    //         let val = value[i];\r\n    //         if (!this.contains(arr, val)) {\r\n    //             arr.push(val);\r\n    //         }\r\n    //     }\r\n    //     return arr;\r\n    // }\r\n\r\n\r\n    static distinct(array: any[]) {\r\n        const length = array.length;\r\n        const result = []\r\n        const seen = new Set();\r\n\r\n        for (let index = 0; index < length; index++) {\r\n            const value = array[index];\r\n            if (seen.has(value)) continue;\r\n\r\n            seen.add(value);\r\n            result.push(value);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    /**\r\n     * Returns a new array with duplicates removed based on a specific key or selector.\r\n     * @param array The source array.\r\n     * @param keySelector A function that returns the value to compare by.\r\n     */\r\n    static distinctBy<T, K>(array: T[], keySelector: (item: T) => K): T[] {\r\n        // Guard clause for null/undefined or empty arrays\r\n        if (!array || array.length === 0) {\r\n            return [];\r\n        }\r\n\r\n        const seen = new Set<K>();\r\n        const result: T[] = [];\r\n\r\n        // Using a for...of loop is often cleaner than standard for loop in modern JS\r\n        for (const item of array) {\r\n            const key = keySelector(item);\r\n\r\n            if (!seen.has(key)) {\r\n                seen.add(key);\r\n                result.push(item);\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    static filterByKeyString(filterValue: any, key: string, array: any[]) {\r\n        if (typeof filterValue === 'undefined' || filterValue == null || (typeof key === 'string' && key.length === 0))\r\n            return array;\r\n\r\n        return array.filter(x => x !== undefined && x !== null && x[key] === filterValue);\r\n    }\r\n\r\n    /**\r\n     * Filters an array based on whether the value derived by the keySelector \r\n     * equals the filterValue.\r\n     * @param filterValue The value to match.\r\n     * @param keySelector A function that takes an item of type T and returns the key value of type K.\r\n     * @param array The array of items to filter.\r\n     * @returns A new array containing only the items that match the filter criteria.\r\n     */\r\n    static filterByKey<T, K>(filterValue: K, keySelector: (item: T) => K, array: T[]): T[] {\r\n        // 1. Handle edge cases: if filterValue is undefined or null, or the array is null/empty,\r\n        //    return the array or an empty array, respectively.\r\n        if (typeof filterValue === 'undefined' || filterValue === null || !array) {\r\n            return array || [];\r\n        }\r\n\r\n        // 2. Filter the array using the keySelector for comparison\r\n        return array.filter((item: T) => {\r\n            // Ensure the item itself is not undefined or null before trying to get its key\r\n            if (!ObjectHelper.isDefined(item)) {\r\n                return false;\r\n            }\r\n            // Get the specific key value for the current item\r\n            const itemKey = keySelector(item);\r\n\r\n            // Return true if the item's key value strictly equals the filterValue\r\n            return itemKey === filterValue;\r\n        });\r\n    }\r\n\r\n\r\n\r\n\r\n    static flatten(array: any, indent: number = 0) {\r\n        let result: any[] = [];\r\n        if (!Array.isArray(array)) {\r\n            const flattenedItem = {\r\n                ...array, // shallow copy the current item\r\n                indent, // add the current indent level\r\n                count: Array.isArray(array.children) ? array.children.length : 0 // set count based on children\r\n            };\r\n\r\n            delete flattenedItem.children;\r\n            delete flattenedItem.childrenIds;\r\n            result.push(flattenedItem);\r\n\r\n            if (flattenedItem.count) {\r\n                result.push(...this.flatten(array.children, indent + 1)); // Use spread operator for efficiency\r\n            }\r\n\r\n            return result;\r\n        } else {\r\n\r\n            for (const item of array) {\r\n                result.push(...this.flatten(item, indent));\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    /**\r\n    * @deprecated use flattenDropDownList2\r\n    */\r\n    static flattenDropDownList(tree: Tree | Tree[], indent: number = 0) {\r\n        let result: IFlattenTree[] = [];\r\n        // If the input is an array of trees, we process each one\r\n        if (!Array.isArray(tree)) {\r\n            // Add the current tree node to the result\r\n            let item: IFlattenTree = {\r\n                key: tree.key,\r\n                value: '&emsp;'.repeat(indent) + tree.value,\r\n                indent: indent,\r\n                count: Array.isArray(tree.children) ? tree.children.length : 0\r\n            } as IFlattenTree;\r\n            result.push(item);\r\n            // If there are children, recursively flatten them\r\n            if (Array.isArray(tree.children)) {\r\n                result.push(...this.flattenDropDownList(tree.children, indent + 1)); // Use spread operator for efficiency\r\n            }\r\n        } else {\r\n            for (const item of tree) {\r\n                result.push(...this.flattenDropDownList(item, indent));\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    static flattenTreeNodeDropDownList(tree: ITreeNode | ITreeNode[], indent: number = 0) {\r\n        let result: IFlattenTreeNode[] = [];\r\n        // If the input is an array of trees, we process each one\r\n        if (!Array.isArray(tree)) {\r\n            // Add the current tree node to the result\r\n            let item: IFlattenTreeNode = {\r\n                id: tree.id,\r\n                name: '&emsp;'.repeat(indent) + tree.name,\r\n                indent: indent,\r\n                count: Array.isArray(tree.children) ? tree.children.length : 0\r\n            } as IFlattenTree;\r\n            result.push(item);\r\n            // If there are children, recursively flatten them\r\n            if (Array.isArray(tree.children)) {\r\n                result.push(...this.flattenTreeNodeDropDownList(tree.children, indent + 1)); // Use spread operator for efficiency\r\n            }\r\n        } else {\r\n            for (const item of tree) {\r\n                result.push(...this.flattenTreeNodeDropDownList(item, indent));\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n\r\n    private static enumToKeyPairBaseArray<T extends KeyPair<number, string>>(value: any): T[] {\r\n        const keys = Object.keys(value);\r\n        const slice = keys.length / 2;\r\n        const result: T[] = [];\r\n        for (let i = slice; i < keys.length; i++) {\r\n            const name = keys[i];\r\n            result.push({ key: + value[name], value: name } as T);\r\n        }\r\n        return result;\r\n    }\r\n    static enumToKeyPairArray(value: any): KeyPair<number, string>[] {\r\n        return this.enumToKeyPairBaseArray<KeyPair<number, string>>(value);\r\n    }\r\n    static enumToKeyPairExArray(value: any): KeyPairEx<number, string>[] {\r\n        return this.enumToKeyPairBaseArray<KeyPairEx<number, string>>(value);\r\n    }\r\n\r\n    static enumToArray<T extends IdName<number, string>>(value: any): T[] {\r\n        const keys = Object.keys(value);\r\n        const slice = keys.length / 2;\r\n        const result: T[] = [];\r\n        for (let i = slice; i < keys.length; i++) {\r\n            const name = keys[i];\r\n            result.push({ id: + value[name], name: name } as T);\r\n        }\r\n        return result;\r\n    }\r\n\r\n\r\n\r\n\r\n    /**\r\n     * Method to create a tree from a flat array of nodes\r\n     * @param array \r\n     * @param safe if tue and some nodes not have parent thand adds as a root node. if false than thoose nodes skipped.\r\n     * @returns \r\n     */\r\n    static createTree(array: INode[], safe = true): ITreeNode[] {\r\n        const tree: ITreeNode[] = [];\r\n\r\n        // Map to store nodes by their id for easy access\r\n        const map: { [key: number]: ITreeNode } = {};\r\n\r\n        // Step 1: Loop over the array to build the nodes\r\n        for (const item of array) {\r\n            const node: ITreeNode = {\r\n                id: item.id,\r\n                parentId: item.parentId ?? null,\r\n                name: item.name ?? null,\r\n                children: null\r\n            };\r\n            map[node.id] = node;\r\n        }\r\n\r\n        for (const item of array) {\r\n            const node = map[item.id];\r\n\r\n            // Step 2: Check if it's a root or child and assign to parent or tree\r\n            if (typeof node.parentId === 'undefined' || node.parentId === null) {\r\n                // Root node, add directly to the tree\r\n                tree.push(node);\r\n            } else {\r\n                // Non-root node, find its parent and add to its children\r\n                let parentNode = map[node.parentId];\r\n                if (parentNode) {\r\n                    if (!Array.isArray(parentNode.children))\r\n                        parentNode.children = [];\r\n                    parentNode.children.push(node);\r\n                } else if (safe) {\r\n                    //if save=true and parent node not exists, then we add as a root node\r\n                    tree.push(node);\r\n                }\r\n            }\r\n        }\r\n\r\n        return tree;\r\n    }\r\n\r\n}","export class Base64Helper {\r\n    static utf8ToBase64String(str: string) {\r\n        return btoa(unescape(encodeURIComponent(str)));\r\n    }\r\n\r\n    static base64StringToUtf8(str: string) {\r\n        return decodeURIComponent(escape(atob(str)));\r\n    }\r\n\r\n    static base64StringToBlob(str: string, type?: string) {\r\n        const byteString = atob(str);\r\n        const int8Array = new Uint8Array(byteString.length);\r\n        for (let i = 0; i < byteString.length; i++) {\r\n            int8Array[i] = byteString.charCodeAt(i);\r\n        }\r\n        const blob = new Blob([int8Array], { type: type });\r\n        return blob;\r\n    }\r\n}\r\n","export class BitwiseHelper {\r\n    static hasFlag(flags: number, flagToCheck: any): boolean {\r\n        return (flags & flagToCheck) === flagToCheck;\r\n    }\r\n\r\n    static addFlags(flags: number, ...flagsToAdd: any[]): number {\r\n        if (!flagsToAdd) return flags;\r\n\r\n        flagsToAdd.forEach(flag => {\r\n            flags |= flag;\r\n        });\r\n\r\n        return flags;\r\n    }\r\n}","import { AlertType } from '../models/alert-type';\r\n\r\nexport enum ComponentType {\r\n    Primary = 1,\r\n    // Secondary,\r\n    Success,\r\n    Delete,\r\n    //Danger,\r\n    Warning,\r\n    Info,\r\n    // Light,\r\n    // Dark,\r\n}\r\n\r\nexport enum Color {\r\n    Primary = 1,\r\n    Secondary = 2,\r\n    Success = 3,\r\n    Danger = 4,\r\n    Warning = 5,\r\n    Info = 6,\r\n    Dark = 8,\r\n}\r\n\r\nexport class BootstrapHelper {\r\n    static cssColor(color?: Color | null) {\r\n        switch (color) {\r\n            case Color.Primary:\r\n                return 'bg-primary text-white'\r\n            case Color.Secondary:\r\n                return 'bg-secondary text-white';\r\n            case Color.Success:\r\n                return 'bg-success text-white';\r\n            case Color.Danger:\r\n                return 'bg-danger text-white';\r\n            case Color.Warning:\r\n                return 'bg-warning text-dark';\r\n            case Color.Info:\r\n                return 'bg-info text-dark';\r\n            case Color.Dark:\r\n                return 'bg-dark text-white';\r\n            default:\r\n                return '';\r\n        }\r\n    }\r\n    static cssIcon(type: ComponentType): string | null {\r\n        if (!type) {\r\n            return null;\r\n        }\r\n\r\n        switch (type) {\r\n            case ComponentType.Delete:\r\n                return 'fa-solid fa-trash';\r\n\r\n            // case ComponentType.Danger:\r\n            case ComponentType.Warning:\r\n                return 'fa-solid fa-triangle-exclamation';\r\n\r\n            case ComponentType.Info:\r\n                return 'fa-solid fa-circle-info';\r\n\r\n            default:\r\n                return 'fa-solid fa-check';\r\n        }\r\n    }\r\n\r\n    static cssButton(type: ComponentType): string {\r\n        switch (type) {\r\n            case ComponentType.Primary:\r\n            // case ComponentType.Secondary:\r\n            case ComponentType.Success:\r\n            // case ComponentType.Danger:\r\n            case ComponentType.Warning:\r\n            case ComponentType.Info:\r\n                // case ComponentType.Light:\r\n                // case ComponentType.Dark:\r\n                return `btn-${ComponentType[type].toLowerCase()}`;\r\n\r\n            case ComponentType.Delete:\r\n                return 'btn-danger';\r\n            default:\r\n                return 'btn-secondary';\r\n        }\r\n    }\r\n\r\n\r\n\r\n\r\n    // static getAlertType(type?: string | null): AlertType | null {\r\n    //     if (!type) return null;\r\n\r\n    //     let v = StringHelper.firstUpper(type);\r\n    //     if (!v)\r\n    //         return null;\r\n\r\n    //     var enumValue = (<any>AlertType)[v];\r\n    //     if (!enumValue)\r\n    //         return null;\r\n\r\n\r\n    //     return enumValue;\r\n    // }\r\n    static cssAlert(type?: AlertType | null): string {\r\n        switch (type) {\r\n            case 'primary':\r\n                return 'alert-primary';\r\n            case 'secondary':\r\n                return 'alert-secondary';\r\n            case 'success':\r\n                return 'alert-success';\r\n            case 'danger':\r\n                return 'alert-danger';\r\n            case 'warning':\r\n                return 'alert-warning';\r\n            case 'info':\r\n                return 'alert-info';\r\n            case 'light':\r\n                return 'alert-light';\r\n            case 'dark':\r\n                return 'alert-dark';\r\n            default:\r\n                return 'alert-secondary';\r\n        }\r\n    }\r\n    static cssAlertIcon(type?: AlertType | null): string {\r\n        switch (type) {\r\n            case 'success':\r\n                return 'fa-solid fa-circle-check';\r\n            case 'danger':\r\n                return 'fa-solid fa-circle-xmark';\r\n            case 'warning':\r\n                return 'fa-solid fa-circle-exclamation';\r\n            case 'info':\r\n                return 'fa-solid fa-circle-info';\r\n            default:\r\n                return '';\r\n        }\r\n    }\r\n}","export class Convert {\r\n    static toBoolean(value: any) {\r\n        if (typeof value !== 'undefined' && value !== null && value !== '') {\r\n            switch (`${value}`.toUpperCase()) {\r\n                case \"TRUE\":\r\n                case \"YES\":\r\n                case \"1\":\r\n                case \"ON\":\r\n                    return true;\r\n\r\n                default:\r\n                    return false;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    static toBooleanProperty(value: any): boolean {\r\n        return value != null && `${value}` !== 'false';\r\n    }\r\n\r\n    static parseNumber(value: any) {\r\n        if (typeof value === 'undefined' || value == null || (typeof value === 'string' && value.length === 0)) return null;\r\n        const n = Number(value);\r\n        return !isNaN(n) ? n : null;\r\n    }\r\n    static toNumber(value: any, defaultValue = 0) {\r\n        return this.isNumber(value) ? Number(value) : defaultValue;\r\n    }\r\n\r\n    static isNumber(value: any): boolean {\r\n        // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\r\n        // and other non-number values as NaN, where Number just uses 0) but it considers the string\r\n        // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\r\n        return !isNaN(parseFloat(value as any)) && !isNaN(Number(value));\r\n    }\r\n\r\n    // static toNumber(value: any){\r\n    //     if (typeof value !== 'undefined' && value !== null && value !== '') {\r\n    //         return +value;\r\n    //     }\r\n\r\n    //     return 0;\r\n    // }\r\n}","import { ArrayHelper } from './array-helper';\r\n\r\nexport class CssHelper {\r\n    static addClass<T extends string | string[] | null | undefined>(clazz: T, addClasses?: string | string[] | null): T {\r\n        if (!clazz || clazz === '' || clazz.length == 0) {\r\n            return addClasses as T;\r\n        }\r\n\r\n        if (!addClasses || addClasses === '') {\r\n            return clazz;\r\n        }\r\n\r\n\r\n        const arr = ArrayHelper.distinct(this.parseClassNames(clazz).concat(this.parseClassNames(addClasses)));\r\n\r\n        return Array.isArray(clazz) ? arr as T : arr.join(' ') as T;\r\n    }\r\n\r\n\r\n    static removeClass<T extends string | string[] | null | undefined>(clazz: T, removeClasses?: string | string[] | null): T {\r\n        if (!clazz || clazz === '') {\r\n            return clazz;\r\n        }\r\n\r\n        if (!removeClasses || removeClasses === '' || removeClasses.length === 0) {\r\n            return clazz;\r\n        }\r\n\r\n        const arrClasses = this.parseClassNames(clazz);\r\n        const arrRemove = this.parseClassNames(removeClasses);\r\n\r\n        const arr: any[] = [];\r\n        for (var i = 0; i < arrClasses.length; i++) {\r\n            const val = arrClasses[i];\r\n            if (!ArrayHelper.contains(arrRemove, val)) {\r\n                arr.push(val);\r\n            }\r\n        }\r\n        return Array.isArray(clazz) ? arr as T : arr.join(' ') as T;\r\n    }\r\n\r\n\r\n    static parseClassNames(raw?: string | string[] | null) {\r\n        if (Array.isArray(raw)) {\r\n            return raw\r\n        }\r\n\r\n        if (typeof raw === 'string') {\r\n            return raw.split(/\\s+/)\r\n        }\r\n\r\n        return []\r\n    }\r\n}","export enum PeriodRelation {\r\n    After,\r\n    StartTouching,\r\n    StartInside,\r\n    InsideStartTouching,\r\n    EnclosingStartTouching,\r\n    Enclosing,\r\n    EnclosingEndTouching,\r\n    ExactMatch,\r\n    Inside,\r\n    InsideEndTouching,\r\n    EndInside,\r\n    EndTouching,\r\n    Before,\r\n}\r\n\r\nexport class OverlapHelper {\r\n\r\n\r\n    static getRelation(start1: Date, end1: Date, start2: Date, end2: Date): PeriodRelation {\r\n        if (end2 < start1) {\r\n            return PeriodRelation.After;\r\n        }\r\n        if (start2 > end1) {\r\n            return PeriodRelation.Before;\r\n        }\r\n        if (start2 == start1 && end2 == end1) {\r\n            return PeriodRelation.ExactMatch;\r\n        }\r\n        if (end2 == start1) {\r\n            return PeriodRelation.StartTouching;\r\n        }\r\n        if (start2 == end1) {\r\n            return PeriodRelation.EndTouching;\r\n        }\r\n        if (this.hasInside2(start1, end1, start2, end2)) {\r\n            if (start2 == start1) {\r\n                return PeriodRelation.EnclosingStartTouching;\r\n            }\r\n            return end2 == end1 ? PeriodRelation.EnclosingEndTouching : PeriodRelation.Enclosing;\r\n        }\r\n        const periodContainsMyStart = this.hasInside(start2, end2, start1);\r\n        const periodContainsMyEnd = this.hasInside(start2, end2, end1);\r\n        if (periodContainsMyStart && periodContainsMyEnd) {\r\n            if (start2 == start1) {\r\n                return PeriodRelation.InsideStartTouching;\r\n            }\r\n            return end2 == end1 ? PeriodRelation.InsideEndTouching : PeriodRelation.Inside;\r\n        }\r\n        if (periodContainsMyStart) {\r\n            return PeriodRelation.StartInside;\r\n        }\r\n        if (periodContainsMyEnd) {\r\n            return PeriodRelation.EndInside;\r\n        }\r\n\r\n        throw new Error(\"invalid period relation of '\" + start1 + \"-\" + end1 + \"' and '\" + start2 + \"-\" + end2 + \"'\");\r\n    }\r\n\r\n    static hasInside(start: Date, end: Date, date: Date): boolean {\r\n        return date >= start && date <= end;\r\n    }\r\n\r\n    static hasInside2(start1: Date, end1: Date, start2: Date, end2: Date): boolean {\r\n        return this.hasInside(start1, end1, start2) && this.hasInside(start1, end1, end2);\r\n    }\r\n\r\n    static intersects(start1: Date, end1: Date, start2: Date, end2: Date): boolean {\r\n        return this.hasInside(start1, end1, start2) || this.hasInside(start1, end1, end2) || (start2 < start1 && end2 > end1);\r\n    }\r\n\r\n    static overlaps(start1: Date, end1: Date, start2: Date, end2: Date): boolean {\r\n        const relation = this.getRelation(start1, end1, start2, end2);\r\n        return relation != PeriodRelation.After &&\r\n            relation != PeriodRelation.StartTouching &&\r\n            relation != PeriodRelation.EndTouching &&\r\n            relation != PeriodRelation.Before;\r\n    }\r\n\r\n\r\n}","import { OverlapHelper } from \"./overlap-helper\";\r\n\r\nexport class TimeHelper {\r\n    static parseTime(value: any): string | null {\r\n        if (typeof value === 'undefined' || value == null || value === '') return null;\r\n        return this.toTime(value);\r\n    }\r\n    static toTime(value: string): string {\r\n        if (typeof value === 'string') {\r\n            value = value.trim();\r\n\r\n            if (/^(\\d{1,2}:\\d{1,2})$/.test(value)) {\r\n                const [h, m] = value.split(':').map((val: string) => +val);\r\n                return `${h < 10 ? '0' : ''}${h}:${m < 10 ? '0' : ''}${m}:00`;\r\n            } else if (/^(\\d{1,2}:\\d{1,2}:\\d{1,2})$/.test(value)) {\r\n                const [h, m, s] = value.split(':').map((val: string) => +val);\r\n                return `${h < 10 ? '0' : ''}${h}:${m < 10 ? '0' : ''}${m}:${s < 10 ? '0' : ''}${s}`;\r\n            }\r\n        }\r\n        return '';\r\n    }\r\n\r\n    \r\n\r\n\r\n    static toDate(time: string | undefined | null): Date {\r\n        const date = new Date(0);\r\n\r\n        const tmp = this.parseTime(time);\r\n        if (!tmp) return date;\r\n\r\n        const timeDate = new Date('1970-01-01T' + time + 'Z');\r\n        date.setTime(date.getTime() + timeDate.getTime());\r\n        return date;\r\n    }\r\n\r\n\r\n    static intersects(start1: string, end1: string, start2: string, end2: string): boolean {\r\n        const startDate1 = this.toDate(start1);\r\n        const endDate1 = this.toDate(end1);\r\n        const startDate2 = this.toDate(start2);\r\n        const endDate2 = this.toDate(end2);\r\n\r\n        return OverlapHelper.intersects(startDate1, endDate1, startDate2, endDate2);\r\n    }\r\n\r\n    static overlaps(start1: string, end1: string, start2: string, end2: string): boolean {\r\n        const startDate1 = this.toDate(start1);\r\n        const endDate1 = this.toDate(end1);\r\n        const startDate2 = this.toDate(start2);\r\n        const endDate2 = this.toDate(end2);\r\n\r\n        return OverlapHelper.overlaps(startDate1, endDate1, startDate2, endDate2);\r\n    }\r\n}","import { TimeHelper } from \"./time-helper\";\r\n\r\nexport class DateHelper {\r\n\r\n    static equals(value1?: Date | null, value2?: Date | null) {\r\n        const val1 = (value1 === undefined || value1 === null) ? null : value1;\r\n        const val2 = (value2 === undefined || value2 === null) ? null : value2;\r\n\r\n\r\n        if (val1 === val2) {\r\n            return true;\r\n        }\r\n\r\n        if (!val1 || !val2) {\r\n            return false;\r\n        }\r\n\r\n        return val1.getTime() === val2.getTime();\r\n    }\r\n\r\n    static getDates(start: Date, end: Date) {\r\n        const dates = new Array<Date>();\r\n        let date = new Date(start.valueOf());\r\n        while (date <= end) {\r\n            dates.push(new Date(date));\r\n            date = this.addDays(date, 1);\r\n        }\r\n        return dates;\r\n    }\r\n\r\n    static dateOnly(value: Date) {\r\n        const year = value.getFullYear();\r\n        const month = value.getMonth();\r\n        const day = value.getDate();\r\n        const date = new Date(Date.UTC(year, month, day));\r\n\r\n        return date;\r\n    }\r\n    static today() {\r\n        return this.dateOnly(new Date());\r\n    }\r\n\r\n    static toISODateString(value: Date | string) {\r\n        const date = this.parseDate(value);\r\n\r\n        if (!date)\r\n            return null;\r\n\r\n        const year = date.getFullYear();\r\n        // Add +1 to month since 0 is January\r\n        const month = date.getMonth() + 1;\r\n        const day = date.getDate();\r\n\r\n        const str = `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;\r\n        return str;\r\n    }\r\n\r\n    static toISOTimeString(value: Date | string) {\r\n        const date = DateHelper.parseDate(value);\r\n\r\n        if (!date)\r\n            return null;\r\n\r\n        const hour = date.getHours();\r\n        const minute = date.getMinutes();\r\n        const second = date.getSeconds();\r\n\r\n        const str = `${hour < 10 ? '0' : ''}${hour}:${minute < 10 ? '0' : ''}${minute}:${second < 10 ? '0' : ''}${second}`;\r\n        return str;\r\n    }\r\n    \r\n    static toTimeInput(value: Date | string) {\r\n        const date = DateHelper.parseDate(value);\r\n\r\n        if (!date)\r\n            return null;\r\n\r\n        const hour = date.getHours();\r\n        const minute = date.getMinutes();\r\n\r\n        const str = `${hour < 10 ? '0' : ''}${hour}:${minute < 10 ? '0' : ''}${minute}`;\r\n        return str;\r\n    }\r\n\r\n    //** Offes seconds ( offsetmin * 60sec * 1000ms) */\r\n    private static readonly _utcDiff = -new Date().getTimezoneOffset() * 60000;\r\n    static utcToLocal(utc: Date) {\r\n        return new Date(utc.getTime() + this._utcDiff);\r\n    }\r\n    static localToUtc(utc: Date) {\r\n        return new Date(utc.getTime() - this._utcDiff);\r\n    }\r\n\r\n    static addTime(value: Date, time: string | undefined | null) {\r\n        const tmp = TimeHelper.parseTime(time);\r\n        if (!tmp) return value;\r\n\r\n        const timeDate = new Date('1970-01-01T' + time + 'Z');\r\n        const date = value;\r\n        date.setTime(date.getTime() + timeDate.getTime());\r\n        return date;\r\n    }\r\n    static addYears(v: Date, years: number): Date {\r\n        if (!years) return v;\r\n\r\n        const date = v;\r\n        date.setFullYear(v.getFullYear() + years);\r\n        return date;\r\n    }\r\n    static addMonths(v: Date, months: number) {\r\n        if (!months) return v;\r\n\r\n        const date = v;\r\n        date.setMonth(date.getMonth() + months);\r\n        return date;\r\n    }\r\n    static addDays(v: Date, days: number) {\r\n        if (!days) return v;\r\n\r\n        const date = v;\r\n        date.setDate(date.getDate() + days);\r\n        return date;\r\n    }\r\n    static addHours(v: Date, hours: number) {\r\n        if (!hours) return v;\r\n\r\n        const date = new Date(v);\r\n        //todo need to check if this line needs --> date = new Date(date.getTime());\r\n        date.setHours(date.getHours() + hours);\r\n        return date;\r\n    }\r\n    static addMinutes(v: Date, minutes: number) {\r\n        if (!minutes) return v;\r\n\r\n        const date = new Date(v);\r\n        //todo need to check if this line needs --> date = new Date(date.getTime());\r\n        date.setMinutes(date.getMinutes() + minutes);\r\n        return date;\r\n    }\r\n    static addSeconds(v: Date, seconds: number) {\r\n        if (!seconds) return v;\r\n\r\n        const date = v;\r\n        date.setSeconds(date.getSeconds() + seconds);\r\n\r\n        return date;\r\n    }\r\n    static isToday(date: Date) {\r\n        const today = new Date();\r\n        return this.isSameDate(date, today);\r\n    }\r\n    static clone(date: Date) {\r\n        return new Date(+date);\r\n    }\r\n    static isAnotherMonth(a: Date, b: Date) {\r\n        return b && a.getMonth() !== b.getMonth();\r\n    }\r\n    static isWeekend(v: Date,): boolean {\r\n        return v.getDay() === 0 || v.getDay() === 6;\r\n    }\r\n    static isSameDate(a: Date, b: Date) {\r\n        return b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\r\n    }\r\n\r\n\r\n    static getAge(value?: Date | string | null, now?: Date | null) {\r\n        if (value === undefined || value === null || value === '' || value !== value) return null;\r\n\r\n        const date = this.toDate(value);\r\n\r\n        const nowTime = now ? now.getTime() : Date.now();\r\n        const timeDiff = nowTime - date.getTime();\r\n\r\n        return Math.floor((timeDiff / 86400000) / 365.25);//86400000 = (1000 * 60 * 60 * 24) = 1000 millisecond * 60second  * 60minute * 24hour\r\n    }\r\n    static subtractMonths(endDate: Date, starDate: Date) {\r\n        const start = starDate <= endDate ? starDate : endDate;\r\n        const end = starDate <= endDate ? endDate : starDate;\r\n        const plus = starDate <= endDate ? 1 : -1;\r\n\r\n        let months = (end.getFullYear() - start.getFullYear()) * 12;\r\n        months -= start.getMonth();\r\n        months += end.getMonth();\r\n        return months * plus;\r\n    }\r\n\r\n    static subtractDays(value: Date, date: Date) {\r\n        if (!date)\r\n            return null;\r\n\r\n        date = this.toDate(date);\r\n        const timeDiff = date.getTime() - value.getTime();\r\n        return Math.floor(timeDiff / 86400000);//86400000 = (1000 * 60 * 60 * 24) = 1000 millisecond * 60second  * 60minute * 24hour\r\n    }\r\n    static subtractHours(value: Date, date?: Date | null) {\r\n        if (!date)\r\n            return null;\r\n\r\n        date = this.toDate(date);\r\n        const timeDiff = date.getTime() - value.getTime();\r\n        return Math.floor((timeDiff % 86400000) / 3600000);\r\n    }\r\n    static subtractMinutes(value: Date, date?: Date | null) {\r\n        if (!date)\r\n            return null;\r\n\r\n        date = this.toDate(date);\r\n        const timeDiff = date.getTime() - value.getTime();\r\n        //\r\n        return Math.floor(((timeDiff % 86400000) % 3600000) / 60000);\r\n    }\r\n\r\n\r\n\r\n\r\n    static ISO8601_DATE_REGEX =\r\n        /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\r\n    //        1        2       3         4          5          6          7          8  9     10      11\r\n\r\n\r\n    static parseDate(value: any): Date | null {\r\n        if (typeof value === 'undefined' || value == null || value === '') return null;\r\n        return this.toDate(value);\r\n    }\r\n\r\n    //  export function toDate(value: string|number|Date): Date this function is imported from date pipe \r\n    // packages/common/src/i18n/format_date.ts\r\n\r\n    /***\r\n     * Converts a value to date.\r\n     *\r\n     * Supported input formats:\r\n     * - `Date`\r\n     * - number: timestamp\r\n     * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\r\n     *   [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\r\n     *   Note: ISO strings without time return a date without timeoffset.\r\n     *\r\n     * Throws if unable to convert to a date.\r\n     */\r\n    static toDate(value: string | number | Date): Date {\r\n        if (this.isDate(value)) {\r\n            return value;\r\n        }\r\n\r\n        if (typeof value === 'number' && !isNaN(value)) {\r\n            return new Date(value);\r\n        }\r\n\r\n        if (typeof value === 'string') {\r\n            value = value.trim();\r\n\r\n            const parsedNb = parseFloat(value);\r\n\r\n            // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\r\n            if (!isNaN(value as any - parsedNb)) {\r\n                return new Date(parsedNb);\r\n            }\r\n\r\n            if (/^(\\d{4}-\\d{1,2}-\\d{1,2})$/.test(value)) {\r\n                /* For ISO Strings without time the day, month and year must be extracted from the ISO String\r\n                before Date creation to avoid time offset and errors in the new Date.\r\n                If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\r\n                date, some browsers (e.g. IE 9) will throw an invalid Date error.\r\n                If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\r\n                is applied.\r\n                Note: ISO months are 0 for January, 1 for February, ... */\r\n                const [y, m, d] = value.split('-').map((val: string) => +val);\r\n                return new Date(y, m - 1, d);\r\n            }\r\n\r\n            let match: RegExpMatchArray | null;\r\n            if (match = value.match(this.ISO8601_DATE_REGEX)) {\r\n                return this.isoStringToDate(match);\r\n            }\r\n        }\r\n\r\n        const date = new Date(value as any);\r\n        if (!this.isDate(date)) {\r\n            throw new Error(`Unable to convert \"${value}\" into a date`);\r\n        }\r\n        return date;\r\n    }\r\n\r\n    /**\r\n     * Converts a date in ISO8601 to a Date.\r\n     * Used instead of `Date.parse` because of browser discrepancies.\r\n     */\r\n    static isoStringToDate(match: RegExpMatchArray): Date {\r\n        const date = new Date(0);\r\n        let tzHour = 0;\r\n        let tzMin = 0;\r\n\r\n        // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\r\n        const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\r\n        const timeSetter = match[8] ? date.setUTCHours : date.setHours;\r\n\r\n        // if there is a timezone defined like \"+01:00\" or \"+0100\"\r\n        if (match[9]) {\r\n            tzHour = Number(match[9] + match[10]);\r\n            tzMin = Number(match[9] + match[11]);\r\n        }\r\n        dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\r\n        const h = Number(match[4] || 0) - tzHour;\r\n        const m = Number(match[5] || 0) - tzMin;\r\n        const s = Number(match[6] || 0);\r\n        const ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);\r\n        timeSetter.call(date, h, m, s, ms);\r\n        return date;\r\n    }\r\n\r\n    static isDate(value: any): value is Date {\r\n        return value instanceof Date && !isNaN(value.valueOf());\r\n    }\r\n}","import { KeyPair } from \"../models\";\r\n\r\nexport class ErrorHelper {\r\n    static responseToKeyPairArray(response: any) {\r\n        let error: any;\r\n        if (typeof response.error === 'string' && response.error[0] === '{') {\r\n            error = JSON.parse(response.error);\r\n        } else {\r\n            error = response.error;\r\n        }\r\n\r\n        return this.toKeyPairArray(error);\r\n    }\r\n\r\n    static toKeyPairArray(error: any) {\r\n        if (typeof error === 'object') {\r\n            const errors = error.traceId || error.success === false\r\n                ? error.errors\r\n                : error;\r\n\r\n            const result: KeyPair<string | null | undefined, string | null | undefined>[] = [];\r\n            const properties = Object.keys(errors);\r\n\r\n            for (const property of properties) {\r\n                const messages = errors[property];\r\n                if (messages instanceof Array) {\r\n                    for (const message of messages) {\r\n                        result.push({ key: property, value: message });\r\n                    }\r\n                }\r\n            }\r\n            return result;\r\n        }\r\n        return null;\r\n    }\r\n}","export class ExcelHelper {\r\n    static getColumnName(columnNumber: number) {\r\n        let dividend = columnNumber;\r\n        let columnName = '';\r\n\r\n        while (dividend > 0) {\r\n            const modulo = Math.floor((dividend - 1) % 26);           \r\n            columnName = String.fromCharCode(65 + modulo) + columnName;\r\n            dividend = Math.floor((dividend - modulo) / 26);\r\n        }\r\n        return columnName;\r\n    }\r\n}","import { IFileString } from \"../models\";\r\n\r\nexport class FileHelper {\r\n    static getExtension(path?: string | null) {\r\n        if (path === undefined || path == null)\r\n            return path;\r\n\r\n        if (typeof path !== 'string') {\r\n            throw new Error(\"path parameter is not string\");\r\n        }\r\n\r\n        const directorySeparatorChar = '\\\\';\r\n        const altDirectorySeparatorChar = '/';\r\n        const volumeSeparatorChar = ':';\r\n\r\n        const length = path.length;\r\n        for (let i = length; --i >= 0;) {\r\n            const ch = path[i];\r\n            if (ch === '.') {\r\n                if (i !== length - 1)\r\n                    return path.substring(i, length);\r\n                else\r\n                    return '';\r\n            }\r\n            if (ch == directorySeparatorChar || ch == altDirectorySeparatorChar || ch == volumeSeparatorChar)\r\n                break;\r\n        }\r\n\r\n        return '';\r\n    }\r\n\r\n\r\n    static download(blob: Blob | null, fileName: string) {\r\n        if (!blob) return;\r\n\r\n        const nav = (window.navigator as any);\r\n        if (nav && nav.msSaveOrOpenBlob) {\r\n            nav.msSaveOrOpenBlob(blob, fileName);\r\n        } else {\r\n            const a = document.createElement('a');\r\n            a.href = URL.createObjectURL(blob);\r\n            a.download = fileName;\r\n            a.target = '_blank';\r\n            document.body.appendChild(a);\r\n            a.click();\r\n            document.body.removeChild(a);\r\n        }\r\n    }\r\n\r\n\r\n\r\n    static fileToDataUrl(file: File) {\r\n        return new Promise<IFileString>((resolve, reject) => {\r\n            if (!file) {\r\n                reject('file is null');\r\n            }\r\n\r\n            const reader = new FileReader();\r\n            reader.onloadend = () => {\r\n\r\n                resolve({\r\n                    fileName: file.name,\r\n                    content: reader.result,\r\n                } as IFileString);\r\n            };\r\n            reader.readAsDataURL(file);\r\n        });\r\n    }\r\n    static fileToBase64String(file: File) {\r\n        return new Promise<IFileString>((resolve, reject) => {\r\n            if (!file) {\r\n                reject('file is null');\r\n            }\r\n\r\n            const reader = new FileReader();\r\n            reader.onloadend = () => {\r\n                const dataUrl = reader.result as string;\r\n                const index = dataUrl.indexOf(',');\r\n                resolve({\r\n                    fileName: file.name,\r\n                    content: dataUrl.substring(index + 1),\r\n                } as IFileString);\r\n            };\r\n            reader.readAsDataURL(file);\r\n        });\r\n    }\r\n}","import { ObjectHelper } from \"./object-helper\";\r\n\r\nexport class FilterHelper {\r\n    static isEmpty(obj: any) {\r\n        if (typeof obj === 'undefined' || obj === null)\r\n            return true;\r\n\r\n        const tmp = Object.assign({}, obj);\r\n        delete tmp.page;\r\n        delete tmp.pageSize;\r\n        delete tmp.sort;\r\n\r\n        return ObjectHelper.isEmpty(tmp);\r\n    }\r\n}","export class Guid {\r\n    static newGuid() {\r\n        if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\r\n            return crypto.randomUUID();\r\n        }\r\n\r\n        // Fallback if crypto.randomUUID is not supported\r\n        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n            const r = Math.random() * 16 | 0;\r\n            const v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n            return v.toString(16);\r\n        });\r\n    }\r\n}","\r\nexport const handler = (function () {\r\n    let i = 1;\r\n    const listeners: any = {};\r\n\r\n    return {\r\n        addListener: function (element: HTMLElement | Window, event: string, handler: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) {\r\n            element.addEventListener(event, handler, options);            \r\n            listeners[i] = {\r\n                element: element,\r\n                event: event,\r\n                handler: handler,\r\n                options: options,\r\n            };\r\n            return i++;\r\n        },\r\n        removeListener: function (id: number) {\r\n            if (id in listeners) {\r\n                const h = listeners[id];\r\n                \r\n                h.element.removeEventListener(h.event, h.handler, h.options);\r\n                delete listeners[id];\r\n            }\r\n        }\r\n    };\r\n}());","export class HtmlHelper {\r\n    static escapeHtml(source: string) {\r\n        if (source == null) {\r\n            source = '';\r\n        }\r\n\r\n        return source\r\n            .replace(/&/g, '&amp;')\r\n            .replace(/\"/g, '&quot;')\r\n            .replace(/'/g, '&#39;')\r\n            .replace(/</g, '&lt;')\r\n            .replace(/>/g, '&gt;');\r\n    }\r\n\r\n\r\n    static addInput(type: string, name: string, id: string = name, force = false) {\r\n        const node = document.createElement('input');\r\n        node.type = type;\r\n        node.name = name;\r\n        node.id = id;\r\n\r\n        document.getElementsByTagName('body')[0].appendChild(node);\r\n        return node;\r\n    }\r\n\r\n\r\n    static loadScript(url: string, nonce?: string, async = true, defer = true) {\r\n        const script = document.createElement('script');\r\n        script.innerHTML = '';\r\n        script.src = url;\r\n        script.type = 'text/javascript';\r\n\r\n        if (nonce) {\r\n            script.nonce = nonce;\r\n        }\r\n\r\n        if (async) {\r\n            script.async = true;\r\n        }\r\n        if (defer) {\r\n            script.defer = true;\r\n        }\r\n\r\n        document.head.appendChild(script);\r\n        //2022-02-24 document.getElementsByTagName('head')[0].appendChild(script);\r\n    }\r\n    static loadScripts(...scripts: string[]) {\r\n        const promises: any[] = [];\r\n        scripts.forEach((script) => promises.push(this.internalLoadScript(script)));\r\n        return Promise.all(promises);\r\n    }\r\n    private static internalLoadScript(src: string) {\r\n        return new Promise((resolve, reject) => {\r\n            const script = document.createElement('script') as any;\r\n            script.src = src;\r\n            script.type = 'text/javascript';\r\n            if (script.readyState) {  //IE\r\n                script.onreadystatechange = () => {\r\n                    if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\r\n                        script.onreadystatechange = null;\r\n                        resolve({ script: src, loaded: true });\r\n                    }\r\n                };\r\n            } else {  //Others\r\n                script.onload = () => {\r\n                    resolve({ script: src, loaded: true });\r\n                };\r\n            }\r\n            script.onerror = (error: any) => resolve({ script: src, loaded: false });\r\n            document.getElementsByTagName('head')[0].appendChild(script);\r\n        });\r\n    }\r\n\r\n\r\n    static loadCss(url: string) {\r\n        const link = document.createElement('link');\r\n        link.rel = 'stylesheet';\r\n        link.type = 'text/css';\r\n        link.href = url;\r\n        document.getElementsByTagName('head')[0].appendChild(link);\r\n    }\r\n\r\n}","export class JwtHelper {\r\n\r\n    static decode(token: any) {\r\n        const base64Url = token.split('.')[1]\r\n        const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n        const jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {\r\n            return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n        }).join(''));\r\n        return JSON.parse(jsonPayload)\r\n    }\r\n}","export class MathHelper {\r\n    // static round(value: number, decimals: number = 0): number {\r\n    //     return Math.round(Number(value) * Math.pow(10, decimals)) / (Math.pow(10, decimals));\r\n    // }\r\n    static round(value: number, decimals = 0): number {\r\n        if (!Number.isFinite(value)) return NaN;\r\n\r\n        const factor = 10 ** decimals;\r\n        return Math.round((value + Number.EPSILON) * factor) / factor;\r\n    }\r\n\r\n    static clamp(v: number, min: number, max: number) {\r\n        return Math.max(min, Math.min(max, v));\r\n    }\r\n\r\n    // static sum(...values: number[]) {\r\n    //     return values.reduce((acc, cur) => acc + cur, 0);\r\n    // }\r\n    static sum(...values: number[]) {\r\n        let sum = 0;\r\n        for (let i = 0; i < values.length; i++) {\r\n            sum += values[i];\r\n        }\r\n        return sum;\r\n    }\r\n\r\n\r\n    static format(num: number, digits: number = 2): string {\r\n        if (num === null || num === undefined || isNaN(num)) return '0';\r\n\r\n        // If less than 1000, display normally\r\n        if (Math.abs(num) < 1000) {\r\n            return num.toString();\r\n        }\r\n\r\n        const suffixes = ['k', 'M', 'G', 'T', 'P', 'E'];\r\n\r\n        // Calculate the index of the suffix\r\n        // e.g. 1,000 -> index 0 ('k'), 1,000,000 -> index 1 ('M')\r\n        const exp = Math.floor(Math.log(Math.abs(num)) / Math.log(1000));\r\n\r\n        const value = num / Math.pow(1000, exp);\r\n        const rounded = this.round(value, digits);\r\n\r\n        // Return with suffix (subtract 1 because index 0 is 'k', not '1')\r\n        return rounded + suffixes[exp - 1];\r\n    }\r\n}","import { Pager } from \"../models\";\r\n\r\nexport class PagerHelper {\r\n    static get(totalItemCount: number | null | undefined, pageNumber: number | null | undefined = 1, pageSize: number | null | undefined = 10) {\r\n        if (!totalItemCount) totalItemCount = 0;\r\n        if (!pageNumber) pageNumber = 1;\r\n        if (!pageSize) pageSize = 10;\r\n\r\n        // calculate total pages\r\n        const pageCount = Math.ceil(totalItemCount / pageSize);\r\n        let startPage: number, endPage: number;\r\n        if (pageCount <= 10) {\r\n            // less than 10 total pages so show all\r\n            startPage = 1;\r\n            endPage = pageCount;\r\n        } else {\r\n            // more than 10 total pages so calculate start and end pages\r\n            if (pageNumber <= 6) {\r\n                startPage = 1;\r\n                endPage = 10;\r\n            } else if (pageNumber + 4 >= pageCount) {\r\n                startPage = pageCount - 9;\r\n                endPage = pageCount;\r\n            } else {\r\n                startPage = pageNumber - 5;\r\n                endPage = pageNumber + 4;\r\n            }\r\n        }\r\n\r\n        // calculate start and end item indexes\r\n        const firstItemOnPage = (pageNumber - 1) * pageSize + 1;\r\n        const lastItemOnPage = Math.min(firstItemOnPage + pageSize - 1, totalItemCount);\r\n\r\n        const hasPreviousPage = pageNumber > 1;\r\n        const hasNextPage = pageNumber < pageCount;\r\n        const isFirstPage = pageNumber <= 1;\r\n        const isLastPage = pageNumber >= pageCount;\r\n\r\n        // create an array of pages to ng-repeat in the pager control\r\n        //let pages = _.range(startPage, endPage + 1);\r\n        const pages: number[] = [];\r\n        for (let i = startPage; i <= endPage; i++) {\r\n            pages.push(i);\r\n        }\r\n\r\n        // return object with all pager properties required by the view\r\n        return {\r\n            pageCount,\r\n            totalItemCount,\r\n            pageNumber,\r\n            pageSize,\r\n            hasPreviousPage,\r\n            hasNextPage,\r\n            isFirstPage,\r\n            isLastPage,\r\n            firstItemOnPage,\r\n            lastItemOnPage,\r\n            startPage: startPage,\r\n            endPage: endPage,\r\n            pages\r\n        } as Pager;\r\n    }\r\n}","export class RandomHelper {\r\n    static randomHex(count: number = 2) {\r\n        let out: string = '';\r\n        for (let i: number = 0; i < count; i++) {\r\n            // tslint:disable-next-line:no-bitwise\r\n            out += (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n        }\r\n        return out;\r\n    }\r\n\r\n    static randomInt(min: number, max: number) {\r\n        min = Math.ceil(min);\r\n        max = Math.floor(max);\r\n\r\n        return  Math.floor(Math.random() * (max - min + 1)) + min;\r\n    }\r\n}","export class StorageHelper {\r\n    // Check if logic is running in a browser environment\r\n    private static isBrowser(): boolean {\r\n        return typeof window !== 'undefined' && typeof window.localStorage !== 'undefined';\r\n    }\r\n\r\n    /**\r\n     * Saves data to localStorage.\r\n     * Automatically stringifies objects, arrays, booleans, and numbers.\r\n     */\r\n    static set(key: string, value: any): void {\r\n        if (!this.isBrowser() || !key) return;\r\n\r\n        // Fix: Only remove if strictly null or undefined.\r\n        // Prevents accidental deletion of 0, false, or \"\"\r\n        if (value === null || value === undefined) {\r\n            this.remove(key);\r\n            return;\r\n        }\r\n\r\n        try {\r\n            // If it's a string, store as is. Otherwise, stringify it.\r\n            const data = typeof value === 'string' ? value : JSON.stringify(value);\r\n            localStorage.setItem(key, data);\r\n        } catch (error) {\r\n            console.error(`Error saving ${key} to localStorage`, error);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Retrieves data from localStorage.\r\n     * Tries to parse JSON; returns string (or original type) if parsing fails.\r\n     */\r\n    static get<T = any>(key: string): T | string | null {\r\n        if (!this.isBrowser() || !key) return null;\r\n\r\n        const item = localStorage.getItem(key);\r\n\r\n        if (item === null) return null;\r\n\r\n        try {\r\n            // Fix: robust parsing handles objects, arrays, and stringified primitives\r\n            return JSON.parse(item) as T;\r\n        } catch (e) {\r\n            // If parsing fails, return the raw string\r\n            return item as unknown as T;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Removes a specific item.\r\n     */\r\n    static remove(key: string): void {\r\n        if (!this.isBrowser() || !key) return;\r\n        localStorage.removeItem(key);\r\n    }\r\n\r\n    /**\r\n     * Clears all local storage.\r\n     */\r\n    static clear(): void {\r\n        if (!this.isBrowser()) return;\r\n        localStorage.clear();\r\n    }\r\n}\r\n\r\nexport class SessionStorageHelper {\r\n    // Check if logic is running in a browser environment\r\n    private static isBrowser(): boolean {\r\n        return typeof window !== 'undefined' && typeof window.sessionStorage !== 'undefined';\r\n    }\r\n\r\n    /**\r\n     * Saves data to sessionStorage.\r\n     * automatically stringifies objects/arrays.\r\n     */\r\n    static set(key: string, value: any) {\r\n        if (!this.isBrowser() || !key) return;\r\n\r\n        // Fix: Only remove if strictly null or undefined. \r\n        // Allowing false, 0, or \"\" to be stored.\r\n        if (value === null || value === undefined) {\r\n            this.remove(key);\r\n            return;\r\n        }\r\n\r\n\r\n        try {\r\n            // Store strings as is, stringify everything else (objects, arrays, numbers, booleans)\r\n            const data = typeof value === 'string' ? value : JSON.stringify(value);\r\n            sessionStorage.setItem(key, data);\r\n        } catch (error) {\r\n            console.error(`Error saving ${key} to sessionStorage`, error);\r\n        }\r\n    }\r\n\r\n\r\n\r\n    /**\r\n     * Retrieves data from sessionStorage.\r\n     * Tries to parse JSON; returns string if parsing fails.\r\n     */\r\n    static get<T = any>(key: string): T | string | null {\r\n        if (!this.isBrowser() || !key) return null;\r\n\r\n        const item = sessionStorage.getItem(key);\r\n\r\n        if (item === null) return null;\r\n\r\n        try {\r\n            // Attempt to parse. This handles objects \"{}\", arrays \"[]\", \r\n            // and stringified primitives like \"true\" or \"123\".\r\n            return JSON.parse(item) as T;\r\n        } catch (e) {\r\n            // If parsing fails, it was likely a simple string to begin with.\r\n            // Return as-is.\r\n            return item as unknown as T;\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Removes a specific item.\r\n     */\r\n    static remove(key: string): void {\r\n        if (!this.isBrowser() || !key) return;\r\n        sessionStorage.removeItem(key);\r\n    }\r\n\r\n    /**\r\n     * Clears all session storage.\r\n     */\r\n    static clear(): void {\r\n        if (!this.isBrowser()) return;\r\n        sessionStorage.clear();\r\n    }\r\n}","export class StringHelper {\r\n    static firstUpper(v?: string | null) {\r\n        if (!v || v.length < 1)\r\n            return v;\r\n\r\n        return v.charAt(0).toUpperCase() + v.slice(1);\r\n    }\r\n\r\n    static isNullOrEmpty(value?: string | null) {\r\n        return typeof value === 'undefined' || value == null || ((typeof value === 'string') && value.length === 0);\r\n    }\r\n    static isNullOrWhiteSpace(value?: string | null) {\r\n        return typeof value === 'undefined' || value == null || ((typeof value === 'string') && value.trim().length === 0);\r\n    }\r\n    static tryTrim(val: string | undefined | null) {\r\n        if (!val)\r\n            return val;\r\n        return val.trim();\r\n    }\r\n    static ifNullEmpty(value?: string | null) {\r\n        return typeof value === 'undefined' || value == null ? '' : value;\r\n    }\r\n    static join(val: string | undefined | null, separator: string, part: string | undefined | null) {\r\n        if (this.isNullOrEmpty(val)) {\r\n            return part;\r\n        }\r\n        if (this.isNullOrEmpty(part)) {\r\n            return val;\r\n        }\r\n\r\n        return val + separator + part;\r\n    }\r\n    static trim(val: string | null, ch: string) {\r\n        if (!val || !ch)\r\n            return val;\r\n\r\n        let start = 0,\r\n            end = val.length;\r\n\r\n        while (start < end && val[start] === ch)\r\n            ++start;\r\n\r\n        while (end > start && val[end - 1] === ch)\r\n            --end;\r\n\r\n        return (start > 0 || end < val.length) ? val.substring(start, end) : val;\r\n    }\r\n    static trimStart(val: string | null, ch: string) {\r\n        if (!val || !ch)\r\n            return val;\r\n\r\n        let start = 0\r\n        const end = val.length;\r\n\r\n        while (start < end && val[start] === ch)\r\n            ++start;\r\n\r\n        return (start > 0) ? val.substring(start, end) : val;\r\n    }\r\n    static trimEnd(val: string | null, ch: string) {\r\n        if (!val || !ch)\r\n            return val;\r\n\r\n        let start = 0,\r\n            end = val.length;\r\n\r\n        while (end > start && val[end - 1] === ch)\r\n            --end;\r\n\r\n        return (end < val.length) ? val.substring(start, end) : val;\r\n    }\r\n\r\n    /**\r\n     * \r\n     * @param val source string\r\n     * @param chars trim any character\r\n     * @returns \r\n     */\r\n    static trimAny(val: string | null, chars: string) {\r\n        if (!val || !chars)\r\n            return val;\r\n\r\n        let start = 0,\r\n            end = val.length;\r\n\r\n        while (start < end && chars.indexOf(val[start]) >= 0)\r\n            ++start;\r\n\r\n        while (end > start && chars.indexOf(val[end - 1]) >= 0)\r\n            --end;\r\n\r\n        return (start > 0 || end < val.length) ? val.substring(start, end) : val;\r\n    }\r\n\r\n    static split(val: string | null | undefined, ...separator: string[]) {\r\n        if (!val) return [];\r\n\r\n        if (separator.length === 0)\r\n            separator = [','];\r\n\r\n        const regex = new RegExp(`(?:${separator.join('|')})`);\r\n        return val.split(regex)\r\n            .map(entry => entry.trim()) // Trim spaces\r\n            .filter(entry => entry.length > 0); // Remove empty entries\r\n    }\r\n\r\n}","export const firstBy = (function() {\r\n\r\n    function identity(v: any){return v;}\r\n\r\n    function ignoreCase(v: any){return typeof(v)===\"string\" ? v.toLowerCase() : v;}\r\n\r\n    function makeCompareFunction(f: any, opt: any){\r\n        opt = typeof(opt)===\"number\" ? {direction:opt} : opt||{};\r\n        if(typeof(f)!=\"function\"){\r\n            const prop = f;\r\n            // make unary function\r\n            f = function(v1: any){return !!v1[prop] ? v1[prop] : \"\";}\r\n        }\r\n        if(f.length === 1) {\r\n            // f is a unary function mapping a single item to its sort score\r\n            const uf = f;\r\n            const preprocess = opt.ignoreCase?ignoreCase:identity;\r\n            const cmp = opt.cmp || function(v1: any,v2: any) {return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;}\r\n            f = function(v1: any,v2: any) {return cmp(preprocess(uf(v1)), preprocess(uf(v2)));}\r\n        }\r\n        if(opt.direction === -1) return function(v1: any,v2: any){return -f(v1,v2)};\r\n        return f;\r\n    }\r\n\r\n    /* adds a secondary compare function to the target function (`this` context)\r\n       which is applied in case the first one returns 0 (equal)\r\n       returns a new compare function, which has a `thenBy` method as well */\r\n    function tb(this: any, func: any, opt: any) {\r\n        /* should get value false for the first call. This can be done by calling the \r\n        exported function, or the firstBy property on it (for es6 module compatibility)\r\n        */\r\n        const x = (typeof(this) == \"function\" && !this.firstBy) ? this : false;\r\n        const y = makeCompareFunction(func, opt);\r\n        const f = x ? function(a: any, b: any) {\r\n                        return x(a,b) || y(a,b);\r\n                    }\r\n                  : y;\r\n        f.thenBy = tb;\r\n        return f;\r\n    }\r\n    tb.firstBy = tb;\r\n    return tb;\r\n})();","\r\nexport interface ITimeout {\r\n  id: number;\r\n  callback: string;\r\n  interval: number;\r\n  createdAt: Date;\r\n}\r\n\r\nexport class IntervalHelper {\r\n  private static _timeouts: ITimeout[] = [];\r\n\r\n  static create(callback: Function, ms: number) {\r\n    const id = setInterval(() => {\r\n      callback();\r\n    }, ms);\r\n\r\n    const timeout = {\r\n      id: +id,\r\n      callback: callback.toString(),\r\n      interval: ms,\r\n      createdAt: new Date()\r\n    } as ITimeout;\r\n    this._timeouts.push(timeout);\r\n    return timeout;\r\n  }\r\n\r\n  static clear(id: number) {\r\n    const index = this._timeouts.findIndex(x => x.id === id);\r\n    if (index !== -1) {\r\n      clearInterval(id);\r\n      this._timeouts.splice(index, 1);\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  static clearAll() {\r\n    for (const timeout of this._timeouts) {\r\n      this.clear(timeout.id);\r\n    }\r\n    this._timeouts = [];\r\n  }\r\n}","export class TmpHelper {\r\n    private static _obj: any = {};\r\n\r\n    static get(key: string, remove = true): any {\r\n        if (!key) return;\r\n        const v = this._obj[key];\r\n        if (remove)\r\n            this.remove(key);\r\n        return v;\r\n    }\r\n  \r\n    static set(key: string, value: any) {\r\n        if (!key) return;\r\n        this._obj[key] = value;\r\n    }\r\n  \r\n    static clear() {\r\n        this._obj = {};\r\n    }\r\n    static remove(key: string) {\r\n        if (!key) return;\r\n        delete this._obj[key]\r\n    }\r\n}","import { StringHelper } from \"./string-helper\";\r\n\r\nexport class UrlHelper {\r\n    static getController(url: string) {\r\n        return url.substring(0, url.lastIndexOf('/') + 1);\r\n    }\r\n\r\n    static getAction(url: string) {\r\n        const action = url.substring(url.lastIndexOf('/') + 1);\r\n        const i = action.indexOf(';');\r\n        return i === -1 ? action : action.substring(0, i);\r\n    }\r\n\r\n    static getNoParam(url: string) {\r\n        const i1 = url.indexOf('?');\r\n        const i2 = url.indexOf(';');\r\n        if (i1 !== -1) {\r\n            if (i2 !== -1) {\r\n                const min = i1 < i2 ? i1 : i2;\r\n                return url.substring(0, min)\r\n            }\r\n            return url.substring(0, i1)\r\n        }\r\n        if (i2 !== -1) {\r\n            return url.substring(0, i2)\r\n        }\r\n        return url;\r\n    }\r\n\r\n    static combine(...parts: any[]) {\r\n        let result = '';\r\n        for (const part of parts) {\r\n            if (typeof part === 'undefined' || part === null)\r\n                continue;\r\n            const str = `${part}`;\r\n            result = this.combineEnsureSingleSeparator(result, str, '/');\r\n        }\r\n        return result;\r\n    }\r\n\r\n    private static combineEnsureSingleSeparator(a: string, b: string, separator: string = '') {\r\n        if (!a) return b;\r\n        if (!b) return a;\r\n        return StringHelper.trimEnd(a, separator) + separator + StringHelper.trimStart(b, separator);\r\n    }\r\n}","export class ValidationHelper {\r\n    static readonly emailRegExp = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\r\n\r\n    static isValidEmail(email?: string | null) {\r\n        if (typeof email === 'undefined' || email == null || ((typeof email === 'string') && email.length === 0)) {\r\n            return false;\r\n        }\r\n\r\n        return this.emailRegExp.test(email);\r\n    }\r\n}","import { Injectable, } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { KeyPair, LoginToken, LoginUser } from '../models';\r\nimport { DateHelper, ObjectHelper, StorageHelper } from '../utils';\r\nimport { BitwiseHelper } from '../utils/bitwise-helper';\r\n\r\n@Injectable()\r\nexport class AuthService {\r\n    static USER_KEY = 'user';\r\n    static REFRESH_TOKEN_INTERVAL = 15 * 60 * 1000;\r\n\r\n    private _auth = false;\r\n    private _user: LoginUser | null = null;\r\n    private _timerId: any;\r\n    private _refreshTimerId: any;\r\n\r\n    constructor() {\r\n        const user = StorageHelper.get(AuthService.USER_KEY);\r\n        if (user) {\r\n            this._init(user);\r\n        }\r\n    }\r\n\r\n\r\n    private get _isAuthenticated() {\r\n        const expired = this.getExpired()\r\n        return new Date() < expired;\r\n    }\r\n\r\n\r\n\r\n    get user() {\r\n        return this._user;\r\n    }\r\n    get isAuthenticated() {\r\n        return this._auth;\r\n    }\r\n\r\n    private _starTimer() {\r\n        this._stopTimer();\r\n\r\n        let interval = this.getExpired().getTime() - new Date().getTime() + 1000;\r\n        if (interval < 1000)\r\n            interval = 1000;\r\n        if (interval > 0 && this._user) {\r\n            this._timerId = setTimeout(() => {\r\n                this._onTick();\r\n            }, interval);\r\n        }\r\n    }\r\n    private _stopTimer() {\r\n        if (typeof this._timerId === 'number') {\r\n            clearTimeout(this._timerId);\r\n        }\r\n    }\r\n\r\n    private _onTick() {\r\n        const newValue = this._isAuthenticated;\r\n        if (this._auth !== newValue && !newValue) {\r\n            this.logout();\r\n        }\r\n    }\r\n\r\n\r\n    private _starRefreshTokenTimer() {\r\n        this._stopRefreshTokenTimer();\r\n\r\n        const interval = AuthService.REFRESH_TOKEN_INTERVAL;\r\n        if (interval > 0 && this._user) {\r\n            this._refreshTimerId = setInterval(() => {\r\n                this.emitOnRefreshToken();\r\n            }, interval);\r\n        }\r\n    }\r\n    private _stopRefreshTokenTimer() {\r\n        if (typeof this._refreshTimerId === 'number') {\r\n            clearInterval(this._refreshTimerId);\r\n        }\r\n    }\r\n    emitOnRefreshToken() {\r\n        if (this._onRefreshTokenSubject) {\r\n            this._onRefreshTokenSubject.next();\r\n        }\r\n    }\r\n\r\n\r\n\r\n\r\n\r\n    emitOnSignedIn() {\r\n        if (this._onSignedInSubject) {\r\n            this._onSignedInSubject.next(this._auth);\r\n        }\r\n    }\r\n\r\n    private _onSignedInSubject?: Subject<boolean>;//BehaviorSubject is for initial firt value = false\r\n    private _onSignedInObservable?: Observable<boolean>;\r\n    get onSignedIn(): Observable<boolean> {\r\n        if (!this._onSignedInSubject) {\r\n            this._onSignedInSubject = new Subject<boolean>();//(this.isAuthenticated);\r\n            this._onSignedInObservable = this._onSignedInSubject.asObservable();\r\n        }\r\n\r\n        if (!this._onSignedInObservable)\r\n            throw new Error(\"_onExecuteObservable is undefined\");\r\n\r\n        return this._onSignedInObservable;\r\n    }\r\n\r\n\r\n    private _onRefreshTokenSubject?: Subject<void>;\r\n    private _onRefreshTokenObservable?: Observable<void>;\r\n    get onRefreshToken(): Observable<void> {\r\n        if (!this._onRefreshTokenSubject) {\r\n            this._onRefreshTokenSubject = new Subject<void>();\r\n            this._onRefreshTokenObservable = this._onRefreshTokenSubject.asObservable();\r\n        }\r\n\r\n        if (!this._onRefreshTokenObservable)\r\n            throw new Error(\"onRefreshTokenObservable is undefined\");\r\n\r\n        return this._onRefreshTokenObservable;\r\n    }\r\n\r\n\r\n\r\n    login(user: LoginToken | LoginUser) {\r\n        StorageHelper.set(AuthService.USER_KEY, user);\r\n        this._init(user);\r\n    }\r\n    private _init(user: LoginToken | LoginUser) {\r\n        if (user) {\r\n            //convert string to local date/time\r\n            user.expired = ObjectHelper.isDefined(user.expired) ? DateHelper.parseDate(user.expired) : user.expired;\r\n\r\n            if (Array.isArray(user.roles)) {\r\n                user.roles = user.roles.map(function (e: any) { return e ? e.toUpperCase() : e; });\r\n            }\r\n        }\r\n        this._user = user as any;\r\n\r\n        // if (!this._auth) {\r\n        //     this._auth = true;\r\n        //     this.emitOnSignedIn();\r\n        // }\r\n        this._auth = true;\r\n        this.emitOnSignedIn();\r\n\r\n        //restart timers for new timeouts\r\n        this._starTimer();\r\n        this._starRefreshTokenTimer();\r\n    }\r\n\r\n    logout() {\r\n        StorageHelper.set(AuthService.USER_KEY, null);\r\n        this._user = null;\r\n        if (this._auth) {\r\n            this._auth = false;\r\n            this.emitOnSignedIn();\r\n        }\r\n\r\n        this._stopTimer();\r\n        this._stopRefreshTokenTimer();\r\n    }\r\n\r\n    /**\r\n     *\r\n     * @returns user expiry date. if user is null returns min JS date\r\n     */\r\n    protected getExpired() {\r\n        return this.user?.expired ?? new Date(0);\r\n    }\r\n\r\n    hasPermission(permission?: KeyPair<number, number> | number | null): boolean {\r\n        if (!permission) {\r\n            return true;\r\n        }\r\n\r\n        let key = 0;\r\n        let value: number | null | undefined;\r\n        if (typeof permission === 'number' || typeof permission === 'string') {\r\n            key = +permission;\r\n        }// else if (Array.isArray(permission)) {\r\n        // }\r\n        else if (typeof permission === 'object') {\r\n            if (!permission.key)\r\n                return true;\r\n\r\n            key = permission.key;\r\n            value = permission.value;\r\n        }\r\n\r\n        return this.hasPermissions([key], value);\r\n    }\r\n\r\n\r\n    hasPermissions(permissions?: Array<number>, value?: number | null): boolean {\r\n        if (!permissions || permissions.length === 0) {\r\n            return true;\r\n        }\r\n\r\n        const user = this.user;\r\n        const userPermissions = user ? user.permissions : null;\r\n        if (!userPermissions) {\r\n            return false;\r\n        }\r\n\r\n        if (value) {\r\n            for (let i = 0; i < permissions.length; i++) {\r\n                const p = permissions[i];\r\n                const found = userPermissions[p];\r\n                if (found) {\r\n                    const hasPermission = BitwiseHelper.hasFlag(found, value);\r\n                    if (hasPermission)\r\n                        return true;\r\n                }\r\n            }\r\n        } else {\r\n            for (let i = 0; i < permissions.length; i++) {\r\n                const p = permissions[i];\r\n                const found = userPermissions[p];\r\n                if (found)\r\n                    return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n\r\n    hasDataPermission(data: any) {\r\n        //if (data === undefined || data === null) return true;\r\n        // const allowedRoles = data.roles;\r\n        // let isInRole = this.isInRole(allowedRoles);\r\n\r\n        const permission = data.permission;\r\n\r\n        const hasPermission = this.hasPermission(permission);\r\n\r\n        // return isInRole && hasPermission;\r\n        return hasPermission;\r\n    }\r\n}","import { inject } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router, CanActivateFn } from '@angular/router';\r\n\r\nimport { AuthService } from './auth.service';\r\n\r\n\r\nexport const zekAuthGuard: CanActivateFn = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n    const auth = inject(AuthService);\r\n    const router = inject(Router);\r\n\r\n    if (!auth.isAuthenticated) {\r\n        router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\r\n        return false;\r\n    }\r\n\r\n    return auth.hasDataPermission(route.data);\r\n}","import { WebApiClient } from \"./web.api\";\r\nimport { HttpErrorHandler, HandleError } from \"./http-error-handler.service\";\r\n\r\nexport class BaseService {\r\n    protected readonly handleError: HandleError;\r\n    constructor(\r\n        protected readonly controller: string,\r\n        protected readonly api: WebApiClient,\r\n        httpErrorHandler: HttpErrorHandler) {\r\n        this.handleError = httpErrorHandler.createHandleError(this.constructor.name);\r\n    }\r\n}","import { Observable, of, tap } from \"rxjs\";\r\n\r\ninterface CacheContent {\r\n    expiry: number;\r\n    value: any;\r\n}\r\n\r\nexport class CacheHelper {\r\n    private static _cache = new Map<string, CacheContent>();\r\n\r\n    static get(key: string): Observable<any> | undefined {\r\n        const data = this._cache.get(key);\r\n        if (!data) {\r\n            return undefined;\r\n        }\r\n\r\n        const now = new Date().getTime();\r\n        if (now > data.expiry) {\r\n            this._cache.delete(key);\r\n            return undefined;\r\n        }\r\n\r\n        return of(data.value);\r\n    }\r\n\r\n    // Set data to cache\r\n    static set(key: string, value: any, minutes: number = 5): Observable<any> {\r\n        const expiry = new Date().getTime() + minutes * 60000;\r\n        this._cache.set(key, { expiry, value });\r\n        return of(value);\r\n    }\r\n\r\n    // Cache and return the Observable\r\n    static getOrCreate(key: string, fallback: Observable<any>, minutes?: number): Observable<any> {\r\n        const cached = this.get(key);\r\n        if (cached) {\r\n            return cached;\r\n        } else {\r\n            return fallback.pipe(\r\n                tap(value => {\r\n                    this.set(key, value, minutes);\r\n                })\r\n            );\r\n        }\r\n    }\r\n}","import { catchError, Observable } from \"rxjs\";\r\n\r\nimport { HttpErrorHandler } from \"./http-error-handler.service\";\r\nimport { PagedList } from \"../models\";\r\nimport { BaseService } from \"./base.service\";\r\nimport { WebApiClient } from \"./web.api\";\r\nimport { Convert, ObjectHelper, UrlHelper } from \"../utils\";\r\n\r\nexport interface IService {\r\n    getAll(filter: any): Observable<PagedList>;\r\n    delete(id: any): Observable<any>;\r\n    delete2(id: any, id2: any): Observable<any>;\r\n    export(model: any, fileTypeId: any): Observable<Blob | null>;\r\n    sum(filter: any): Observable<any>;\r\n\r\n    get(id: any): Observable<any>;\r\n    get2(id: any, id2: any): Observable<any>;\r\n    save(model: any): Observable<any>;\r\n    restore(id: any): Observable<any>;\r\n    approve(id: any, model?: any | null): Observable<any>;\r\n    submit(id: any, model?: any | null): Observable<any>;\r\n    bulkApprove(model: any): Observable<any>;\r\n    disapprove(id: any, model?: any | null): Observable<any>;\r\n    bulkDisapprove(model: any): Observable<any>;\r\n    batch(model: any): Observable<any>;\r\n}\r\n\r\nexport class CrudService extends BaseService implements IService {\r\n    constructor(\r\n        controller: string,\r\n        api: WebApiClient,\r\n        httpErrorHandler: HttpErrorHandler) {\r\n        super(controller, api, httpErrorHandler);\r\n    }\r\n\r\n    get(id: any) {\r\n        const url = UrlHelper.combine(`api/${this.controller}`, id);\r\n        return this.api.get(url).pipe(catchError(this.handleError(this.get.name, null)));\r\n    }\r\n    get2(id: any, id2: any) {\r\n        return this.api.get(`api/${this.controller}/${id}/${id2}`).pipe(catchError(this.handleError(this.get2.name, null)));\r\n    }\r\n\r\n    getAll(filter?: any): Observable<PagedList> {\r\n        return this.api.get(`api/${this.controller}`, filter).pipe(catchError(this.handleError(this.getAll.name)));\r\n    }\r\n    sum(filter?: any) {\r\n        return this.api.get(`api/${this.controller}/Sum`, filter).pipe(catchError(this.handleError(this.sum.name)));\r\n    }\r\n\r\n    save(model: any) {\r\n        return !model.id\r\n            ? this.api.post<any>(`api/${this.controller}`, model).pipe(catchError(this.handleError(this.save.name, null)))\r\n            : this.api.put<any>(`api/${this.controller}/${model.id}`, model).pipe(catchError(this.handleError(this.save.name, null)));\r\n    }\r\n\r\n    delete(id: any) {\r\n        return this.api.delete(`api/${this.controller}/${id}`).pipe(catchError(this.handleError(this.delete.name, null)));\r\n    }\r\n    delete2(id: any, id2: any) {\r\n        return this.api.delete(`api/${this.controller}/${id}/${id2}`).pipe(catchError(this.handleError(this.delete2.name, null)));\r\n    }\r\n\r\n    restore(id: any) {\r\n        return this.api.patch(`api/${this.controller}/${id}/restore`).pipe(catchError(this.handleError(this.restore.name, null)));\r\n    }\r\n\r\n\r\n    submit(id: any, model?: any | null) {\r\n        return this.api.patch(`api/${this.controller}/${id}/submit`, model).pipe(catchError(this.handleError(this.submit.name, null)));\r\n    }\r\n    approve(id: any, model?: any | null) {\r\n        return this.api.patch(`api/${this.controller}/${id}/approve`, model).pipe(catchError(this.handleError(this.approve.name, null)));\r\n    }\r\n    bulkApprove(model: any) {\r\n        return this.api.patch(`api/${this.controller}/bulk-approve`, model).pipe(catchError(this.handleError(this.bulkApprove.name, null)));\r\n    }\r\n\r\n    disapprove(id: any, model?: any | null) {\r\n        return this.api.patch(`api/${this.controller}/${id}/disapprove`, model).pipe(catchError(this.handleError(this.disapprove.name, null)));\r\n    }\r\n    bulkDisapprove(model: any) {\r\n        return this.api.patch(`api/${this.controller}/bulk-disapprove`, model).pipe(catchError(this.handleError(this.bulkDisapprove.name, null)));\r\n    }\r\n\r\n    batch(model: any) {\r\n        return this.api.post(`api/${this.controller}/batch`, model).pipe(catchError(this.handleError(this.batch.name, null)));\r\n    }\r\n\r\n\r\n    export(model: any, fileTypeId: any): Observable<Blob | null> {\r\n        return Convert.isNumber(model)\r\n            ? this.api.getBlob(`api/${this.controller}/${model}/export/${fileTypeId}`).pipe(catchError(this.handleError('export', null)))\r\n            : this.api.getBlob(`api/${this.controller}/export/${fileTypeId}`, model).pipe(catchError(this.handleError('export', null)));\r\n    }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router, NavigationStart } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { AlertType } from '../models';\r\nimport { BootstrapHelper } from '../utils/bootstrap.helper';\r\n\r\nexport class BaseAlert {\r\n    type?: AlertType | null;\r\n    icon?: string | null;\r\n    title?: string | null;\r\n    css?: string | null;\r\n    // id?: string;\r\n}\r\n\r\nexport class Alert extends BaseAlert {\r\n    messages?: string[];\r\n}\r\n\r\nexport class Toast extends BaseAlert {\r\n    message?: string | null;\r\n}\r\n\r\n@Injectable()\r\nexport class AlertService {\r\n    private alertSubject = new Subject<any>();\r\n    private toastSubject = new Subject<any>();\r\n    private keepAfterRouteChange = false;\r\n    // private id = 0;\r\n\r\n    constructor(router: Router) {\r\n        // clear alert messages on route change unless 'keepAfterRouteChange' flag is true\r\n        router.events.subscribe(event => {\r\n            if (event instanceof NavigationStart) {\r\n                if (this.keepAfterRouteChange) {\r\n                    // only keep for a single route change\r\n                    this.keepAfterRouteChange = false;\r\n                } else {\r\n                    // clear alert messages\r\n                    this.clear();\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    add(alertType: AlertType, message: string, keepAfterRouteChange = false) {\r\n        const messages = [];\r\n        messages.push(message);\r\n        this.addRange(alertType, messages, keepAfterRouteChange);\r\n    }\r\n    addRange(alertType: AlertType, messages: string[], keepAfterRouteChange = false) {\r\n        this.keepAfterRouteChange = keepAfterRouteChange;\r\n        this.alertSubject.next(<Alert>{ type: alertType, messages: messages });\r\n    }\r\n    clear() {\r\n        this.alertSubject.next(null);\r\n    }\r\n\r\n\r\n    getAlert() {\r\n        return this.alertSubject.asObservable();\r\n    }\r\n    getToast() {\r\n        return this.toastSubject.asObservable();\r\n    }\r\n\r\n\r\n    success(message: string, title?: string | null, icon?: string | null) {\r\n        this.show(message, title, 'success', icon);\r\n    }\r\n    error(message: string, title?: string | null, icon?: string | null) {\r\n        this.show(message, title, 'danger', icon);\r\n    }\r\n    warning(message: string, title?: string | null, icon?: string | null) {\r\n        this.show(message, title, 'warning', icon);\r\n    }\r\n    info(message: string, title?: string | null, icon?: string | null) {\r\n        this.show(message, title, 'info', icon);\r\n    }\r\n    private show(message: string, title?: string | null, alertType?: AlertType | null, icon?: string | null) {\r\n        // if (!icon) {\r\n        //     icon = BootstrapHelper.cssAlertIcon(alertType)\r\n        // }\r\n\r\n        this.toastSubject.next(<Toast>{ message, title, type: alertType, icon });//, id: `${this.id++}`\r\n    }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { AlertService } from './alert.service';\r\nimport { ObjectHelper } from '../utils/object-helper';\r\n\r\n/** Type of the handleError function returned by HttpErrorHandler.createHandleError */\r\nexport type HandleError = <T = any>(operation?: string, result?: T, show?: boolean) => (error: HttpErrorResponse) => Observable<T>;\r\nexport type HandleErrorResult = <T = any>(operation?: string, result?: T, show?: boolean) => (error: HttpErrorResponse) => Observable<T>;\r\n\r\n/** Handles HttpClient errors */\r\n@Injectable()\r\nexport class HttpErrorHandler {\r\n    constructor(\r\n        private readonly alert: AlertService,\r\n        private readonly translate: TranslateService,\r\n        private readonly router: Router) { }\r\n\r\n    /** Create curried handleError function that already knows the service name */\r\n    createHandleError = (serviceName = '') => <T>(operation = 'operation', result = {} as T, show = true) => this.handleError(serviceName, operation, result, show);\r\n    createHandleErrorResult = (serviceName = '') => <T>(operation = 'operation', result = {} as T, show = true) => this.handleErrorResult(serviceName, operation, result, show);\r\n\r\n    /**\r\n     * Returns a function that handles Http operation failures.\r\n     * This error handler lets the app continue to run as if no error occurred.\r\n     * @param serviceName = name of the data service that attempted the operation\r\n     * @param operation - name of the operation that failed\r\n     * @param result - optional value to return as the observable result\r\n     * @param show - optional value to show error\r\n     */\r\n    handleError<T>(serviceName = '', operation = 'operation', result = {} as T, show?: boolean) {\r\n        return (response: HttpErrorResponse): Observable<T> => {\r\n            console.error(response);\r\n\r\n            if (show) {\r\n                this.showError(serviceName, operation, response)\r\n            }\r\n\r\n            return of(result);\r\n        };\r\n    }\r\n\r\n\r\n\r\n    /**\r\n     * Returns a function that handles Http operation failures.\r\n     * This error handler lets the app continue to run as if no error occurred.\r\n     * @param serviceName = name of the data service that attempted the operation\r\n     * @param operation - name of the operation that failed\r\n     * @param result - optional value to return as the observable result\r\n     * @param show - optional value to show error\r\n     */\r\n    handleErrorResult<T>(serviceName = '', operation = 'operation', result = {} as T, show?: boolean) {\r\n        return (response: HttpErrorResponse): Observable<any> => {\r\n            console.error(response);\r\n\r\n            if (show) {\r\n                this.showError(serviceName, operation, response)\r\n            }\r\n\r\n\r\n            let error: any;           \r\n            if (typeof response.error === 'string' && response.error[0] === '{') {\r\n                error = JSON.parse(response.error);\r\n            } else {\r\n                error = response.error;\r\n            }\r\n\r\n            if (error instanceof ErrorEvent) {\r\n                error = response.error.message;\r\n            }\r\n\r\n            return ObjectHelper.isDefined(error) ? of(error) : of(result);\r\n        };\r\n    }\r\n\r\n\r\n    private showError(serviceName: string, operation: string, response: HttpErrorResponse) {\r\n        switch (response.status) {\r\n            case 0://No Connection\r\n                this.alert.error(`Can't connect to api server.`);\r\n                break;\r\n\r\n            case 400://Bad Request\r\n                let error: any;\r\n                if (typeof response.error === 'string' && response.error[0] === '{') {\r\n                    error = JSON.parse(response.error);\r\n                } else {\r\n                    error = response.error;\r\n                }\r\n\r\n                if (error instanceof ErrorEvent) {\r\n                    this.alert.error(`${serviceName}: ${operation} failed: ${response.error.message}`);\r\n                } if (typeof error === 'string') {\r\n                    this.alert.error(response.error as string);\r\n                } else if (typeof error === 'object') {\r\n                    const errors = error.traceId || error.success === false\r\n                        ? error.errors\r\n                        : error;\r\n\r\n                    const errorMessages: string[] = [];\r\n                    const properties = Object.getOwnPropertyNames(errors);\r\n\r\n                    for (const property of properties) {\r\n                        const messages = errors[property];\r\n                        if (messages instanceof Array) {\r\n                            for (const message of messages) {\r\n                                const messageKey = `Validation.${message}`;\r\n                                let translatedMessage = this.translate.instant(messageKey);\r\n                                // if translation not found then use message\r\n                                if (messageKey == translatedMessage) {\r\n                                    translatedMessage = message;\r\n                                }\r\n\r\n                                if (property) {\r\n                                    const propertyKey = `Fields.${property}`;\r\n                                    let translatedProperty = this.translate.instant(`Fields.${property}`);\r\n                                    // if translation not found then use property\r\n                                    if (propertyKey == translatedProperty) {\r\n                                        translatedProperty = property\r\n                                    }\r\n                                    errorMessages.push(translatedProperty + ' - ' + translatedMessage);\r\n                                }\r\n                                else {\r\n                                    errorMessages.push(translatedMessage);\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    this.alert.addRange('danger', errorMessages);\r\n                }\r\n                break;\r\n\r\n            case 401://Unauthorized\r\n                this.alert.error('Unauthorized');\r\n                this.router.navigate(['/login']);\r\n                break;\r\n\r\n            case 403://Forbidden\r\n                this.alert.error('Forbidden');\r\n                break;\r\n\r\n            case 404://Not Found\r\n                this.alert.error('Not Found');\r\n                break;\r\n\r\n            case 402://Payment Required\r\n                this.alert.error('License Payment Required');\r\n                break;\r\n\r\n            case 500://Internal Server Error\r\n                this.alert.error('Internal Server Error');\r\n                break;\r\n\r\n            default:\r\n                break;\r\n        }\r\n    }\r\n\r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const API_BASE_URL = new InjectionToken<string>('API_BASE_URL');\r\nexport const DATE_FORMAT = new InjectionToken<string>('DATE_FORMAT');\r\nexport const LANGUAGE = new InjectionToken<string>('LANGUAGE');\r\nexport const RECAPTCHA_SITE_KEY = new InjectionToken<string>('RECAPTCHA_SITE_KEY');\r\nexport const GOOGLE_CLIENT_ID = new InjectionToken<string>('GOOGLE_CLIENT_ID');","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams/*, HttpErrorResponse*/ } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n//import { of } from 'rxjs/observable/of';\r\n//import { catchError } from 'rxjs/operators';\r\n\r\nimport { AuthService } from './auth.service';\r\n//import { deleteNullProperties } from '../utils';\r\n//import { HttpErrorHandler, HandleError } from './http-error-handler.service';\r\nimport { HttpParameterCodec } from '@angular/common/http';\r\nimport { API_BASE_URL } from '../tokens';\r\nimport { UrlHelper } from '../utils';\r\n\r\nexport interface WebApiConfig {\r\n    baseUrl: string;\r\n}\r\n\r\n@Injectable()\r\nexport class WebApiClient {\r\n    constructor(\r\n        protected readonly http: HttpClient,\r\n        protected readonly auth: AuthService,\r\n        @Inject(API_BASE_URL) private readonly baseUrl: string) {\r\n    }\r\n\r\n    get<T = any>(url: string, params?: any): Observable<T> {\r\n        const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n        return this.http.get<T>(combinedUrl, { headers: this.getHeaders(), params: this.toHttpParams(params) });\r\n        /*.catch(catchError(this.handleError(url)))\r\n        .do((res: Response) => {\r\n            // Handle success, maybe display notification\r\n        }, (error: any) => {\r\n            // Handle errors\r\n        })\r\n        .finally(() => {\r\n            // Request completed\r\n        });\r\n    */\r\n    }\r\n\r\n    getString(url: string, params?: object): Observable<string | null> {\r\n        const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n        return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'text', params: this.toHttpParams(params) });\r\n    }\r\n    getBytes(url: string, params?: any): Observable<ArrayBuffer> {\r\n        const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n        return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'arraybuffer', params: this.toHttpParams(params) });\r\n    }\r\n    getBlob(url: string, params?: any): Observable<Blob> {\r\n        const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n        return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'blob', params: this.toHttpParams(params) });\r\n    }\r\n    postBlob(url: string, body: any): Observable<Blob> {\r\n        const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n        return this.http.post(combinedUrl, body, { headers: this.getHeaders(), responseType: 'blob' });\r\n    }\r\n\r\n\r\n    protected toHttpParams(obj: any) {\r\n        if (!obj)\r\n            return undefined;\r\n\r\n        let params = new HttpParams({ encoder: new CustomHttpParamEncoder() });\r\n        for (const key of Object.keys(obj)) {\r\n            const field = obj[key];\r\n\r\n            if (field === undefined || field === null || (typeof field === 'string' && field.length === 0))\r\n                continue;\r\n\r\n            const value = field;\r\n            // if (typeof field === 'string' && field.length > 0) {\r\n            //     value = field.replace(/\\+/gi, '%2B');\r\n            // }\r\n\r\n            params = params.append(key, value);\r\n            // if (field instanceof Array) {\r\n            //     field.forEach((item: any) => {\r\n            //         params = params.append(`${key}[]`, item);\r\n            //     });\r\n            // } else {\r\n            //     params = params.append(key, field);\r\n            // }\r\n        }\r\n        return params;\r\n\r\n\r\n        //deleteNullProperties(obj);\r\n        //comment because int[] not sending in c# it send \"1,2,3,4\"\r\n        // return obj\r\n        //     ? Object.getOwnPropertyNames(obj).reduce((p, key) => p.set(key, obj[key]), new HttpParams())\r\n        //     : undefined;\r\n    }\r\n\r\n    //toKeyPairs(obj: any): KeyPair[] | undefined {\r\n    //    if (obj instanceof Object) {\r\n    //        const properties = Object.getOwnPropertyNames(obj);\r\n    //        const result = new Array<KeyPair>();\r\n    //        for (let property of properties) {\r\n    //            const value = obj[property];\r\n    //            result.push({ key: property, value: value });\r\n    //        }\r\n    //        return result;\r\n    //    }\r\n    //    return undefined;\r\n    //}\r\n\r\n    post<T = any>(url: string, body?: any | null): Observable<T> {\r\n        return this.http.post<T>(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });\r\n        //.pipe(\r\n        //catchError(this.handleError(url))\r\n        //);\r\n    }\r\n    put<T = any>(url: string, body?: any | null): Observable<T> {\r\n        return this.http.put<T>(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });\r\n        //.pipe(\r\n        //catchError(this.handleError(url))\r\n        //);\r\n    }\r\n    delete<T = any>(url: string, body?: any | null): Observable<T> {\r\n        return this.http.request<T>('delete', UrlHelper.combine(this.baseUrl, url), { body, headers: this.getHeaders(body) });\r\n        //return this.http.delete(environment.url + url, { headers: this.getHeaders() });\r\n        //.pipe(\r\n        //catchError(this.handleError(url))\r\n        //);\r\n    }\r\n    patch<T = any>(url: string, body?: any | null): Observable<T> {\r\n        return this.http.patch<T>(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });\r\n    }\r\n\r\n\r\n    protected getHeaders(body?: any | null): HttpHeaders {\r\n        let httpHeaders = new HttpHeaders();\r\n        if (!(body instanceof FormData))\r\n            httpHeaders = httpHeaders.set('Content-Type', 'application/json');\r\n        const tmp = this.auth.user;\r\n        const token = tmp ? tmp.token : undefined;\r\n        if (token)\r\n            httpHeaders = httpHeaders.set('Authorization', token);\r\n        return httpHeaders;\r\n    }\r\n\r\n\r\n\r\n    //private getParams(params?: KeyPair[] | null) {\r\n    //    if (!params || params.length === 0) {\r\n    //        return undefined;\r\n    //    }\r\n    //    let httpParams = new HttpParams();\r\n    //    if (params) {\r\n    //        for (let param of params) {\r\n    //            httpParams = httpParams.set(param.key, param.value);\r\n    //        }\r\n    //    }\r\n    //    return httpParams;\r\n    //}\r\n}\r\n\r\n\r\n\r\nexport class CustomHttpParamEncoder implements HttpParameterCodec {\r\n    encodeKey(key: string): string {\r\n        return encodeURIComponent(key);\r\n    }\r\n    encodeValue(value: string): string {\r\n        return encodeURIComponent(value);\r\n    }\r\n    decodeKey(key: string): string {\r\n        return decodeURIComponent(key);\r\n    }\r\n    decodeValue(value: string): string {\r\n        return decodeURIComponent(value);\r\n    }\r\n}","import { Injectable } from '@angular/core';\r\nimport { catchError } from 'rxjs';\r\nimport { CrudService } from './crud.service';\r\nimport { WebApiClient } from './web.api';\r\nimport { HttpErrorHandler } from './http-error-handler.service';\r\nimport { IFileBase } from '../models';\r\n\r\n@Injectable()\r\nexport class FileService extends CrudService {\r\n    constructor(api: WebApiClient, httpErrorHandler: HttpErrorHandler) {\r\n        super('files', api, httpErrorHandler);\r\n    }\r\n\r\n    download(id: any, hash: any) {\r\n        return this.api.getBlob(`api/${this.controller}`, { id, hash }).pipe(catchError(this.handleError(this.download.name, null)));\r\n    }\r\n\r\n    presignedUrl(id: any, hash: any) {\r\n        return this.api.get(`api/${this.controller}/${id}/${hash}/presigned-url`).pipe(catchError(this.handleError(this.presignedUrl.name, null)));\r\n    }\r\n\r\n    downloadFile(file: IFileBase) {\r\n        if (!file) return;\r\n        this.presignedUrl(file.id, file.hash).subscribe(data => {\r\n            if (data?.success) {\r\n                window.open(data.value, '_blank');\r\n            }\r\n        });\r\n    }\r\n}","import { OnInit, Directive, OnDestroy, Input } from '@angular/core';\r\n\r\nlet uniqueId = 0;\r\n\r\n@Directive()\r\nexport class CoreComponent implements OnInit, OnDestroy {\r\n    loading = false;\r\n\r\n    ngOnInit() {\r\n        this.load();\r\n    }\r\n    ngOnDestroy() {\r\n        this.destroy();\r\n    }\r\n\r\n\r\n    uniqueId = ++uniqueId;\r\n \r\n    async load() {\r\n        try {\r\n            if (this.loading) return;\r\n\r\n            this.loading = true;\r\n            await this.init();\r\n            await this.bindModel();\r\n            await this.bindDictionary();\r\n            await this.onBindingCompleted();\r\n        }\r\n        finally {\r\n            this.loading = false;\r\n        }\r\n\r\n        await this.onLoadCompleted();\r\n    }\r\n    init() { }\r\n    bindModel() {\r\n        this.onBindModelCompleted();\r\n    }\r\n    onBindModelCompleted() { }\r\n    bindDictionary() { }\r\n    onBindingCompleted() { }\r\n    onLoadCompleted() { }\r\n\r\n    async destroy() {\r\n    }\r\n}","import { Input, Directive, inject, EventEmitter, Output } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { PrintType } from '../models/print.model';\r\nimport { WebApiClient } from '../services';\r\nimport { CoreComponent } from './core.component';\r\nimport { BooleanInput } from './types';\r\nimport { Convert, FileHelper, UrlHelper } from '../utils';\r\n\r\n@Directive()\r\nexport class BaseComponent<TModel = any> extends CoreComponent {\r\n    protected readonly api = inject(WebApiClient);\r\n    protected readonly route = inject(ActivatedRoute);\r\n    protected readonly router = inject(Router);\r\n\r\n    private _readOnly = false;\r\n    @Input()\r\n    get readOnly(): boolean {\r\n        return this._readOnly;\r\n    }\r\n    set readOnly(v: BooleanInput) {\r\n        this._readOnly = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _url: string | null = null;\r\n    protected get url(): string {\r\n        if (!this._url)\r\n            this._url = UrlHelper.getNoParam(this.router.url);\r\n        return this._url;\r\n    }\r\n\r\n    @Input() model?: TModel | null;\r\n    @Output() modelChange = new EventEmitter<TModel | null | undefined>();\r\n\r\n    protected getParam(name: string) {\r\n        return this.route.snapshot.paramMap.get(name);\r\n    }\r\n    protected getQueryParam(name: string) {\r\n        return this.route.snapshot.queryParamMap.get(name);\r\n    }\r\n\r\n    reload() {\r\n        this._redirectTo(this.router.url);\r\n    }\r\n    private _redirectTo(url: string) {\r\n        this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n            this.router.navigateByUrl(url);\r\n        });\r\n    }\r\n\r\n    protected navigateReturnUrl() {\r\n        const returnUrl = this.getQueryParam('returnUrl') || this.getParam('returnUrl');\r\n        if (returnUrl) {\r\n            this.router.navigateByUrl(returnUrl);\r\n            // let urlTree = this.router.parseUrl(returnUrl);\r\n            // const urlWithoutParams = urlTree.root.children[PRIMARY_OUTLET].segments.map(it => it.path).join('/')\r\n            // this.router.navigate([urlWithoutParams, urlTree.root.children[PRIMARY_OUTLET].segments[urlTree.root.children[PRIMARY_OUTLET].segments.length - 1].parameters]);\r\n            return;\r\n        }\r\n\r\n        this.router.navigate([this.router.url.substring(0, this.router.url.lastIndexOf('/'))]);\r\n    }\r\n\r\n\r\n    cancel() {\r\n        this.navigateReturnUrl();\r\n    }\r\n\r\n    downloadFile(blob: Blob | null, fileName: string, type?: string | null) {\r\n        FileHelper.download(blob, fileName);\r\n    }\r\n    print(id?: number | null, printType?: PrintType) {\r\n        const split = this.url.split('/');\r\n        if (split.length < 2) {\r\n            return;\r\n        }\r\n        const template = split[1];\r\n        // let api = inject(WebApiClient);\r\n\r\n        let actionName: string;\r\n\r\n        switch (printType) {\r\n            case PrintType.Pdf:\r\n                actionName = 'PrintPdfIdLink';\r\n                break;\r\n\r\n            default:\r\n                actionName = 'ShowIdLink'\r\n                break;\r\n        }\r\n        this.api.getString(`api/Reports/${actionName}`, { template, id }).subscribe(url => {\r\n            if (url) {\r\n                window.open(url, '_blank');\r\n            }\r\n        });\r\n    }\r\n\r\n    protected internalPrint(name: any, id: any, printType: PrintType = PrintType.Show) {\r\n        this.api.get(`api/reports/presigned-url`, { name, id, type: printType }).subscribe(data => {\r\n            if (data?.success) {\r\n                window.open(data.value, '_blank');\r\n            }\r\n        });\r\n    }\r\n}\r\n","import { AfterContentInit, Directive, ElementRef, EventEmitter, Input, Output, Renderer2 } from \"@angular/core\";\r\nimport { ControlValueAccessor } from \"@angular/forms\";\r\nimport { Convert } from \"../utils\";\r\nimport { CancelArgs } from \"./args\";\r\nimport { CoreComponent } from \"./core.component\";\r\nimport { BooleanInput } from \"./types\";\r\n\r\n@Directive()\r\nexport class CoreUiComponent extends CoreComponent\r\n    implements AfterContentInit, ControlValueAccessor {\r\n    constructor(\r\n        protected _renderer: Renderer2,\r\n        protected _elementRef: ElementRef\r\n        //private _changeDetector: ChangeDetectorRef\r\n    ) {\r\n        super();\r\n    }\r\n\r\n    /** The method to be called in order to update ngModel */\r\n    _onChange: (value: any) => void = () => { };\r\n\r\n    /**\r\n     * onTouch function registered via registerOnTouch (ControlValueAccessor).\r\n     * @docs-private\r\n     */\r\n    _onTouched: () => any = () => { };\r\n\r\n\r\n    /**\r\n   * Helper method that sets a property on a target element using the current Renderer\r\n   * implementation.\r\n   * @nodoc\r\n   */\r\n    protected setProperty(key: string, value: any): void {\r\n        this._renderer.setProperty(this._elementRef.nativeElement, key, value);\r\n    }\r\n\r\n    @Output() readonly change: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output() readonly changing: EventEmitter<CancelArgs> = new EventEmitter<CancelArgs>();\r\n\r\n    private _name: string = `zek-${++this.uniqueId}`;\r\n    get name(): string {\r\n        return this._name;\r\n    }\r\n    @Input()\r\n    set name(value: string) {\r\n        if (this._name !== value) {\r\n            this._name = value;\r\n            this.onNameChanged();\r\n        }\r\n    }\r\n    onNameChanged() { }\r\n    \r\n\r\n    private _isInitialized = false;\r\n    get isInitialized() {\r\n        return this._isInitialized;\r\n    }\r\n\r\n    protected _value: any = null;\r\n    get value(): any {\r\n        return this._value;\r\n    }\r\n    @Input()\r\n    set value(newValue: any) {\r\n        if (this._value !== newValue) {\r\n            const cancelEventArgs: CancelArgs = {\r\n                oldValue: this._value,\r\n                newValue: newValue\r\n            };\r\n\r\n            this.onValueChanging(cancelEventArgs);\r\n            if (cancelEventArgs.cancel === true)\r\n                return;\r\n\r\n            // Set this before proceeding to ensure no circular loop occurs with selection.\r\n            this._value = newValue;\r\n            this.onValueChanged();\r\n        }\r\n    }\r\n    onValueChanging(e: CancelArgs) {\r\n        this.changing.emit(e);\r\n    }\r\n    onValueChanged() { }\r\n\r\n    /**\r\n     * Use this method for client side change\r\n     * @param newValue \r\n     */\r\n    setNgModel(newValue: any) {\r\n        if (!this.disabled) {\r\n            if (this._value !== newValue) {\r\n                this.value = newValue;\r\n                this._emitChangeEvent();\r\n                this._onChange(this._value);//write value to NgModel\r\n            }\r\n        }\r\n    }\r\n\r\n    private _readonly = false;\r\n    /** Whether the component is disabled */\r\n    get readonly(): boolean {\r\n        return this._readonly;\r\n    }\r\n    @Input()\r\n    set readonly(value: BooleanInput) {\r\n        const v = Convert.toBooleanProperty(value);\r\n        if (this._readonly !== v) {\r\n            this._readonly = v;\r\n            this.onReadOnlyChanged();\r\n        }\r\n    }\r\n    onReadOnlyChanged() { }\r\n\r\n\r\n    private _disabled = false;\r\n    /** Whether the component is disabled */\r\n    get disabled(): boolean {\r\n        return this._disabled;\r\n    }\r\n    @Input()\r\n    set disabled(value: BooleanInput) {\r\n        const v = Convert.toBooleanProperty(value);\r\n        if (this._disabled !== v) {\r\n            this._disabled = v;\r\n            this.onDisabledChanged();\r\n        }\r\n    }\r\n    onDisabledChanged() { }\r\n\r\n\r\n    private _required = false;\r\n    /** Whether the component is required */\r\n    get required(): boolean {\r\n        return this._required;\r\n    }\r\n    @Input()\r\n    set required(value: BooleanInput) {\r\n        const v = Convert.toBooleanProperty(value);\r\n        if (this._required !== v) {\r\n            this._required = v;\r\n            this.onRequiredChanged();\r\n        }\r\n    }\r\n    onRequiredChanged() { }\r\n\r\n\r\n    _onInputInteraction(event: Event) {\r\n        // We always have to stop propagation on the change event.\r\n        // Otherwise the change event, from the input element, will bubble up and\r\n        // emit its event object to the `change` output.\r\n        event.stopPropagation();\r\n        this.setNgModel((event.target as any).value);\r\n    }\r\n\r\n    /** Dispatch change event with current value. */\r\n    _emitChangeEvent(): void {\r\n        if (this._isInitialized) {\r\n            this.change.emit(this._value);\r\n        }\r\n    }\r\n\r\n\r\n    ngAfterContentInit() {\r\n        // Mark this component as initialized in AfterContentInit because the initial value can\r\n        // possibly be set by NgModel on component, and it is possible that the OnInit of the\r\n        // NgModel occurs *after* the OnInit of the component.\r\n        this._isInitialized = true;\r\n    }\r\n\r\n\r\n    /**\r\n     * Sets the model value. Implemented as part of ControlValueAccessor.\r\n     * (write from model to el.nativeElement)\r\n     * @param value\r\n     */\r\n    writeValue(value: any) {\r\n        this.value = value;\r\n        //this._changeDetector.markForCheck();\r\n        //this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);\r\n    }\r\n\r\n    /**\r\n     * Registers a callback to be triggered when the model value changes.\r\n     * Implemented as part of ControlValueAccessor.\r\n     * @param fn Callback to be registered.\r\n     */\r\n    registerOnChange(fn: (_: any) => void): void {\r\n        this._onChange = fn;\r\n    }\r\n\r\n    /**\r\n     * Registers a callback to be triggered when the control is touched.\r\n     * Implemented as part of ControlValueAccessor.\r\n     * @param fn Callback to be registered.\r\n     */\r\n    registerOnTouched(fn: any) {\r\n        this._onTouched = fn;\r\n    }\r\n\r\n\r\n    /**\r\n     * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\r\n     * @param isDisabled Whether the control should be disabled.\r\n     */\r\n    setDisabledState(isDisabled: boolean) {\r\n        this.disabled = isDisabled;\r\n        //this._changeDetector.markForCheck();\r\n        //this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\r\n    }\r\n}","import { ViewChild, Directive, inject } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\n\r\nimport { BaseComponent } from './base.component';\r\nimport { ApproveModel, IObjectConstructor, PrintType } from '../models';\r\nimport { ZekModal } from '../modules/modal/modal/modal.component';\r\nimport { AlertService } from '../services/alert.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { IService } from '../services';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n@Directive()\r\nexport class EditFormComponent<TModel = any> extends BaseComponent<TModel> {\r\n    id?: number | null;\r\n    id2?: number | null;\r\n    @ViewChild('f', { static: false }) form?: NgForm;\r\n\r\n\r\n    approveModel: ApproveModel = {};\r\n    @ViewChild('approveModal', { static: false }) protected readonly approveModal?: ZekModal;\r\n    @ViewChild('disapproveModal', { static: false }) protected readonly disapproveModal?: ZekModal;\r\n    // @ViewChild('submitModal', { static: false }) protected readonly submitModal?: ModalComponent;\r\n\r\n    override init() {\r\n        super.init();\r\n        const idParam = this.getParam('id') || this.getQueryParam('id');\r\n        if (idParam)\r\n            this.id = +idParam;\r\n\r\n        const id2Param = this.getParam('id2') || this.getQueryParam('id2');\r\n        if (id2Param)\r\n            this.id2 = +id2Param;\r\n    }\r\n\r\n    override async bindModel() {\r\n        if (this.id) {\r\n            this.model = await this.getModel();\r\n        }\r\n        else {\r\n            await this.initCreate();\r\n        }\r\n        this.onBindModelCompleted();\r\n    }\r\n\r\n    protected initCreate() {\r\n        this.model = {} as TModel;\r\n    }\r\n\r\n    protected getModel(): Promise<any> {\r\n        throw 'Not implemented getModel';\r\n    }\r\n\r\n    onSubmit(f: NgForm) {\r\n        this.save(f);\r\n    }\r\n    async save(f?: NgForm) {\r\n        if (!f || f.valid) {\r\n            return await this.internalSave(true);\r\n        }\r\n\r\n        return false;\r\n    }\r\n    protected internalSave(navigateToReturnUrl?: boolean): Promise<boolean> {\r\n        throw 'Not implemented internalSave';\r\n    }\r\n\r\n\r\n    showApproveModal() {\r\n        this.approveModel = {};\r\n        if (this.approveModal) {\r\n            this.approveModal.show();\r\n        }\r\n        else {\r\n            throw new Error('approveModal is null or undefined');\r\n        }\r\n    }\r\n    async approve() {\r\n        if (this.id) {\r\n            const approved = await this.internalApprove(this.approveModel);\r\n            if (approved) {\r\n                this.load();\r\n            }\r\n        }\r\n    }\r\n    protected internalApprove(model?: any): Promise<boolean> {\r\n        throw 'Not implemented internalApprove';\r\n    }\r\n\r\n    showDisapproveModal() {\r\n        this.approveModel = {};\r\n        if (this.disapproveModal) {\r\n            this.disapproveModal.show();\r\n        }\r\n        else {\r\n            throw new Error('disapproveModal is null or undefined');\r\n        }\r\n    }\r\n    async disapprove() {\r\n        if (this.id) {\r\n            this.approveModel.ids = [this.id];\r\n            const disapproved = await this.internalDisapprove(this.approveModel);\r\n            if (disapproved) {\r\n                this.load();\r\n            }\r\n        }\r\n    }\r\n    protected internalDisapprove(model?: any): Promise<boolean> {\r\n        throw 'Not implemented internalDisapprove';\r\n    }\r\n}\r\n\r\n@Directive()\r\nexport class EditBaseComponent<TModel = any> extends EditFormComponent<TModel> {\r\n    constructor(readonly service: IService) {\r\n        super();\r\n    }\r\n\r\n    readonly translate = inject(TranslateService);\r\n    readonly alert = inject(AlertService);\r\n\r\n\r\n    protected override async internalSave(navigateToReturnUrl?: boolean | null): Promise<boolean> {\r\n        this.alert.clear();\r\n        const data = await firstValueFrom(this.service.save(this.model));\r\n        let success = false;\r\n        if (typeof data === 'number' && data > 0) {\r\n            success = true;\r\n            this.id = data;\r\n        } else if (typeof data === 'object' && data?.success) {\r\n            success = true;\r\n        }\r\n\r\n        if (success) {\r\n            const message = await firstValueFrom(this.translate.get('Alert.SaveSuccess'));\r\n            this.alert.success(message, null, 'fa-solid fa-floppy-disk');\r\n\r\n            if (navigateToReturnUrl === true) {\r\n                this.navigateReturnUrl();\r\n            }\r\n\r\n            return true;\r\n            // if (navigateToReturnUrl) {\r\n            //   this.navigateReturnUrl();\r\n            // } else if (!this.id) {//if insert\r\n            //   this.router.navigate([this.router.url.substring(0, this.router.url.length - 6), id]);\r\n            // }\r\n        } else {\r\n            const message = await firstValueFrom(this.translate.get('Alert.SaveError'));\r\n            this.alert.error(message, null, 'fa-solid fa-floppy-disk');\r\n            return false;\r\n        }\r\n    }\r\n\r\n    protected override async internalApprove(model?: any): Promise<boolean> {\r\n        const data = await firstValueFrom(this.service.approve(this.id, model));\r\n        if (data && data.length > 0) {\r\n            const message = await firstValueFrom(this.translate.get('Alert.Approved'));\r\n            this.alert.success(message, null, 'fa-solid fa-floppy-disk');\r\n            return true;\r\n        } else {\r\n            const message = await firstValueFrom(this.translate.get('Alert.ApproveError'));\r\n            this.alert.error(message, null, 'fa-solid fa-floppy-disk');\r\n            return false;\r\n        }\r\n    }\r\n\r\n    protected override async internalDisapprove(model?: any): Promise<boolean> {\r\n        const data = await firstValueFrom(this.service.disapprove(this.id, model));\r\n        if (data && data.length > 0) {\r\n            const message = await firstValueFrom(this.translate.get('Alert.Disapproved'));\r\n            this.alert.success(message, null, 'fa-solid fa-floppy-disk');\r\n            return true;\r\n        } else {\r\n            const message = await firstValueFrom(this.translate.get('Alert.DisapproveError'));\r\n            this.alert.error(message, null, 'fa-solid fa-floppy-disk');\r\n            return false;\r\n        }\r\n    }\r\n\r\n    protected async internalSubmit(model?: any): Promise<boolean> {\r\n        const data = await firstValueFrom(this.service.approve(this.id, model));\r\n        if (data && data.length > 0) {\r\n            const message = await firstValueFrom(this.translate.get('Alert.Submitted'));\r\n            this.alert.success(message, null, 'fa-solid fa-floppy-disk');\r\n            return true;\r\n        } else {\r\n            const message = await firstValueFrom(this.translate.get('Alert.SubmitError'));\r\n            this.alert.error(message, null, 'fa-solid fa-floppy-disk');\r\n            return false;\r\n        }\r\n    }\r\n\r\n\r\n\r\n\r\n    protected override async getModel() {\r\n        if (this.id2)\r\n            return await firstValueFrom(this.service.get2(this.id, this.id2));\r\n        else\r\n            return await firstValueFrom(this.service.get(this.id));\r\n    }\r\n    protected override initCreate() {\r\n        this.model = {} as TModel;\r\n    }\r\n\r\n    override print(printType?: PrintType) {\r\n        super.print(this.id, printType);\r\n    }\r\n\r\n    async restore() {\r\n        const data = await firstValueFrom(this.service.restore(this.id))\r\n        if (data?.success) {\r\n            const message = await firstValueFrom(this.translate.get('Alert.Restored'));\r\n            this.alert.success(message);\r\n            this.load();\r\n        }\r\n    }\r\n    export(fileTypeId: number) {\r\n        this.service.export(this.id, fileTypeId).subscribe(data => {\r\n            this.downloadFile(data, 'export.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\r\n        });\r\n    }\r\n}\r\n\r\n@Directive()\r\nexport class EditComponent<TModel> extends EditBaseComponent<TModel> {\r\n    constructor(private readonly _ctorModel: IObjectConstructor<TModel>, service: IService) {\r\n        super(service);\r\n    }\r\n\r\n    protected override initCreate() {\r\n        this.model = new this._ctorModel();\r\n    }\r\n}","export class EditBase {\r\n    id?: number | null;\r\n\r\n    isDeleted?: boolean | null;\r\n    readOnly?: boolean | null;\r\n}","export class FilterBase {\r\n    id?: number | null = null;\r\n    isDeleted: boolean | null = null;\r\n    quickSearch: string | null = null;\r\n\r\n    page: number = 1;\r\n    pageSize: number = 10;\r\n\r\n    sort: string | null = null;\r\n    asc = false;\r\n}","export enum Gender {\r\n    Male = 1,\r\n    Female = 2,\r\n}","export class IdName<TId = any, TName = any> {\r\n    id?: TId | null;\r\n    name?: TName | null;\r\n\r\n    constructor(init?: Partial<IdName>) {\r\n        if (init) {\r\n            Object.assign(this, init);\r\n        }\r\n    }\r\n}\r\n\r\nexport class IdNameChecked<TId = any, TName = any> extends IdName<TId, TName> {\r\n    checked?: boolean | null;\r\n\r\n    constructor(init?: Partial<IdNameChecked>) {\r\n        super();\r\n        if (init) {\r\n            Object.assign(this, init);\r\n        }\r\n    }\r\n}","export class KeyPair<TKey = any, TValue = any> {\r\n    key?: TKey | null;\r\n    value?: TValue | null;\r\n\r\n    constructor(init?: Partial<KeyPair>) {\r\n        if (init) {\r\n            Object.assign(this, init);\r\n        }\r\n    }\r\n}\r\n\r\nexport class KeyPairEx<TKey = any, TValue = any> extends KeyPair<TKey, TValue> {\r\n    [key: string]: any\r\n}\r\n\r\nexport class KeyPairChecked<TKey = any, TValue = any> extends KeyPair<TKey, TValue> {\r\n    checked?: boolean | null;\r\n\r\n}\r\n\r\nexport class KeyPairRequired<TKey = any, TValue = any> extends KeyPair<TKey, TValue> {\r\n    required?: boolean | null;\r\n}","export class ListBase {\r\n    id?: number | null;\r\n    isDeleted?: boolean | null;\r\n}","export enum Month\r\n{\r\n    January = 1,\r\n    February = 2,\r\n    March = 3,\r\n    April = 4,\r\n    May = 5,\r\n    June = 6,\r\n    July = 7,\r\n    August = 8,\r\n    September = 9,\r\n    October = 10,\r\n    November = 11,\r\n    December = 12\r\n}","export class Pager {\r\n    totalItemCount = 0;\r\n    pageCount = 1;\r\n    pageNumber = 1;\r\n    pageSize = 25;\r\n    hasPreviousPage = false;\r\n    hasNextPage = false;\r\n    isFirstPage = false;\r\n    isLastPage = false;\r\n    firstItemOnPage = 0;\r\n    lastItemOnPage = 0;\r\n    pages: number[] = [];\r\n}\r\n\r\n\r\nexport class PagedList<T = any> {\r\n    items: T[] = [];\r\n\r\n    pager: Pager = new Pager();\r\n\r\n    totalItemCount = 0;\r\n    count = 0;\r\n    pageNumber = 1;\r\n    pageSize = 25;\r\n\r\n    pageCount = 1;\r\n    hasPreviousPage = false;\r\n    hasNextPage = false;\r\n    isFirstPage = false;\r\n    isLastPage = false;\r\n    firstItemOnPage = 0;\r\n    lastItemOnPage = 0;\r\n}","import { KeyPairChecked } from './key-pair.model';\r\n\r\n/**\r\n * @deprecated use ITreeNode\r\n */\r\nexport class Tree extends KeyPairChecked<number, string> {\r\n    parentId?: number | null;\r\n    children?: Tree[] | null;\r\n    childrenCount?: number | null;\r\n    indent?: number | null;\r\n    childrenIds?: number[] | null;\r\n}","export class ValidEventArgs {\r\n    valid = true;\r\n}","import { ViewChild, Directive, inject, Input } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nimport { IService } from '../services';\r\nimport { BaseComponent } from './base.component';\r\nimport { ApproveModel, FilterBase, PagedList, Pager, PrintType } from '../models';\r\nimport { ZekModal } from '../modules/modal/modal/modal.component';\r\nimport { AlertService } from '../services/alert.service';\r\nimport { ArrayHelper, Convert, FilterHelper, PagerHelper, SessionStorageHelper, StringHelper, UrlHelper } from '../utils';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { BooleanInput } from './types';\r\n// declare let bootstrap: any;\r\n\r\n@Directive()\r\nexport class ListBaseComponent<TService extends IService = IService, TPagedListItem = any> extends BaseComponent<PagedList<TPagedListItem>> {\r\n    filter: any = new FilterBase();\r\n    saveFilter = true;\r\n    sortFields: any;\r\n    protected internalFilter: any = new FilterBase();\r\n    isFiltered = false;\r\n    selectedIds: any[] = [];\r\n    selectedItems: any[] = [];\r\n    pager = new Pager();\r\n    sumModel: any;\r\n    tableId = 'table';\r\n\r\n    private _initItems = true;\r\n    get initItems(): boolean {\r\n        return this._initItems;\r\n    }\r\n    @Input()\r\n    set initItems(v: BooleanInput) {\r\n        this._initItems = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    @ViewChild('filterModal', { static: false }) protected readonly filterModal?: ZekModal | null;\r\n\r\n    approveModel: ApproveModel = {};\r\n    @ViewChild('approveModal', { static: false }) protected readonly approveModal?: ZekModal | null;\r\n    protected approvedMesage = 'Alert.Approved';\r\n\r\n    @ViewChild('disapproveModal', { static: false }) protected readonly disapproveModal?: ZekModal | null;\r\n    protected disapprovedMesage = 'Alert.Disapproved';\r\n\r\n    constructor(protected readonly service: TService) {\r\n        super();\r\n    }\r\n\r\n\r\n    readonly translate = inject(TranslateService);\r\n    readonly alert = inject(AlertService);\r\n\r\n\r\n\r\n    override init() {\r\n        super.init();\r\n\r\n        this.reset();\r\n        this.initDefaultFilter();\r\n        this.initStoredFilter();\r\n        this.assignFilter();\r\n    }\r\n    override async bindModel() {\r\n        // this.selectedIds = [];\r\n        this.model = await firstValueFrom(this.apiGetAll(this.internalFilter));\r\n        if (this.model) {\r\n            let totalCount = this.model.totalItemCount;\r\n            if (!totalCount && this.model.pager) {\r\n                totalCount = this.model.pager ? (this.model.pager.totalItemCount || 0) : 0;\r\n            }\r\n            this.pager = PagerHelper.get(totalCount, this.model.pageNumber, this.model.pageSize);\r\n            this.onBindModelCompleted();\r\n        }\r\n        else {\r\n            this.pager = new Pager();\r\n        }\r\n        //this.pagedList.pager = this.pager;\r\n    }\r\n    apiGetAll(filter: any) {\r\n        return this.service.getAll(filter);\r\n    }\r\n    scrollTop() {\r\n        const el = document.getElementById(this.tableId);\r\n        el?.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });\r\n    }\r\n    override onBindModelCompleted() {\r\n        if (this.initItems) {\r\n            if (this.model && ArrayHelper.isArray(this.model.items) && ArrayHelper.isArray(this.selectedIds)) {\r\n                for (const item of this.model.items) {\r\n                    const tmp = item as any;\r\n                    tmp.selected = this.selectedIds.includes(tmp.id);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    protected initDefaultFilter() {\r\n    }\r\n    private initStoredFilter() {\r\n        const filterParam = this.getQueryParam('filter') || this.getParam('filter');\r\n\r\n        if (filterParam) {\r\n            const tmp = SessionStorageHelper.get('filter');\r\n            if (tmp && tmp.url && tmp.url === this.url && tmp.filter) {\r\n                this.filter = Object.assign({}, tmp.filter);\r\n                //this.filter = { ...tmp.filter };\r\n                //we dont need this.assignFilter(); because after initStoredFilter(); will be assigned.\r\n            } else {\r\n                SessionStorageHelper.remove('filter');\r\n            }\r\n        } else {\r\n            SessionStorageHelper.remove('filter');\r\n        }\r\n    }\r\n    async changePage(page: number) {\r\n        this.internalFilter.page = page;\r\n        this.filter.page = page;\r\n        await this.bindModel();\r\n        this.autoSaveFilter();\r\n        this.scrollTop();\r\n    }\r\n    changePageSize(pageSize: number) {\r\n        this.internalFilter.pageSize = pageSize;\r\n        this.filter.pageSize = pageSize;\r\n        this.changePage(1);\r\n    }\r\n    showFilter() {\r\n        this.filterModal?.show();\r\n    }\r\n    search() {\r\n        this.assignFilter();\r\n\r\n        // this.changePage(1);\r\n        //can't use this because don't want to execute scrollTop\r\n        this.internalFilter.page = 1;\r\n        this.filter.page = 1;\r\n        this.bindModel();\r\n        this.autoSaveFilter();\r\n    }\r\n    protected assignFilter() {\r\n        this.internalFilter = Object.assign({}, this.filter);\r\n        this.isFiltered = !FilterHelper.isEmpty(this.internalFilter);\r\n    }\r\n    private autoSaveFilter() {\r\n        if (this.saveFilter)\r\n            this.internalSaveFilter()\r\n    }\r\n    private internalSaveFilter() {\r\n        SessionStorageHelper.set('filter', {\r\n            url: this.url,\r\n            filter: this.internalFilter\r\n        });\r\n    }\r\n    reset() {\r\n        this.filter = { page: 1, pageSize: 25 };\r\n        this.assignFilter();\r\n    }\r\n    refresh() {\r\n        this.bindModel();\r\n    }\r\n\r\n\r\n    create() {\r\n        const url = UrlHelper.getNoParam(this.router.url);\r\n        // this.router.navigate([url, 'create', { returnUrl: url + ';filter=1' }]);\r\n        this.router.navigate([url, 'create'],\r\n            { queryParams: { returnUrl: url + '?filter=1' } }\r\n        );\r\n    }\r\n    async delete(id: any) {\r\n        this.alert.clear();\r\n        const data = await firstValueFrom(this.apiDelete(id));\r\n        if (data?.success) {\r\n            const message = await firstValueFrom(this.translate.get('Alert.Deleted'));\r\n            this.alert.error(message, null, 'fa-solid fa-trash')\r\n            this.refresh();\r\n        }\r\n    }\r\n    apiDelete(id: any) {\r\n        return this.service.delete(id);\r\n    }\r\n\r\n    async delete2(id: any, id2: any) {\r\n        this.alert.clear();\r\n        const data = await firstValueFrom(this.apiDelete2(id, id2))\r\n        if (data?.success) {\r\n            const message = await firstValueFrom(this.translate.get('Alert.Deleted'));\r\n            this.alert.error(message, null, 'fa-solid fa-trash')\r\n            this.refresh();\r\n        }\r\n    }\r\n    apiDelete2(id: any, id2: any) {\r\n        return this.service.delete2(id, id2);\r\n    }\r\n\r\n    edit(id: number) {\r\n        // this.router.navigate([this.url, id],\r\n        //     { queryParams: { returnUrl: this.url + ';filter=1' } }\r\n        // );\r\n\r\n        this.router.navigate([this.url, id],\r\n            { queryParams: { returnUrl: this.url + '?filter=1' } }\r\n        );\r\n    }\r\n    edit2(id: number, id2: number) {\r\n        // this.router.navigate([this.url, id, id2, { returnUrl: this.url + ';filter=1' }]);\r\n        this.router.navigate([this.url, id, id2],\r\n            { queryParams: { returnUrl: this.url + '?filter=1' } }\r\n        );\r\n    }\r\n    select(item: any) {\r\n        item.selected = !item.selected;\r\n        const id = item.id;\r\n        if (id) {\r\n            if (item.selected) {\r\n                if (!this.selectedIds.includes(id)) {\r\n                    this.selectedIds.push(id);\r\n                    this.selectedItems.push(item);\r\n                }\r\n\r\n            } else {\r\n                this.selectedIds = this.selectedIds.filter(item => item !== id);\r\n                this.selectedItems = this.selectedItems.filter(item => item.id !== id);\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n\r\n\r\n    showApproveModal(id: number) {\r\n        if (!id || !this.approveModal) return;\r\n\r\n        const tmp = { ids: [id] };\r\n        this.approveModel = {};\r\n        this.approveModal.show(tmp);\r\n    }\r\n    showApproveSelectedModal() {\r\n        const tmp = { ids: this.getSelectedIds() };\r\n        if (!tmp.ids || tmp.ids.length === 0 || !this.approveModal) return;\r\n\r\n        this.approveModel = {};\r\n        this.approveModal.show(tmp);\r\n    }\r\n    async approve(model: any) {\r\n        if (!model) return;\r\n\r\n        this.alert.clear();\r\n        const data = await firstValueFrom(this.apiApprove(model));\r\n        if (!data || data.length === 0)\r\n            return;\r\n\r\n        const message = await firstValueFrom(this.translate.get(this.approvedMesage));\r\n        this.alert.success(message, null, 'fa-solid fa-thumbs-up')\r\n        this.refresh();\r\n    }\r\n    apiApprove(model: any) {\r\n        return this.service.approve(model);\r\n    }\r\n\r\n\r\n    showDisapproveModal(id: number) {\r\n        if (!id || !this.disapproveModal) return;\r\n\r\n        const tmp = { ids: [id] };\r\n        this.approveModel = {};\r\n        this.disapproveModal.show(tmp);\r\n    }\r\n    showDisapproveSelectedModal() {\r\n        const tmp = { ids: this.getSelectedIds() };\r\n        if (!tmp.ids || tmp.ids.length === 0 || !this.disapproveModal) return;\r\n\r\n        this.approveModel = {};\r\n        this.disapproveModal.show(tmp);\r\n    }\r\n    async disapprove(model: any) {\r\n        if (!model || !this.approveModel) return;\r\n\r\n        if (typeof model === 'object') {\r\n            model.status = this.approveModel.status;\r\n            model.comment = StringHelper.tryTrim(this.approveModel.comment);\r\n            if (!model.comment) delete model.comment;\r\n        }\r\n\r\n        this.alert.clear();\r\n        const data = await firstValueFrom(this.apiDisapprove(model));\r\n        if (!data || data.length === 0)\r\n            return;\r\n\r\n        const message = await firstValueFrom(this.translate.get(this.disapprovedMesage));\r\n        this.alert.success(message, null, 'fa-solid fa-thumbs-down')\r\n        this.refresh();\r\n    }\r\n    apiDisapprove(model: any) {\r\n        return this.service.disapprove(model);\r\n    }\r\n\r\n    getSelectedIds() {\r\n        return this.selectedIds;\r\n        // if (!this.pagedList || !this.pagedList.items) return [];\r\n\r\n        // let ids = [];\r\n        // for (const item of this.pagedList.items) {\r\n        //     if (!item.selected || !item.id) continue;\r\n\r\n        //     ids.push(item.id);\r\n        // }\r\n        // return ids;\r\n    }\r\n\r\n    showSum() { }\r\n    async sum() {\r\n        this.sumModel = null;\r\n        const data = await firstValueFrom(this.apiSum(this.internalFilter));\r\n        if (data) {\r\n            this.sumModel = data;\r\n            this.showSum();\r\n        } else {\r\n            const message = await firstValueFrom(this.translate.get('Alert.SumError'));\r\n            this.alert.error(message);\r\n        }\r\n    }\r\n    apiSum(filter: any) {\r\n        return this.service.sum(filter);\r\n    }\r\n\r\n    export(fileTypeId: number) {\r\n        this.service.export(this.internalFilter, fileTypeId).subscribe(data => {\r\n            this.downloadFile(data, 'export.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\r\n        });\r\n    }\r\n\r\n\r\n    override print(printType?: PrintType) {\r\n        if (!this.model || !this.model.items) return;\r\n\r\n        const ids = this.getSelectedIds();\r\n        for (const id of ids) {\r\n            super.print(id, printType);\r\n        }\r\n    }\r\n}","import { Directive, EventEmitter, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Convert, MathHelper } from '../utils';\r\nimport { NumberInput } from '../components';\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: '[zek-delayed-input]'\r\n})\r\nexport class ZekDelayedInputDirective implements OnInit {//OnChanges\r\n\r\n    private _inputSubject$ = new Subject<string>();\r\n    @Output() delayedInput = new EventEmitter<string>();\r\n\r\n    private _delay = 500;\r\n    get delay(): number {\r\n        return this._delay;\r\n    }\r\n    @Input()\r\n    set delay(v: NumberInput) {\r\n        const tmp = MathHelper.clamp(Convert.toNumber(v), 1, 3_600_000);\r\n        if (this._delay !== tmp) {\r\n            this._delay = tmp;\r\n        }\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.initSubscription();\r\n    }\r\n\r\n    private initSubscription() {\r\n        // Emit values after the specified debounce time\r\n        this._inputSubject$.pipe(debounceTime(this.delay)).subscribe((value) => {\r\n            this.delayedInput.emit(value);\r\n        });\r\n    }\r\n\r\n    // ngOnChanges(changes: SimpleChanges) {\r\n    //     if (changes['delayTime']) {\r\n    //         // Reset the subscription when delayTime changes\r\n    //         this._inputSubject$ = new Subject<string>(); // Replace the Subject\r\n    //         this.initSubscription(); // Reinitialize with the new delayTime\r\n    //       }\r\n    // }\r\n\r\n    @HostListener('input', ['$event.target.value'])\r\n    onInput(value: string) {\r\n        this._inputSubject$.next(value); // Push new value to the Subject\r\n    }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelper } from '../../utils';\r\n\r\n@Pipe({\r\n    standalone: true,\r\n    name: 'age'\r\n})\r\nexport class AgePipe implements PipeTransform {\r\n    transform(value: any, now?: any): number | null {\r\n        if (typeof value === 'undefined' || value === null || value === '' || value !== value) return null;\r\n        \r\n        const date = DateHelper.toDate(value);\r\n\r\n        const timeDiff = (now ? DateHelper.toDate(now).getTime() : Date.now()) - date.getTime();\r\n        return Math.floor((timeDiff / (1000 * 3600 * 24)) / 365.25);\r\n    }\r\n}","import { Component, Input } from '@angular/core';\r\nimport { BooleanInput, CoreComponent } from '../../../components';\r\nimport { AlertType } from '../../../models';\r\nimport { Convert } from '../../../utils';\r\nimport { BootstrapHelper } from '../../../utils/bootstrap.helper';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-alert',\r\n    templateUrl: './alert.html',\r\n    styles: [':host { display: block; }'],\r\n    imports: [CommonModule]\r\n})\r\nexport class ZekAlert extends CoreComponent {\r\n    private _type: AlertType | null | undefined = 'info';\r\n    @Input()\r\n    get type(): AlertType | null | undefined {\r\n        return this._type;\r\n    }\r\n    set type(v: AlertType | null | undefined) {\r\n        if (v !== this._type) {\r\n            this._type = v\r\n            this.init();\r\n        }\r\n    }\r\n\r\n    _showClose = true;\r\n    @Input()\r\n    get showClose(): boolean {\r\n        return this._showClose;\r\n    }\r\n    set showClose(v: BooleanInput) {\r\n        this._showClose = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    @Input() title?: string | null;\r\n\r\n\r\n    override init() {\r\n        this.cssAlert = BootstrapHelper.cssAlert(this._type);\r\n        this.cssIcon = BootstrapHelper.cssAlertIcon(this._type);\r\n    }\r\n\r\n    cssAlert = '';\r\n    cssIcon = '';\r\n}\r\n\r\n","<div class=\"alert {{cssAlert}} alert-dismissible fade show\" role=\"alert\">\r\n    <button *ngIf=\"_showClose\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n    <div class=\"row\">\r\n        <div class=\"col-auto pe-1\" *ngIf=\"cssIcon\">\r\n            <span class=\"flex-shrink-0\"><i class=\"{{cssIcon}}\"></i></span>\r\n        </div>\r\n        <div class=\"col-auto\">\r\n            <div *ngIf=\"title\">\r\n                <h5 class=\"alert-heading\">{{title}}</h5>\r\n            </div>\r\n            <ng-content></ng-content>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, OnInit, OnDestroy, Input } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { BootstrapHelper, Convert, MathHelper } from '../../../utils';\r\n\r\nimport { AlertService, Toast } from '../../../services/alert.service';\r\nimport { NumberInput } from '../../../components';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-toast',\r\n    styleUrls: ['./toast.css'],\r\n    templateUrl: './toast.html',\r\n    imports: [CommonModule]\r\n})\r\nexport class ZekToast implements OnInit, OnDestroy {\r\n    @Input()\r\n    get delay(): number {\r\n        return this._delay;\r\n    }\r\n    set delay(v: NumberInput) {\r\n        const tmp = MathHelper.clamp(Convert.toNumber(v) || 0, 10, 3600000);\r\n        if (this._delay !== tmp) {\r\n            this._delay = tmp;\r\n        }\r\n    }\r\n    _delay: number = 3000;\r\n    \r\n    \r\n    @Input() icon = true;\r\n\r\n    toasts: any[] = [];\r\n    private _subscription?: Subscription;\r\n    private _timeout: any;\r\n\r\n    constructor(private readonly alertService: AlertService) { }\r\n\r\n    ngOnInit() {\r\n        this._subscription = this.alertService.getToast().subscribe((toast: Toast) => {\r\n            if (!toast) {\r\n                // clear alerts when an empty alert is received\r\n                this.toasts = [];\r\n                return;\r\n            }\r\n\r\n            // add toast to array\r\n            this.cssInit(toast);\r\n            this.toasts.unshift(toast);\r\n\r\n            this._timeout = setTimeout(() => {\r\n                this.remove(toast);\r\n                // let toastEl = document.getElementById(`toast-${toast.id}`);\r\n                // let t = new bootstrap.Toast(toastEl);\r\n                // t.show();\r\n            }, this._delay);\r\n\r\n\r\n            // let toastElList = [].slice.call(document.querySelectorAll('.toast'))\r\n            // let toastList = toastElList.map(function (toastEl) {\r\n            //     return new bootstrap.Toast(toastEl)\r\n            // })\r\n            // toastList.forEach(t => {\r\n            //     t.show();\r\n            // });\r\n        });\r\n\r\n\r\n\r\n    }\r\n\r\n\r\n    ngOnDestroy() {\r\n        if (this._subscription) {\r\n            this._subscription.unsubscribe();\r\n        }\r\n        this.clearTimeout();\r\n    }\r\n\r\n\r\n    clear() {\r\n        this.alertService.clear();\r\n    }\r\n    remove(toast: Toast) {\r\n        this.toasts = this.toasts.filter(x => x !== toast);\r\n    }\r\n\r\n    clearTimeout() {\r\n        if (this._timeout) {\r\n            clearTimeout(this._timeout);\r\n            this._timeout = null;\r\n        }\r\n    }\r\n\r\n\r\n    cssInit(toast: Toast) {\r\n        if (!toast || !toast.type)\r\n            return;\r\n\r\n\r\n        if (this.icon && !toast.icon) {\r\n            toast.icon = BootstrapHelper.cssAlertIcon(toast.type);\r\n        }\r\n\r\n        let v = toast as any;\r\n        switch (toast.type) {\r\n            case 'primary':\r\n                v.css = 'bg-primary text-white';\r\n                break;\r\n            case 'success':\r\n                v.css = 'bg-success text-white';\r\n                // v.iconColor = 'text--accent-green';\r\n                // v.borderColor = 'border--accent-green';\r\n                break;\r\n            case 'danger':\r\n                v.css = 'bg-danger text-white';\r\n                // v.iconColor = 'text--accent-red';\r\n                // v.borderColor = 'border--accent-red';\r\n                break;\r\n            case 'warning':\r\n                v.css = 'bg-warning text-dark';\r\n                // v.iconColor = 'text--accent-yellow';\r\n                // v.borderColor = 'border--accent-yellow';\r\n                break;\r\n            case 'info':\r\n                v.css = 'bg-info text-white';\r\n                // v.iconColor = 'text--accent-blue';\r\n                // v.borderColor = 'border--accent-blue';\r\n                break;\r\n            case 'light':\r\n                v.css = 'bg-light text-dark';\r\n                break;\r\n            case 'dark':\r\n                v.css = 'bg-dark text-white';\r\n                break;\r\n\r\n\r\n            default:\r\n                v.css = 'bg-secondary text-white';\r\n                break;\r\n        }\r\n    }\r\n}\r\n\r\n","<div class=\"toast-container position-fixed top-0 end-0 p-3\">\r\n    <div *ngFor=\"let toast of toasts\" class=\"toast fade show border-0 {{ toast.css }}\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" [attr.data-bs-delay]=\"_delay\">\r\n        <div class=\"toast-header\">\r\n            <span class=\"me-1\" *ngIf=\"icon && toast.icon\"><i class=\"{{ toast.icon }}\"></i></span>\r\n            <strong class=\"me-auto\" *ngIf=\"toast.title\">{{ toast.title }}</strong>\r\n            <button type=\"button\" class=\"btn-close ms-auto me-2\" data-bs-dismiss=\"toast\" aria-label=\"Close\" (click)=\"remove(toast)\"></button>\r\n        </div>\r\n        <div class=\"toast-body\">\r\n            {{ toast.message }}\r\n        </div>\r\n    </div>\r\n    <!-- <div *ngFor=\"let toast of toasts\" class=\"toast fade show\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" data-bs-delay=\"3000\">\r\n        <div class=\"toast-body\">\r\n            <div class=\"row\">\r\n                <div class=\"col-auto pe-1 border-start border-8 {{toast.borderColor}}\">\r\n                    <span *ngIf=\"toast.icon\" class=\"icon flex-shrink-0 {{toast.iconColor}}\"><i class=\"{{toast.icon}}\"></i></span>\r\n                </div>\r\n                <div class=\"col\">\r\n                    <div *ngIf=\"toast.title\"><h5>{{toast.title}}</h5></div>\r\n                    {{ toast.message }}\r\n                </div>\r\n                <div class=\"col-auto p-0\">\r\n                    <button type=\"button\" class=\"btn-close ms-auto me-2\" data-bs-dismiss=\"toast\" aria-label=\"Close\" (click)=\"remove(toast)\"></button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div> -->\r\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AlertService, Alert } from '../../../services/alert.service';\r\nimport { BootstrapHelper } from '../../../utils';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-validation',\r\n    templateUrl: './validation.html',\r\n    styles: [':host { display: block; }'],\r\n    imports: [CommonModule]\r\n})\r\nexport class ZekValidation implements OnInit, OnDestroy {\r\n    alerts: Alert[] = [];\r\n    private subscription?: Subscription;\r\n\r\n    constructor(private readonly alert: AlertService) { }\r\n\r\n    ngOnInit() {\r\n        this.subscription = this.alert.getAlert().subscribe((alert: Alert) => {\r\n            if (!alert) {\r\n                // clear alerts when an empty alert is received\r\n                this.alerts = [];\r\n                return;\r\n            }\r\n            // add alert to array\r\n            this.alerts.push(alert);\r\n        });\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.subscription?.unsubscribe();\r\n    }\r\n\r\n\r\n    clear() {\r\n        this.alert.clear();\r\n    }\r\n    remove(alert: Alert) {\r\n        this.alerts = this.alerts.filter(x => x !== alert);\r\n    }\r\n\r\n    cssIcon(alert: Alert) {\r\n        if (!alert) {\r\n            return;\r\n        }\r\n\r\n        if (alert.icon && alert.icon.length > 0)\r\n            return alert.icon;\r\n\r\n\r\n        if (!alert.type) {\r\n            return;\r\n        }\r\n\r\n        return BootstrapHelper.cssAlertIcon(alert.type);\r\n    }\r\n\r\n    cssAlert(alert: Alert) {\r\n        if (!alert) {\r\n            return;\r\n        }\r\n\r\n        return BootstrapHelper.cssAlert(alert.type);\r\n    }\r\n}","<div *ngFor=\"let alert of alerts\" class=\"alert {{ cssAlert(alert) }} alert-dismissible fade show mt-3\" role=\"alert\">\r\n    <button (click)=\"remove(alert)\" type=\"button\" class=\"btn-close\" aria-label=\"Close\"></button>\r\n    <div *ngFor=\"let message of alert.messages\">\r\n        <i *ngIf=\"cssIcon(alert)\" class=\"{{ cssIcon(alert) }}\"></i>\r\n        {{message}}\r\n    </div>\r\n    <ng-content></ng-content>\r\n</div>","import { AfterViewInit, ElementRef } from '@angular/core';\r\nimport { Directive } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: 'form'\r\n})\r\nexport class ZekAutoComplete implements AfterViewInit {\r\n    constructor(private readonly el: ElementRef, private readonly router: Router) {\r\n\r\n    }\r\n    ngAfterViewInit() {\r\n        if (this.router.url === '/login') {\r\n            return;\r\n        }\r\n\r\n        this.el.nativeElement.setAttribute('autocomplete', 'off');\r\n    }\r\n}","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanInput } from '../../components';\r\nimport { CoreUiComponent } from '../../components/core-ui.component';\r\nimport { KeyPair, ModalSize, PagedList } from '../../models';\r\nimport { Convert, ObjectHelper } from '../../utils';\r\ndeclare let bootstrap: any;\r\n\r\n/**\r\n * Provider Expression that allows bb to register as a ControlValueAccessor. This\r\n * allows it to support [(ngModel)] and ngControl.\r\n * @docs-private\r\n */\r\nconst ZEK_BB_CONTROL_VALUE_ACCESSOR: any = {\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => ZekButtonBrowse),\r\n    multi: true,\r\n};\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: 'zek-bb',\r\n    templateUrl: './bb.component.html',\r\n    providers: [ZEK_BB_CONTROL_VALUE_ACCESSOR],\r\n})\r\nexport class ZekButtonBrowse extends CoreUiComponent {\r\n    override destroy() {\r\n        this._modal?.dispose();\r\n        this._modal = null;\r\n        return super.destroy();\r\n    }\r\n\r\n    private _uniqueId: string = `zek-bb-${this.uniqueId}`;\r\n    /** The unique ID for the bb. */\r\n    @Input() id: string = this._uniqueId;\r\n    get modalId(): string {\r\n        return `${this.id || this._uniqueId}-modal`;\r\n    }\r\n    filter: any = {};\r\n    data: PagedList = new PagedList();\r\n\r\n\r\n    private _type?: string | null;\r\n    @Input()\r\n    get type() {\r\n        return this._type;\r\n    }\r\n    set type(v: string | null | undefined) {\r\n        if (this._type !== v) {\r\n            this._type = v;\r\n            this.onValueChanged();//get and set input text\r\n        }\r\n    }\r\n\r\n    private _text: string | null = null;\r\n    @Input()\r\n    get text(): string | null {\r\n        return this._text;\r\n    }\r\n    set text(v: string | null) {\r\n        if (this._text !== v) {\r\n            this._text = v\r\n            this.onTextChanged();\r\n        }\r\n    }\r\n    onTextChanged() {\r\n        this.onKeyPairChange.emit(new KeyPair({ key: this._value, value: this._text }))\r\n    }\r\n\r\n\r\n\r\n    private _readOnly = false;\r\n    @Input()\r\n    get readOnly(): boolean {\r\n        return this._readOnly;\r\n    }\r\n    set readOnly(v: BooleanInput) {\r\n        this._readOnly = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n\r\n    private _hide = false;\r\n    @Input()\r\n    get hide(): boolean {\r\n        return this._hide;\r\n    }\r\n    set hide(v: BooleanInput) {\r\n        this._hide = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _showInput = true;\r\n    @Input()\r\n    get showInput(): boolean {\r\n        return this._showInput;\r\n    }\r\n    set showInput(v: BooleanInput) {\r\n        this._showInput = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _multiSelect = false;\r\n    @Input()\r\n    get multiSelect(): boolean {\r\n        return this._multiSelect;\r\n    }\r\n    set multiSelect(v: BooleanInput) {\r\n        this._multiSelect = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n    @Output() onShowModal = new EventEmitter();\r\n    @Output() onChooseAll = new EventEmitter();\r\n    @Output() onKeyPairChange = new EventEmitter<KeyPair>();\r\n    @Output() onBindText = new EventEmitter();\r\n\r\n    private _modal: any;\r\n    get modal(): any {\r\n        if (!this._modal) {\r\n            const modalEl = document.getElementById(this.modalId);\r\n            this._modal = new bootstrap.Modal(modalEl, { backdrop: false });\r\n        }\r\n        return this._modal;\r\n    }\r\n    set modal(v: any) {\r\n        this._modal = v;\r\n    }\r\n\r\n\r\n    private _size: ModalSize = '';\r\n    @Input()\r\n    get size() {\r\n        return this._size;\r\n    }\r\n    set size(v: ModalSize) {\r\n        this._size = v;\r\n    }\r\n\r\n    private _scrollable = false;\r\n    @Input()\r\n    get scrollable(): boolean {\r\n        return this._scrollable;\r\n    }\r\n    set scrollable(v: BooleanInput) {\r\n        this._scrollable = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _fullscreen = false;\r\n    @Input()\r\n    get fullscreen(): boolean {\r\n        return this._fullscreen;\r\n    }\r\n    set fullscreen(v: BooleanInput) {\r\n        this._fullscreen = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _showHeader = true;\r\n    @Input()\r\n    get showHeader(): boolean {\r\n        return this._showHeader;\r\n    }\r\n    set showHeader(v: BooleanInput) {\r\n        this._showHeader = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n    showModal() {\r\n        if (!this.disabled && !this.readOnly) {\r\n            this.onShowModal.emit(this.filter);\r\n\r\n            this.data = new PagedList();\r\n            if (this.modal)\r\n                this.modal.show();\r\n        }\r\n    }\r\n    close() {\r\n        this._modal?.hide();\r\n    }\r\n\r\n\r\n\r\n    choose(value: any) {\r\n        if (!this.disabled && !this.readOnly) {\r\n            this.setNgModel(value);\r\n            this.close();\r\n        }\r\n    }\r\n    chooseAll(filter: any) {\r\n        this.onChooseAll.emit(filter);\r\n        this.close();\r\n    }\r\n\r\n    delete() {\r\n        if (!this.readOnly) {//!this.disabled && \r\n            this.setNgModel(null);\r\n        }\r\n    }\r\n\r\n    _onKey(event: KeyboardEvent) {\r\n        if (event.key === 'Delete') {\r\n            this.delete();\r\n        }\r\n    }\r\n\r\n\r\n\r\n\r\n    override onValueChanged() {\r\n        if (ObjectHelper.isDefined(this._value) && ObjectHelper.isDefined(this._type)) {\r\n            this.bindText();\r\n        } else {\r\n            this.text = null;\r\n        }\r\n    }\r\n    bindText() {\r\n        this.onBindText.emit();\r\n    }\r\n}","<div *ngIf=\"!hide && showInput\" class=\"input-group\">\r\n    <input type=\"text\" class=\"form-control\" [ngClass]=\"{ 'ng-valid required': !required || value, 'ng-invalid': required && !value }\" (keyup)=\"_onKey($event)\" title=\"ID = {{value}}\" [value]=\"text\" [attr.readonly]=\"true\">\r\n    <button type=\"button\" [disabled]=\"disabled || readOnly\" class=\"btn btn-outline-secondary\" (click)=\"showModal()\">\r\n        <i class=\"fa-solid fa-ellipsis\"></i>\r\n    </button>\r\n    <button type=\"button\" [disabled]=\"disabled || readOnly\" class=\"btn btn-outline-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n        <span class=\"visually-hidden\">Toggle Dropdown</span>\r\n    </button>\r\n    <ul class=\"dropdown-menu\">\r\n        <li><a class=\"dropdown-item\" (click)=\"delete()\" href=\"javascript:void(0)\"> <i class=\"fa-solid fa-trash\"></i> Delete <kbd>delete</kbd> </a></li>\r\n    </ul>\r\n</div>\r\n<div *ngIf=\"!hide || disabled || readOnly\" class=\"modal fade\" [id]=\"modalId\" tabindex=\"-1\" aria-labelledby=\"bb-modal-label\" aria-hidden=\"true\">\r\n    <div class=\"modal-dialog\" [ngClass]=\"{\r\n        'modal-sm': size === 'sm',\r\n        'modal-lg': size === 'lg', \r\n        'modal-xl': size === 'xl'\r\n    }\" [class.modal-dialog-scrollable]=\"scrollable\" [class.modal-fullscreen]=\"fullscreen\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-header\" *ngIf=\"showHeader\">\r\n                <h5 class=\"modal-title\" id=\"{{modalId}}-label\">{{'Action.Choose' | translate }}</h5>\r\n                <button type=\"button\" (click)=\"close()\" class=\"btn-close\" data-bs-dismiss2=\"modal\" aria-label=\"Close\"></button>\r\n            </div>\r\n            <div class=\"modal-body\">\r\n                <ng-content></ng-content>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: 'zek-bb-modal-toolbar',\r\n    templateUrl: './bb-modal-toolbar.html',\r\n})\r\nexport class ZekButtonBrowseModalToolbar {\r\n\r\n    @Output() onSearch = new EventEmitter();\r\n    search() {\r\n        this.onSearch.emit();\r\n    }\r\n\r\n    @Output() onReset = new EventEmitter();\r\n    reset() {\r\n        this.onReset.emit();\r\n    }\r\n\r\n    private _multiSelect = false;\r\n    @Input()\r\n    get multiSelect(): boolean {\r\n        return this._multiSelect;\r\n    }\r\n    set multiSelect(v: BooleanInput) {\r\n        this._multiSelect = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    @Output() onChooseAll = new EventEmitter();\r\n    chooseAll() {\r\n        if (!this.multiSelect) return;\r\n        this.onChooseAll.emit();\r\n    }\r\n\r\n    // @Output()\r\n    // onCreate = new EventEmitter();\r\n    // create() {\r\n    //     this.onCreate.emit();\r\n    // }\r\n}","<ng-content select=\"[left]\"></ng-content>\r\n<button type=\"button\" (click)=\"search()\" class=\"btn btn-primary me-2\" id=\"bb-filter-button\" title=\"Filter\">\r\n    <i class=\"fa-solid fa-filter\" aria-hidden=\"true\"></i>\r\n</button>\r\n<button type=\"button\" (click)=\"reset()\" class=\"btn btn-secondary me-2\" title=\"Reset\">\r\n    <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\r\n</button>\r\n<button *ngIf=\"multiSelect\" type=\"button\" (click)=\"chooseAll()\" class=\"btn btn-secondary me-2\" title=\"Choose All\">\r\n    <i class=\"fa-solid fa-hand-point-up\" aria-hidden=\"true\"></i>\r\n</button>\r\n<ng-content></ng-content>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { ZekButtonBrowse } from './bb.component';\r\nimport { ZekButtonBrowseModalToolbar } from './bb-modal-toolbar';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        TranslateModule,\r\n    ],\r\n    declarations: [\r\n        ZekButtonBrowse,\r\n        ZekButtonBrowseModalToolbar\r\n    ],\r\n    exports: [\r\n        ZekButtonBrowse,\r\n        ZekButtonBrowseModalToolbar\r\n    ]\r\n})\r\nexport class ZekButtonBrowseModule { }","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { BooleanInput, CoreComponent } from \"../../components\";\r\nimport { PagedList } from \"../../models\";\r\nimport { Convert } from \"../../utils\";\r\n\r\n@Directive()\r\nexport class ZekButtonBrowseModalBase extends CoreComponent {\r\n    @Input() type?: string | null;\r\n    @Input() filter: any = {};\r\n    @Input() data?: PagedList | null;\r\n\r\n    private _multiSelect = false;\r\n    @Input()  get multiSelect() : boolean {\r\n        return this._multiSelect;\r\n    }\r\n    set multiSelect(v: BooleanInput) {\r\n        this._multiSelect = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    @Input() value: any;\r\n\r\n    @Output() onChoose = new EventEmitter();\r\n    choose(value: any) {\r\n        this.onChoose.emit(value);\r\n    }\r\n\r\n    @Output() onChooseAll = new EventEmitter();\r\n    chooseAll() {\r\n        this.onChooseAll.emit(this.filter);\r\n    }\r\n\r\n    onKeydown(e: Event) {\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n        this.search();\r\n    }\r\n\r\n    bindData() { }\r\n    async refresh() {\r\n        try {\r\n            this.loading = true;\r\n            await this.bindData();\r\n        }\r\n        finally {\r\n            this.loading = false;\r\n        }\r\n\r\n    }\r\n    onPageChange(page: number) {\r\n        this.filter.page = page;\r\n        this.refresh();\r\n    }\r\n    onPageSizeChange(pageSize: number) {\r\n        this.filter.pageSize = pageSize;\r\n        this.onPageChange(1);\r\n    }\r\n\r\n    search() {\r\n        this.onPageChange(1);\r\n    }\r\n\r\n    reset() {\r\n        this.filter = {};\r\n    }\r\n}","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n    standalone:true,\r\n    name: 'callback',\r\n    pure: false//this pure need because we are changing filter model and pure=false is handling\r\n})\r\nexport class ZekCallbackPipe implements PipeTransform {\r\n    transform(items: any[], callback: (item: any, filter?: any) => boolean, filter?: any): any {\r\n        if (!items || !callback) {\r\n            return items;\r\n        }\r\n\r\n        return filter\r\n            ? items.filter(item => callback(item, filter))\r\n            : items.filter(item => callback(item));\r\n    }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, ViewChild, AfterViewInit, ChangeDetectorRef, Input } from '@angular/core';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-card',\r\n    templateUrl: './card.html',\r\n    styles: [':host { display: block; }'],\r\n    imports: [CommonModule]\r\n})\r\nexport class ZekCard implements AfterViewInit {\r\n    /**\r\n     *\r\n     */\r\n    constructor(private readonly cdRef: ChangeDetectorRef) {\r\n    }\r\n\r\n    @ViewChild('headerRef') private headerWrapper: ElementRef | undefined;\r\n    @ViewChild('bodyRef') private bodyRef: ElementRef | undefined;\r\n    // @ViewChild('contentRef') private contentRef: ElementRef | undefined;\r\n    @ViewChild('footerRef') private footerRef: ElementRef | undefined;\r\n\r\n    private _css = '';\r\n    @Input()\r\n    get css() {\r\n        return this._css;\r\n    }\r\n    set css(value: string | null | undefined) {\r\n        this._css = value || '';\r\n    }\r\n    showHeader = true;\r\n    showBody = true;\r\n\r\n    // showContent = true;\r\n    showFooter = true;\r\n\r\n    ngAfterViewInit() {\r\n        this.showHeader = this.headerWrapper ? this.headerWrapper.nativeElement.childNodes.length > 0 : false;\r\n        this.showBody = this.bodyRef ? this.bodyRef.nativeElement.children.length > 0 : false;\r\n        // this.showContent = this.contentRef ? this.contentRef.nativeElement.children.length > 0 : false;\r\n        this.showFooter = this.footerRef ? this.footerRef.nativeElement.childNodes.length > 0 : false;\r\n\r\n        this.cdRef.detectChanges();\r\n    }\r\n}","<div class=\"card {{css}}\">\r\n    <div class=\"card-header\" #headerRef *ngIf=\"showHeader\">\r\n        <ng-content select=\"[card-header]\"></ng-content>\r\n    </div>\r\n    <div class=\"card-body\" #bodyRef *ngIf=\"showBody\">\r\n        <ng-content select=\"[card-body]\"></ng-content>\r\n    </div>\r\n    <ng-content></ng-content>\r\n    <div class=\"card-footer\" #footerRef *ngIf=\"showFooter\">\r\n        <ng-content select=\"[card-footer]\"></ng-content>\r\n    </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { interval, Observable, Subject, Subscription, timer } from 'rxjs';\r\nimport { CoreComponent } from '../../components';\r\nimport { DateHelper } from '../../utils';\r\n\r\n@Component({\r\n    standalone: true,\r\n    imports: [],\r\n    selector: 'zek-countdown',\r\n    templateUrl: 'countdown.html'\r\n})\r\nexport class ZekCountdown extends CoreComponent {\r\n    override destroy() {\r\n        stop();\r\n        return super.destroy();\r\n    }\r\n\r\n\r\n    left = {\r\n        days: 0,\r\n        hours: 0,\r\n        hh: '00',\r\n        minutes: 0,\r\n        mm: '00',\r\n        seconds: 0,\r\n        ss: '00'\r\n    }\r\n    date = new Date();\r\n\r\n\r\n    private _interval$?: Observable<number> | null;\r\n    private _subscription?: Subscription;\r\n\r\n\r\n    // private _onTickSubject?: Subject<void>;\r\n    // private _onTickObservable?: Observable<void>;\r\n    // get onRefreshToken(): Observable<void> {\r\n    //     if (!this._onTickSubject) {\r\n    //         this._onTickSubject = new Subject<void>();\r\n    //         this._onTickObservable = this._onTickSubject.asObservable();\r\n    //     }\r\n\r\n    //     if (!this._onTickObservable)\r\n    //         throw new Error(\"_onTickObservable is undefined\");\r\n\r\n    //     return this._onTickObservable;\r\n    // }\r\n\r\n    override init() {\r\n        this.start();\r\n        this.tick();\r\n    }\r\n\r\n    private _targetDate: Date | null = null;\r\n    private _targetTime: number | null = null;\r\n    get targetDate(): Date | null {\r\n        return this._targetDate;\r\n    }\r\n    @Input()\r\n    set targetDate(v: Date | string | number | null | undefined) {\r\n        this._targetDate = DateHelper.parseDate(v)\r\n        this._targetTime = this._targetDate ? this._targetDate.getTime() : null;\r\n    }\r\n\r\n\r\n    start() {\r\n        this._interval$ = interval(1000);\r\n        this._subscription = this._interval$.subscribe(() => {\r\n            this.emitTick();\r\n        });\r\n    }\r\n    stop() {\r\n        this._subscription?.unsubscribe();\r\n        this._interval$ = null;\r\n\r\n        // this._onTickSubject?.complete();\r\n        // this._onTickSubject?.unsubscribe();\r\n    }\r\n\r\n    emitTick() {\r\n        this.tick();\r\n        // this._onTickSubject?.next();\r\n    }\r\n\r\n\r\n\r\n    reset() {\r\n        this.left = {\r\n            days: 0,\r\n            hours: 0,\r\n            hh: '00',\r\n            minutes: 0,\r\n            mm: '00',\r\n            seconds: 0,\r\n            ss: '00'\r\n        }\r\n    }\r\n\r\n    tick() {\r\n        this.reset();\r\n\r\n        if (!this.targetDate || !this._targetTime) return;\r\n\r\n        this.date = new Date();\r\n        const now = this.date.getTime();\r\n\r\n        const difference = this._targetTime - now;\r\n        if (difference < 0) {\r\n            this.stop();\r\n            return\r\n        }\r\n\r\n        this.left.days = Math.floor(difference / (1000 * 60 * 60 * 24));\r\n\r\n        this.left.hours = 23 - this.date.getHours();\r\n        this.left.hh = (this.left.hours < 10 ? '0' : '') + this.left.hours;\r\n\r\n        this.left.minutes = 60 - this.date.getMinutes();\r\n        this.left.mm = (this.left.minutes < 10 ? '0' : '') + this.left.minutes;\r\n\r\n\r\n        this.left.seconds = 60 - this.date.getSeconds();\r\n        this.left.ss = (this.left.seconds < 10 ? '0' : '') + this.left.seconds;\r\n    }\r\n}","{{left.days}}d - {{left.hh}}h - {{left.mm}}m - {{left.ss}}s","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelper } from '../../utils';\r\n\r\n@Pipe({\r\n    standalone: true,\r\n    name: 'dateAgo',\r\n    pure: true\r\n})\r\nexport class ZekDateAgoPipe implements PipeTransform {\r\n\r\n    transform(value: any, args?: any): string | Date | null {\r\n        if (typeof value === 'undefined' || value === null || value === '' || value !== value) return null;\r\n\r\n        const date = DateHelper.toDate(value);\r\n        const seconds = Math.floor((+new Date() - +new Date(date)) / 1000);\r\n        if (seconds < 29) // less than 30 seconds ago will show as 'Just now'\r\n            return 'Just now';\r\n        const intervals: { [key: string]: number } = {\r\n            'year': 31536000,\r\n            'month': 2592000,\r\n            'week': 604800,\r\n            'day': 86400,\r\n            'hour': 3600,\r\n            'minute': 60,\r\n            'second': 1\r\n        };\r\n        let counter;\r\n        for (const i in intervals) {\r\n            counter = Math.floor(seconds / intervals[i]);\r\n            if (counter > 0)\r\n                if (counter === 1) {\r\n                    return counter + ' ' + i + ' ago'; // singular (1 day ago)\r\n                } else {\r\n                    return counter + ' ' + i + 's ago'; // plural (2 days ago)\r\n                }\r\n        }\r\n        return date;\r\n    }\r\n\r\n}","import { Directive, ElementRef, OnDestroy, forwardRef, Inject, OnChanges, SimpleChanges, Input } from '@angular/core'\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DATE_FORMAT, LANGUAGE } from '../../tokens';\r\nimport { DateHelper } from '../../utils';\r\nimport { StringInput } from '../../components';\r\n\r\ndeclare let Datepicker: any;\r\n\r\nconst DATE_VALUE_ACCESSOR = {\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => DateValueAccessor),\r\n    multi: true,\r\n};\r\n\r\n\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: '[zek-date],input[type=date][formControlName],input[type=date][formControl],input[type=date][ngModel]',//,input[type=date][ngModel]\r\n    providers: [DATE_VALUE_ACCESSOR],\r\n    host: {\r\n        //არაა საჭირო ეს ევენტი ისედაც მუშაობს'(change)': 'onChange($event.target.value)',\r\n        //აღარ არის საჭირო რადგანაც ახა ვერსიაში updateOnBlur=true აკეთებს მაგას \"(keyup)\": \"onKeyUp($event)\",\r\n    }\r\n})\r\nexport class DateValueAccessor implements ControlValueAccessor, OnDestroy, OnChanges {\r\n    //@Input() ngModel: any;\r\n    private datepicker?: any;\r\n    private oldValue?: Date | null = null;\r\n    @Input() min?: StringInput;\r\n    @Input() max?: StringInput;\r\n\r\n    constructor(private el: ElementRef,\r\n        @Inject(DATE_FORMAT) format: string,\r\n        @Inject(LANGUAGE) language: string,\r\n        @Inject('env') env?: any | null) {\r\n\r\n        if (env) {\r\n            if (env.datepickerFormat) {\r\n                format = env.datepickerFormat;\r\n            }\r\n            if (env.lang) {\r\n                language = env.lang;\r\n            }\r\n        }\r\n\r\n        if (el.nativeElement.type === 'date') {\r\n            el.nativeElement.type = 'text'//change input type to text to override browser default date editor\r\n        }\r\n        this.el.nativeElement.setAttribute('autocomplete', 'off');\r\n\r\n        this.datepicker = new Datepicker(el.nativeElement, {\r\n            autohide: true,\r\n            //beforeShowDay: this.beforeShowDay,\r\n            buttonClass: 'btn',\r\n            //clearBtn: true,\r\n\r\n            //datesDisabled: []\r\n            daysOfWeekHighlighted: [0, 6],\r\n            format: format,\r\n            language: language,\r\n\r\n            //prevArrow: '«',\r\n            //nextArrow: '»',\r\n            //orientation: 'top auto', //left|right|auto for horizontal and top|bottom|auto\r\n            todayBtn: true,\r\n            //todayBtnMode: 0, //0\tfocus\tMove the focused date to the current date without changing the selection. 1 select\tSelect (or toggle the selection of) the current date\r\n            todayHighlight: true,\r\n            updateOnBlur: true,\r\n            weekStart: 1,//0:Sunday – 6:Saturday\r\n        });\r\n\r\n        el.nativeElement.addEventListener('changeDate', (e: CustomEvent) => {\r\n            this.onChangeDate(e);//execude \r\n        });\r\n\r\n        // setTimeout(() => {\r\n        //     const min = this.el.nativeElement.getAttribute('min');\r\n        //     const max = this.el.nativeElement.getAttribute('max');\r\n\r\n        //     const minDate = min ? DateHelper.toDate(min) : null;\r\n        //     const maxDate = max ? DateHelper.toDate(max) : null;\r\n        //     this.datepicker.setOptions({\r\n        //         minDate: minDate,//String|Date|Number\r\n        //         maxDate: maxDate,//String|Date|Number\r\n        //     });\r\n        // }, 0);\r\n    }\r\n\r\n    // onKeyUp(e: any) {\r\n\r\n    // if (e && e.target) {\r\n    //     let v = e.target.value;\r\n    //     if (v && v.length === 10 && (v.indexOf('.') > 1 || (v.indexOf('/') > 1 || v.indexOf('-') > 1))) {\r\n    //         var parsed = Datepicker.parseDate(v, environment.datepickerFormat, environment.lang);//parseDate(v);\r\n    //         var date = parseDate(parsed);\r\n\r\n    //         if (date) {\r\n    //             var ev = new KeyboardEvent('keydown', {\r\n    //                 key: \"Enter\",//datepicke listens only by key parameter. other parameter don't need. check after update new version!!!\r\n    //             });\r\n    //             console.log(e.target.dispatchEvent(ev));\r\n    //         }\r\n    //     }\r\n    // }\r\n    // }\r\n\r\n\r\n    ngOnDestroy() {\r\n        this.el.nativeElement.removeEventListener('changeDate', this.onChangeDate);\r\n\r\n        if (this.datepicker && typeof this.datepicker.destroy === 'function') {\r\n            this.datepicker.destroy()\r\n        }\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes['min']) {\r\n            const minDate = this.min ? DateHelper.toDate(this.min) : null;\r\n            if (this.datepicker) {\r\n                this.datepicker.setOptions({\r\n                    minDate: minDate,\r\n                });\r\n            }\r\n        }\r\n        if (changes['max']) {\r\n            const maxDate = this.max ? DateHelper.toDate(this.max) : null;\r\n            if (this.datepicker) {\r\n                this.datepicker.setOptions({\r\n                    maxDate: maxDate\r\n                });\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Fires when user choose date in datepicker\r\n     * @param e Custom event \r\n     */\r\n    onChangeDate(e: CustomEvent) {\r\n        this.setDate(e.detail.date);\r\n    }\r\n\r\n\r\n    // private beforeShowDay(date: any) {\r\n    //     if (date.getMonth() == new Date().getMonth()) {\r\n    //       switch (date.getDate()) {\r\n    //         case 4:\r\n    //           return {\r\n    //             content: '<span data-bs-toggle=\"tooltip\" title=\"Example tooltip\">4</span>',\r\n    //             classes: 'bg-info'\r\n    //           };\r\n    //         case 8:\r\n    //           return false;\r\n    //         case 12:\r\n    //           return \"text-success\";\r\n    //       }\r\n    //     }\r\n    //   }\r\n\r\n\r\n    //set value into ngModel (when choose date in calendar)\r\n    setDate(newValue?: Date | null) {\r\n        //newValue = parseDate(newValue);\r\n\r\n        if (this.isReadOnly()) {\r\n            //if values not equals sets old value \r\n            if (!DateHelper.equals(newValue, this.oldValue)) {\r\n                if (this.oldValue) {\r\n                    this.datepicker.setDate(this.oldValue, { clear: true });//if read only don't change date (it just changes element value not ngModel)\r\n                } else {\r\n                    this.datepicker.setDate({ clear: true });//if read only don't change date (it just changes element value not ngModel)\r\n                }\r\n            }\r\n            return;\r\n        }\r\n\r\n        this.oldValue = newValue;\r\n\r\n        if (newValue) {\r\n            this.onChange(DateHelper.toISODateString(newValue));\r\n        } else {\r\n            this.onChange(null);\r\n        }\r\n    }\r\n\r\n\r\n\r\n    private isReadOnly() {\r\n        return this.el.nativeElement.disabled || this.el.nativeElement.readonly  || this.el.nativeElement.readOnly;\r\n    }\r\n\r\n\r\n\r\n    //write from model to el.nativeElement\r\n    writeValue(value: any) {\r\n        const date = DateHelper.parseDate(value);\r\n        this.oldValue = date;\r\n\r\n        if (date) {\r\n            this.datepicker.setDate(date, { clear: true });//to display in input\r\n        } else {\r\n            this.datepicker.setDate({ clear: true });\r\n        }\r\n\r\n\r\n\r\n        //this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);\r\n\r\n\r\n        // let readOnly = this.isReadOnly();\r\n        // if (readOnly) {\r\n        //     this.el.nativeElement.value = Datepicker.formatDate(date, this.datepicker.config.format);\r\n        // }\r\n        // else {\r\n        //     this.datepicker.setDate(date);\r\n        // }\r\n    }\r\n    /*writeValue(date: Date) {\r\n        // Create UTC Date, time is set to 00:00 in UTC time\r\n        const utcDate: Date | null = date\r\n            ? new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\r\n            : null;\r\n        this.renderer.setProperty(this.elementRef.nativeElement, 'valueAsDate', utcDate);\r\n    }*/\r\n\r\n    //@HostListener('input', ['$event.target.valueAsDate']) onChange = (_: any) => { };\r\n\r\n\r\n    //@HostListener('input', [])\r\n    onChange: (_: any) => void = () => { };\r\n    registerOnChange(fn: (_: any) => void): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    //@HostListener('blur', [])\r\n    onTouched = () => { };\r\n    registerOnTouched(fn: any) {\r\n        this.onTouched = fn;\r\n    }\r\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { DATE_FORMAT, LANGUAGE } from '../../tokens';\r\nimport { DateValueAccessor } from './date-value-accessor';\r\n\r\nexport interface DatepickerConfig {\r\n  dateFormat: string;\r\n  language: string;\r\n}\r\n\r\n@NgModule({\r\n  declarations: [DateValueAccessor],\r\n  exports: [DateValueAccessor]\r\n})\r\nexport class DatepickerModule {\r\n  public static forRoot(config: DatepickerConfig, environment?: any | null): ModuleWithProviders<DatepickerModule> {\r\n\r\n    return {\r\n      ngModule: DatepickerModule,\r\n      providers: [\r\n        DateValueAccessor,\r\n        { provide: DATE_FORMAT, useValue: config.dateFormat },\r\n        { provide: LANGUAGE, useValue: config.language },\r\n        { provide: 'env', useValue: environment }\r\n      ]\r\n    };\r\n  }\r\n\r\n  public static forChild(config: DatepickerConfig, environment?: any | null) {\r\n    return this.forRoot(config, environment);\r\n  }\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { Component, ElementRef, forwardRef, Input, Renderer2 } from \"@angular/core\";\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CoreUiComponent } from \"../../components\";\r\nimport { StringHelper } from \"../../utils/string-helper\";\r\nimport { Convert } from \"../../utils/convert\";\r\nimport { BooleanInput } from \"../../components/types\";\r\n\r\nconst ZEK_DROPDOWN_CONTROL_VALUE_ACCESSOR: any = {\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => ZekDropdown),\r\n    multi: true,\r\n};\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-dropdown,[zek-dropdown]',\r\n    templateUrl: './dropdown.html',\r\n    styles: [':host { display: inline-block; }'],\r\n    providers: [ZEK_DROPDOWN_CONTROL_VALUE_ACCESSOR],\r\n    host: {\r\n        '[attr.id]': 'id',\r\n\r\n    },\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule\r\n    ],\r\n})\r\nexport class ZekDropdown extends CoreUiComponent {\r\n    constructor(renderer: Renderer2, elementRef: ElementRef) {\r\n        super(renderer, elementRef);\r\n    }\r\n\r\n    private _uniqueId: string = `zek-dropdown-${this.uniqueId}`;\r\n    /** The unique ID for the radio button. */\r\n    @Input() id: string = this._uniqueId;\r\n    get inputId(): string {\r\n        return `${this.id || this._uniqueId}-input`;\r\n    }\r\n\r\n    private _multiple = false;\r\n    get multiple() {\r\n        return this._multiple;\r\n    }\r\n    @Input()\r\n    set multiple(value: BooleanInput) {\r\n        this._multiple = Convert.toBooleanProperty(value);\r\n    }\r\n    @Input() valueField?: string | null;\r\n    @Input() textField?: string | null;\r\n    @Input() checkedTextField?: string | null;\r\n\r\n    @Input() css: 'primary' | 'secondary' | 'success' | 'danger ' | 'warning' | 'info' | 'light' | 'dark' = 'primary';\r\n\r\n\r\n    searchText = '';\r\n    @Input()\r\n    get label(): string {\r\n        return this._label;\r\n    }\r\n    set label(value: string | null | undefined) {\r\n        if (value)\r\n            this._label = value;\r\n        else\r\n            this._label = '';\r\n    }\r\n    private _label = '';\r\n\r\n\r\n    private _data: any[] = [];\r\n    get data(): any[] {\r\n        return this._data;\r\n    }\r\n    @Input()\r\n    set data(value: any[] | null | undefined) {\r\n        if (this._data !== value) {\r\n            this._data = value ? value : [];\r\n            this._onDataChanged();\r\n        }\r\n    }\r\n    private _onDataChanged() {\r\n        this._normalizeData();\r\n        this._filterData();\r\n    }\r\n\r\n    normalizedItems: any[] = [];\r\n    filteredItems: any[] = [];\r\n    selectedItems: any[] = [];\r\n    selectedItemsText = '';\r\n\r\n\r\n    onTextChange() {\r\n        this._filterData();\r\n    }\r\n    private _filterData() {\r\n        if (this.searchText) {\r\n            const normalized = StringHelper.trimStart(this.searchText.toUpperCase(), ' ');\r\n            this.filteredItems = this.normalizedItems.filter(item => item.normalized.indexOf(normalized) !== -1);\r\n        }\r\n        else {\r\n            this.filteredItems = this.normalizedItems;\r\n        }\r\n    }\r\n\r\n\r\n\r\n\r\n    private _normalizeData() {\r\n        this.normalizedItems = [];\r\n        if (this.valueField && this.textField) {\r\n            for (const item of this._data) {\r\n                this.normalizedItems.push({\r\n                    key: item[this.valueField],\r\n                    value: item[this.textField],\r\n                    normalized: (item[this.textField] || '').toUpperCase(),\r\n                    checked: this.selectedItems.includes(item),\r\n                    item: item\r\n                });\r\n            }\r\n        } else {\r\n            for (const item of this._data) {\r\n                this.normalizedItems.push({ key: item, value: item, checked: this.selectedItems.includes(item), item });\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    checkAll(checked: boolean, ngModelChange = true) {\r\n        if (this.disabled || this.readonly) return;\r\n\r\n        for (const item of this.normalizedItems) {\r\n            item.checked = checked;\r\n        }\r\n\r\n        this.selectedItems = [];\r\n\r\n        if (checked) {\r\n            if (this.multiple) {\r\n                const tmp = [];\r\n                for (const normalized of this.normalizedItems) {\r\n                    this.selectedItems.push(normalized.item);\r\n                    tmp.push(normalized.key);\r\n                }\r\n\r\n                if (ngModelChange)\r\n                    this.setNgModel(tmp);\r\n            }\r\n        }\r\n        else\r\n            if (ngModelChange)\r\n                this.setNgModel(null);\r\n    }\r\n\r\n    toggleChecked(normalized: any) {\r\n        if (!normalized || this.disabled || this.readonly) return;\r\n\r\n        const checked = normalized.checked || false;\r\n        if (!this.multiple) {\r\n            for (const item of this.normalizedItems) {\r\n                item.checked = false;\r\n            }\r\n        }\r\n\r\n\r\n        //on check item\r\n        if (!checked) {\r\n            normalized.checked = true;\r\n            if (this.multiple) {\r\n                if (!this.selectedItems.includes(normalized.item)) {\r\n                    this.selectedItems.push(normalized.item);\r\n                }\r\n\r\n                //todo optimize\r\n                const tmp = [];\r\n                for (const item of this.normalizedItems) {\r\n                    if (item.checked) {\r\n                        tmp.push(item.key);\r\n                    }\r\n                }\r\n                this.setNgModel(tmp);\r\n            }\r\n            else {\r\n                this.selectedItems = [normalized.item];\r\n                this.setNgModel(normalized.key);\r\n            }\r\n        } else {\r\n            //on uncheck\r\n            normalized.checked = false;\r\n            if (this.multiple) {\r\n                const index = this.selectedItems.indexOf(normalized.item);\r\n                if (index !== -1) {\r\n                    this.selectedItems.splice(index, 1);\r\n                }\r\n\r\n                //todo optimize\r\n                const tmp = [];\r\n                for (const item of this.normalizedItems) {\r\n                    if (item.checked) {\r\n                        tmp.push(item.key);\r\n                    }\r\n                }\r\n                this.setNgModel(tmp);\r\n            }\r\n            else {\r\n                this.selectedItems = [];\r\n                this.setNgModel(null);\r\n            }\r\n        }\r\n\r\n        this._initText();\r\n    }\r\n\r\n\r\n    private _initText() {\r\n        const field = this.checkedTextField || this.textField || '';\r\n        if (field) {\r\n            this.selectedItemsText = this.selectedItems.map(x => x[field]).join(', ');\r\n        } else {\r\n            this.selectedItemsText = this.selectedItems.join(', ');\r\n        }\r\n    }\r\n}","<div class=\"btn-group\" id=\"dropdown-{{id}}\">\r\n    <button class=\"btn btn-{{css}} dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"outside\" aria-expanded=\"false\">\r\n        <!--  <ng-container *ngIf=\"!_text\">{{placeholder}}</ng-container> {{_text}} -->\r\n        {{label}}\r\n    </button>\r\n    <ul class=\"dropdown-menu dropdown-menu-scrollable\">\r\n        <li class=\"px-2 py-1\">\r\n            <input type=\"text\" class=\"form-control\"\r\n                [id]=\"inputId\"\r\n                [name]=\"inputId\"\r\n                [(ngModel)]=\"searchText\"\r\n                (ngModelChange)=\"onTextChange()\">\r\n        </li>\r\n        <ng-container *ngIf=\"normalizedItems\">\r\n            <li>\r\n                <a class=\"dropdown-item\" href=\"javascript:void(0)\" *ngFor=\"let item of filteredItems\" (click)=\"toggleChecked(item)\">\r\n                    <span *ngIf=\"item.checked\"><i class=\"fa-regular fa-square-check\"></i></span>\r\n                    <span *ngIf=\"!item.checked\"><i class=\"fa-regular fa-square\"></i></span>\r\n                    {{item.value}}\r\n                </a>\r\n            </li>\r\n        </ng-container>\r\n    </ul>\r\n</div>","import { Component, Output, EventEmitter, Input } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { PrintType } from '../../models/print.model';\r\nimport { Convert } from '../../utils';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-edit-toolbar',\r\n    templateUrl: './edit-toolbar.html',\r\n    imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekEditToolbar {\r\n\r\n    private _showSave = true;\r\n    @Input()\r\n    get showSave() {\r\n        return this._showSave;\r\n    }\r\n    set showSave(v: BooleanInput) {\r\n        this._showSave = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _showCancel = true;\r\n    @Input()\r\n    get showCancel() {\r\n        return this._showCancel;\r\n    }\r\n    set showCancel(v: BooleanInput) {\r\n        this._showCancel = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n    PrintType = PrintType;\r\n\r\n    private _showExport = false;\r\n    @Input()\r\n    get showExport() {\r\n        return this._showExport;\r\n    }\r\n    set showExport(v: BooleanInput) {\r\n        this._showExport = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n    private _showPrint = false;\r\n    @Input()\r\n    get showPrint() {\r\n        return this._showPrint;\r\n    }\r\n    set showPrint(v: BooleanInput) {\r\n        this._showPrint = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _readOnly = false;\r\n    @Input()\r\n    get readOnly() : boolean {\r\n        return this._readOnly;\r\n    }\r\n    set readOnly(v: BooleanInput) {\r\n        this._readOnly = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    @Output() onSave = new EventEmitter();\r\n    // save(navigateToReturnUrl: boolean) {\r\n    //     this.onSave.emit(navigateToReturnUrl);\r\n    // }\r\n\r\n    @Output() onCancel = new EventEmitter();\r\n    cancel() {\r\n        this.onCancel.emit();\r\n    }\r\n\r\n    // @Output()\r\n    // onReset = new EventEmitter();\r\n    // reset() {\r\n    //     this.onReset.emit();\r\n    // }\r\n\r\n    @Output() onPrint = new EventEmitter<PrintType>();\r\n    print(printType?: PrintType) {\r\n        this.onPrint.emit(printType);\r\n    }\r\n\r\n\r\n    @Output() onExport = new EventEmitter<number>();\r\n    exportExcel() {\r\n        this.onExport.emit(1);\r\n    }\r\n}","<div class=\"btn-toolbar\" role=\"toolbar\" aria-label=\"Action toolbar\">\r\n    <ng-content select=\"[left]\"></ng-content>\r\n    <div *ngIf=\"showSave\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Save group\">\r\n        <button type=\"submit\" class=\"btn btn-primary\" [disabled]=\"readOnly\"><i class=\"fa-solid fa-floppy-disk\"></i> {{ 'Action.Save' | translate }}</button>\r\n    </div>\r\n    <div *ngIf=\"showCancel\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Cancel group\">\r\n        <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancel()\"><i class=\"fa-solid fa-ban\"></i> {{ 'Action.Close' | translate }}</button>\r\n    </div>\r\n    <div *ngIf=\"showPrint\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Print group\">\r\n        <button type=\"button\" class=\"btn btn-secondary\" (click)=\"print(PrintType.Pdf)\"><i class=\"fa-solid fa-print\"></i> {{ 'Action.Print' | translate }}</button>\r\n        <div class=\"btn-group\" role=\"group\">\r\n            <button type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n                <!-- dropdown-toggle-split -->\r\n                <span class=\"visually-hidden\">Toggle Dropend</span>\r\n            </button>\r\n            <ul class=\"dropdown-menu\">\r\n                <li><button type=\"button\" class=\"dropdown-item\" (click)=\"print(PrintType.Show)\"><i class=\"fa-solid fa-print\"></i> {{ 'Action.Print' | translate }}</button></li>\r\n                <li><button type=\"button\" class=\"dropdown-item\" (click)=\"print(PrintType.Pdf)\"><i class=\"fa-solid fa-file-pdf\"></i> {{ 'Action.Print' | translate }} PDF</button></li>\r\n                <ng-content select=\"[print]\"></ng-content>\r\n            </ul>\r\n        </div>\r\n    </div>\r\n    <div *ngIf=\"showExport\" class=\"btn-group\" role=\"group\" aria-label=\"Filter / Export group\">\r\n        <div class=\"btn-group\" role=\"group\">\r\n            <button id=\"btnGroupExport\" type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"><i class=\"fa-solid fa-download\"></i> {{ 'Action.Export' | translate }}</button>\r\n            <ul class=\"dropdown-menu\" aria-labelledby=\"btnGroupExport\">\r\n                <li><a class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"exportExcel()\"><i class=\"fa-solid fa-file-excel\"></i> Excel</a></li>\r\n                <ng-content select=\"[export]\"></ng-content>\r\n            </ul>\r\n        </div>\r\n    </div>\r\n    <ng-content></ng-content>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/*\r\n * Convert bytes into largest possible unit.\r\n * Takes an precision argument that defaults to 2.\r\n * Usage:\r\n *   bytes | fileSize:precision\r\n * Example:\r\n *   {{ 1024 |  fileSize}}\r\n *   formats to: 1 KB\r\n*/\r\n@Pipe({\r\n    standalone: true,\r\n    name: 'fileSize'\r\n})\r\nexport class ZekFileSizePipe implements PipeTransform {\r\n\r\n    private units = [\r\n        'bytes',\r\n        'kB',\r\n        'MB',\r\n        'GB',\r\n        'TB',\r\n        'PB',\r\n        'EB',\r\n        'ZB',\r\n        'YB'\r\n    ];\r\n\r\n    transform(bytes: number | null | undefined = 0, precision: number | null | undefined = 0): string {\r\n        if (typeof bytes === 'undefined' || bytes == null)\r\n            bytes = 0;\r\n        if (typeof precision === 'undefined' || precision == null)\r\n            precision = 0;\r\n\r\n        if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) return '?';\r\n\r\n        let unit = 0;\r\n\r\n        while (bytes >= 1024) {\r\n            bytes /= 1024;\r\n            unit++;\r\n        }\r\n\r\n        return bytes.toFixed(+ precision) + ' ' + this.units[unit];\r\n    }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FileService } from '../../services/file.service';\r\nimport { CoreUiComponent } from '../../components/core-ui.component';\r\nimport { BooleanInput } from '../../components/types';\r\nimport { Convert } from '../../utils/convert';\r\n\r\n@Component({\r\n    standalone: true,\r\n    imports: [CommonModule, FormsModule],\r\n    selector: 'zek-file-input',\r\n    templateUrl: 'file-input.html',\r\n    styleUrl: 'file-input.scss',\r\n    providers: [FileService],\r\n    host: {\r\n        '[attr.id]': 'id',\r\n    }\r\n})\r\nexport class ZekFileInput extends CoreUiComponent {\r\n    // @Input() model!: string[] | null;\r\n    @Output() readonly onUpload = new EventEmitter<Array<any>>();\r\n    @ViewChild('fileInput') fileInput: any;\r\n    private readonly fileService = inject(FileService);\r\n\r\n    private _uniqueId: string = `zek-file-input-${this.uniqueId}`;\r\n    /** The unique ID for the tag. */\r\n    @Input() id: string = this._uniqueId;\r\n\r\n    get inputId(): string {\r\n        return `${this.id || this._uniqueId}-input`;\r\n    }\r\n\r\n    private _accept = '*';\r\n    public get accept(): string {\r\n        return this._accept;\r\n    }\r\n    @Input()\r\n    set accept(v: string | null | undefined) {\r\n        if (!v)\r\n            this._accept = '*';\r\n        else\r\n            this._accept = v;\r\n    }\r\n\r\n\r\n    private _multiple = false;\r\n    @Input()\r\n    get multiple(): boolean {\r\n        return this._multiple;\r\n    }\r\n    set multiple(v: BooleanInput) {\r\n        this._multiple = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    clickInput() {\r\n        const el = document.getElementById(this.inputId);\r\n        if (el) {\r\n            el.click();\r\n        }\r\n    }\r\n\r\n    async onFileInputChange(event: any) {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n\r\n        const files = event?.target?.files;\r\n        if (Array.isArray(!files)) return;\r\n\r\n        const formData = new FormData();\r\n        for (let i = 0; i < files.length; i++) {\r\n            const file = files[i];\r\n            formData.append('files', file, file.name);\r\n        }\r\n        this.fileService.save(formData).subscribe(data => {\r\n            if (data?.success) {\r\n                this.onUpload.emit(data.value);\r\n            }\r\n        })\r\n\r\n        if (this.fileInput)\r\n            this.fileInput.nativeElement.value = '';\r\n    }\r\n}","<input type=\"file\" class=\"form-control\"\r\n    name=\"{{inputId}}\"\r\n    id=\"{{inputId}}\"\r\n    [multiple]=\"multiple\" [accept]=\"accept\" [required]=\"required\" [disabled]=\"readonly\"\r\n    #fileInput\r\n    (change)=\"onFileInputChange($event)\" />","import { Component, Output, EventEmitter, Input, inject } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BooleanInput, CoreComponent } from '../../../components';\r\nimport { BootstrapHelper, ComponentType, Convert, handler, ObjectHelper, RandomHelper } from '../../../utils';\r\nimport { ValidEventArgs } from '../../../models/valid-event-args.model';\r\nimport { ModalSize } from '../../../models';\r\n\r\ndeclare let bootstrap: any;\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: 'zek-modal',\r\n    templateUrl: './modal.component.html'\r\n})\r\nexport class ZekModal extends CoreComponent {\r\n    protected readonly translate = inject(TranslateService);\r\n\r\n    override async destroy() {\r\n        await super.destroy();\r\n        this._modal?.dispose();\r\n        this._modal = null;\r\n\r\n        if (this.hiddenHandler) {\r\n            handler.removeListener(this.hiddenHandler);\r\n        }\r\n        if (this.shownHandler) {\r\n            handler.removeListener(this.shownHandler);\r\n        }\r\n    }\r\n    override init() {\r\n        super.init()\r\n        if (!this.okButtonText) {\r\n            this.translate.get('Action.Ok').subscribe(text => {\r\n                this.okButtonText = text;\r\n            });\r\n        }\r\n\r\n        setTimeout(() => {\r\n            const modalEl = this.getModalElement();\r\n            if (modalEl) {\r\n                this.shownHandler = handler.addListener(modalEl, 'shown.bs.modal', () => {\r\n                    this.onShown.emit();\r\n                });\r\n\r\n                this.hiddenHandler = handler.addListener(modalEl, 'hidden.bs.modal', () => {\r\n                    this.onHidden.emit();\r\n                });\r\n            }\r\n        }, 1);\r\n    }\r\n\r\n    private _uniqueId: string = `zek-modal-${this.uniqueId}`;\r\n    /** The unique ID for the radio button. */\r\n    @Input() id: string = this._uniqueId;\r\n    modalId = `${this.id}-modal`;\r\n    lableId = `${this.id}-lable`;\r\n    cancelButtonId = `${this.id}-cancel-button`;\r\n    okButtonId = `${this.id}-ok-button`;\r\n\r\n    shownHandler?: number | null;\r\n    hiddenHandler?: number | null;\r\n\r\n    @Input() model: any;\r\n    readonly elementId = RandomHelper.randomHex();\r\n\r\n\r\n    private _showOk = true;\r\n    @Input()\r\n    get showOk(): boolean {\r\n        return this._showOk;\r\n    }\r\n    set showOk(v: BooleanInput) {\r\n        this._showOk = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _disabledOk = false;\r\n    @Input()\r\n    get disabledOk(): boolean {\r\n        return this._disabledOk;\r\n    }\r\n    set disabledOk(v: BooleanInput) {\r\n        this._disabledOk = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _showCancel = true;\r\n    @Input()\r\n    get showCancel(): boolean {\r\n        return this._showCancel;\r\n    }\r\n    set showCancel(v: BooleanInput) {\r\n        this._showCancel = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _autoHide = true;\r\n    @Input()\r\n    get autoHide(): boolean {\r\n        return this._autoHide;\r\n    }\r\n    set autoHide(v: BooleanInput) {\r\n        this._autoHide = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    @Input() title?: string | null;\r\n\r\n    @Input() text?: string | null;\r\n\r\n    @Input() icon?: string | null;\r\n\r\n    @Input() okButtonText?: string | null;\r\n\r\n    @Output() onShown = new EventEmitter<void>();\r\n\r\n    @Output() onHidden = new EventEmitter<void>();\r\n\r\n    @Output() onOk = new EventEmitter<any>();\r\n    @Output() onCancel = new EventEmitter<void>();\r\n\r\n    @Input() componentType = ComponentType.Primary;\r\n\r\n\r\n\r\n    private _size: ModalSize = '';\r\n    @Input()\r\n    get size() {\r\n        return this._size;\r\n    }\r\n    set size(v: ModalSize) {\r\n        this._size = v;\r\n    }\r\n\r\n    /**\r\n     * @deprecated Please use size property\r\n     */\r\n    @Input()\r\n    get large(): boolean {\r\n        return this._size === 'lg';\r\n    }\r\n    set large(v: BooleanInput) {\r\n        this._size = Convert.toBooleanProperty(v) ? 'lg' : '';\r\n    }\r\n\r\n    /**\r\n     * @deprecated Please use size property\r\n     */\r\n    @Input()\r\n    get xl(): boolean {\r\n        return this._size === 'xl';\r\n    }\r\n    set xl(v: BooleanInput) {\r\n        this._size = Convert.toBooleanProperty(v) ? 'xl' : '';\r\n    }\r\n\r\n\r\n    private _scrollable = false;\r\n    @Input()\r\n    get scrollable(): boolean {\r\n        return this._scrollable;\r\n    }\r\n    set scrollable(v: BooleanInput) {\r\n        this._scrollable = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _fullscreen = false;\r\n    @Input()\r\n    get fullscreen(): boolean {\r\n        return this._fullscreen;\r\n    }\r\n    set fullscreen(v: BooleanInput) {\r\n        this._fullscreen = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _showHeader = true;\r\n    @Input()\r\n    get showHeader(): boolean {\r\n        return this._showHeader;\r\n    }\r\n    set showHeader(v: BooleanInput) {\r\n        this._showHeader = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _showFooter = true;\r\n    @Input()\r\n    get showFooter(): boolean {\r\n        return this._showFooter;\r\n    }\r\n    set showFooter(v: BooleanInput) {\r\n        this._showFooter = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n\r\n\r\n    @Output() onValidating = new EventEmitter<ValidEventArgs>(false);\r\n    // @Input() xxl: boolean;\r\n\r\n    private _modal: any;\r\n    // public get modal(): any {\r\n    //     if (!this._modal) {\r\n    //         this.getModal();\r\n    //     }\r\n    //     return this._modal;\r\n    // }\r\n    // public set modal(v: any) {\r\n    //     this._modal = v;\r\n    // }\r\n\r\n    protected getModalElement() {\r\n        return document.getElementById(this.modalId);\r\n    }\r\n    /**\r\n     * Creates  with method new bootstrap.Modal(modalId, { backdrop: 'static' });\r\n     * @returns boostrap modal\r\n     */\r\n    protected createModal() {\r\n        const modalEl = this.getModalElement();\r\n        return new bootstrap.Modal(modalEl, { backdrop: 'static' });\r\n    }\r\n\r\n\r\n\r\n\r\n    cssButton() {\r\n        return BootstrapHelper.cssButton(this.componentType);\r\n    }\r\n\r\n    // private isShown = false;\r\n    show(model?: any) {\r\n        if (!ObjectHelper.isDefined(model)) model = {};\r\n        this.model = model;\r\n\r\n        // this.modal?.show();\r\n\r\n\r\n        if (!this._modal) {\r\n            this._modal = this.createModal();\r\n        }\r\n        if (this._modal) {\r\n            this._modal.show();\r\n            // this.isShown = true;\r\n        }\r\n    }\r\n\r\n\r\n    cancel() {\r\n        this.onCancel.emit();\r\n        this.hide();\r\n    }\r\n    hide() {\r\n        // this.modal?.hide();\r\n\r\n        // if (this.isShown) {\r\n        //     if (this._modal) {\r\n        //         this._modal.hide();\r\n        //         this.isShown = false;\r\n        //     }\r\n        // } else {\r\n\r\n        // }\r\n\r\n        if (this._modal) {\r\n            this._modal.hide();\r\n        }\r\n        else {\r\n            const btn = document.getElementById(this.cancelButtonId);\r\n            if (btn) {\r\n                btn.click();\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n\r\n    ok() {\r\n        const event = new ValidEventArgs();\r\n        this.onValidating.emit(event);\r\n        if (!event.valid) return;\r\n\r\n        if (this.autoHide)\r\n            this.hide();\r\n\r\n        this.onOk.emit(this.model);\r\n    }\r\n\r\n\r\n    keyDown(e: Event) {\r\n        e.preventDefault();\r\n        this.ok();\r\n    }\r\n}\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n    standalone: false,\r\n    selector: 'zek-delete-modal',\r\n    templateUrl: './modal.component.html'\r\n})\r\nexport class ZekDeleteModal extends ZekModal {\r\n    constructor() {\r\n        super();\r\n        this.icon = 'fa-solid fa-trash';\r\n        this.translate.get('Action.Delete').subscribe((res: string) => this.title = res);\r\n        this.translate.get('Alert.DeleteQuestion').subscribe((res: string) => this.text = res);\r\n        this.componentType = ComponentType.Delete;\r\n    }\r\n}\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n    standalone: false,\r\n    selector: 'zek-approve-modal',\r\n    templateUrl: './modal.component.html'\r\n})\r\nexport class ZekApproveModal extends ZekModal {\r\n    constructor() {\r\n        super();\r\n        this.icon = 'fa-solid fa-thumbs-up';\r\n        this.translate.get('Action.Approve').subscribe((res: string) => this.title = res);\r\n        this.translate.get('Alert.ApproveQuestion').subscribe((res: string) => this.text = res);\r\n        this.componentType = ComponentType.Success;\r\n    }\r\n}\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n    standalone: false,\r\n    selector: 'zek-submit-modal',\r\n    templateUrl: './modal.component.html'\r\n})\r\nexport class ZekSubmitModal extends ZekModal {\r\n    constructor() {\r\n        super();\r\n        this.icon = 'fa-solid fa-thumbs-up';\r\n        this.translate.get('Action.Submit').subscribe((res: string) => this.title = res);\r\n        this.translate.get('Alert.SubmitQuestion').subscribe((res: string) => this.text = res);\r\n        this.componentType = ComponentType.Success;\r\n    }\r\n}\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n    standalone: false,\r\n    selector: 'zek-disapprove-modal',\r\n    templateUrl: './modal.component.html'\r\n})\r\nexport class ZekDisapproveModal extends ZekModal {\r\n    constructor() {\r\n        super();\r\n        this.icon = 'fa-solid fa-thumbs-down';\r\n        this.translate.get('Action.Disapprove').subscribe((res: string) => this.title = res);\r\n        this.translate.get('Alert.DisapproveQuestion').subscribe((res: string) => this.text = res);\r\n        this.componentType = ComponentType.Delete;\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n    standalone: false,\r\n    selector: 'zek-restore-modal',\r\n    templateUrl: './modal.component.html'\r\n})\r\nexport class ZekRestoreModal extends ZekModal {\r\n    constructor() {\r\n        super();\r\n        this.icon = 'fa-solid fa-rotate-right';\r\n        this.translate.get('Action.Restore').subscribe((res: string) => this.title = res);\r\n        this.translate.get('Action.RestoreQuestion').subscribe((res: string) => this.text = res);\r\n        this.componentType = ComponentType.Success;\r\n    }\r\n}","<div (keydown.enter)=\"keyDown($event)\" class=\"modal fade\" data-bs-backdrop=\"static\" id=\"{{modalId}}\" tabindex=\"-1\" attr.aria-labelledby=\"{{lableId}}\" aria-hidden=\"true\">\r\n    <div class=\"modal-dialog\" [ngClass]=\"{\r\n        'modal-sm': size === 'sm',\r\n        'modal-lg': size === 'lg', \r\n        'modal-xl': size === 'xl'\r\n    }\" [class.modal-dialog-scrollable]=\"scrollable\" [class.modal-fullscreen]=\"fullscreen\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-header\" *ngIf=\"showHeader\">\r\n                <ng-content select=\"header\"></ng-content>\r\n                <h5 class=\"modal-title\" id=\"{{lableId}}\">{{title}}</h5>\r\n                <button type=\"button\" class=\"btn-close\" (click)=\"cancel()\" aria-label=\"Close\"></button>\r\n            </div>\r\n            <div class=\"modal-body\">\r\n                {{text}}\r\n                <ng-content></ng-content>\r\n            </div>\r\n            <div class=\"modal-footer\" *ngIf=\"showFooter\">\r\n                <ng-content select=\"footer\"></ng-content>\r\n                <button [class.visually-hidden]=\"!showOk\" [disabled]=\"disabledOk\" type=\"button\" class=\"btn {{cssButton()}}\" id=\"{{okButtonId}}\"\r\n                    (click)=\"ok()\">\r\n                    <i *ngIf=\"icon\" class=\"{{ icon }}\"></i> {{ okButtonText }}\r\n                </button>\r\n                <button [class.visually-hidden]=\"!showCancel\" type=\"button\" class=\"btn btn-secondary\"\r\n                    (click)=\"cancel()\">\r\n                    <i class=\"fa-solid fa-ban\"></i> {{ 'Action.Cancel' | translate }}\r\n                </button>\r\n                <button type=\"button\" class=\"d-none\" id=\"{{cancelButtonId}}\" data-bs-dismiss=\"modal\"></button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, Output, EventEmitter } from '@angular/core';\r\nimport { ZekModal } from '../modal/modal.component';\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: 'zek-filter-modal',\r\n    templateUrl: './filter-modal.component.html'\r\n})\r\nexport class ZekFilterModal extends ZekModal {\r\n    @Output() onReset = new EventEmitter();\r\n\r\n    reset() {\r\n        this.onReset.emit();\r\n    }\r\n}","<div (keydown.enter)=\"keyDown($event)\" class=\"modal fade\" data-bs-backdrop=\"static\" id=\"{{modalId}}\" tabindex=\"-1\" attr.aria-labelledby=\"{{lableId}}\" aria-hidden=\"true\">\r\n    <div class=\"modal-dialog\" [ngClass]=\"{\r\n        'modal-sm': size === 'sm',\r\n        'modal-lg': size === 'lg', \r\n        'modal-xl': size === 'xl'\r\n    }\" [class.modal-dialog-scrollable]=\"scrollable\" [class.modal-fullscreen]=\"fullscreen\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-header\" *ngIf=\"showHeader\">\r\n                <ng-content select=\"header\"></ng-content>\r\n                <h5 class=\"modal-title\" id=\"{{lableId}}\">{{ 'Action.Filter' | translate }}</h5>\r\n                <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n            </div>\r\n            <div class=\"modal-body\">\r\n                {{text}}\r\n                <ng-content></ng-content>\r\n            </div>\r\n            <div class=\"modal-footer\" *ngIf=\"showFooter\">\r\n                <ng-content select=\"footer\"></ng-content>\r\n                <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\"><i class=\"fa-solid fa-filter\"></i> {{ 'Action.Filter' | translate }}</button>\r\n                <button *ngIf=\"showCancel\" type=\"button\" class=\"btn btn-secondary\" id=\"modal-cancel-button-{{elementId}}\" data-bs-dismiss=\"modal\"><i class=\"fa-solid fa-ban\"></i> {{ 'Action.Cancel' | translate }}</button>\r\n                <button type=\"button\" class=\"btn btn-secondary\" (click)=\"reset()\"><i class=\"fa-solid fa-xmark\"></i> {{ 'Action.Reset' | translate }}</button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, Input, ViewChild } from '@angular/core';\r\nimport { ZekModal } from '../modal/modal.component';\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: 'zek-sum-modal',\r\n    templateUrl: './sum-modal.component.html'\r\n})\r\nexport class ZekSumModal {\r\n    @Input() model: any;\r\n    @ViewChild('sumModal', { static: false }) private modal?: ZekModal;\r\n\r\n    sum() {\r\n        if (this.modal) {\r\n            this.modal.show();\r\n        }\r\n        else {\r\n            throw new Error('sumModal is null or undefined');\r\n        }\r\n    }\r\n}","<zek-modal #sumModal [showCancel]=\"false\" [title]=\"'Action.Sum' | translate\">\r\n    <table class=\"table table-striped table-borderless table-hover\">\r\n        <tbody>\r\n            <tr *ngFor=\"let item of model\">\r\n                <td class=\"w-75\">{{'Fields.'+item.key | translate}}</td>\r\n                <td class=\"w-25\">\r\n                    <ng-container *ngIf=\"item.key != 'Count'; else elseBlock\">{{item.value | number:'1.2' }}</ng-container>\r\n                    <ng-template #elseBlock>{{item.value}}</ng-template>\r\n                </td>\r\n            <tr>\r\n        </tbody>\r\n    </table>\r\n</zek-modal>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { \r\n    ZekModal,\r\n    ZekDeleteModal,\r\n    ZekApproveModal,\r\n    ZekDisapproveModal,\r\n    ZekRestoreModal,\r\n    ZekSubmitModal\r\n} from './modal/modal.component';\r\nimport { ZekFilterModal } from './filter-modal/filter-modal.component';\r\nimport { ZekSumModal } from './sum-modal/sum-modal.component';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        RouterModule,\r\n        TranslateModule\r\n    ],\r\n    declarations: [\r\n        ZekModal,\r\n        ZekDeleteModal,\r\n        ZekApproveModal,\r\n        ZekSubmitModal,\r\n        ZekDisapproveModal,\r\n        ZekRestoreModal,\r\n        ZekFilterModal,\r\n        ZekSumModal\r\n    ],\r\n    exports: [\r\n        ZekModal,\r\n        ZekDeleteModal,\r\n        ZekApproveModal,\r\n        ZekSubmitModal,\r\n        ZekDisapproveModal,\r\n        ZekRestoreModal,\r\n        ZekFilterModal,\r\n        ZekSumModal\r\n    ]\r\n})\r\nexport class ZekModalModule { }","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n  standalone: true,\r\n  name: 'safe'\r\n})\r\nexport class ZekSafePipe implements PipeTransform {\r\n  constructor(private sanitizer: DomSanitizer) {\r\n  }\r\n\r\n  /**\r\n   * Transform\r\n   *\r\n   * @param value: string\r\n   * @param type: string html, style, script, url, resourceUrl\r\n   */\r\n  transform(value: string, type?: '' | 'html' | 'style' | 'script' | 'url' | 'resourceUrl' | null): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n    switch (type) {\r\n      case 'html':\r\n        return this.sanitizer.bypassSecurityTrustHtml(value);\r\n      case 'style':\r\n        return this.sanitizer.bypassSecurityTrustStyle(value);\r\n      case 'script':\r\n        return this.sanitizer.bypassSecurityTrustScript(value);\r\n      case 'url':\r\n        return this.sanitizer.bypassSecurityTrustUrl(value);\r\n      case 'resourceUrl':\r\n        return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n      default:\r\n        return this.sanitizer.bypassSecurityTrustHtml(value);\r\n    }\r\n  }\r\n}","import { Component, ViewChild } from '@angular/core';\r\n\r\nimport { ZekModal, ZekModalModule } from '../modal';\r\nimport { CoreComponent } from '../../components';\r\nimport { FileHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ZekSafePipe } from '../safe';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-file-viewer',\r\n    templateUrl: './file-viewer.html',\r\n    imports: [CommonModule, ZekModalModule, ZekSafePipe],\r\n    providers: []\r\n})\r\nexport class ZekFileViewer<TModal extends ZekModal = ZekModal> extends CoreComponent {\r\n\r\n    @ViewChild('viewModal', { static: true }) viewModal?: TModal | null;\r\n\r\n    src?: string | null;\r\n\r\n    show(url: string, extension?: string | null) {\r\n\r\n        const ext = extension || FileHelper.getExtension(url);\r\n        switch (ext) {\r\n            case '.docx':\r\n            case '.doc':\r\n                this.src = 'https://docs.google.com/a/umd.edu/viewer?url=' + url + '&embedded=true';\r\n                break;\r\n\r\n            case '.xlsx':\r\n            case '.xls':\r\n\r\n                this.src = 'http://view.officeapps.live.com/op/view.aspx?src=' + url;\r\n                break;\r\n\r\n            // case '.jpg':\r\n            // case '.jpeg':\r\n            // case '.png':\r\n            // case '.pdf':\r\n            default:\r\n                this.src = url;\r\n                break;\r\n        }\r\n\r\n\r\n        // <!-- <iframe id=\"office\" width=\"100%\" height=\"99%\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" allowfullscreen=\"allowfullscreen\"\r\n        // src=\"https://docs.google.com/spreadsheets/u/0/d/1Yv92dG0AOki6prNq5RwRSWTpdcidzFkakW9nMf0RaUQ/preview/sheet?gid=0\"></iframe> -->\r\n\r\n        // <!-- <iframe id=\"office\" width=\"100%\" height=\"99%\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" \r\n        // src=\"https://docs.google.com/a/umd.edu/viewer?url=https://github.com/poychang/blog.poychang.net/raw/master/assets/post-files/THIS-IS-WORD.docx&amp;embedded=true\">\r\n        // </iframe> -->\r\n        // <!-- <iframe id=\"office\" width=\"100%\" height=\"99%\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" \r\n        // src=\" https://view.officeapps.live.com/op/embed.aspx?src=https://github.com/poychang/blog.poychang.net/raw/master/assets/post-files/THIS-IS-WORD.docx\">\r\n        // </iframe> -->\r\n\r\n\r\n        // this.src = 'http://view.officeapps.live.com/op/view.aspx?src=https://sample-videos.com/xls/Sample-Spreadsheet-50000-rows.xls';\r\n\r\n        if (this.viewModal) {\r\n            this.viewModal.show();\r\n        }\r\n    }\r\n}\r\n","<zek-modal #viewModal [fullscreen]=\"true\" [showHeader]=\"true\" [showFooter]=\"false\">\r\n    <ng-container *ngIf=\"src\">\r\n        <iframe id=\"office\" width=\"100%\" height=\"99%\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"\r\n            [src]=\"src | safe:'resourceUrl'\">\r\n        </iframe>\r\n    </ng-container>\r\n</zek-modal>","import { HtmlHelper } from \"../../utils\";\r\n\r\ndeclare let google: any;\r\n\r\n\r\ndeclare global {\r\n    interface Window {\r\n        onGoogleLibraryLoad: () => void;\r\n    }\r\n}\r\n\r\nfunction loadScript(\r\n    onLoaded: (google: any) => void,\r\n    url?: string,\r\n    nonce?: string\r\n): void {\r\n    window.onGoogleLibraryLoad = () => {\r\n        onLoaded(google);\r\n    };\r\n\r\n    const src = url || \"https://accounts.google.com/gsi/client\";\r\n    HtmlHelper.loadScript(src, nonce, true, true);\r\n}\r\n\r\nexport const loader = { loadScript };","import { Directive, EventEmitter, Inject, Input, Output } from \"@angular/core\";\r\nimport { loader } from './loader';\r\nimport { GOOGLE_CLIENT_ID } from \"../../tokens\";\r\nimport { CoreComponent, BooleanInput, NumberInput } from \"../../components\";\r\nimport { Convert } from \"../../utils\";\r\n\r\ndeclare let google: any;\r\n\r\nexport interface GoogleLoginConfig {\r\n    client_id: string;\r\n}\r\nexport type GoogleLoginButtonTextInput =\r\n    'signin_with' | 'signup_with' | 'continue_with' | 'signin' | null | undefined;\r\n\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: 'zek-google-login',\r\n    host: {\r\n        '[attr.id]': 'id',\r\n    }\r\n})\r\nexport class ZekGoogleLoginButton extends CoreComponent {\r\n    constructor(@Inject(GOOGLE_CLIENT_ID) private readonly client_id: string) {\r\n        super();\r\n    }\r\n\r\n    private _uniqueId: string = `zek-google-button-container-${this.uniqueId}`;\r\n    @Input() id: string = this._uniqueId;\r\n\r\n    private _prompt = true;\r\n    @Input() get prompt() {\r\n        return this._prompt;\r\n    }\r\n    set prompt(v: BooleanInput) {\r\n        this._prompt = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _autoSelect = false;\r\n    @Input() get autoSelect() {\r\n        return this._autoSelect;\r\n    }\r\n    set autoSelect(v: BooleanInput) {\r\n        this._autoSelect = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n    private _cancelOnTapOutside = true;\r\n    @Input() get cancelOnTapOutside() {\r\n        return this._cancelOnTapOutside;\r\n    }\r\n    set cancelOnTapOutside(v: BooleanInput) {\r\n        this._cancelOnTapOutside = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n    private _width: NumberInput;\r\n    @Input() get width() {\r\n        return this._width;\r\n    }\r\n    set width(v: NumberInput) {\r\n        this._width = v;\r\n    }\r\n\r\n\r\n    private _text: GoogleLoginButtonTextInput;\r\n    @Input() get text() {\r\n        return this._text;\r\n    }\r\n    set text(v: GoogleLoginButtonTextInput) {\r\n        this._text = v;\r\n    }\r\n\r\n\r\n\r\n    @Output() onLoginResponse = new EventEmitter();\r\n    @Output() onLogin = new EventEmitter();\r\n\r\n    // private _type: 'standard' | 'icon';\r\n    // public get type(): '' {\r\n    //     return this._type;\r\n    // }\r\n    // public set type(v: 'standard' | 'icon') {\r\n    //     this._type = v;\r\n    // }\r\n\r\n\r\n\r\n\r\n    // private static _loaded = false;\r\n    // static async loadScript() {\r\n    //     if (this._loaded) return;\r\n    //     await HtmlHelper.loadScripts('https://accounts.google.com/gsi/client');\r\n    //     this._loaded = true;\r\n    // }\r\n\r\n\r\n    private google?: any;\r\n    override async init() {\r\n        super.init();\r\n        // await GoogleLoginButton.loadScript();\r\n\r\n        if (\"google\" in window) {\r\n            this.google = google;\r\n            this.initialize();\r\n        } else {\r\n            loader.loadScript(this.onLoadComplete);\r\n        }\r\n    }\r\n    private onLoadComplete = (google: any) => {\r\n        this.google = google;\r\n        this.initialize();\r\n    }\r\n\r\n    initialize() {\r\n        this.google.accounts.id.initialize({\r\n            client_id: this.client_id,\r\n            callback: (response: any) => {\r\n                this.handleCredentialResponse(response);\r\n            },\r\n            auto_select: this._autoSelect,\r\n            cancel_on_tap_outside: this._cancelOnTapOutside,\r\n        });\r\n\r\n        setTimeout(() => {\r\n            this.renderButton();\r\n            this.autoPrompt();\r\n        },);\r\n    }\r\n    renderButton() {\r\n        const options: any = { theme: \"outline\", size: \"large\" };\r\n        if (this._width)\r\n            options.width = this._width;\r\n        if (this._text)\r\n            options.text = this._text\r\n\r\n        this.google.accounts.id.renderButton(\r\n            document.getElementById(this.id),\r\n            // this._elementRef.nativeElement.parentElement,\r\n            options  // customization attributes\r\n        );\r\n    }\r\n    autoPrompt() {\r\n        if (this._prompt)\r\n            this.google.accounts.id.prompt(); // also display the One Tap dialog\r\n    }\r\n\r\n\r\n    handleCredentialResponse(response: any) {\r\n        this.onLoginResponse?.emit(response);\r\n        this.onLogin?.emit(response.credential);\r\n\r\n        // let payload = JwtHelper.decode(response.credential);\r\n        // console.log(\"ID: \" + payload.sub);\r\n        // console.log('Full Name: ' + payload.name);\r\n        // console.log('Given Name: ' + payload.given_name);\r\n        // console.log('Family Name: ' + payload.family_name);\r\n        // console.log(\"Image URL: \" + payload.picture);\r\n        // console.log(\"Email: \" + payload.email);\r\n    }\r\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { GoogleLoginConfig, ZekGoogleLoginButton } from './google-login-button';\r\nimport { GOOGLE_CLIENT_ID } from '../../tokens';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule\r\n    ],\r\n    declarations: [\r\n        ZekGoogleLoginButton\r\n    ],\r\n    exports: [\r\n        ZekGoogleLoginButton\r\n    ]\r\n})\r\nexport class ZekGoogleLoginModule {\r\n    public static forRoot(config: GoogleLoginConfig): ModuleWithProviders<ZekGoogleLoginModule> {\r\n        return {\r\n          ngModule: ZekGoogleLoginModule,\r\n          providers: [\r\n            ZekGoogleLoginButton,\r\n            {\r\n              provide: GOOGLE_CLIENT_ID,\r\n              useValue: config.client_id\r\n            },\r\n          ]\r\n        };\r\n      }\r\n\r\n\r\n    public static forChild(config: GoogleLoginConfig) {\r\n        return this.forRoot(config);\r\n    }\r\n}","import { Component, Output, EventEmitter, Input } from '@angular/core';\r\nimport { BooleanInput } from '../../../components';\r\nimport { Convert } from '../../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-grid-toolbar',\r\n    templateUrl: './grid-toolbar.html',\r\n    imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekGridToolbar {\r\n    // constructor(private readonly router: Router) {\r\n    //     //private readonly viewContainerRef: ViewContainerRef,\r\n    // }\r\n\r\n    // getParentComponent(): any {\r\n    //     return this.viewContainerRef['_data'].componentView.component.viewContainerRef['_view'].component\r\n    // }\r\n\r\n    @Input() model: any;\r\n\r\n    private _showEdit = true;\r\n    @Input()\r\n    get showEdit(): boolean {\r\n        return this._showEdit;\r\n    }\r\n    set showEdit(v: BooleanInput) {\r\n        this._showEdit = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _editEnabled = true;\r\n    @Input()\r\n    get editEnabled(): boolean {\r\n        return this._editEnabled;\r\n    }\r\n    set editEnabled(v: BooleanInput) {\r\n        this._editEnabled = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _showDelete = true;\r\n    @Input()\r\n    get showDelete(): boolean {\r\n        return this._showDelete;\r\n    }\r\n    set showDelete(v: BooleanInput) {\r\n        this._showDelete = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _deleteEnabled = true;\r\n    @Input()\r\n    get deleteEnabled(): boolean {\r\n        return this._deleteEnabled;\r\n    }\r\n    set deleteEnabled(v: BooleanInput) {\r\n        this._deleteEnabled = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _showRestore = false;\r\n    @Input()\r\n    get showRestore(): boolean {\r\n        return this._showRestore;\r\n    }\r\n    set showRestore(v: BooleanInput) {\r\n        this._showRestore = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _restoreEnabled = true;\r\n    @Input()\r\n    get restoreEnabled(): boolean {\r\n        return this._restoreEnabled;\r\n    }\r\n    set restoreEnabled(v: BooleanInput) {\r\n        this._restoreEnabled = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n    @Input() approveText = 'Action.Approve';\r\n    private _showApprove = false;\r\n    @Input()\r\n    get showApprove(): boolean {\r\n        return this._showApprove;\r\n    }\r\n    set showApprove(v: BooleanInput) {\r\n        this._showApprove = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private _approveEnabled = false;\r\n    @Input()\r\n    get approveEnabled(): boolean {\r\n        return this._approveEnabled;\r\n    }\r\n    set approveEnabled(v: BooleanInput) {\r\n        this._approveEnabled = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    @Input() disapproveText = 'Action.Disapprove';\r\n    private _showDisapprove = false;\r\n    @Input()\r\n    get showDisapprove(): boolean {\r\n        return this._showDisapprove;\r\n    }\r\n    set showDisapprove(v: BooleanInput) {\r\n        this._showDisapprove = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n    private _disapproveEnabled = false;\r\n    @Input()\r\n    get disapproveEnabled(): boolean {\r\n        return this._disapproveEnabled;\r\n    }\r\n    set disapproveEnabled(v: BooleanInput) {\r\n        this._disapproveEnabled = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    @Output() onEdit = new EventEmitter<any>();\r\n    edit() {\r\n        //this.router.navigate([this.router.url, this.model]);\r\n        this.onEdit.emit(this.model);\r\n    }\r\n\r\n    @Output() onDelete = new EventEmitter<any>();\r\n    delete() {\r\n        this.onDelete.emit(this.model)\r\n    }\r\n\r\n    @Output() onApprove = new EventEmitter<any>();\r\n    approve() {\r\n        this.onApprove.emit(this.model)\r\n    }\r\n\r\n    @Output() onDisapprove = new EventEmitter<any>();\r\n    disapprove() {\r\n        this.onDisapprove.emit(this.model)\r\n    }\r\n\r\n    @Output() onRestore = new EventEmitter<any>();\r\n    restore() {\r\n        this.onRestore.emit(this.model)\r\n    }\r\n}\r\n","<div class=\"btn-group btn-group-sm\" role=\"group\" aria-label=\"Table action group\">\r\n    <button *ngIf=\"showEdit\" (click)=\"edit()\" type=\"button\" class=\"btn btn-secondary\" title=\"{{ 'Action.Edit' | translate }}\" [disabled]=\"!editEnabled\">\r\n        <i class=\"fa-solid fa-pencil\"></i>\r\n    </button>\r\n    <button *ngIf=\"showApprove\" (click)=\"approve()\" type=\"button\" class=\"btn btn-success\" title=\"{{ approveText | translate }}\" [disabled]=\"!approveEnabled\">\r\n        <i class=\"fa-solid fa-thumbs-up\"></i>\r\n    </button>\r\n    <button *ngIf=\"showDisapprove\" (click)=\"disapprove()\" type=\"button\" class=\"btn btn-danger\" title=\"{{ disapproveText | translate }}\" [disabled]=\"!disapproveEnabled\">\r\n        <i class=\"fa-solid fa-thumbs-down\"></i>\r\n    </button>\r\n    <button *ngIf=\"showDelete\" (click)=\"delete()\" type=\"button\" class=\"btn btn-danger\" title=\"{{ 'Action.Delete' | translate }}\" [disabled]=\"!deleteEnabled\">\r\n        <i class=\"fa-solid fa-trash\"></i>\r\n    </button>\r\n    <button *ngIf=\"showRestore\" (click)=\"restore()\" type=\"button\" class=\"btn btn-success\" title=\"{{ 'Action.Restore' | translate }}\" [disabled]=\"!restoreEnabled\">\r\n        <i class=\"fa-solid fa-clock-rotate-left\"></i>\r\n    </button>\r\n    <ng-content></ng-content>\r\n</div>","import { Component } from \"@angular/core\";\r\nimport { ZekGridToolbar } from \"../grid-toolbar/grid-toolbar\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-grid-toolbar-bar',\r\n    templateUrl: './grid-toolbar-bar.html',\r\n    imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekGridToolbarBar extends ZekGridToolbar {\r\n\r\n}","<button type=\"button\" class=\"btn btn-light btn-sm\" data-bs-toggle=\"dropdown\">\r\n    <i class=\"fa-solid fa-ellipsis\"></i>\r\n</button>\r\n<ul class=\"dropdown-menu\">\r\n    <li><button *ngIf=\"showEdit\" (click)=\"edit()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!editEnabled\">\r\n        <i class=\"fa-solid fa-pencil\"></i> {{ 'Action.Edit' | translate }}\r\n    </button></li>\r\n    <li><button *ngIf=\"showApprove\" (click)=\"approve()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!approveEnabled\">\r\n        <i class=\"fa-solid fa-thumbs-up\"></i> {{ approveText | translate }}\r\n    </button></li>\r\n    <li><button *ngIf=\"showDisapprove\" (click)=\"disapprove()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!disapproveEnabled\">\r\n        <i class=\"fa-solid fa-thumbs-down\"></i> {{ disapproveText | translate }}\r\n    </button></li>\r\n    <li><button *ngIf=\"showDelete\" (click)=\"delete()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!deleteEnabled\">\r\n        <i class=\"fa-solid fa-trash\"></i> {{ 'Action.Delete' | translate }}\r\n    </button></li>\r\n    <li><button *ngIf=\"showRestore\" (click)=\"restore()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!restoreEnabled\">\r\n        <i class=\"fa-solid fa-clock-rotate-left\"></i> {{ 'Action.Restore' | translate }}\r\n    </button></li>\r\n    <ng-content></ng-content>\r\n</ul>","import { Component, Output, EventEmitter, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BooleanInput } from '../../components';\r\n\r\nimport { PrintType } from '../../models/print.model';\r\nimport { Convert, UrlHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-list-toolbar',\r\n    templateUrl: './list-toolbar.html',\r\n    imports: [CommonModule, TranslateModule],\r\n})\r\nexport class ZekListToolbar {\r\n    constructor(private readonly router: Router) {\r\n    }\r\n\r\n    printType = PrintType;\r\n\r\n    private _isFiltered = false;\r\n    @Input()\r\n    get isFiltered() {\r\n        return this._isFiltered;\r\n    }\r\n    set isFiltered(v: BooleanInput) {\r\n        this._isFiltered = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n    private _showCreate = true;\r\n    @Input()\r\n    get showCreate() {\r\n        return this._showCreate;\r\n    }\r\n    set showCreate(v: BooleanInput) {\r\n        this._showCreate = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n\r\n\r\n    private _showFilter = true;\r\n    @Input()\r\n    get showFilter() {\r\n        return this._showFilter;\r\n    }\r\n    set showFilter(v: BooleanInput) {\r\n        this._showFilter = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n    private _showPrint = false;\r\n    @Input()\r\n    get showPrint() {\r\n        return this._showPrint;\r\n    }\r\n    set showPrint(v: BooleanInput) {\r\n        this._showPrint = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n\r\n\r\n    private _showSum = false;\r\n    @Input()\r\n    get showSum() {\r\n        return this._showSum;\r\n    }\r\n    set showSum(v: BooleanInput) {\r\n        this._showSum = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n    private _showExport = false;\r\n    @Input()\r\n    get showExport(): boolean {\r\n        return this._showExport;\r\n    }\r\n    set showExport(v: BooleanInput) {\r\n        this._showExport = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n    @Output() onRefresh = new EventEmitter<void>();\r\n    @Output() onFilter = new EventEmitter<void>();\r\n    @Output() onCreate = new EventEmitter<void>();\r\n    @Output() onSum = new EventEmitter<void>();\r\n    @Output() onPrint = new EventEmitter<PrintType>();\r\n    @Output() onExport = new EventEmitter<number>();\r\n\r\n    refresh() {\r\n        this.onRefresh.emit();\r\n    }\r\n\r\n    create() {\r\n        this.onCreate?.emit();\r\n    }\r\n\r\n\r\n    filter() {\r\n        this.onFilter.emit();\r\n    }\r\n\r\n\r\n    print(printType?: PrintType) {\r\n        this.onPrint.emit(printType);\r\n    }\r\n\r\n\r\n    sum() {\r\n        this.onSum.emit();\r\n    }\r\n\r\n    exportExcel() {\r\n        this.onExport.emit(1);\r\n    }\r\n}","<div class=\"btn-toolbar\" role=\"toolbar\" aria-label=\"Toolbar\">\r\n    <div class=\"btn-group me-2\" role=\"group\" aria-label=\"Action group\">\r\n        <button *ngIf=\"showCreate\" type=\"button\" class=\"btn btn-primary\" (click)=\"create()\"><i class=\"fa-solid fa-plus\"></i> {{ 'Action.Create' | translate }}</button>\r\n    </div>\r\n    <div class=\"btn-group me-2\" role=\"group\" aria-label=\"Filter group\">\r\n        <button *ngIf=\"showFilter\" type=\"button\" class=\"btn btn-secondary\" [ngClass]=\"{'btn-outline-success': isFiltered, 'btn-secondary': !isFiltered }\" (click)=\"filter()\" data-bs-toggle0=\"modal\" data-bs-backdrop0=\"static\" data-bs-target0=\"#filter-modal\"><i class=\"fa-solid fa-filter\"></i> {{ 'Action.Filter' | translate }}</button>\r\n        <button type=\"button\" class=\"btn btn-secondary\" title=\"{{ 'Action.Refresh' | translate }}\" (click)=\"refresh()\"><i class=\"fa-solid fa-rotate\"></i></button>\r\n    </div>\r\n    <div *ngIf=\"showPrint\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Print group\">\r\n        <button type=\"button\" class=\"btn btn-secondary\" (click)=\"print(printType.Pdf)\"><i class=\"fa-solid fa-print\"></i> {{ 'Action.Print' | translate }}</button>\r\n        <div class=\"btn-group\" role=\"group\">\r\n            <button type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n                <span class=\"visually-hidden\">Toggle Dropdown</span>\r\n            </button>\r\n            <ul class=\"dropdown-menu\">\r\n                <li><button type=\"button\" class=\"dropdown-item\" (click)=\"print(printType.Show)\"><i class=\"fa-solid fa-print\"></i> {{ 'Action.Print' | translate }}</button></li>\r\n                <li><button type=\"button\" class=\"dropdown-item\" (click)=\"print(printType.Pdf)\"><i class=\"fa-solid fa-file-pdf\"></i> {{ 'Action.Print' | translate }} PDF</button></li>\r\n            </ul>\r\n        </div>\r\n    </div>\r\n    <div *ngIf=\"showSum\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Sum group\">\r\n        <button type=\"button\" class=\"btn btn-secondary\" (click)=\"sum()\"><i class=\"fa-solid fa-sigma\"></i> {{ 'Action.Sum' | translate }}</button>\r\n    </div>\r\n    <div *ngIf=\"showExport\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Export group\">\r\n        <div class=\"btn-group\" role=\"group\">\r\n            <button id=\"btn-group-export\" type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"><i class=\"fa-solid fa-download\"></i> {{ 'Action.Export' | translate }}</button>\r\n            <ul class=\"dropdown-menu\" aria-labelledby=\"btn-group-export\">\r\n                <li><a class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"exportExcel()\"><i class=\"fa-solid fa-file-excel\"></i> Excel</a></li>\r\n            </ul>\r\n        </div>\r\n    </div>\r\n    <ng-content></ng-content>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\n\r\n@Injectable({providedIn:'root'})\r\nexport class ZekLoadingService {\r\n    private _pendingRequests = 0;\r\n    private _loadingSubject$?: BehaviorSubject<boolean>\r\n    private _onLoadingObservable?: Observable<boolean>;\r\n\r\n    start() {\r\n        this._pendingRequests++;\r\n        this._loadingSubject$?.next(true);\r\n    }\r\n    end() {\r\n        this._pendingRequests--;\r\n        if (this._pendingRequests < 0)\r\n            this._pendingRequests = 0;\r\n\r\n        if (0 === this._pendingRequests) {\r\n            this._loadingSubject$?.next(false);\r\n        }\r\n    }\r\n\r\n    get onLoading() {\r\n        if (!this._loadingSubject$) {\r\n            this._loadingSubject$ = new BehaviorSubject<boolean>(false);\r\n            this._onLoadingObservable = this._loadingSubject$.asObservable();\r\n        }\r\n\r\n        if (!this._onLoadingObservable)\r\n            throw new Error(\"_onExecuteObservable is undefined\");\r\n\r\n        return this._onLoadingObservable;\r\n    }\r\n}\r\n\r\n@Injectable()\r\nexport class ZekLoadingInterceptor implements HttpInterceptor {\r\n    constructor(private readonly _loading: ZekLoadingService) {\r\n    }\r\n\r\n    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n        this._loading.start();\r\n\r\n        return next.handle(request).pipe(\r\n            finalize(() => {\r\n                this._loading.end();\r\n            })\r\n        );\r\n    }\r\n}\r\n\r\nexport const ZekLoadingInterceptorProvider = [{\r\n    provide: HTTP_INTERCEPTORS,\r\n    useClass: ZekLoadingInterceptor,\r\n    multi: true\r\n}];","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ZekLoadingService } from './loading-interceptor';\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: 'zek-loading',\r\n    styleUrls: ['./loading.css'],\r\n    template: `\r\n<div *ngIf=\"show\" id=\"loading\" class=\"progress\">\r\n    <div class=\"progress-bar progress-bar-striped progress-bar-animated bg-danger\" role=\"progressbar\" style=\"width:100%\" aria-valuenow=\"100\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\r\n</div>\r\n`\r\n})\r\nexport class ZekLoading implements OnInit, OnDestroy {\r\n    show = false;\r\n    private subscription?: Subscription;\r\n    constructor(private readonly _loading: ZekLoadingService) {\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.subscription = this._loading.onLoading.subscribe(x => {\r\n            this.show = x\r\n        });\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.subscription?.unsubscribe();\r\n    }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ZekLoadingInterceptor, ZekLoadingInterceptorProvider } from './loading-interceptor';\r\nimport { ZekLoading } from './loading';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n    ],\r\n    declarations: [\r\n        ZekLoading\r\n    ],\r\n    providers: [\r\n        ZekLoadingInterceptor,\r\n        ZekLoadingInterceptorProvider,\r\n    ],\r\n    exports: [\r\n        ZekLoading,\r\n    ]\r\n})\r\nexport class ZekLoadingModule {\r\n}\r\n","export * from './loading.module';\r\nexport * from './loading';\r\n// export * from './loading-interceptor';","import { Directive, ElementRef, HostListener, input, Input } from \"@angular/core\";\r\nimport { BooleanInput, NumberInput } from \"../../components\";\r\nimport { Convert, MathHelper } from \"../../utils\";\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: \"[numeric]\",\r\n})\r\nexport class ZekNumericDirective {\r\n    private _digits = 0;\r\n    @Input()\r\n    get digits() {\r\n        return this._digits;\r\n    }\r\n    set digits(v: NumberInput) {\r\n        const tmp = MathHelper.clamp(Convert.toNumber(v) ?? 0, 0, 29);\r\n        this._digits = tmp;\r\n    }\r\n\r\n    private _negative = false;\r\n    @Input()\r\n    get negative(): boolean {\r\n        return this._negative;\r\n    }\r\n    set negative(v: BooleanInput) {\r\n        this._negative = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    private checkAllowNegative(value: string) {\r\n        if (this._digits <= 0) {\r\n            return String(value).match(new RegExp(/^-?\\d+$/));\r\n        } else {\r\n            const regExpString =\r\n                \"^-?\\\\s*((\\\\d+(\\\\.\\\\d{0,\" +\r\n                this._digits +\r\n                \"})?)|((\\\\d*(\\\\.\\\\d{1,\" +\r\n                this._digits +\r\n                \"}))))\\\\s*$\";\r\n            return String(value).match(new RegExp(regExpString));\r\n        }\r\n    }\r\n\r\n    private check(value: string) {\r\n        if (this._digits <= 0) {\r\n            return String(value).match(new RegExp(/^\\d+$/));\r\n        } else {\r\n            const regExpString =\r\n                \"^\\\\s*((\\\\d+(\\\\.\\\\d{0,\" +\r\n                this._digits +\r\n                \"})?)|((\\\\d*(\\\\.\\\\d{1,\" +\r\n                this._digits +\r\n                \"}))))\\\\s*$\";\r\n            return String(value).match(new RegExp(regExpString));\r\n        }\r\n    }\r\n\r\n    private run(oldValue: any) {\r\n        setTimeout(() => {\r\n            const currentValue: string = this.el.nativeElement.value;\r\n            const allowNegative = this._negative;\r\n\r\n            if (allowNegative) {\r\n                if (\r\n                    ![\"\", \"-\"].includes(currentValue) &&\r\n                    !this.checkAllowNegative(currentValue)\r\n                ) {\r\n                    this.el.nativeElement.value = oldValue;\r\n                }\r\n            } else {\r\n                if (currentValue !== '' && !this.check(currentValue)) {\r\n                    this.el.nativeElement.value = oldValue;\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n\r\n    constructor(private el: ElementRef) { }\r\n\r\n    @HostListener(\"keydown\", [\"$event\"])\r\n    onKeyDown(event: KeyboardEvent) {\r\n        this.run(this.el.nativeElement.value);\r\n    }\r\n\r\n    @HostListener(\"paste\", [\"$event\"])\r\n    onPaste(event: ClipboardEvent) {\r\n        this.run(this.el.nativeElement.value);\r\n    }\r\n}","import { Component, Input } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-page-title',\r\n    templateUrl: './page-title.component.html',\r\n    imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekPageTitle {\r\n    @Input() icon?: string;\r\n\r\n    @Input() title?: string;\r\n\r\n\r\n    private _isEditPage = false;\r\n    @Input()\r\n    get isEditPage(): boolean {\r\n        return this._isEditPage;\r\n    }\r\n    set isEditPage(v: BooleanInput) {\r\n        this._isEditPage = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    @Input() modelId?: number | null;\r\n\r\n}","<h1 class=\"h2 pt-3 pb-2 mb-3 border-bottom\">\r\n    <i *ngIf=\"icon\" class=\"{{icon}}\"></i><ng-container *ngIf=\"icon\">&nbsp;</ng-container>{{ title }}&nbsp;<ng-container *ngIf=\"isEditPage\">\r\n        <small class=\"text-muted\" *ngIf=\"modelId && modelId > 0 else elseBlock\">[<ng-container>{{ 'Action.Edit' | translate }}</ng-container>]</small>\r\n        <ng-template #elseBlock>\r\n            <small class=\"text-muted\">[<ng-container>{{ 'Action.Create' | translate }}</ng-container>]</small>\r\n        </ng-template>\r\n    </ng-container>\r\n</h1>","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { BooleanInput } from '../../../components';\r\nimport { Pager } from '../../../models';\r\nimport { Convert } from '../../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-pager',\r\n    templateUrl: './pager.html',\r\n    styles: [':host { display: block; }'],\r\n    imports: [CommonModule, TranslateModule],\r\n})\r\nexport class ZekPager {\r\n    @Input() pager : Pager = new Pager();\r\n\r\n    private _showPageSize = true;\r\n    @Input()\r\n    get showPageSize(): boolean {\r\n        return this._showPageSize;\r\n    }\r\n    set showPageSize(v: BooleanInput) {\r\n        this._showPageSize = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    @Input() pagerAlign = 'start';\r\n\r\n\r\n    setPage(page: number) {\r\n        // if (!this.pager) return;\r\n\r\n        if (page === this.pager.pageNumber)\r\n            return;\r\n        this.onPageChange.emit(page);\r\n    }\r\n    setPageSize(pageSize: number) {\r\n        // if (!this.pager) return;\r\n\r\n        if (pageSize === this.pager.pageSize)\r\n            return;\r\n        this.onPageSizeChange.emit(pageSize);\r\n    }\r\n\r\n    @Output() onPageChange = new EventEmitter<number>();\r\n\r\n    @Output() onPageSizeChange = new EventEmitter<number>();\r\n}","<div *ngIf=\"pager\" class=\"row\">\r\n    <div [ngClass]=\"{ 'col-sm-8': showPageSize, 'col-sm-12': !showPageSize}\">\r\n        <nav aria-label=\"Pagination\">\r\n            <ul class=\"pagination\" [ngClass]=\"{ 'justify-content-center': pagerAlign === 'center', 'justify-content-end': pagerAlign === 'end'}\">\r\n                <li [class.disabled]=\"pager.isFirstPage\" class=\"page-item\">\r\n                    <a class=\"page-link\" (click)=\"setPage(1)\" href=\"javascript:void(0)\" [attr.aria-disabled]=\"pager.isFirstPage ? 'true' : null\" aria-label=\"First\">\r\n                        <span aria-hidden=\"true\">&laquo;&laquo;</span>\r\n                    </a>\r\n                </li>\r\n                <li [class.disabled]=\"!pager.hasPreviousPage\" class=\"page-item\">\r\n                    <a class=\"page-link\" (click)=\"setPage(pager.pageNumber - 1)\" href=\"javascript:void(0)\" [attr.aria-disabled]=\"!pager.hasPreviousPage ? 'true' : null\" aria-label=\"Previous\">\r\n                        <span aria-hidden=\"true\">&laquo;</span>\r\n                    </a>\r\n                </li>\r\n                <li *ngFor=\"let page of pager.pages\" [class.active]=\"page === pager.pageNumber\" class=\"page-item\"><a class=\"page-link\" (click)=\"setPage(page)\" href=\"javascript:void(0)\">{{page}}</a></li>\r\n                <li [class.disabled]=\"!pager.hasNextPage\" class=\"page-item\">\r\n                    <a class=\"page-link\" (click)=\"setPage(pager.pageNumber + 1)\" href=\"javascript:void(0)\" [attr.aria-disabled]=\"!pager.hasNextPage ? 'true' : null\" aria-label=\"Next\">\r\n                        <span aria-hidden=\"true\">&raquo;</span>\r\n                    </a>\r\n                </li>\r\n                <li [class.disabled]=\"pager.isLastPage\" class=\"page-item\">\r\n                    <a class=\"page-link\" (click)=\"setPage(pager.pageCount)\" href=\"javascript:void(0)\" [attr.aria-disabled]=\"pager.isLastPage ? 'true' : null\" aria-label=\"Last\">\r\n                        <span aria-hidden=\"true\">&raquo;&raquo;</span>\r\n                    </a>\r\n                </li>\r\n            </ul>\r\n        </nav>\r\n    </div>\r\n    <div class=\"col-sm-4\" *ngIf=\"showPageSize\">\r\n        <div class=\"float-end\">\r\n            <div class=\"dropdown\">\r\n                <button class=\"btn btn-secondary dropdown-toggle\" type=\"button\" id=\"page-size-button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n                    {{pager.pageSize}}\r\n                </button>\r\n                <ul class=\"dropdown-menu dropdown-menu-end\" aria-labelledby=\"page-size-button\">\r\n                    <li><h6 class=\"dropdown-header\">{{ 'Pagination.PageSize' | translate }}</h6></li>\r\n                    <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 10\" (click)=\"setPageSize(10)\" href=\"javascript:void(0)\">10</a></li>\r\n                    <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 20\" (click)=\"setPageSize(20)\" href=\"javascript:void(0)\">20</a></li>\r\n                    <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 50\" (click)=\"setPageSize(50)\" href=\"javascript:void(0)\">50</a></li>\r\n                    <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 100\" (click)=\"setPageSize(100)\" href=\"javascript:void(0)\">100</a></li>\r\n                    <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 500\" (click)=\"setPageSize(500)\" href=\"javascript:void(0)\">500</a></li>\r\n                </ul>\r\n            </div>\r\n        </div>\r\n        <div class=\"float-end mt-2\">\r\n            {{pager.firstItemOnPage}} - {{pager.lastItemOnPage}} of {{pager.totalItemCount}} &nbsp;\r\n        </div>\r\n    </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, Optional } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\nimport { NgForm, FormGroupDirective } from '@angular/forms';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-field-validator, [zek-field-validator]',\r\n    host: {\r\n        '[class.invalid-tooltip]': 'hasErrors'\r\n    },\r\n    templateUrl: './field-validator.html',\r\n    imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekFieldValidator {\r\n    @Input() field: any;\r\n\r\n    private _log = false;\r\n    get log(): boolean {\r\n        return this._log;\r\n    }\r\n    @Input()\r\n    set log(value: BooleanInput) {\r\n        const v = Convert.toBooleanProperty(value);\r\n        if (this._log !== v) {\r\n            this._log = v;\r\n        }\r\n    }\r\n\r\n    constructor(\r\n        @Optional() private parentForm: NgForm,\r\n        @Optional() private parentFormGroup: FormGroupDirective\r\n    ) { }\r\n\r\n\r\n    get hasErrors(): boolean {\r\n        if (!this.field) return false;\r\n\r\n        const errors = this.field.errors;\r\n        const invalid = this.field.invalid;\r\n\r\n        // Check for specific error object existence\r\n        if (!invalid || !errors) return false;\r\n\r\n        // 1. Check if field is touched or dirty\r\n        const isInteract = this.field.dirty || this.field.touched;\r\n\r\n        // 2. Check if parent form is submitted (Works for both Reactive and Template)\r\n        const isSubmitted = (this.parentForm && this.parentForm.submitted) ||\r\n            (this.parentFormGroup && this.parentFormGroup.submitted) ||\r\n            (this.field.formDirective && this.field.formDirective.submitted);\r\n\r\n        return isInteract || isSubmitted;\r\n    }\r\n}","<ng-container *ngIf=\"hasErrors\" [ngSwitch]=\"true\">\r\n\r\n    <ng-container *ngSwitchCase=\"field.errors.required\">\r\n        {{ 'Validation.Required' | translate }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"!!field.errors.minlength\">\r\n        {{ 'Validation.MinLengthFormat' | translate:{ value: field.errors.minlength.requiredLength } }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"!!field.errors.maxlength\">\r\n        {{ 'Validation.MaxLengthFormat' | translate:{ value: field.errors.maxlength.requiredLength } }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"!!field.errors.min\">\r\n        {{ 'Validation.Min' | translate:{ value: field.errors.min.min } }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"!!field.errors.max\">\r\n        {{ 'Validation.Max' | translate:{ value: field.errors.max.max } }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"!!field.errors.email\">\r\n        {{ 'Validation.Pattern' | translate }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"!!field.errors.pattern\">\r\n        {{ 'Validation.Pattern' | translate }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"!!field.errors.mismatch\">\r\n        {{ 'Validation.Mismatch' | translate }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"!!field.errors.server\">\r\n        {{ field.errors.server }}\r\n    </ng-container>\r\n\r\n</ng-container>\r\n\r\n<div *ngIf=\"log\" class=\"bg-dark text-light p-2 mt-2 rounded small\">\r\n    <strong>Debug:</strong>\r\n    <pre class=\"text-light m-0\">{{ field?.errors | json }}</pre>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ZekFieldValidator } from '../validator';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-password',\r\n    templateUrl: './password.html',\r\n    imports: [FormsModule, ZekFieldValidator]\r\n})\r\nexport class ZekPassword {\r\n    @Input() name = 'Password';\r\n\r\n    private _required = false;\r\n    @Input()\r\n    get required(): boolean {\r\n        return this._required;\r\n    }\r\n    set required(v: BooleanInput) {\r\n        this._required = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n    @Input() minlength: number | string | null = null;\r\n    @Input() maxlength: number | string | null = null;\r\n\r\n    @Input() model?: string | null;\r\n    @Output('modelChange') onChange = new EventEmitter();\r\n\r\n    private _type = 'password';\r\n    get type() {\r\n        return this._type;\r\n    }\r\n\r\n    showHide() {\r\n        this._type = this._type === 'password' ? 'text' : 'password';\r\n    }\r\n}","<div class=\"input-group has-validation\">\r\n    <input type=\"{{type}}\" class=\"form-control\" name=\"{{name}}\" id=\"{{name}}\" [attr.aria-describedby]=\"name+'-show'\"\r\n    [required]=\"required\" [minlength]=\"minlength\" [maxlength]=\"maxlength\"\r\n    [ngModel]=\"model\" (ngModelChange)=\"onChange.emit($event)\"\r\n    #password=\"ngModel\"\r\n    >\r\n    <button class=\"btn btn-outline-secondary\" type=\"button\" id=\"{{name}}-show\" (click)=\"showHide()\"><i class=\"fa-solid fa-eye\"></i></button>\r\n    <div zek-field-validator [field]=\"password\"></div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { BooleanInput, NumberInput } from '../../components';\r\nimport { Convert, MathHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\n\r\ntype Background = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark' | 'body' | 'white' | 'transparent';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-progress',\r\n    templateUrl: './progress.html',\r\n    styles: [':host { display: block; }'],\r\n    imports: [\r\n        CommonModule\r\n    ]\r\n})\r\nexport class ZekProgress {\r\n    @Input()\r\n    get value(): number {\r\n        return this._value;\r\n    }\r\n    set value(v: NumberInput) {\r\n        const tmp = MathHelper.clamp(Convert.toNumber(v) || 0, 0, 100);\r\n        if (this._value !== tmp) {\r\n            this._value = tmp;\r\n        }\r\n    }\r\n    private _value: number = 0;\r\n\r\n\r\n    @Input()\r\n    get showValue(): boolean {\r\n        return this._showValue;\r\n    }\r\n    set showValue(v: BooleanInput) {\r\n        this._showValue = Convert.toBooleanProperty(v);\r\n    }\r\n    private _showValue = false;\r\n\r\n    @Input()\r\n    get showTitle(): boolean {\r\n        return this._showTitle;\r\n    }\r\n    set showTitle(v: BooleanInput) {\r\n        this._showTitle = Convert.toBooleanProperty(v);\r\n    }\r\n    private _showTitle = true;\r\n\r\n    get _title() {\r\n        return this._showTitle ? `${this._value} %` : null;\r\n    }\r\n\r\n\r\n    @Input()\r\n    get striped(): boolean {\r\n        return this._striped;\r\n    }\r\n    set striped(v: BooleanInput) {\r\n        this._striped = Convert.toBooleanProperty(v);\r\n    }\r\n    private _striped = false;\r\n\r\n\r\n    @Input()\r\n    get animated(): boolean {\r\n        return this._animated;\r\n    }\r\n    set animated(v: BooleanInput) {\r\n        this._animated = Convert.toBooleanProperty(v);\r\n    }\r\n    private _animated = false;\r\n\r\n    @Input()\r\n    get label() {\r\n        return this._label;\r\n    }\r\n    set label(v: string | null | undefined) {\r\n        this._label = v ? v : null;\r\n    }\r\n    private _label: string | null = null;\r\n\r\n\r\n\r\n    @Input()\r\n    get height() {\r\n        return this._height;\r\n    }\r\n    set height(v: NumberInput) {\r\n        const tmp = Convert.toNumber(v) || 0;\r\n        this._height = tmp > 0 ? tmp : null;\r\n    }\r\n    private _height: number | null = null;\r\n\r\n\r\n    @Input()\r\n    get background() {\r\n        return this._background;\r\n    }\r\n    set background(v: Background) {\r\n        this._background = v;\r\n    }\r\n    private _background: Background = 'primary';\r\n}","<div class=\"progress\" [style.height.px]=\"height\" [title]=\"_title\" >\r\n    <div class=\"progress-bar bg-{{background}}\" role=\"progressbar\"\r\n        [class.progress-bar-striped]=\"striped || animated\"\r\n        [class.progress-bar-animated]=\"animated\"\r\n        [style.width.%]=\"value\"\r\n        [attr.aria-valuenow]=\"value\"\r\n        aria-valuemin=\"0\"\r\n        aria-valuemax=\"100\">\r\n        <ng-container *ngIf=\"showValue\">{{value}}%</ng-container>\r\n        <ng-content></ng-content>\r\n    </div>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnInit, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanInput } from '../../components';\r\nimport { CoreUiComponent } from '../../components/core-ui.component';\r\nimport { Convert } from '../../utils';\r\n\r\n/**\r\n * Provider Expression that allows zek-radio to register as a ControlValueAccessor. This\r\n * allows it to support [(ngModel)] and ngControl.\r\n * @docs-private\r\n */\r\nconst ZEK_RADIO_CONTROL_VALUE_ACCESSOR: any = {\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => ZekRadio),\r\n    multi: true,\r\n};\r\n\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-radio',\r\n    templateUrl: './radio.html',\r\n    host: {\r\n        '[attr.id]': 'id',\r\n        '[attr.tabindex]': 'null',\r\n        '[attr.aria-label]': 'null',\r\n        '[attr.aria-labelledby]': 'null',\r\n        '[attr.aria-describedby]': 'null',\r\n        // Note: under normal conditions focus shouldn't land on this element, however it may be\r\n        // programmatically set, for example inside of a focus trap, in this case we want to forward\r\n        // the focus to the native element.\r\n        '(focus)': '_inputElement.nativeElement.focus()',\r\n\r\n    },\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [ZEK_RADIO_CONTROL_VALUE_ACCESSOR],\r\n})\r\nexport class ZekRadio extends CoreUiComponent\r\n    implements OnInit {\r\n    constructor(\r\n        private _changeDetector: ChangeDetectorRef,\r\n        _renderer: Renderer2,\r\n        _elementRef: ElementRef) {\r\n        super(_renderer, _elementRef);\r\n    }\r\n\r\n\r\n    private _uniqueId: string = `zek-radio-${this.uniqueId}`;\r\n\r\n    /** The unique ID for the radio button. */\r\n    @Input() id: string = this._uniqueId;\r\n\r\n    /** Used to set the 'aria-label' attribute on the underlying input element. */\r\n    @Input('aria-label') ariaLabel?: string | null;\r\n\r\n    /** The 'aria-labelledby' attribute takes precedence as the element's text alternative. */\r\n    @Input('aria-labelledby') ariaLabelledby?: string | null;\r\n\r\n    /** The 'aria-describedby' attribute is read after the element's label and field type. */\r\n    @Input('aria-describedby') ariaDescribedby?: string | null;\r\n\r\n    /** The native `<input type=radio>` element */\r\n    @ViewChild('input') _inputElement?: ElementRef<HTMLInputElement> | null;\r\n\r\n\r\n\r\n    private _inline = false;\r\n    get inline() {\r\n        return this._inline;\r\n    }\r\n    @Input()\r\n    set inline(v: BooleanInput) {\r\n        const newValue = Convert.toBooleanProperty(v);\r\n        if (this._inline !== newValue) {\r\n            this._inline = newValue;\r\n            this.onInlineChanged();\r\n        }\r\n    }\r\n    onInlineChanged() { }\r\n\r\n    get inputId(): string {\r\n        return `${this.id || this._uniqueId}-input`;\r\n    }\r\n\r\n\r\n    /** The value from ngModel. */\r\n    private modelValue: any;\r\n\r\n\r\n    private _checked = false;\r\n    @Input()\r\n    get checked(): boolean {\r\n        return this._checked;\r\n    }\r\n    set checked(value: BooleanInput) {\r\n        const newCheckedState = Convert.toBooleanProperty(value);\r\n        if (this._checked !== newCheckedState) {\r\n            this._checked = newCheckedState;\r\n            this._markForCheck();\r\n        }\r\n    }\r\n\r\n\r\n    override writeValue(value: any): void {\r\n        if (this.modelValue !== value) {\r\n            this.modelValue = value;\r\n            this.checked = this.modelValue === this._value;\r\n        }\r\n\r\n    }\r\n    override onValueChanged() {\r\n        if (!this.checked) {\r\n            // Update checked when the value changed to match the radio group's value\r\n            this.checked = this.modelValue === this._value;\r\n        }\r\n    }\r\n\r\n\r\n    override onRequiredChanged(): void {\r\n        this._markForCheck();\r\n    }\r\n    override onDisabledChanged() {\r\n        this._markForCheck();\r\n    }\r\n\r\n\r\n    /**\r\n     * Marks the radio button as needing checking for change detection.\r\n     * This method is exposed because the parent radio group will directly\r\n     * update bound properties of the radio button.\r\n     */\r\n    private _markForCheck() {\r\n        // When group value changes, the button will not be notified. Use `markForCheck` to explicit\r\n        // update radio button's status\r\n        this._changeDetector.markForCheck();\r\n    }\r\n\r\n\r\n    override init(): void {\r\n        // Determine if it should be checked\r\n        this.checked = this.modelValue === this._value;\r\n    }\r\n\r\n\r\n    /** Triggered when the radio button receives an interaction from the user. */\r\n    override _onInputInteraction(event: Event) {\r\n        // We always have to stop propagation on the change event.\r\n        // Otherwise the change event, from the input element, will bubble up and\r\n        // emit its event object to the `change` output.\r\n        event.stopPropagation();\r\n\r\n        if (!this.checked && !this.disabled) {\r\n            const modelValueChanged = this.value !== this.modelValue;\r\n            this.checked = true;\r\n            this.modelValue = this._value;\r\n            this._emitChangeEvent();\r\n\r\n            if (modelValueChanged) {\r\n                this._onChange(this._value);\r\n            }\r\n        }\r\n    }\r\n}","<div class=\"form-check\" [class.form-check-inline]=\"inline\">\r\n    <input #input class=\"form-check-input\" type=\"radio\"\r\n    [id]=\"inputId\"\r\n    [checked]=\"checked\"\r\n    [disabled]=\"disabled\"\r\n    [attr.name]=\"name\"\r\n    [attr.value]=\"value\"\r\n    [required]=\"required\"\r\n    [attr.aria-label]=\"ariaLabel\"\r\n    [attr.aria-labelledby]=\"ariaLabelledby\"\r\n    [attr.aria-describedby]=\"ariaDescribedby\"\r\n    (change)=\"_onInputInteraction($event)\">\r\n    <label [for]=\"inputId\">\r\n        <ng-content></ng-content>\r\n    </label>\r\n</div>","import { Directive, Input } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: '[readonly],[readOnly]',\r\n    host: {\r\n        '[attr.readonly]': '_readOnly ? \"\" : null'\r\n    }\r\n})\r\nexport class ZekReadOnlyDirective {\r\n    private _readOnly = false;\r\n    @Input()\r\n    get readonly(): boolean {\r\n        return this._readOnly;\r\n    }\r\n    set readonly(v: BooleanInput) {\r\n        this._readOnly = Convert.toBooleanProperty(v);\r\n    }\r\n}","import { HtmlHelper } from \"../../utils\";\r\nimport { ReCaptchaV2 } from \"./recaptcha.model\";\r\n\r\ndeclare var grecaptcha: ReCaptchaV2.ReCaptcha & {\r\n    enterprise: ReCaptchaV2.ReCaptcha;\r\n};\r\n\r\ndeclare global {\r\n    interface Window {\r\n        recaptchaloaded: () => void;\r\n    }\r\n}\r\nfunction loadScript(\r\n    siteKey: \"explicit\" | string,\r\n    onLoaded: (grecaptcha: ReCaptchaV2.ReCaptcha) => void,//ReCaptchaV2.ReCaptcha\r\n    urlParams?: string,\r\n    url?: string,\r\n    nonce?: string\r\n): void {\r\n    window.recaptchaloaded = () => {\r\n        onLoaded(grecaptcha);\r\n    };\r\n\r\n    const baseUrl = url || \"https://www.google.com/recaptcha/api.js\";\r\n    const params = urlParams || '';\r\n    const src = `${baseUrl}?render=${siteKey}&onload=recaptchaloaded${params}`;\r\n\r\n    HtmlHelper.loadScript(src, nonce, true, true);\r\n}\r\n\r\nexport const loader = { loadScript };","import { Inject, Injectable, NgZone, Optional } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { RECAPTCHA_SITE_KEY } from '../../tokens';\r\nimport { loader } from './loader';\r\nimport { ReCaptchaV2 } from './recaptcha.model';\r\n\r\ndeclare var grecaptcha: ReCaptchaV2.ReCaptcha & {\r\n    enterprise: ReCaptchaV2.ReCaptcha;\r\n};\r\n\r\n\r\nexport interface ReCaptchaConfig {\r\n    siteKey: string;\r\n}\r\n\r\n\r\nexport interface OnExecuteData {\r\n    /**\r\n     * The name of the action that has been executed.\r\n     */\r\n    action: string;\r\n    /**\r\n     * The token that reCAPTCHA v3 provided when executing the action.\r\n     */\r\n    token: string;\r\n}\r\n\r\nexport interface OnExecuteErrorData {\r\n    /**\r\n     * The name of the action that has been executed.\r\n     */\r\n    action: string;\r\n    /**\r\n     * The error which was encountered\r\n     */\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    error: any;\r\n}\r\n\r\ntype ActionBacklogEntry = [string, Subject<string>];\r\n\r\n\r\n\r\n@Injectable()\r\nexport class ReCaptchaService {\r\n    private readonly isBrowser = true;\r\n    private readonly siteKey: string;\r\n    private readonly zone: NgZone;\r\n\r\n    private actionBacklog: ActionBacklogEntry[] | undefined;\r\n    private grecaptcha?: ReCaptchaV2.ReCaptcha;\r\n    private onExecuteSubject?: Subject<OnExecuteData>;\r\n    private onExecuteErrorSubject?: Subject<OnExecuteErrorData>;\r\n    private onExecuteObservable?: Observable<OnExecuteData>;\r\n    private onExecuteErrorObservable?: Observable<OnExecuteErrorData>;\r\n\r\n    constructor(\r\n        zone: NgZone,\r\n        @Optional() @Inject(RECAPTCHA_SITE_KEY) siteKey: string) {\r\n\r\n        this.zone = zone;\r\n        this.siteKey = siteKey;\r\n        this.init();\r\n    }\r\n\r\n    public get onExecute(): Observable<OnExecuteData> {\r\n        if (!this.onExecuteSubject) {\r\n            this.onExecuteSubject = new Subject<OnExecuteData>();\r\n            this.onExecuteObservable = this.onExecuteSubject.asObservable();\r\n        }\r\n\r\n        if (!this.onExecuteObservable)\r\n            throw new Error(\"onExecuteObservable is undefined\");\r\n\r\n        return this.onExecuteObservable;\r\n    }\r\n\r\n    public get onExecuteError(): Observable<OnExecuteErrorData> {\r\n        if (!this.onExecuteErrorSubject) {\r\n            this.onExecuteErrorSubject = new Subject<OnExecuteErrorData>();\r\n            this.onExecuteErrorObservable = this.onExecuteErrorSubject.asObservable();\r\n        }\r\n\r\n        if (!this.onExecuteErrorObservable)\r\n            throw new Error(\"onExecuteErrorObservable is undefined\");\r\n\r\n        return this.onExecuteErrorObservable;\r\n    }\r\n\r\n    /**\r\n     * Executes the provided `action` with reCAPTCHA v3 API.\r\n     * Use the emitted token value for verification purposes on the backend.\r\n     *\r\n     * For more information about reCAPTCHA v3 actions and tokens refer to the official documentation at\r\n     * https://developers.google.com/recaptcha/docs/v3.\r\n     *\r\n     * @param {string} action the action to execute\r\n     * @returns {Observable<string>} an `Observable` that will emit the reCAPTCHA v3 string `token` value whenever ready.\r\n     * The returned `Observable` completes immediately after emitting a value.\r\n     */\r\n    public execute(action: string): Observable<string> {\r\n        const subject = new Subject<string>();\r\n        if (this.isBrowser) {\r\n            if (!this.grecaptcha) {\r\n                // todo: add to array of later executions\r\n                if (!this.actionBacklog) {\r\n                    this.actionBacklog = [];\r\n                }\r\n\r\n                this.actionBacklog.push([action, subject]);\r\n            } else {\r\n                this.executeActionWithSubject(action, subject);\r\n            }\r\n        }\r\n\r\n        return subject.asObservable();\r\n    }\r\n\r\n    /** @internal */\r\n    private executeActionWithSubject(action: string, subject: Subject<string>): void {\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        const onError = (error: any) => {\r\n            this.zone.run(() => {\r\n                subject.error(error);\r\n                if (this.onExecuteErrorSubject) {\r\n                    // We don't know any better at this point, unfortunately, so have to resort to `any`\r\n                    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n                    this.onExecuteErrorSubject.next({ action, error });\r\n                }\r\n            });\r\n        };\r\n\r\n        this.zone.runOutsideAngular(() => {\r\n            try {\r\n                if (this.grecaptcha)\r\n                    this.grecaptcha.execute(this.siteKey, { action }).then((token: string) => {\r\n                        this.zone.run(() => {\r\n                            subject.next(token);\r\n                            subject.complete();\r\n                            if (this.onExecuteSubject) {\r\n                                this.onExecuteSubject.next({ action, token });\r\n                            }\r\n                        });\r\n                    }, onError);\r\n            } catch (e) {\r\n                onError(e);\r\n            }\r\n        });\r\n    }\r\n\r\n    /** @internal */\r\n    private init() {\r\n        if (this.isBrowser) {\r\n            if (\"grecaptcha\" in window) {\r\n                this.grecaptcha = grecaptcha;\r\n            } else {\r\n                loader.loadScript(this.siteKey, this.onLoadComplete);\r\n            }\r\n        }\r\n    }\r\n\r\n    /** @internal */\r\n    private onLoadComplete = (grecaptcha: ReCaptchaV2.ReCaptcha) => {\r\n        this.grecaptcha = grecaptcha;\r\n        if (this.actionBacklog && this.actionBacklog.length > 0) {\r\n            this.actionBacklog.forEach(([action, subject]) => this.executeActionWithSubject(action, subject));\r\n            this.actionBacklog = undefined;\r\n        }\r\n    }\r\n}","import { ModuleWithProviders, NgModule } from \"@angular/core\";\r\nimport { ReCaptchaConfig } from \"./index\";\r\nimport { RECAPTCHA_SITE_KEY } from \"../../tokens\";\r\nimport { ReCaptchaService } from \"./recaptcha.service\";\r\n\r\n//4.2.0\r\n@NgModule({\r\n    providers: [ReCaptchaService]\r\n})\r\nexport class RecaptchaModule {\r\n    public static forRoot(config: ReCaptchaConfig): ModuleWithProviders<RecaptchaModule> {\r\n        return {\r\n            ngModule: RecaptchaModule,\r\n            providers: [\r\n                ReCaptchaService,\r\n                {\r\n                    provide: RECAPTCHA_SITE_KEY,\r\n                    useValue: config.siteKey\r\n                },\r\n            ]\r\n        };\r\n    }\r\n\r\n    public static forChild(config: ReCaptchaConfig) {\r\n        return this.forRoot(config);\r\n    }\r\n}\r\n","import { Component, ElementRef, forwardRef, Input, Renderer2 } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanInput, CoreUiComponent } from '../../components';\r\nimport { ArrayHelper, Convert } from '../../utils';\r\nimport { KeyPairOption } from './model';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\nconst ZEK_SELECT_MULTIPLE_CONTROL_VALUE_ACCESSOR: any = {\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => ZekSelectMultiple),\r\n    multi: true,\r\n};\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-select,[zek-select]',\r\n    templateUrl: './select.html',\r\n    providers: [ZEK_SELECT_MULTIPLE_CONTROL_VALUE_ACCESSOR],\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule\r\n    ],\r\n})\r\n\r\nexport class ZekSelectMultiple extends CoreUiComponent {\r\n    constructor(renderer: Renderer2, elementRef: ElementRef) {\r\n        super(renderer, elementRef);\r\n    }\r\n\r\n    private _uniqueId: string = `zek-select-${this.uniqueId}`;\r\n    /** The unique ID for the radio button. */\r\n    @Input() id: string = this._uniqueId;\r\n\r\n    @Input() valueField?: string | null;\r\n    @Input() textField?: string | null;\r\n    @Input() checkedTextField?: string | null;\r\n\r\n    @Input() css: 'primary' | 'secondary' | 'success' | 'danger ' | 'warning' | 'info' | 'light' | 'dark' = 'primary';\r\n\r\n\r\n    @Input()\r\n    get placeholder(): string {\r\n        return this._placeholder;\r\n    }\r\n    set placeholder(value: string | null | undefined) {\r\n        if (value)\r\n            this._placeholder = value;\r\n        else\r\n            this._placeholder = '';\r\n    }\r\n    private _placeholder = '';\r\n\r\n    @Input()\r\n    get label(): string {\r\n        return this._label;\r\n    }\r\n    set label(value: string | null | undefined) {\r\n        if (value)\r\n            this._label = value;\r\n        else\r\n            this._label = '';\r\n    }\r\n    private _label = '';\r\n\r\n\r\n\r\n    @Input()\r\n    get multiple() {\r\n        return this._multiple;\r\n    }\r\n    set multiple(value: BooleanInput) {\r\n        this._multiple = Convert.toBooleanProperty(value);\r\n    }\r\n    private _multiple = true;\r\n\r\n\r\n    private _selected: any[] = [];\r\n\r\n    @Input()\r\n    get data() {\r\n        return this._data;\r\n    }\r\n    set data(value: any[] | null | undefined) {\r\n        if (this._data !== value) {\r\n            this._data = value;\r\n            this.onDataChanged();\r\n        }\r\n    }\r\n    private _data?: any[] | null = [];\r\n    normalized: KeyPairOption[] = [];\r\n    onDataChanged() {\r\n        this._setSelectionByValue(this._value);\r\n        if (this.isInitialized) {\r\n            this._normalizeData();\r\n        }\r\n    }\r\n\r\n    _text = '';\r\n\r\n\r\n\r\n    override onValueChanged() {\r\n        if (Array.isArray(this._data)) {\r\n            this._setSelectionByValue(this._value);\r\n        }\r\n    }\r\n\r\n\r\n    override init(): void {\r\n        this._normalizeData();\r\n    }\r\n\r\n\r\n    private _normalizeData() {\r\n        this.normalized = [];\r\n        if (Array.isArray(this._data)) {\r\n            if (this.valueField && this.textField) {\r\n                for (const item of this._data) {\r\n                    this.normalized.push({ key: item[this.valueField], value: item[this.textField], checked: this._selected.includes(item), item: item });\r\n                }\r\n            } else {\r\n                for (const item of this._data) {\r\n                    this.normalized.push({ key: item, value: item, checked: this._selected.includes(item), item });\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Sets the selected option based on a value. If no option can be\r\n     * found with the designated value, the select trigger is cleared.\r\n     */\r\n    private _setSelectionByValue(value: any | any[]): void {\r\n        this._selected = [];\r\n\r\n        if (this.multiple && value) {\r\n            if (!Array.isArray(value)) {\r\n                throw new Error(\"value is not array\");\r\n            }\r\n\r\n            if (Array.isArray(this._data)) {\r\n                let notUnique: any[] = [];\r\n                if (this.valueField) {\r\n                    for (const currentValue of value) {\r\n                        const items = ArrayHelper.filterByKeyString(currentValue, this.valueField, this._data);\r\n                        notUnique = notUnique.concat(items);\r\n                    }\r\n                } else {\r\n                    for (const currentValue of value) {\r\n                        const items = this._data.filter(x => x === currentValue);\r\n                        notUnique = notUnique.concat(items);\r\n                    }\r\n                }\r\n\r\n                this._selected = ArrayHelper.distinct(notUnique);\r\n            }\r\n        } else {\r\n            if (Array.isArray(this._data)) {\r\n                if (this.valueField) {\r\n                    this._selected = ArrayHelper.filterByKeyString(value, this.valueField, this._data);\r\n                } else {\r\n                    this._selected = this._data.filter(x => x === value);\r\n                }\r\n            }\r\n        }\r\n\r\n        for (const norm of this.normalized) {\r\n            norm.checked = this._selected.includes(norm.item);\r\n        }\r\n        this._initText();\r\n    }\r\n\r\n\r\n\r\n\r\n    toggleChecked(v: any) {\r\n        if (v && !this.disabled && !this.readonly) {\r\n            if (!v.checked) {\r\n                v.checked = true;\r\n\r\n                if (this.multiple) {\r\n                    const tmp = [];\r\n                    for (const item of this.normalized) {\r\n                        if (item.checked) {\r\n                            tmp.push(item.key);\r\n                        }\r\n                    }\r\n\r\n                    this.setNgModel(tmp);\r\n                    // this.value = tmp;\r\n                }\r\n                else {\r\n                    //this.value = v.key;\r\n                    this.setNgModel(v.key);\r\n                }\r\n            } else {\r\n                v.checked = false;\r\n                if (this.multiple) {\r\n                    if (Array.isArray(this._value)) {\r\n                        this.setNgModel((this._value as any[]).filter(x => x !== v.key));\r\n                    }\r\n                } else {\r\n                    this.setNgModel(null);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    private _initText() {\r\n        const field = this.checkedTextField || this.textField || '';\r\n        if (field) {\r\n            this._text = this._selected.filter(x => x !== undefined && x !== null).map(x => x[field]).join(', ');\r\n        } else {\r\n            this._text = this._selected.join(', ');\r\n        }\r\n    }\r\n}\r\n","<div class=\"dropdown\" id=\"dropdown-{{id}}\">\r\n    <button class=\"btn btn-{{css}} dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n        {{label}} <ng-container *ngIf=\"!_text\">{{placeholder}}</ng-container> {{_text}}\r\n    </button>\r\n    <ul class=\"dropdown-menu\">\r\n        <ng-container *ngIf=\"normalized\">\r\n            <li><a class=\"dropdown-item\" href=\"javascript:void(0)\" *ngFor=\"let item of normalized\" (click)=\"toggleChecked(item)\">\r\n                    <span *ngIf=\"item.checked\"><i class=\"fa-regular fa-square-check\"></i></span>\r\n                    <span *ngIf=\"!item.checked\"><i class=\"fa-regular fa-square\"></i></span>\r\n                    {{item.value}}\r\n                </a></li>\r\n        </ng-container>\r\n    </ul>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { Convert, StringHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BooleanInput, CoreComponent } from '../../components';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-select2,[zek-select2]',\r\n    templateUrl: './select2.html',\r\n    styleUrls: ['./select2.css'],\r\n    imports: [CommonModule, FormsModule]\r\n\r\n})\r\nexport class ZekSelect2 extends CoreComponent {\r\n    filter?: string | null;\r\n    text?: string | null;\r\n\r\n    private _disabled = false;\r\n    get disabled(): boolean {\r\n        return this._disabled;\r\n    }\r\n    @Input()\r\n    set disabled(value: BooleanInput) {\r\n        const v = Convert.toBooleanProperty(value);\r\n        if (this._disabled !== v) {\r\n            this._disabled = v;\r\n            this.onDisabledChanged();\r\n        }\r\n    }\r\n    onDisabledChanged() { }\r\n\r\n    private _data: Array<any> = [];\r\n    @Input()\r\n    get data(): Array<any> {\r\n        return this._data;\r\n    }\r\n    set data(value: Array<any>) {\r\n        if (this._data !== value) {\r\n            this._data = value;\r\n            this.findAndSetItem();\r\n            this.filterData();\r\n        }\r\n    }\r\n    filteredData: Array<any> = [];\r\n\r\n    @Input() textField: any;\r\n    @Input() valueField: any;\r\n    @Input() placeholder: string = ''\r\n\r\n    @Output() selectedItemChange = new EventEmitter<any>();\r\n    private _selectedItem: any;\r\n    get selectedItem(): any {\r\n        return this._selectedItem;\r\n    }\r\n\r\n    @Output() valueChange = new EventEmitter<any>();\r\n    private _value: any;\r\n    @Input()\r\n    get value() {\r\n        return this._value;\r\n    }\r\n    set value(v: any) {\r\n        if (this._value !== v) {\r\n            this._value = v;\r\n            this.findAndSetItem();\r\n        }\r\n    }\r\n\r\n    private findAndSetItem() {\r\n        let foundItem = null;\r\n        if (this._value === undefined || this._value === null || !this.data) {\r\n\r\n        } else if (this.valueField === undefined || this.valueField === null || this.valueField === '') {\r\n            foundItem = this.data.find(x => x === this._value);\r\n        } else {\r\n            foundItem = this.data.find(x => x[this.valueField] === this._value);\r\n        }\r\n\r\n        this._selectedItem = foundItem;\r\n        this.setText();\r\n    }\r\n\r\n\r\n\r\n\r\n    // private _dropdown: any;\r\n    // public get dropdown(): any {\r\n    //     if (!this._dropdown) {\r\n    //         let el = document.getElementById('btn-' + this.elementId);\r\n    //         this._dropdown = new bootstrap.Dropdown(el);\r\n    //     }\r\n    //     return this._dropdown;\r\n    // }\r\n    // public set dropdown(v: any) {\r\n    //     this._dropdown = v;\r\n    // }\r\n\r\n\r\n\r\n\r\n    onTextChange(text: string) {\r\n        this.filter = StringHelper.tryTrim(text);\r\n        this.filterData();\r\n    }\r\n\r\n    private filterData() {\r\n        if (this.filter && this.filter !== '') {\r\n            const searchString = this.filter;\r\n            if (this.textField === undefined || this.textField === null) {\r\n                this.filteredData = this.data.filter(item => item.toLowerCase().indexOf(searchString.toLowerCase()) !== -1);\r\n            } else {\r\n                this.filteredData = this.data.filter(item => item[this.textField].toLowerCase().indexOf(searchString.toLowerCase()) !== -1);\r\n            }\r\n        }\r\n        else// if (this.filter === undefined || this.filter === null || this.filter === '') \r\n        {\r\n            this.filteredData = this.data;\r\n        }\r\n    }\r\n\r\n    onFocus(e: FocusEvent) {\r\n        // if (this.dropdown){\r\n        //   this.dropdown.show();\r\n        // }\r\n        // let dropdown = document.getElementById(`dropdown-menu-container-${this.elementId}`);\r\n        // console.log(dropdown);\r\n\r\n        // if (dropdown) {\r\n        //   console.log(dropdown.classList);\r\n\r\n        //   if (!dropdown.classList.contains('show')) {\r\n        //     let el = document.getElementById(`input-${this.elementId}`);\r\n        //     if (el) {\r\n        //       el.click();\r\n        //     }\r\n        //   }\r\n        // }\r\n\r\n\r\n\r\n        // let inputId = 'input-' + this.elementId;\r\n        // let el = document.getElementById(inputId);\r\n        // if (el) {\r\n\r\n        //   if (!el.classList.contains('show')) {\r\n        //     this.dropdown?.show();\r\n        //   }\r\n\r\n        // let menuId = '#dropdown-menu-' + this.elementId + ' ' + 'a';\r\n        // el.addEventListener('keydown', function (e) {\r\n        //   if (e.key == 'ArrowDown') {\r\n        //     (document.querySelectorAll(menuId)[0] as any).focus();\r\n        //   }\r\n        // });\r\n        // }\r\n    }\r\n    inputUnfocused() {\r\n        // this.expanded = false;\r\n    }\r\n\r\n    private setText() {\r\n        if (this._selectedItem === undefined || this._selectedItem === null) {\r\n            this.text = null;\r\n        }\r\n        else if (this.textField === undefined || this.textField === null) {\r\n            this.text = this._selectedItem;\r\n        } else {\r\n            this.text = this._selectedItem[this.textField];\r\n        }\r\n    }\r\n\r\n    selectItem(item: any) {\r\n\r\n        if (this._selectedItem !== item) {\r\n            this._selectedItem = item;\r\n            this.selectedItemChange.emit(item);\r\n\r\n            this.setText();\r\n\r\n            //set value\r\n            let v;\r\n            if (this.valueField === undefined || this.valueField === null || this.valueField === '') {\r\n                // this.value = v\r\n                v = item;\r\n            } else {\r\n                // this.value = v[this.valueField];\r\n                v = item[this.valueField];\r\n            }\r\n\r\n            //if value not equals then emit valueChange\r\n            if (this._value !== v) {\r\n                this._value = v;\r\n                this.valueChange.emit(v);\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n}\r\n","<div class=\"input-group position-relative\" id=\"dropdown-menu-container-{{uniqueId}}\">\r\n  <input type=\"text\" class=\"form-control\" placeholder=\"{{placeholder}}\" data-bs-toggle=\"dropdown\"\r\n    id=\"input-{{uniqueId}}\"\r\n    [disabled]=\"disabled\"\r\n    [(ngModel)]=\"text\"\r\n    (ngModelChange)=\"onTextChange($event)\"\r\n    (focus)=\"onFocus($event)\"\r\n    (blur)=\"inputUnfocused()\">\r\n  <button [disabled]=\"disabled\" class=\"btn btn-outline-secondary dropdown-toggle\" id=\"btn-{{uniqueId}}\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\"></button>\r\n  <ul class=\"dropdown-menu dropdown-menu-start w-100 scrollable-menu\" id=\"dropdown-menu-{{uniqueId}}\">\r\n    <ng-container *ngIf=\"textField\">\r\n      <li *ngFor=\"let entry of filteredData\">\r\n        <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{entry[textField]}}</a>\r\n      </li>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"!textField\">\r\n      <li *ngFor=\"let entry of filteredData\">\r\n        <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{textField}}</a>\r\n      </li>\r\n    </ng-container>\r\n  </ul>\r\n</div>\r\n<!-- <kendo-autocomplete\r\n  [data]=\"data\"\r\n  [filterable]=\"true\"\r\n  (valueChange)=\"valueChange($event)\"\r\n  (filterChange)=\"filterChange($event)\"\r\n  (open)=\"open()\"\r\n  (close)=\"close()\"\r\n  (focus)=\"focus()\"\r\n  (blur)=\"blur()\">\r\n</kendo-autocomplete> -->","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { RandomHelper, StringHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n//declare let bootstrap: any;\r\n\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-select2-multiple,[zek-select2-multiple]',\r\n    templateUrl: './select2-multiple.html',\r\n    imports: [CommonModule, FormsModule]\r\n})\r\n\r\nexport class ZekSelect2Multiple {\r\n    filter?: string | null;\r\n    text?: string | null;\r\n\r\n    readonly elementId = RandomHelper.randomHex();\r\n\r\n    private _data: Array<any> = [];\r\n    @Input()\r\n    get data(): Array<any> {\r\n        return this._data;\r\n    }\r\n    set data(value: Array<any>) {\r\n        if (this._data !== value) {\r\n            this._data = value;\r\n            this.findAndSetItems();\r\n            this.filterData();\r\n        }\r\n    }\r\n    filteredData: Array<any> = [];\r\n\r\n    @Input() textField: any;\r\n    @Input() selectedField: any;\r\n    @Input() valueField: any;\r\n    @Input() placeholder: string = ''\r\n\r\n    @Output() selectedItemChange = new EventEmitter<any>();\r\n    private _selectedItems: Array<any> = [];\r\n    get selectedItems(): Array<any> {\r\n        return this._selectedItems;\r\n    }\r\n\r\n    @Output() valueChange = new EventEmitter<any>();\r\n    private _value?: Array<any> | null;\r\n    @Input()\r\n    get value() {\r\n        return this._value;\r\n    }\r\n    set value(v: any) {\r\n        if (this._value !== v) {\r\n            this._value = v;\r\n            this.findAndSetItems();\r\n        }\r\n    }\r\n\r\n    private findAndSetItems() {\r\n        this._data?.forEach(x => x.selected = false);\r\n        this._selectedItems = [];\r\n        let foundItems: Array<any> = [];\r\n        if (this._value === undefined || this._value === null || !this.data) {\r\n\r\n        } else if (this.valueField === undefined || this.valueField === null || this.valueField === '') {\r\n            foundItems = this.data.filter(x => this._value?.includes(x));\r\n        } else {\r\n            foundItems = this.data.filter(x => this._value?.includes(x[this.valueField]));\r\n        }\r\n\r\n        if (foundItems.length > 0) {\r\n            foundItems.forEach(x => x.selected = true);\r\n            this._selectedItems = foundItems;\r\n        }\r\n        this.setText();\r\n    }\r\n\r\n\r\n\r\n    onTextChange(text: string) {\r\n        this.filter = StringHelper.tryTrim(text);\r\n        this.filterData();\r\n    }\r\n\r\n    private filterData() {\r\n        if (this.filter && this.filter !== '') {\r\n            const searchString = this.filter;\r\n            if (typeof this.textField === 'undefined' || this.textField === null) {\r\n                this.filteredData = this.data.filter(item => item.toLowerCase().indexOf(searchString.toLowerCase()) !== -1);\r\n            } else {\r\n                this.filteredData = this.data.filter(item => item[this.textField].toLowerCase().indexOf(searchString.toLowerCase()) !== -1);\r\n            }\r\n        }\r\n        else {\r\n            this.filteredData = this.data;\r\n        }\r\n    }\r\n\r\n    onFocus(e: FocusEvent) {\r\n        this.filter = '';\r\n        this.text = '';\r\n        this.filterData();\r\n    }\r\n    inputUnfocused() {\r\n        this.setText();\r\n    }\r\n\r\n    private setText() {\r\n        const fieldName = this.selectedField || this.textField;\r\n\r\n        if (StringHelper.isNullOrEmpty((fieldName))) {\r\n            this.text = this._selectedItems.join(', ');\r\n        } else {\r\n            this.text = this._selectedItems.map(x => x[fieldName]).join(', ');\r\n        }\r\n    }\r\n\r\n    selectItem(item: any) {\r\n        item.selected = !item.selected;\r\n\r\n        if (item.selected) {\r\n            this._selectedItems.push(item);\r\n        } else {\r\n            this._selectedItems = this._selectedItems.filter(x => x !== item);\r\n        }\r\n\r\n        this.selectedItemChange.emit(item);\r\n        this.setText();\r\n\r\n        let v: Array<any> | null;\r\n        if (this.valueField === undefined || this.valueField === null || this.valueField === '') {\r\n            v = this._selectedItems ? this._selectedItems : null;\r\n        } else {\r\n            v = this._selectedItems ? this._selectedItems.map(x => x[this.valueField]) : null;\r\n        }\r\n\r\n        this._value = v;\r\n        this.valueChange.emit(v);\r\n    }\r\n\r\n\r\n}\r\n","<div class=\"input-group position-relative\" id=\"dropdown-menu-container-{{elementId}}\">\r\n  <input type=\"text\" class=\"form-control\" placeholder=\"{{placeholder}}\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"outside\" id=\"input-{{elementId}}\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange($event)\" (focus)=\"onFocus($event)\" (blur)=\"inputUnfocused()\">\r\n  <button class=\"btn btn-outline-secondary dropdown-toggle\" id=\"btn-{{elementId}}\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\"></button>\r\n  <ul class=\"dropdown-menu dropdown-menu-start w-100 scrollable-menu\" id=\"dropdown-menu-{{elementId}}\">\r\n    <ng-container *ngIf=\"textField\">\r\n      <li *ngFor=\"let item of filteredData\">\r\n        <a href=\"javascript:void(0)\" (click)=\"selectItem(item)\" class=\"dropdown-item\">\r\n          <span *ngIf=\"item.selected\"><i class=\"fa-regular fa-square-check\"></i></span>\r\n          <span *ngIf=\"!item.selected\"><i class=\"fa-regular fa-square\"></i></span>\r\n          {{item[textField]}}\r\n        </a>\r\n      </li>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"!textField\">\r\n      <li *ngFor=\"let item of filteredData\">\r\n        <a href=\"javascript:void(0)\" (click)=\"selectItem(item)\" class=\"dropdown-item\">\r\n          <span *ngIf=\"item.selected\"><i class=\"fa-regular fa-square-check\"></i></span>\r\n          <span *ngIf=\"!item.selected\"><i class=\"fa-regular fa-square\"></i></span>\r\n          {{item}}\r\n        </a>\r\n      </li>\r\n    </ng-container>\r\n  </ul>\r\n</div>","import { Directive, ElementRef, HostListener, Input, OnInit, Output, EventEmitter, AfterViewInit } from '@angular/core';\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: '[zek-sort]'\r\n})\r\nexport class ZekSort implements AfterViewInit {\r\n    private innerHtml: string = '';\r\n\r\n    /**\r\n     * name of sorting column\r\n     */\r\n    @Input() header: string | null = null;\r\n\r\n    /**\r\n     * Executes after 'sort' input changed\r\n     */\r\n    @Output() sortChange = new EventEmitter<string | null>();\r\n\r\n    /**\r\n     * Executes after 'asc' input changed\r\n     */\r\n    @Output() ascChange = new EventEmitter<boolean>();\r\n\r\n    /**\r\n     *  Executes after click on column\r\n     */\r\n    @Output() onChange = new EventEmitter();\r\n\r\n\r\n    constructor(private el: ElementRef/*, renderer: Renderer, private templateRef: TemplateRef<any>, private viewContainer: ViewContainerRef */) {\r\n    }\r\n\r\n    // @Input() set myIf(shouldAdd: boolean) {\r\n    //     if (shouldAdd) {\r\n    //       // If condition is true add template to DOM\r\n    //       this.viewContainer.createEmbeddedView(this.templateRef);\r\n    //     } else {\r\n    //      // Else remove template from DOM\r\n    //       this.viewContainer.clear();\r\n    //     }\r\n    //   }\r\n\r\n\r\n    ngAfterViewInit() {\r\n        // Use renderer to render the element with styles\r\n        //renderer.setElementStyle(el.nativeElement, 'display', 'none');\r\n\r\n        this.innerHtml = this.el.nativeElement.innerHTML;\r\n        this.initIcon();\r\n    }\r\n\r\n    initIcon() {\r\n        if (!this.innerHtml) return;\r\n\r\n        let tmpAsc = 0;\r\n        if (!this.header || this.header !== this.sort) {\r\n            tmpAsc = 1;\r\n        } else if (this.asc) {\r\n            tmpAsc = 2;\r\n        } else {\r\n            tmpAsc = 3;\r\n        }\r\n\r\n        this.el.nativeElement.innerHTML = (this.innerHtml || '')\r\n            + '<span class=\"float-end' + (tmpAsc === 1 ? ' text-muted' : '') + '\">'\r\n            + (tmpAsc === 1 ? '<i class=\"fa-solid fa-sort\"></i>' : '')\r\n            + (tmpAsc === 2 ? '<i class=\"fa-solid fa-sort-up\"></i>' : '')\r\n            + (tmpAsc === 3 ? '<i class=\"fa-solid fa-sort-down\"></i>' : '')\r\n            + '</span>';\r\n    }\r\n\r\n    //    @HostListener('click', ['$event.target']) onClick(btn) {\r\n    //      console.log('button', btn, 'number of clicks:', this.numberOfClicks++);\r\n    //   }\r\n    @HostListener('click') onClick() {\r\n        if (this.sort !== this.header) {\r\n            this.sort = this.header;\r\n            this.sortChange.emit(this.sort);\r\n            this.asc = true;\r\n            this.ascChange.emit(this.asc);\r\n\r\n        } else {\r\n            this.asc = !this.asc;\r\n            this.ascChange.emit(this.asc);\r\n        }\r\n\r\n        this.onChange.emit();\r\n    }\r\n\r\n\r\n\r\n\r\n\r\n    private _sort: string | null = null;\r\n    get sort() {\r\n        return this._sort;\r\n    }\r\n    @Input()\r\n    set sort(value: string | null) {\r\n        if (this._sort !== value) {\r\n            this._sort = value;\r\n            this.initIcon();\r\n        }\r\n    }\r\n\r\n\r\n    private _asc = false;\r\n    get asc() {\r\n        return this._asc;\r\n    }\r\n    @Input()\r\n    set asc(value: boolean) {\r\n        if (this._asc !== value) {\r\n            this._asc = value;\r\n            this.initIcon();\r\n        }\r\n    }\r\n}","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { KeyPair } from '../../../models/key-pair.model';\r\nimport { RandomHelper } from '../../../utils';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-sort-button-group',\r\n    templateUrl: './sort-button-group.html',\r\n    imports: [CommonModule, TranslateModule],\r\n})\r\nexport class ZekSortButtonGroup {\r\n    elementName: string = '';\r\n\r\n    /**\r\n     * Executes after 'sort' input changed\r\n     */\r\n    @Output() sortChange = new EventEmitter<string | null>();\r\n\r\n    /**\r\n     * Executes after 'asc' input changed\r\n     */\r\n    @Output() ascChange = new EventEmitter<boolean>();\r\n\r\n    /**\r\n     *  Executes after click on column\r\n     */\r\n    @Output() onChange = new EventEmitter();\r\n\r\n    sortField: any;\r\n    private _sort: string | null = null;\r\n    get sort(): string | null {\r\n        return this._sort;\r\n    }\r\n    @Input()\r\n    set sort(value: string | null) {\r\n        if (this._sort !== value) {\r\n            this._sort = value;\r\n        }\r\n    }\r\n\r\n\r\n    private _asc = false;\r\n    get asc() {\r\n        return this._asc;\r\n    }\r\n    @Input()\r\n    set asc(value: boolean) {\r\n        if (this._asc !== value) {\r\n            this._asc = value;\r\n        }\r\n    }\r\n\r\n    @Input() sortFields: KeyPair[] | null = null;\r\n\r\n    /**\r\n     * Default constructor\r\n     */\r\n    constructor() {\r\n        this.elementName = 'sort-button-group-' + RandomHelper.randomHex();\r\n    }\r\n\r\n    sortFieldClick(item: any) {\r\n        if (!item || !item.key) return;\r\n\r\n        this.sortField = item;\r\n        if (this.sort !== item.key) {\r\n            this.sort = item.key;\r\n            this.sortChange.emit(this.sort);\r\n            this.onChange.emit();\r\n        }\r\n    }\r\n\r\n    ascDescClick() {\r\n        this.asc = !this.asc;\r\n        this.ascChange.emit(this.asc);\r\n        this.onChange.emit();\r\n    }\r\n}\r\n","<div class=\"btn-group me-3\" role=\"group\" aria-label=\"Sort group\">\r\n    <button type=\"button\" class=\"btn btn-light\" (click)=\"ascDescClick()\">\r\n        <span *ngIf=\"asc === undefined || asc === null\"><i class=\"fa-solid fa-sort fa-fw\"></i></span>\r\n        <span *ngIf=\"asc === true\"><i class=\"fa-solid fa-arrow-down-z-a fa-fw\"></i></span>\r\n        <span *ngIf=\"asc === false\"><i class=\"fa-solid fa-arrow-up-z-a fa-fw\"></i></span>\r\n    </button>\r\n    <button *ngIf=\"sortFields && sortFields.length > 0\" class=\"btn btn-light dropdown-toggle\" type=\"button\" id=\"{{elementName}}\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n        <ng-container *ngIf=\"sortField; else elseFieldBlock\">{{ sortField.value | translate }}</ng-container>\r\n        <ng-template #elseFieldBlock>{{ 'Action.Sort' | translate }}</ng-template>\r\n    </button>\r\n    <ul *ngIf=\"sortFields && sortFields.length > 0\" class=\"dropdown-menu\" [attr.aria-labelledby]=\"elementName\">\r\n        <li><a *ngFor=\"let item of sortFields\" class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"sortFieldClick(item)\">{{ (item.value) | translate }}</a></li>\r\n    </ul>\r\n</div><i class=\"\"></i>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BooleanInput, CoreUiComponent, NumberInput } from '../../components';\r\nimport { Convert, MathHelper } from '../../utils';\r\n\r\n@Component({\r\n    standalone: true,\r\n    imports: [CommonModule, FormsModule],\r\n    selector: 'zek-tag',\r\n    templateUrl: 'tag.html',\r\n    styleUrl: 'tag.scss',\r\n    host: {\r\n        '[attr.id]': 'id',\r\n    }\r\n})\r\nexport class ZekTag extends CoreUiComponent {\r\n    @Input() model!: string[] | null;\r\n    @Output() readonly modelChange = new EventEmitter<string[]>();\r\n\r\n    @Input()\r\n    get max(): number {\r\n        return this._max;\r\n    }\r\n    set max(v: NumberInput) {\r\n        const tmp = MathHelper.clamp(Convert.toNumber(v) || 0, 0, 1000000000);\r\n        if (this._max !== tmp) {\r\n            this._max = tmp;\r\n        }\r\n    }\r\n    _max: number = 1000000000;\r\n\r\n\r\n\r\n    _maxlength: number | null = null;\r\n    @Input()\r\n    get maxlength(): number | null {\r\n        return this._maxlength;\r\n    }\r\n    set maxlength(v: NumberInput) {\r\n        const tmp = Convert.parseNumber(v);\r\n        if (tmp !== null) {\r\n            const num = MathHelper.clamp(tmp, 0, 1000000000);\r\n            if (this._maxlength !== num) {\r\n                this._maxlength = num;\r\n            }\r\n        }\r\n        this._maxlength = tmp;\r\n    }\r\n\r\n\r\n\r\n    private _duplicate = false;\r\n    @Input()\r\n    get duplicate(): boolean {\r\n        return this._duplicate;\r\n    }\r\n    set duplicate(v: BooleanInput) {\r\n        this._duplicate = Convert.toBooleanProperty(v);\r\n    }\r\n\r\n\r\n\r\n    text: string | null = null;\r\n    onKeyEnter(e: Event) {\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n\r\n\r\n        if (this.add(this.text)) {\r\n            this.text = null;\r\n        }\r\n    }\r\n\r\n    private _uniqueId: string = `zek-tag-${this.uniqueId}`;\r\n    /** The unique ID for the tag. */\r\n    @Input() id: string = this._uniqueId;\r\n\r\n    get inputId(): string {\r\n        return `${this.id || this._uniqueId}-input`;\r\n    }\r\n\r\n    add(text: string | null) {\r\n        if (!text) return false;\r\n\r\n        let emitModel = false;\r\n        if (!this.model) {\r\n            this.model = [];\r\n            emitModel = true;\r\n        }\r\n\r\n        const maxlength = (this.maxlength || 0);\r\n        if (maxlength > 0 && text.length > maxlength) {\r\n            return false;\r\n        }\r\n\r\n        if (!this.duplicate && this.model.includes(text)) {\r\n            return false;\r\n        }\r\n\r\n        if (this.model.length >= this.max) {\r\n            return false\r\n        }\r\n\r\n        this.model.push(text);\r\n        if (emitModel) this.modelChange.emit(this.model);\r\n        return true;\r\n    }\r\n\r\n    remove(item: string) {\r\n        if (!this.model) return;\r\n\r\n        const index = this.model.indexOf(item);\r\n        if (index !== -1) {\r\n            this.model.splice(index, 1);\r\n        }\r\n    }\r\n}","<div class=\"d-flex flex-wrap align-items-center gap-1 form-control\">\r\n    <ng-container *ngIf=\"model\">\r\n        <button *ngFor=\"let item of model\" type=\"button\" (click)=\"remove(item)\" class=\"align-items-center gap-1 d-inline-flex py-0 border-0 btn btn-primary\">{{item}}<span class=\"d-inline-flex\" role=\"button\" tabindex=\"-1\"><i class=\"fa-solid fa-xmark\"></i></span></button>\r\n    </ng-container>\r\n    <div class=\"input-wrapper\"><span>i</span><input type=\"text\"\r\n            [id]=\"inputId\"\r\n            [name]=\"inputId\"\r\n            [(ngModel)]=\"text\"\r\n            [maxlength]=\"maxlength\"\r\n            (keydown.enter)=\"onKeyEnter($event)\"></div>\r\n</div>","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n//import { toDate } from '../../extensions';\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: 'time'\r\n})\r\nexport class TimePipe implements PipeTransform {\r\n    constructor(private readonly _datePipe: DatePipe) {\r\n    }\r\n\r\n    transform(value: Date | string | number | null | undefined, format?: string): string | null {\r\n        if (value === undefined || value === null || value === '' || value !== value) return null;\r\n\r\n        const dateTime: Date = new Date(value);\r\n        let dateTimeString: string;\r\n        if (this.isValidDate(dateTime)) {\r\n            dateTimeString = dateTime.toString();\r\n        } else {\r\n            dateTimeString = `1970-01-01 ${value}`;\r\n        }\r\n\r\n        // Replace any dashes with slashes, as Safari and IE11 don't recognise dates with dashes in them.\r\n        dateTimeString = dateTimeString.replace(/-/g, '/');\r\n        if (!this.isValidDate(new Date(dateTimeString))) {\r\n            return null;\r\n        }\r\n\r\n        const formattedTime = this._datePipe.transform(dateTimeString, format);\r\n        return formattedTime;\r\n    }\r\n\r\n\r\n    private isValidDate(d: any): boolean {\r\n        return d instanceof Date && !isNaN(d.getTime());\r\n    }\r\n}\r\n/*export class TimePipe extends DatePipe implements PipeTransform {\r\n    transform(value: Date | string | number, format?: string, timezone?: string, locale?: string): string | null;\r\n    transform(value: null | undefined, format?: string, timezone?: string, locale?: string): null;\r\n    transform(value: Date | string | number | null | undefined, format?: string, timezone?: string, locale?: string): string | null {\r\n        if (value === undefined || value === null || value === '' || value !== value) return null;\r\n\r\n        const dateTime: Date = new Date(value);\r\n\r\n        //const date = toDate(value);\r\n        let dateTimeString: string;\r\n        if (this.isValidDate(dateTime)) {\r\n            dateTimeString = dateTime.toString();\r\n        } else {\r\n            dateTimeString = `1970-01-01 ${value}`;\r\n        }\r\n\r\n        dateTimeString = dateTimeString.replace(/-/g, '/');\r\n\r\n        if (!this.isValidDate(new Date(dateTimeString))) {\r\n            return null;\r\n        }\r\n\r\n        const formattedTime = super.transform(dateTimeString, format);\r\n\r\n        return formattedTime;\r\n    }\r\n\r\n\r\n    private isValidDate(d: any): boolean {\r\n        return d instanceof Date && !isNaN(d.getTime());\r\n    }\r\n}*/","import { NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\n\r\nimport { TimePipe } from './time.pipe';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule\r\n    ],\r\n    declarations: [\r\n        TimePipe,\r\n    ],\r\n    providers: [\r\n        DatePipe\r\n    ],\r\n    exports: [TimePipe]\r\n})\r\nexport class TimeModule { }","import { Injectable, Input } from \"@angular/core\";\r\nimport { Subject, Subscription, timer } from \"rxjs\";\r\nimport { map, takeWhile, tap } from \"rxjs/operators\";\r\nimport { DateHelper } from \"../../utils\";\r\n\r\n@Injectable()\r\nexport class TimerService {\r\n    @Input() seconds = 0;\r\n\r\n    // running = false;\r\n    \r\n    private _count = 0;\r\n    public get count() {\r\n        return this._count;\r\n    }\r\n    \r\n    private _left = 0;\r\n    public get left() {\r\n        return this._left;\r\n    }\r\n\r\n    expireDate: Date | null = null;\r\n    private subscription: Subscription | null = null;\r\n    //@Output() checkTime: EventEmitter<number> = new EventEmitter();\r\n\r\n    tick = new Subject<number>();\r\n    completed = new Subject<any>();\r\n    // tickerInterval: any;\r\n    // expired: Observable<number> = new Observable<number>();\r\n    // initialCountValue: number = 0;\r\n\r\n\r\n    startHour(hours: number, minutes: number, seconds: number) {\r\n        this.start((hours ? hours * 60 * 60 : 0) + (minutes ? minutes * 60 : 0) + seconds);\r\n    }\r\n    startMinute(minutes: number, seconds: number) {\r\n        this.start((minutes ? minutes * 60 : 0) + seconds);\r\n    }\r\n    start(seconds: number) {\r\n        this.clear();\r\n\r\n        this._left = seconds;\r\n        this._count = seconds;\r\n        this.expireDate = DateHelper.addSeconds(new Date(), seconds);\r\n\r\n        //this.internalTick();//because run first tick value example 60 ->  not 59\r\n        const source = timer(0, 1000).pipe(\r\n            //map(i => this.count - i),\r\n            //takeWhile(i => i > 0),\r\n            map(_i => this._left--),\r\n            takeWhile(_i => this.left >= 0)\r\n            //tap(s => this.checkTime.emit(s))\r\n        );\r\n\r\n        this.subscription = source.subscribe(() => {\r\n            this.internalTick();\r\n        });\r\n    }\r\n    clear() {\r\n        this.subscription?.unsubscribe();\r\n        this.subscription = null;\r\n        this.expireDate = null;\r\n    }\r\n\r\n\r\n    internalTick() {\r\n        if (this.tick) {\r\n            this.tick.next(this._left);\r\n        }\r\n\r\n        if (this.left <= 0 && this.completed) {\r\n            this.completed.next(null);\r\n        }\r\n        /*\r\n        // get total seconds between the times\r\n        let delta = Math.abs(date_future - date_now) / 1000;\r\n\r\n        // calculate (and subtract) whole days\r\n        let days = Math.floor(delta / 86400);\r\n        delta -= days * 86400;\r\n\r\n        // calculate (and subtract) whole hours\r\n        let hours = Math.floor(delta / 3600) % 24;\r\n        delta -= hours * 3600;\r\n\r\n        // calculate (and subtract) whole minutes\r\n        let minutes = Math.floor(delta / 60) % 60;\r\n        delta -= minutes * 60;\r\n\r\n        // what's left is seconds\r\n        let seconds = delta % 60;  // in theory the modulus is not required\r\n        */\r\n    }\r\n}","import { AfterViewInit, Directive, ElementRef } from \"@angular/core\";\r\nimport { CoreComponent } from \"../../components\";\r\n\r\ndeclare let bootstrap: any;\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: '[zek-toltip]'\r\n})\r\nexport class ZekTooltip extends CoreComponent implements AfterViewInit {\r\n    private _tooltip: any;\r\n    constructor(private el: ElementRef) {\r\n        super();\r\n    }\r\n\r\n    override destroy() {\r\n        this._tooltip?.dispose();\r\n        this._tooltip = undefined;\r\n        return super.destroy();\r\n    }\r\n\r\n    ngAfterViewInit() {\r\n        this._tooltip = new bootstrap.Tooltip(this.el.nativeElement);\r\n    }\r\n\r\n}","import { NgModule, Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelper } from '../../utils';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: 'localToUtc',\r\n    pure: true\r\n})\r\nexport class ZekLocalToUtcPipe implements PipeTransform {\r\n    constructor(private readonly _datePipe: DatePipe) {\r\n    }\r\n\r\n    transform(value: Date | string | number | null | undefined, format?: string): string | null {\r\n        if (typeof value === 'undefined' || value === null || value === '' || value !== value) return null;\r\n\r\n        const date = DateHelper.localToUtc(DateHelper.toDate(value))\r\n        return this._datePipe.transform(date, format);\r\n    }\r\n}\r\n@NgModule({\r\n    declarations: [ZekLocalToUtcPipe],\r\n    exports: [ZekLocalToUtcPipe],\r\n    providers: [DatePipe]\r\n})\r\nexport class ZekLocalToUtcModule { }","import { NgModule, Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelper } from '../../utils';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: 'utcToLocal'\r\n})\r\nexport class ZekUtcToLocalPipe implements PipeTransform {\r\n    constructor(private readonly _datePipe: DatePipe) {\r\n    }\r\n\r\n    transform(value: Date | string | number | null | undefined, format?: string): string | null {\r\n        if (typeof value === 'undefined' || value === null || value === '' || value !== value) return null;\r\n\r\n        const date = DateHelper.utcToLocal(DateHelper.toDate(value))\r\n        return this._datePipe.transform(date, format);\r\n    }\r\n}\r\n\r\n@NgModule({\r\n    declarations: [ZekUtcToLocalPipe],\r\n    exports: [ZekUtcToLocalPipe],\r\n    providers: [DatePipe]\r\n})\r\nexport class ZekUtcToLocalModule { }","// import { AbstractControl, Validators, ValidatorFn, ValidationErrors } from '@angular/forms'\r\nimport { AbstractControl, ValidationErrors, ValidatorFn } from \"@angular/forms\";\r\n\r\n// export const range = (range?: Array<number> | null): ValidatorFn => {\r\n//     return (control: AbstractControl): { [key: string]: any } | null => {\r\n\r\n//         if (!range) return null;\r\n//         if (Validators.required(control)) return null;\r\n\r\n//         let v: number = +control.value;\r\n//         return v >= range[0] && v <= range[1] ? null : { actualValue: v, requiredValue: range, range: true };\r\n//     };\r\n// };\r\n// export function blue(): ValidatorFn {\r\n//     return (control: AbstractControl): { [key: string]: any } | null =>\r\n//         control.value?.toLowerCase() === 'blue'\r\n//             ? null : { wrongColor: control.value };\r\n// }\r\n\r\n\r\nfunction isEmptyInputValue(value: any): boolean {\r\n    /**\r\n     * Check if the object is a string or array before evaluating the length attribute.\r\n     * This avoids falsely rejecting objects that contain a custom length attribute.\r\n     * For example, the object {id: 1, length: 0, width: 0} should not be returned as empty.\r\n     */\r\n    return typeof value === 'undefined' || value == null || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0);\r\n}\r\n\r\n/**\r\n * Function that has `ValidatorFn` shape, but performs no operation.\r\n */\r\nexport function nullValidator(control: AbstractControl): ValidationErrors | null {\r\n    return null;\r\n}\r\n\r\n\r\nexport class Validators {\r\n\r\n    /**\r\n    * @description\r\n    * Validator that requires the control's value to be less than or equal to the provided number.\r\n    *\r\n    * @usageNotes\r\n    *\r\n    * ### Validate against a range 0 - 15\r\n    *\r\n    * ```typescript\r\n    * const control = new FormControl(16, Validators.max([0,15]));\r\n    *\r\n    * console.log(control.errors); // {range: {min: 0, max: 15, actual: 16}}\r\n    * ```\r\n    *\r\n    * @returns A validator function that returns an error map with the\r\n    * `range` property if the validation check fails, otherwise `null`.\r\n    *\r\n    * @see `updateValueAndValidity()`\r\n    *\r\n    */\r\n    static range(min: number, max: number): ValidatorFn {\r\n        return rangeValidator([min, max]);\r\n    }\r\n\r\n\r\n    /**\r\n* @description\r\n* Validator that requires the control's value to be less than or equal to the provided number.\r\n*\r\n* @usageNotes\r\n*\r\n* ### Validate against a range 0 - 15\r\n*\r\n* ```typescript\r\n* const control = new FormControl(16, Validators.max([0,15]));\r\n*\r\n* console.log(control.errors); // {range: {min: 0, max: 15, actual: 16}}\r\n* ```\r\n*\r\n* @returns A validator function that returns an error map with the\r\n* `range` property if the validation check fails, otherwise `null`.\r\n*\r\n* @see `updateValueAndValidity()`\r\n*\r\n*/\r\n    static match(value: string): ValidatorFn {\r\n        return matchValidator(value);\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * Validator that requires the control's value to be between provided numbers.\r\n * See `Validators.range` for additional information.\r\n */\r\nexport function rangeValidator(range: Array<number>): ValidatorFn {\r\n    return (control: AbstractControl): ValidationErrors | null => {\r\n        if (isEmptyInputValue(control.value) || isEmptyInputValue(range) || range.length < 2) {\r\n            return null;  // don't validate empty values to allow optional controls\r\n        }\r\n        const value = parseFloat(control.value);\r\n        const max = range[0];\r\n        const min = range[1];\r\n        if (!isNaN(value) && (value < min || value > max)) {\r\n            return { 'range': { 'min': min, 'max': max, 'actual': control.value } };\r\n        }\r\n\r\n        return null;\r\n    };\r\n}\r\n\r\n\r\nexport function matchValidator(input: string): ValidatorFn {\r\n    return (control: AbstractControl): ValidationErrors | null => {\r\n        if (isEmptyInputValue(control.value)) {\r\n            return null;  // don't validate empty values to allow optional controls\r\n        }\r\n\r\n        const targetCtrl = control.get(input);\r\n        let targetValue: any;\r\n        if (!targetCtrl) {\r\n            const el = document.getElementById(input) as any;\r\n            if (el) {\r\n                targetValue = el.value;\r\n            } else {\r\n                return null;\r\n            }\r\n        } else {\r\n            targetValue = targetCtrl.value;\r\n        }\r\n\r\n        if (targetValue !== control.value) {\r\n            return { 'mismatch': { 'requiredValue': targetValue, 'actual': control.value } };\r\n        }\r\n        return null;\r\n    };\r\n}","\r\nimport { Directive, forwardRef, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn } from \"@angular/forms\";\r\nimport { matchValidator, nullValidator, rangeValidator } from \"./validator\";\r\n\r\nfunction toFloat(value: string | number): number {\r\n    return typeof value === 'number' ? value : parseFloat(value);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n@Directive()\r\nabstract class AbstractValidatorDirective implements Validator, OnChanges {\r\n    private _validator: ValidatorFn = nullValidator;\r\n    private _onChange!: () => void;\r\n\r\n    /**\r\n     * A flag that tracks whether this validator is enabled.\r\n     *\r\n     * Marking it `internal` (vs `protected`), so that this flag can be used in host bindings of\r\n     * directive classes that extend this base class.\r\n     * @internal\r\n     */\r\n    _enabled?: boolean;\r\n\r\n    /**\r\n     * Name of an input that matches directive selector attribute (e.g. `minlength` for\r\n     * `MinLengthDirective`). An input with a given name might contain configuration information (like\r\n     * `minlength='10'`) or a flag that indicates whether validator should be enabled (like\r\n     * `[required]='false'`).\r\n     *\r\n     * @internal\r\n     */\r\n    abstract inputName: string;\r\n\r\n    /**\r\n     * Creates an instance of a validator (specific to a directive that extends this base class).\r\n     *\r\n     * @internal\r\n     */\r\n    abstract createValidator(input: unknown): ValidatorFn;\r\n\r\n    /**\r\n     * Performs the necessary input normalization based on a specific logic of a Directive.\r\n     * For example, the function might be used to convert string-based representation of the\r\n     * `minlength` input to an integer value that can later be used in the `Validators.minLength`\r\n     * validator.\r\n     *\r\n     * @internal\r\n     */\r\n    abstract normalizeInput(input: unknown): unknown;\r\n\r\n    /** @nodoc */\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (this.inputName in changes) {\r\n            const input = this.normalizeInput(changes[this.inputName].currentValue);\r\n            this._enabled = this.enabled(input);\r\n            this._validator = this._enabled ? this.createValidator(input) : nullValidator;\r\n            if (this._onChange) {\r\n                this._onChange();\r\n            }\r\n        }\r\n    }\r\n\r\n    /** @nodoc */\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return this._validator(control);\r\n    }\r\n\r\n    /** @nodoc */\r\n    registerOnValidatorChange(fn: () => void): void {\r\n        this._onChange = fn;\r\n    }\r\n\r\n    /**\r\n     * @description\r\n     * Determines whether this validator should be active or not based on an input.\r\n     * Base class implementation checks whether an input is defined (if the value is different from\r\n     * `null` and `undefined`). Validator classes that extend this base class can override this\r\n     * function with the logic specific to a particular validator directive.\r\n     */\r\n    enabled(input: unknown): boolean {\r\n        return input != null /* both `null` and `undefined` */;\r\n    }\r\n}\r\n\r\n\r\n\r\n\r\nexport const RANGE_VALIDATOR: any = {\r\n    provide: NG_VALIDATORS,\r\n    useExisting: forwardRef(() => RangeValidator),\r\n    multi: true\r\n};\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: 'input[type=number][range][formControlName],input[type=number][range][formControl],input[type=number][range][ngModel]',\r\n    providers: [RANGE_VALIDATOR],\r\n    host: { '[attr.range]': '_enabled ? range : null' }\r\n})\r\nexport class RangeValidator extends AbstractValidatorDirective {\r\n    @Input() range!: [number, number] | null;\r\n\r\n    /** @internal */\r\n    override inputName = 'range';\r\n    /** @internal */\r\n    override normalizeInput = (input: string | number): number => toFloat(input);\r\n    /** @internal */\r\n    override createValidator = (range: [number]): ValidatorFn => rangeValidator(range);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @description\r\n * Provider which adds `MatchValidator` to the `NG_VALIDATORS` multi-provider list.\r\n */\r\nexport const MATCH_VALIDATOR: any = {\r\n    provide: NG_VALIDATORS,\r\n    useExisting: forwardRef(() => MatchValidator),\r\n    multi: true\r\n};\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: '[match][formControlName],match][formControl],[match][ngModel]',\r\n    providers: [MATCH_VALIDATOR],\r\n    host: { '[attr.match]': '_enabled ? match : null' }\r\n})\r\nexport class MatchValidator extends AbstractValidatorDirective {\r\n    @Input() match!: string;\r\n\r\n    /** @internal */\r\n    override inputName = 'match';\r\n    /** @internal */\r\n    override normalizeInput = (input: string): string => input;\r\n    /** @internal */\r\n    override createValidator = (input: string): ValidatorFn => matchValidator(input);\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchValidator, RangeValidator } from './directive';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule\r\n    ],\r\n    declarations: [\r\n        RangeValidator,\r\n        MatchValidator,\r\n    ],\r\n    exports: [\r\n        RangeValidator,\r\n        MatchValidator\r\n    ]\r\n})\r\nexport class ValidatorsModule { }","import { Component, Input } from \"@angular/core\";\r\nimport { ZekSafePipe } from \"../../safe\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-wizard',\r\n    templateUrl: './wizard.html',\r\n    imports: [CommonModule, ZekSafePipe]\r\n})\r\nexport class ZekWizard {\r\n\r\n    progress = 0;\r\n    stepsArray: { step: number, progress: number }[] = [\r\n        { step: 1, progress: 0 }\r\n    ];\r\n\r\n    private _steps: number = 1;\r\n    @Input()\r\n    get steps(): number {\r\n        return this._steps;\r\n    }\r\n    set steps(v: number) {\r\n        if (v < 1) v = 1;\r\n\r\n        if (this._steps !== v) {\r\n            this._steps = v;\r\n            this.init();\r\n        }\r\n    }\r\n\r\n\r\n    private _step: number = 1;\r\n    @Input()\r\n    get step(): number {\r\n        return this._step;\r\n    }\r\n    set step(v: number) {\r\n        if (v < 1) v = 1;\r\n        else if (v > this.steps) v = this.steps;\r\n\r\n        if (this._step !== v) {\r\n            this._step = v;\r\n\r\n            const found = this.stepsArray.find(x => x.step === this._step);\r\n            if (found) {\r\n                this.progress = found.progress;\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    private init() {\r\n        this.stepsArray = [];\r\n        this.stepsArray.push({ step: 1, progress: 0 });\r\n\r\n        for (let i = 1; i < this.steps; i++) {\r\n            this.stepsArray.push({ step: i + 1, progress: Math.round(100 / (this.steps - 1) * i) });\r\n        }\r\n    }\r\n\r\n    previous() {\r\n        this.step--;\r\n    }\r\n    next() {\r\n        this.step++;\r\n    }\r\n}","<div class=\"position-relative m-4\">\r\n  <div class=\"progress\" style=\"height: 1px;\">\r\n    <div class=\"progress-bar\" role=\"progressbar\" [style.width.%]=\"progress\" [attr.aria-valuenow]=\"progress\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\r\n  </div>\r\n  <!-- left: 33%!important -->\r\n  <!-- [style.left.%]=\"item.progress\" -->\r\n  <button *ngFor=\"let item of stepsArray\" [attr.style]=\"('width:2rem; height:2rem; left:' + item.progress + '%!important') | safe:'style'\" type=\"button\" class=\"position-absolute top-0 translate-middle btn btn-sm btn-primary rounded-pill\">{{ item.step }}</button>\r\n</div>","import { Component } from \"@angular/core\";\r\nimport { ZekWizard } from \"../wizard/wizard\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'zek-wizard2',\r\n    templateUrl: './wizard2.html',\r\n    imports: [CommonModule]\r\n})\r\nexport class ZekWizard2 extends ZekWizard{\r\n\r\n}","<div class=\"m-2\">\r\n  <button *ngFor=\"let item of stepsArray\"\r\n    [class.btn-outline-secondary]=\"item.step >= steps\"\r\n    [class.btn-primary]=\"item.step < steps\"\r\n    type=\"button\"\r\n    class=\"btn btn-sm mr me-2\"></button>\r\n</div>","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { WebApiClient, WebApiConfig } from './services';\r\nimport { API_BASE_URL } from './tokens';\r\n\r\n@NgModule()\r\nexport class WebApiModule {\r\n  public static forRoot(config: WebApiConfig): ModuleWithProviders<WebApiModule> {\r\n    return {\r\n      ngModule: WebApiModule,\r\n      providers: [\r\n        WebApiClient,\r\n        {\r\n          provide: API_BASE_URL,\r\n          useValue: config.baseUrl\r\n        },\r\n      ]\r\n    };\r\n  }\r\n\r\n  public static forChild(config: WebApiConfig) {\r\n    return this.forRoot(config);\r\n  }\r\n}","/*\r\n * Public API Surface of zek\r\n */\r\n\r\nexport * from \"./lib/components\";\r\nexport * from \"./lib/directives\";\r\nexport * from \"./lib/models\";\r\nexport * from \"./lib/modules\";\r\nexport * from \"./lib/services\";\r\nexport * from \"./lib/utils\";\r\n\r\nexport * from \"./lib/tokens\";\r\nexport * from \"./lib/zek.module\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AlertService","i3","i1.WebApiClient","i2.HttpErrorHandler","i1","i2","i2.ZekModal","loadScript","loader","i1.ZekLoadingService"],"mappings":"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"}