{"version":3,"sources":["node_modules/primeng/fesm2022/primeng-utils.mjs","node_modules/primeng/fesm2022/primeng-api.mjs","node_modules/@angular/animations/fesm2022/animations.mjs","node_modules/primeng/fesm2022/primeng-dom.mjs","node_modules/primeng/fesm2022/primeng-baseicon.mjs","node_modules/primeng/fesm2022/primeng-icons-times.mjs"],"sourcesContent":["class ObjectUtils {\n static isArray(value, empty = true) {\n return Array.isArray(value) && (empty || value.length !== 0);\n }\n static isObject(value, empty = true) {\n return typeof value === 'object' && !Array.isArray(value) && value != null && (empty || Object.keys(value).length !== 0);\n }\n static equals(obj1, obj2, field) {\n if (field)\n return this.resolveFieldData(obj1, field) === this.resolveFieldData(obj2, field);\n else\n return this.equalsByValue(obj1, obj2);\n }\n static equalsByValue(obj1, obj2) {\n if (obj1 === obj2)\n return true;\n if (obj1 && obj2 && typeof obj1 == 'object' && typeof obj2 == 'object') {\n var arrA = Array.isArray(obj1), arrB = Array.isArray(obj2), i, length, key;\n if (arrA && arrB) {\n length = obj1.length;\n if (length != obj2.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!this.equalsByValue(obj1[i], obj2[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var dateA = this.isDate(obj1), dateB = this.isDate(obj2);\n if (dateA != dateB)\n return false;\n if (dateA && dateB)\n return obj1.getTime() == obj2.getTime();\n var regexpA = obj1 instanceof RegExp, regexpB = obj2 instanceof RegExp;\n if (regexpA != regexpB)\n return false;\n if (regexpA && regexpB)\n return obj1.toString() == obj2.toString();\n var keys = Object.keys(obj1);\n length = keys.length;\n if (length !== Object.keys(obj2).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(obj2, keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!this.equalsByValue(obj1[key], obj2[key]))\n return false;\n }\n return true;\n }\n return obj1 !== obj1 && obj2 !== obj2;\n }\n static resolveFieldData(data, field) {\n if (data && field) {\n if (this.isFunction(field)) {\n return field(data);\n }\n else if (field.indexOf('.') == -1) {\n return data[field];\n }\n else {\n let fields = field.split('.');\n let value = data;\n for (let i = 0, len = fields.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[fields[i]];\n }\n return value;\n }\n }\n else {\n return null;\n }\n }\n static isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n }\n static reorderArray(value, from, to) {\n let target;\n if (value && from !== to) {\n if (to >= value.length) {\n to %= value.length;\n from %= value.length;\n }\n value.splice(to, 0, value.splice(from, 1)[0]);\n }\n }\n static insertIntoOrderedArray(item, index, arr, sourceArr) {\n if (arr.length > 0) {\n let injected = false;\n for (let i = 0; i < arr.length; i++) {\n let currentItemIndex = this.findIndexInList(arr[i], sourceArr);\n if (currentItemIndex > index) {\n arr.splice(i, 0, item);\n injected = true;\n break;\n }\n }\n if (!injected) {\n arr.push(item);\n }\n }\n else {\n arr.push(item);\n }\n }\n static findIndexInList(item, list) {\n let index = -1;\n if (list) {\n for (let i = 0; i < list.length; i++) {\n if (list[i] == item) {\n index = i;\n break;\n }\n }\n }\n return index;\n }\n static contains(value, list) {\n if (value != null && list && list.length) {\n for (let val of list) {\n if (this.equals(value, val))\n return true;\n }\n }\n return false;\n }\n static removeAccents(str) {\n if (str) {\n str = str.normalize('NFKD').replace(/\\p{Diacritic}/gu, '');\n }\n return str;\n }\n static isDate(input) {\n return Object.prototype.toString.call(input) === '[object Date]';\n }\n static isEmpty(value) {\n return value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0) || (!this.isDate(value) && typeof value === 'object' && Object.keys(value).length === 0);\n }\n static isNotEmpty(value) {\n return !this.isEmpty(value);\n }\n static compare(value1, value2, locale, order = 1) {\n let result = -1;\n const emptyValue1 = this.isEmpty(value1);\n const emptyValue2 = this.isEmpty(value2);\n if (emptyValue1 && emptyValue2)\n result = 0;\n else if (emptyValue1)\n result = order;\n else if (emptyValue2)\n result = -order;\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2, locale, { numeric: true });\n else\n result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n return result;\n }\n static sort(value1, value2, order = 1, locale, nullSortOrder = 1) {\n const result = ObjectUtils.compare(value1, value2, locale, order);\n let finalSortOrder = order;\n // nullSortOrder == 1 means Excel like sort nulls at bottom\n if (ObjectUtils.isEmpty(value1) || ObjectUtils.isEmpty(value2)) {\n finalSortOrder = nullSortOrder === 1 ? order : nullSortOrder;\n }\n return finalSortOrder * result;\n }\n static merge(obj1, obj2) {\n if (obj1 == undefined && obj2 == undefined) {\n return undefined;\n }\n else if ((obj1 == undefined || typeof obj1 === 'object') && (obj2 == undefined || typeof obj2 === 'object')) {\n return { ...(obj1 || {}), ...(obj2 || {}) };\n }\n else if ((obj1 == undefined || typeof obj1 === 'string') && (obj2 == undefined || typeof obj2 === 'string')) {\n return [obj1 || '', obj2 || ''].join(' ');\n }\n return obj2 || obj1;\n }\n static isPrintableCharacter(char = '') {\n return this.isNotEmpty(char) && char.length === 1 && char.match(/\\S| /);\n }\n static getItemValue(obj, ...params) {\n return this.isFunction(obj) ? obj(...params) : obj;\n }\n static findLastIndex(arr, callback) {\n let index = -1;\n if (this.isNotEmpty(arr)) {\n try {\n index = arr.findLastIndex(callback);\n }\n catch {\n index = arr.lastIndexOf([...arr].reverse().find(callback));\n }\n }\n return index;\n }\n static findLast(arr, callback) {\n let item;\n if (this.isNotEmpty(arr)) {\n try {\n item = arr.findLast(callback);\n }\n catch {\n item = [...arr].reverse().find(callback);\n }\n }\n return item;\n }\n static deepEquals(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!this.deepEquals(a[i], b[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var dateA = a instanceof Date, dateB = b instanceof Date;\n if (dateA != dateB)\n return false;\n if (dateA && dateB)\n return a.getTime() == b.getTime();\n var regexpA = a instanceof RegExp, regexpB = b instanceof RegExp;\n if (regexpA != regexpB)\n return false;\n if (regexpA && regexpB)\n return a.toString() == b.toString();\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!this.deepEquals(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a !== a && b !== b;\n }\n}\n\nvar lastId = 0;\nfunction UniqueComponentId(prefix = 'pn_id_') {\n lastId++;\n return `${prefix}${lastId}`;\n}\n\nfunction ZIndexUtils() {\n let zIndexes = [];\n const generateZIndex = (key, baseZIndex) => {\n let lastZIndex = zIndexes.length > 0 ? zIndexes[zIndexes.length - 1] : { key, value: baseZIndex };\n let newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 2;\n zIndexes.push({ key, value: newZIndex });\n return newZIndex;\n };\n const revertZIndex = (zIndex) => {\n zIndexes = zIndexes.filter((obj) => obj.value !== zIndex);\n };\n const getCurrentZIndex = () => {\n return zIndexes.length > 0 ? zIndexes[zIndexes.length - 1].value : 0;\n };\n const getZIndex = (el) => {\n return el ? parseInt(el.style.zIndex, 10) || 0 : 0;\n };\n return {\n get: getZIndex,\n set: (key, el, baseZIndex) => {\n if (el) {\n el.style.zIndex = String(generateZIndex(key, baseZIndex));\n }\n },\n clear: (el) => {\n if (el) {\n revertZIndex(getZIndex(el));\n el.style.zIndex = '';\n }\n },\n getCurrent: () => getCurrentZIndex()\n };\n}\nvar zindexutils = ZIndexUtils();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ObjectUtils, UniqueComponentId, zindexutils as ZIndexUtils };\n\n","import * as i0 from '@angular/core';\nimport { Injectable, Component, Directive, Input, NgModule } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ObjectUtils } from 'primeng/utils';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Type of the confirm event.\n */\nconst _c0 = [\"*\"];\nvar ConfirmEventType;\n(function (ConfirmEventType) {\n ConfirmEventType[ConfirmEventType[\"ACCEPT\"] = 0] = \"ACCEPT\";\n ConfirmEventType[ConfirmEventType[\"REJECT\"] = 1] = \"REJECT\";\n ConfirmEventType[ConfirmEventType[\"CANCEL\"] = 2] = \"CANCEL\";\n})(ConfirmEventType || (ConfirmEventType = {}));\n\n/**\n * Methods used in confirmation service.\n * @group Service\n */\nclass ConfirmationService {\n requireConfirmationSource = new Subject();\n acceptConfirmationSource = new Subject();\n requireConfirmation$ = this.requireConfirmationSource.asObservable();\n accept = this.acceptConfirmationSource.asObservable();\n /**\n * Callback to invoke on confirm.\n * @param {Confirmation} confirmation - Represents a confirmation dialog configuration.\n * @group Method\n */\n confirm(confirmation) {\n this.requireConfirmationSource.next(confirmation);\n return this;\n }\n /**\n * Closes the dialog.\n * @group Method\n */\n close() {\n this.requireConfirmationSource.next(null);\n return this;\n }\n /**\n * Accepts the dialog.\n * @group Method\n */\n onAccept() {\n this.acceptConfirmationSource.next(null);\n }\n static ɵfac = function ConfirmationService_Factory(t) {\n return new (t || ConfirmationService)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ConfirmationService,\n factory: ConfirmationService.ɵfac\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ConfirmationService, [{\n type: Injectable\n }], null, null);\n})();\nclass ContextMenuService {\n activeItemKeyChange = new Subject();\n activeItemKeyChange$ = this.activeItemKeyChange.asObservable();\n activeItemKey;\n changeKey(key) {\n this.activeItemKey = key;\n this.activeItemKeyChange.next(this.activeItemKey);\n }\n reset() {\n this.activeItemKey = null;\n this.activeItemKeyChange.next(this.activeItemKey);\n }\n static ɵfac = function ContextMenuService_Factory(t) {\n return new (t || ContextMenuService)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ContextMenuService,\n factory: ContextMenuService.ɵfac\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ContextMenuService, [{\n type: Injectable\n }], null, null);\n})();\nclass FilterMatchMode {\n static STARTS_WITH = 'startsWith';\n static CONTAINS = 'contains';\n static NOT_CONTAINS = 'notContains';\n static ENDS_WITH = 'endsWith';\n static EQUALS = 'equals';\n static NOT_EQUALS = 'notEquals';\n static IN = 'in';\n static LESS_THAN = 'lt';\n static LESS_THAN_OR_EQUAL_TO = 'lte';\n static GREATER_THAN = 'gt';\n static GREATER_THAN_OR_EQUAL_TO = 'gte';\n static BETWEEN = 'between';\n static IS = 'is';\n static IS_NOT = 'isNot';\n static BEFORE = 'before';\n static AFTER = 'after';\n static DATE_IS = 'dateIs';\n static DATE_IS_NOT = 'dateIsNot';\n static DATE_BEFORE = 'dateBefore';\n static DATE_AFTER = 'dateAfter';\n}\nclass FilterOperator {\n static AND = 'and';\n static OR = 'or';\n}\nclass FilterService {\n filter(value, fields, filterValue, filterMatchMode, filterLocale) {\n let filteredItems = [];\n if (value) {\n for (let item of value) {\n for (let field of fields) {\n let fieldValue = ObjectUtils.resolveFieldData(item, field);\n if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {\n filteredItems.push(item);\n break;\n }\n }\n }\n }\n return filteredItems;\n }\n filters = {\n startsWith: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.slice(0, filterValue.length) === filterValue;\n },\n contains: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.indexOf(filterValue) !== -1;\n },\n notContains: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.indexOf(filterValue) === -1;\n },\n endsWith: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;\n },\n equals: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime) return value.getTime() === filter.getTime();else return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) == ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n },\n notEquals: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n return false;\n }\n if (value === undefined || value === null) {\n return true;\n }\n if (value.getTime && filter.getTime) return value.getTime() !== filter.getTime();else return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) != ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n },\n in: (value, filter) => {\n if (filter === undefined || filter === null || filter.length === 0) {\n return true;\n }\n for (let i = 0; i < filter.length; i++) {\n if (ObjectUtils.equals(value, filter[i])) {\n return true;\n }\n }\n return false;\n },\n between: (value, filter) => {\n if (filter == null || filter[0] == null || filter[1] == null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime) return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();else return filter[0] <= value && value <= filter[1];\n },\n lt: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime) return value.getTime() < filter.getTime();else return value < filter;\n },\n lte: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime) return value.getTime() <= filter.getTime();else return value <= filter;\n },\n gt: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime) return value.getTime() > filter.getTime();else return value > filter;\n },\n gte: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime) return value.getTime() >= filter.getTime();else return value >= filter;\n },\n is: (value, filter, filterLocale) => {\n return this.filters.equals(value, filter, filterLocale);\n },\n isNot: (value, filter, filterLocale) => {\n return this.filters.notEquals(value, filter, filterLocale);\n },\n before: (value, filter, filterLocale) => {\n return this.filters.lt(value, filter, filterLocale);\n },\n after: (value, filter, filterLocale) => {\n return this.filters.gt(value, filter, filterLocale);\n },\n dateIs: (value, filter) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n return value.toDateString() === filter.toDateString();\n },\n dateIsNot: (value, filter) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n return value.toDateString() !== filter.toDateString();\n },\n dateBefore: (value, filter) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n return value.getTime() < filter.getTime();\n },\n dateAfter: (value, filter) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n return value.getTime() > filter.getTime();\n }\n };\n register(rule, fn) {\n this.filters[rule] = fn;\n }\n static ɵfac = function FilterService_Factory(t) {\n return new (t || FilterService)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FilterService,\n factory: FilterService.ɵfac,\n providedIn: 'root'\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FilterService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n\n/**\n * Message service used in messages and toast components.\n * @group Service\n */\nclass MessageService {\n messageSource = new Subject();\n clearSource = new Subject();\n messageObserver = this.messageSource.asObservable();\n clearObserver = this.clearSource.asObservable();\n /**\n * Inserts single message.\n * @param {Message} message - Message to be added.\n * @group Method\n */\n add(message) {\n if (message) {\n this.messageSource.next(message);\n }\n }\n /**\n * Inserts new messages.\n * @param {Message[]} messages - Messages to be added.\n * @group Method\n */\n addAll(messages) {\n if (messages && messages.length) {\n this.messageSource.next(messages);\n }\n }\n /**\n * Clears the message with the given key.\n * @param {string} key - Key of the message to be cleared.\n * @group Method\n */\n clear(key) {\n this.clearSource.next(key || null);\n }\n static ɵfac = function MessageService_Factory(t) {\n return new (t || MessageService)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MessageService,\n factory: MessageService.ɵfac\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MessageService, [{\n type: Injectable\n }], null, null);\n})();\nclass OverlayService {\n clickSource = new Subject();\n clickObservable = this.clickSource.asObservable();\n add(event) {\n if (event) {\n this.clickSource.next(event);\n }\n }\n static ɵfac = function OverlayService_Factory(t) {\n return new (t || OverlayService)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: OverlayService,\n factory: OverlayService.ɵfac,\n providedIn: 'root'\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nclass PrimeIcons {\n static ALIGN_CENTER = 'pi pi-align-center';\n static ALIGN_JUSTIFY = 'pi pi-align-justify';\n static ALIGN_LEFT = 'pi pi-align-left';\n static ALIGN_RIGHT = 'pi pi-align-right';\n static AMAZON = 'pi pi-amazon';\n static ANDROID = 'pi pi-android';\n static ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';\n static ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';\n static ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';\n static ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';\n static ANGLE_DOWN = 'pi pi-angle-down';\n static ANGLE_LEFT = 'pi pi-angle-left';\n static ANGLE_RIGHT = 'pi pi-angle-right';\n static ANGLE_UP = 'pi pi-angle-up';\n static APPLE = 'pi pi-apple';\n static ARROWS_ALT = 'pi pi-arrows-alt';\n static ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';\n static ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';\n static ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';\n static ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';\n static ARROW_DOWN = 'pi pi-arrow-down';\n static ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';\n static ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';\n static ARROW_LEFT = 'pi pi-arrow-left';\n static ARROW_RIGHT_ARROW_LEFT = 'pi pi-arrow-right-arrow-left';\n static ARROW_RIGHT = 'pi pi-arrow-right';\n static ARROW_UP = 'pi pi-arrow-up';\n static ARROW_UP_LEFT = 'pi pi-arrow-up-left';\n static ARROW_UP_RIGHT = 'pi pi-arrow-up-right';\n static ARROW_H = 'pi pi-arrows-h';\n static ARROW_V = 'pi pi-arrows-v';\n static AT = 'pi pi-at';\n static BACKWARD = 'pi pi-backward';\n static BAN = 'pi pi-ban';\n static BARS = 'pi pi-bars';\n static BELL = 'pi pi-bell';\n static BITCOIN = 'pi pi-bitcoin';\n static BOLT = 'pi pi-bolt';\n static BOOK = 'pi pi-book';\n static BOOKMARK = 'pi pi-bookmark';\n static BOOKMARK_FILL = 'pi pi-bookmark-fill';\n static BOX = 'pi pi-box';\n static BRIEFCASE = 'pi pi-briefcase';\n static BUILDING = 'pi pi-building';\n static CALCULATOR = 'pi pi-calculator';\n static CALENDAR = 'pi pi-calendar';\n static CALENDAR_MINUS = 'pi pi-calendar-minus';\n static CALENDAR_PLUS = 'pi pi-calendar-plus';\n static CALENDAR_TIMES = 'pi pi-calendar-times';\n static CAMERA = 'pi pi-camera';\n static CAR = 'pi pi-car';\n static CARET_DOWN = 'pi pi-caret-down';\n static CARET_LEFT = 'pi pi-caret-left';\n static CARET_RIGHT = 'pi pi-caret-right';\n static CARET_UP = 'pi pi-caret-up';\n static CART_PLUS = 'pi pi-cart-plus';\n static CHART_BAR = 'pi pi-chart-bar';\n static CHART_LINE = 'pi pi-chart-line';\n static CHART_PIE = 'pi pi-chart-pie';\n static CHECK = 'pi pi-check';\n static CHECK_CIRCLE = 'pi pi-check-circle';\n static CHECK_SQUARE = 'pi pi-check-square';\n static CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';\n static CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';\n static CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';\n static CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';\n static CHEVRON_DOWN = 'pi pi-chevron-down';\n static CHEVRON_LEFT = 'pi pi-chevron-left';\n static CHEVRON_RIGHT = 'pi pi-chevron-right';\n static CHEVRON_UP = 'pi pi-chevron-up';\n static CIRCLE = 'pi pi-circle';\n static CIRCLE_FILL = 'pi pi-circle-fill';\n static CLOCK = 'pi pi-clock';\n static CLONE = 'pi pi-clone';\n static CLOUD = 'pi pi-cloud';\n static CLOUD_DOWNLOAD = 'pi pi-cloud-download';\n static CLOUD_UPLOAD = 'pi pi-cloud-upload';\n static CODE = 'pi pi-code';\n static COG = 'pi pi-cog';\n static COMMENT = 'pi pi-comment';\n static COMMENTS = 'pi pi-comments';\n static COMPASS = 'pi pi-compass';\n static COPY = 'pi pi-copy';\n static CREDIT_CARD = 'pi pi-credit-card';\n static DATABASE = 'pi pi-database';\n static DESKTOP = 'pi pi-desktop';\n static DELETE_LEFT = 'pi pi-delete-left';\n static DIRECTIONS = 'pi pi-directions';\n static DIRECTIONS_ALT = 'pi pi-directions-alt';\n static DISCORD = 'pi pi-discord';\n static DOLLAR = 'pi pi-dollar';\n static DOWNLOAD = 'pi pi-download';\n static EJECT = 'pi pi-eject';\n static ELLIPSIS_H = 'pi pi-ellipsis-h';\n static ELLIPSIS_V = 'pi pi-ellipsis-v';\n static ENVELOPE = 'pi pi-envelope';\n static ERASER = 'pi pi-eraser';\n static EURO = 'pi pi-euro';\n static EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';\n static EXCLAMATION_TRIANGLE = 'pi pi-exclamation-triangle';\n static EXTERNAL_LINK = 'pi pi-external-link';\n static EYE = 'pi pi-eye';\n static EYE_SLASH = 'pi pi-eye-slash';\n static FACEBOOK = 'pi pi-facebook';\n static FAST_BACKWARD = 'pi pi-fast-backward';\n static FAST_FORWARD = 'pi pi-fast-forward';\n static FILE = 'pi pi-file';\n static FILE_EDIT = 'pi pi-file-edit';\n static FILE_IMPORT = 'pi pi-file-import';\n static FILE_PDF = 'pi pi-file-pdf';\n static FILE_EXCEL = 'pi pi-file-excel';\n static FILE_EXPORT = 'pi pi-file-export';\n static FILE_WORD = 'pi pi-file-word';\n static FILTER = 'pi pi-filter';\n static FILTER_FILL = 'pi pi-filter-fill';\n static FILTER_SLASH = 'pi pi-filter-slash';\n static FLAG = 'pi pi-flag';\n static FLAG_FILL = 'pi pi-flag-fill';\n static FOLDER = 'pi pi-folder';\n static FOLDER_OPEN = 'pi pi-folder-open';\n static FORWARD = 'pi pi-forward';\n static GIFT = 'pi pi-gift';\n static GITHUB = 'pi pi-github';\n static GLOBE = 'pi pi-globe';\n static GOOGLE = 'pi pi-google';\n static HASHTAG = 'pi pi-hashtag';\n static HEART = 'pi pi-heart';\n static HEART_FILL = 'pi pi-heart-fill';\n static HISTORY = 'pi pi-history';\n static HOME = 'pi pi-home';\n static HOURGLASS = 'pi pi-hourglass';\n static ID_CARD = 'pi pi-id-card';\n static IMAGE = 'pi pi-image';\n static IMAGES = 'pi pi-images';\n static INBOX = 'pi pi-inbox';\n static INFO = 'pi pi-info';\n static INFO_CIRCLE = 'pi pi-info-circle';\n static INSTAGRAM = 'pi pi-instagram';\n static KEY = 'pi pi-key';\n static LANGUAGE = 'pi pi-language';\n static LINK = 'pi pi-link';\n static LINKEDIN = 'pi pi-linkedin';\n static LIST = 'pi pi-list';\n static LOCK = 'pi pi-lock';\n static LOCK_OPEN = 'pi pi-lock-open';\n static MAP = 'pi pi-map';\n static MAP_MARKER = 'pi pi-map-marker';\n static MEGAPHONE = 'pi pi-megaphone';\n static MICROPHONE = 'pi pi-microphone';\n static MICROSOFT = 'pi pi-microsoft';\n static MINUS = 'pi pi-minus';\n static MINUS_CIRCLE = 'pi pi-minus-circle';\n static MOBILE = 'pi pi-mobile';\n static MONEY_BILL = 'pi pi-money-bill';\n static MOON = 'pi pi-moon';\n static PALETTE = 'pi pi-palette';\n static PAPERCLIP = 'pi pi-paperclip';\n static PAUSE = 'pi pi-pause';\n static PAYPAL = 'pi pi-paypal';\n static PENCIL = 'pi pi-pencil';\n static PERCENTAGE = 'pi pi-percentage';\n static PHONE = 'pi pi-phone';\n static PLAY = 'pi pi-play';\n static PLUS = 'pi pi-plus';\n static PLUS_CIRCLE = 'pi pi-plus-circle';\n static POUND = 'pi pi-pound';\n static POWER_OFF = 'pi pi-power-off';\n static PRIME = 'pi pi-prime';\n static PRINT = 'pi pi-print';\n static QRCODE = 'pi pi-qrcode';\n static QUESTION = 'pi pi-question';\n static QUESTION_CIRCLE = 'pi pi-question-circle';\n static REDDIT = 'pi pi-reddit';\n static REFRESH = 'pi pi-refresh';\n static REPLAY = 'pi pi-replay';\n static REPLY = 'pi pi-reply';\n static SAVE = 'pi pi-save';\n static SEARCH = 'pi pi-search';\n static SEARCH_MINUS = 'pi pi-search-minus';\n static SEARCH_PLUS = 'pi pi-search-plus';\n static SEND = 'pi pi-send';\n static SERVER = 'pi pi-server';\n static SHARE_ALT = 'pi pi-share-alt';\n static SHIELD = 'pi pi-shield';\n static SHOPPING_BAG = 'pi pi-shopping-bag';\n static SHOPPING_CART = 'pi pi-shopping-cart';\n static SIGN_IN = 'pi pi-sign-in';\n static SIGN_OUT = 'pi pi-sign-out';\n static SITEMAP = 'pi pi-sitemap';\n static SLACK = 'pi pi-slack';\n static SLIDERS_H = 'pi pi-sliders-h';\n static SLIDERS_V = 'pi pi-sliders-v';\n static SORT = 'pi pi-sort';\n static SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';\n static SORT_ALPHA_DOWN_ALT = 'pi pi-sort-alpha-down-alt';\n static SORT_ALPHA_UP = 'pi pi-sort-alpha-up';\n static SORT_ALPHA_UP_ALT = 'pi pi-sort-alpha-up-alt';\n static SORT_ALT = 'pi pi-sort-alt';\n static SORT_ALT_SLASH = 'pi pi-sort-alt-slash';\n static SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';\n static SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';\n static SORT_AMOUNT_UP = 'pi pi-sort-amount-up';\n static SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';\n static SORT_DOWN = 'pi pi-sort-down';\n static SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';\n static SORT_NUMERIC_DOWN_ALT = 'pi pi-sort-numeric-down-alt';\n static SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';\n static SORT_NUMERIC_UP_ALT = 'pi pi-sort-numeric-up-alt';\n static SORT_UP = 'pi pi-sort-up';\n static SPINNER = 'pi pi-spinner';\n static STAR = 'pi pi-star';\n static STAR_FILL = 'pi pi-star-fill';\n static STEP_BACKWARD = 'pi pi-step-backward';\n static STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';\n static STEP_FORWARD = 'pi pi-step-forward';\n static STEP_FORWARD_ALT = 'pi pi-step-forward-alt';\n static STOP = 'pi pi-stop';\n static STOP_CIRCLE = 'pi pi-stop-circle';\n static STOPWATCH = 'pi pi-stopwatch';\n static SUN = 'pi pi-sun';\n static SYNC = 'pi pi-sync';\n static TABLE = 'pi pi-table';\n static TABLET = 'pi pi-tablet';\n static TAG = 'pi pi-tag';\n static TAGS = 'pi pi-tags';\n static TELEGRAM = 'pi pi-telegram';\n static TH_LARGE = 'pi pi-th-large';\n static THUMBS_DOWN = 'pi pi-thumbs-down';\n static THUMBS_DOWN_FILL = 'pi pi-thumbs-down-fill';\n static THUMBS_UP = 'pi pi-thumbs-up';\n static THUMBS_UP_FILL = 'pi pi-thumbs-up-fill';\n static TICKET = 'pi pi-ticket';\n static TIMES = 'pi pi-times';\n static TIMES_CIRCLE = 'pi pi-times-circle';\n static TRASH = 'pi pi-trash';\n static TRUCK = 'pi pi-truck';\n static TWITTER = 'pi pi-twitter';\n static UNDO = 'pi pi-undo';\n static UNLOCK = 'pi pi-unlock';\n static UPLOAD = 'pi pi-upload';\n static USER = 'pi pi-user';\n static USER_EDIT = 'pi pi-user-edit';\n static USER_MINUS = 'pi pi-user-minus';\n static USER_PLUS = 'pi pi-user-plus';\n static USERS = 'pi pi-users';\n static VERIFIED = 'pi pi-verified';\n static VIDEO = 'pi pi-video';\n static VIMEO = 'pi pi-vimeo';\n static VOLUME_DOWN = 'pi pi-volume-down';\n static VOLUME_OFF = 'pi pi-volume-off';\n static VOLUME_UP = 'pi pi-volume-up';\n static WALLET = 'pi pi-wallet';\n static WHATSAPP = 'pi pi-whatsapp';\n static WIFI = 'pi pi-wifi';\n static WINDOW_MAXIMIZE = 'pi pi-window-maximize';\n static WINDOW_MINIMIZE = 'pi pi-window-minimize';\n static WRENCH = 'pi pi-wrench';\n static YOUTUBE = 'pi pi-youtube';\n}\nclass PrimeNGConfig {\n ripple = false;\n inputStyle = 'outlined';\n overlayOptions = {};\n filterMatchModeOptions = {\n text: [FilterMatchMode.STARTS_WITH, FilterMatchMode.CONTAINS, FilterMatchMode.NOT_CONTAINS, FilterMatchMode.ENDS_WITH, FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS],\n numeric: [FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS, FilterMatchMode.LESS_THAN, FilterMatchMode.LESS_THAN_OR_EQUAL_TO, FilterMatchMode.GREATER_THAN, FilterMatchMode.GREATER_THAN_OR_EQUAL_TO],\n date: [FilterMatchMode.DATE_IS, FilterMatchMode.DATE_IS_NOT, FilterMatchMode.DATE_BEFORE, FilterMatchMode.DATE_AFTER]\n };\n translation = {\n startsWith: 'Starts with',\n contains: 'Contains',\n notContains: 'Not contains',\n endsWith: 'Ends with',\n equals: 'Equals',\n notEquals: 'Not equals',\n noFilter: 'No Filter',\n lt: 'Less than',\n lte: 'Less than or equal to',\n gt: 'Greater than',\n gte: 'Greater than or equal to',\n is: 'Is',\n isNot: 'Is not',\n before: 'Before',\n after: 'After',\n dateIs: 'Date is',\n dateIsNot: 'Date is not',\n dateBefore: 'Date is before',\n dateAfter: 'Date is after',\n clear: 'Clear',\n apply: 'Apply',\n matchAll: 'Match All',\n matchAny: 'Match Any',\n addRule: 'Add Rule',\n removeRule: 'Remove Rule',\n accept: 'Yes',\n reject: 'No',\n choose: 'Choose',\n upload: 'Upload',\n cancel: 'Cancel',\n pending: 'Pending',\n fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n chooseYear: 'Choose Year',\n chooseMonth: 'Choose Month',\n chooseDate: 'Choose Date',\n prevDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n prevYear: 'Previous Year',\n nextYear: 'Next Year',\n prevMonth: 'Previous Month',\n nextMonth: 'Next Month',\n prevHour: 'Previous Hour',\n nextHour: 'Next Hour',\n prevMinute: 'Previous Minute',\n nextMinute: 'Next Minute',\n prevSecond: 'Previous Second',\n nextSecond: 'Next Second',\n am: 'am',\n pm: 'pm',\n dateFormat: 'mm/dd/yy',\n firstDayOfWeek: 0,\n today: 'Today',\n weekHeader: 'Wk',\n weak: 'Weak',\n medium: 'Medium',\n strong: 'Strong',\n passwordPrompt: 'Enter a password',\n emptyMessage: 'No results found',\n searchMessage: '{0} results are available',\n selectionMessage: '{0} items selected',\n emptySelectionMessage: 'No selected item',\n emptySearchMessage: 'No results found',\n emptyFilterMessage: 'No results found',\n aria: {\n trueLabel: 'True',\n falseLabel: 'False',\n nullLabel: 'Not Selected',\n star: '1 star',\n stars: '{star} stars',\n selectAll: 'All items selected',\n unselectAll: 'All items unselected',\n close: 'Close',\n previous: 'Previous',\n next: 'Next',\n navigation: 'Navigation',\n scrollTop: 'Scroll Top',\n moveTop: 'Move Top',\n moveUp: 'Move Up',\n moveDown: 'Move Down',\n moveBottom: 'Move Bottom',\n moveToTarget: 'Move to Target',\n moveToSource: 'Move to Source',\n moveAllToTarget: 'Move All to Target',\n moveAllToSource: 'Move All to Source',\n pageLabel: '{page}',\n firstPageLabel: 'First Page',\n lastPageLabel: 'Last Page',\n nextPageLabel: 'Next Page',\n prevPageLabel: 'Previous Page',\n rowsPerPageLabel: 'Rows per page',\n previousPageLabel: 'Previous Page',\n jumpToPageDropdownLabel: 'Jump to Page Dropdown',\n jumpToPageInputLabel: 'Jump to Page Input',\n selectRow: 'Row Selected',\n unselectRow: 'Row Unselected',\n expandRow: 'Row Expanded',\n collapseRow: 'Row Collapsed',\n showFilterMenu: 'Show Filter Menu',\n hideFilterMenu: 'Hide Filter Menu',\n filterOperator: 'Filter Operator',\n filterConstraint: 'Filter Constraint',\n editRow: 'Row Edit',\n saveEdit: 'Save Edit',\n cancelEdit: 'Cancel Edit',\n listView: 'List View',\n gridView: 'Grid View',\n slide: 'Slide',\n slideNumber: '{slideNumber}',\n zoomImage: 'Zoom Image',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out',\n rotateRight: 'Rotate Right',\n rotateLeft: 'Rotate Left',\n listLabel: 'Option List',\n selectColor: 'Select a color',\n removeLabel: 'Remove',\n browseFiles: 'Browse Files',\n maximizeLabel: 'Maximize'\n }\n };\n zIndex = {\n modal: 1100,\n overlay: 1000,\n menu: 1000,\n tooltip: 1100\n };\n translationSource = new Subject();\n translationObserver = this.translationSource.asObservable();\n getTranslation(key) {\n return this.translation[key];\n }\n setTranslation(value) {\n this.translation = {\n ...this.translation,\n ...value\n };\n this.translationSource.next(this.translation);\n }\n static ɵfac = function PrimeNGConfig_Factory(t) {\n return new (t || PrimeNGConfig)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PrimeNGConfig,\n factory: PrimeNGConfig.ɵfac,\n providedIn: 'root'\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PrimeNGConfig, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nclass Header {\n static ɵfac = function Header_Factory(t) {\n return new (t || Header)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: Header,\n selectors: [[\"p-header\"]],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function Header_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Header, [{\n type: Component,\n args: [{\n selector: 'p-header',\n template: '
[AnimationBuilder.build](api/animations/AnimationBuilder#build)()
method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n static {\n this.ɵfac = function AnimationBuilder_Factory(t) {\n return new (t || AnimationBuilder)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AnimationBuilder,\n factory: () => (() => inject(BrowserAnimationBuilder))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AnimationBuilder, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(BrowserAnimationBuilder)\n }]\n }], null, null);\n})();\n/**\n * A factory object returned from the\n * [AnimationBuilder.build](api/animations/AnimationBuilder#build)()
\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {}\nclass BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this.animationModuleType = inject(ANIMATION_MODULE_TYPE, {\n optional: true\n });\n this._nextAnimationId = 0;\n const typeData = {\n id: '0',\n encapsulation: ViewEncapsulation.None,\n styles: [],\n data: {\n animation: []\n }\n };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n if (this.animationModuleType === null && !isAnimationRenderer(this._renderer)) {\n // We only support AnimationRenderer & DynamicDelegationRenderer for this AnimationBuilder\n throw new ɵRuntimeError(3600 /* RuntimeErrorCode.BROWSER_ANIMATION_BUILDER_INJECTED_WITHOUT_ANIMATIONS */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Angular detected that the `AnimationBuilder` was injected, but animation support was not enabled. ' + 'Please make sure that you enable animations in your application by calling `provideAnimations()` or `provideAnimationsAsync()` function.');\n }\n }\n build(animation) {\n const id = this._nextAnimationId;\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n static {\n this.ɵfac = function BrowserAnimationBuilder_Factory(t) {\n return new (t || BrowserAnimationBuilder)(i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BrowserAnimationBuilder,\n factory: BrowserAnimationBuilder.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BrowserAnimationBuilder, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i0.RendererFactory2\n }, {\n type: Document,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n return unwrapAnimationRenderer(this._renderer)?.engine?.players[this.id]?.getPosition() ?? 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n/**\n * The following 2 methods cannot reference their correct types (AnimationRenderer &\n * DynamicDelegationRenderer) since this would introduce a import cycle.\n */\nfunction unwrapAnimationRenderer(renderer) {\n const type = renderer.ɵtype;\n if (type === 0 /* AnimationRendererType.Regular */) {\n return renderer;\n } else if (type === 1 /* AnimationRendererType.Delegated */) {\n return renderer.animationRenderer;\n }\n return null;\n}\nfunction isAnimationRenderer(renderer) {\n const type = renderer.ɵtype;\n return type === 0 /* AnimationRendererType.Regular */ || type === 1 /* AnimationRendererType.Delegated */;\n}\n\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see {@link animate}\n * @see {@link AnimationPlayer}\n * @see {@link ɵAnimationGroupPlayer AnimationGroupPlayer}\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() {}\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n queueMicrotask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() {}\n restart() {}\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n this._finished = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see {@link AnimationPlayer}\n * @see {@link animations/group group}\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n queueMicrotask(() => this._onFinish());\n } else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\nconst ɵPRE_STYLE = '!';\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, AnimationMetadataType, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, ɵPRE_STYLE };\n","/**\n * @dynamic is for runtime initializing DomHandler.browser\n *\n * If delete below comment, we can see this error message:\n * Metadata collected contains an error that will be reported at runtime:\n * Only initialized variables and constants can be referenced\n * because the value of this variable is needed by the template compiler.\n */\n// @dynamic\nclass DomHandler {\n static zindex = 1000;\n static calculatedScrollbarWidth = null;\n static calculatedScrollbarHeight = null;\n static browser;\n static addClass(element, className) {\n if (element && className) {\n if (element.classList)\n element.classList.add(className);\n else\n element.className += ' ' + className;\n }\n }\n static addMultipleClasses(element, className) {\n if (element && className) {\n if (element.classList) {\n let styles = className.trim().split(' ');\n for (let i = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n }\n else {\n let styles = className.split(' ');\n for (let i = 0; i < styles.length; i++) {\n element.className += ' ' + styles[i];\n }\n }\n }\n }\n static removeClass(element, className) {\n if (element && className) {\n if (element.classList)\n element.classList.remove(className);\n else\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n static removeMultipleClasses(element, classNames) {\n if (element && classNames) {\n [classNames]\n .flat()\n .filter(Boolean)\n .forEach((cNames) => cNames.split(' ').forEach((className) => this.removeClass(element, className)));\n }\n }\n static hasClass(element, className) {\n if (element && className) {\n if (element.classList)\n return element.classList.contains(className);\n else\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n return false;\n }\n static siblings(element) {\n return Array.prototype.filter.call(element.parentNode.children, function (child) {\n return child !== element;\n });\n }\n static find(element, selector) {\n return Array.from(element.querySelectorAll(selector));\n }\n static findSingle(element, selector) {\n return this.isElement(element) ? element.querySelector(selector) : null;\n }\n static index(element) {\n let children = element.parentNode.childNodes;\n let num = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i] == element)\n return num;\n if (children[i].nodeType == 1)\n num++;\n }\n return -1;\n }\n static indexWithinGroup(element, attributeName) {\n let children = element.parentNode ? element.parentNode.childNodes : [];\n let num = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i] == element)\n return num;\n if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1)\n num++;\n }\n return -1;\n }\n static appendOverlay(overlay, target, appendTo = 'self') {\n if (appendTo !== 'self' && overlay && target) {\n this.appendChild(overlay, target);\n }\n }\n static alignOverlay(overlay, target, appendTo = 'self', calculateMinWidth = true) {\n if (overlay && target) {\n if (calculateMinWidth) {\n overlay.style.minWidth = `${DomHandler.getOuterWidth(target)}px`;\n }\n if (appendTo === 'self') {\n this.relativePosition(overlay, target);\n }\n else {\n this.absolutePosition(overlay, target);\n }\n }\n }\n static relativePosition(element, target) {\n const getClosestRelativeElement = (el) => {\n if (!el)\n return;\n return getComputedStyle(el).getPropertyValue('position') === 'relative' ? el : getClosestRelativeElement(el.parentElement);\n };\n const elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const targetHeight = target.offsetHeight;\n const targetOffset = target.getBoundingClientRect();\n const windowScrollTop = this.getWindowScrollTop();\n const windowScrollLeft = this.getWindowScrollLeft();\n const viewport = this.getViewport();\n const relativeElement = getClosestRelativeElement(element);\n const relativeElementOffset = relativeElement?.getBoundingClientRect() || { top: -1 * windowScrollTop, left: -1 * windowScrollLeft };\n let top, left;\n if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {\n top = targetOffset.top - relativeElementOffset.top - elementDimensions.height;\n element.style.transformOrigin = 'bottom';\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n }\n else {\n top = targetHeight + targetOffset.top - relativeElementOffset.top;\n element.style.transformOrigin = 'top';\n }\n const horizontalOverflow = targetOffset.left + elementDimensions.width - viewport.width;\n const targetLeftOffsetInSpaceOfRelativeElement = targetOffset.left - relativeElementOffset.left;\n if (elementDimensions.width > viewport.width) {\n // element wider then viewport and cannot fit on screen (align at left side of viewport)\n left = (targetOffset.left - relativeElementOffset.left) * -1;\n }\n else if (horizontalOverflow > 0) {\n // element wider then viewport but can be fit on screen (align at right side of viewport)\n left = targetLeftOffsetInSpaceOfRelativeElement - horizontalOverflow;\n }\n else {\n // element fits on screen (align with target)\n left = targetOffset.left - relativeElementOffset.left;\n }\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n static absolutePosition(element, target) {\n const elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const elementOuterHeight = elementDimensions.height;\n const elementOuterWidth = elementDimensions.width;\n const targetOuterHeight = target.offsetHeight;\n const targetOuterWidth = target.offsetWidth;\n const targetOffset = target.getBoundingClientRect();\n const windowScrollTop = this.getWindowScrollTop();\n const windowScrollLeft = this.getWindowScrollLeft();\n const viewport = this.getViewport();\n let top, left;\n if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n top = targetOffset.top + windowScrollTop - elementOuterHeight;\n element.style.transformOrigin = 'bottom';\n if (top < 0) {\n top = windowScrollTop;\n }\n }\n else {\n top = targetOuterHeight + targetOffset.top + windowScrollTop;\n element.style.transformOrigin = 'top';\n }\n if (targetOffset.left + elementOuterWidth > viewport.width)\n left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);\n else\n left = targetOffset.left + windowScrollLeft;\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n static getParents(element, parents = []) {\n return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n static getScrollableParents(element) {\n let scrollableParents = [];\n if (element) {\n let parents = this.getParents(element);\n const overflowRegex = /(auto|scroll)/;\n const overflowCheck = (node) => {\n let styleDeclaration = window['getComputedStyle'](node, null);\n return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\n };\n for (let parent of parents) {\n let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n if (scrollSelectors) {\n let selectors = scrollSelectors.split(',');\n for (let selector of selectors) {\n let el = this.findSingle(parent, selector);\n if (el && overflowCheck(el)) {\n scrollableParents.push(el);\n }\n }\n }\n if (parent.nodeType !== 9 && overflowCheck(parent)) {\n scrollableParents.push(parent);\n }\n }\n }\n return scrollableParents;\n }\n static getHiddenElementOuterHeight(element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n let elementHeight = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementHeight;\n }\n static getHiddenElementOuterWidth(element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n let elementWidth = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementWidth;\n }\n static getHiddenElementDimensions(element) {\n let dimensions = {};\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return dimensions;\n }\n static scrollInView(container, item) {\n let borderTopValue = getComputedStyle(container).getPropertyValue('borderTopWidth');\n let borderTop = borderTopValue ? parseFloat(borderTopValue) : 0;\n let paddingTopValue = getComputedStyle(container).getPropertyValue('paddingTop');\n let paddingTop = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n let containerRect = container.getBoundingClientRect();\n let itemRect = item.getBoundingClientRect();\n let offset = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n let scroll = container.scrollTop;\n let elementHeight = container.clientHeight;\n let itemHeight = this.getOuterHeight(item);\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n }\n else if (offset + itemHeight > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n static fadeIn(element, duration) {\n element.style.opacity = 0;\n let last = +new Date();\n let opacity = 0;\n let tick = function () {\n opacity = +element.style.opacity.replace(',', '.') + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n if (+opacity < 1) {\n (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);\n }\n };\n tick();\n }\n static fadeOut(element, ms) {\n var opacity = 1, interval = 50, duration = ms, gap = interval / duration;\n let fading = setInterval(() => {\n opacity = opacity - gap;\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n element.style.opacity = opacity;\n }, interval);\n }\n static getWindowScrollTop() {\n let doc = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n static getWindowScrollLeft() {\n let doc = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n static matches(element, selector) {\n var p = Element.prototype;\n var f = p['matches'] ||\n p.webkitMatchesSelector ||\n p['mozMatchesSelector'] ||\n p['msMatchesSelector'] ||\n function (s) {\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n return f.call(element, selector);\n }\n static getOuterWidth(el, margin) {\n let width = el.offsetWidth;\n if (margin) {\n let style = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n return width;\n }\n static getHorizontalPadding(el) {\n let style = getComputedStyle(el);\n return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n }\n static getHorizontalMargin(el) {\n let style = getComputedStyle(el);\n return parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n static innerWidth(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n static width(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n static getInnerHeight(el) {\n let height = el.offsetHeight;\n let style = getComputedStyle(el);\n height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n return height;\n }\n static getOuterHeight(el, margin) {\n let height = el.offsetHeight;\n if (margin) {\n let style = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n return height;\n }\n static getHeight(el) {\n let height = el.offsetHeight;\n let style = getComputedStyle(el);\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n return height;\n }\n static getWidth(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n return width;\n }\n static getViewport() {\n let win = window, d = document, e = d.documentElement, g = d.getElementsByTagName('body')[0], w = win.innerWidth || e.clientWidth || g.clientWidth, h = win.innerHeight || e.clientHeight || g.clientHeight;\n return { width: w, height: h };\n }\n static getOffset(el) {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)\n };\n }\n static replaceElementWith(element, replacementElement) {\n let parentNode = element.parentNode;\n if (!parentNode)\n throw `Can't replace element`;\n return parentNode.replaceChild(replacementElement, element);\n }\n static getUserAgent() {\n if (navigator && this.isClient()) {\n return navigator.userAgent;\n }\n }\n static isIE() {\n var ua = window.navigator.userAgent;\n var msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return true;\n }\n var trident = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return true;\n }\n var edge = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return true;\n }\n // other browser\n return false;\n }\n static isIOS() {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n }\n static isAndroid() {\n return /(android)/i.test(navigator.userAgent);\n }\n static isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n static appendChild(element, target) {\n if (this.isElement(target))\n target.appendChild(element);\n else if (target && target.el && target.el.nativeElement)\n target.el.nativeElement.appendChild(element);\n else\n throw 'Cannot append ' + target + ' to ' + element;\n }\n static removeChild(element, target) {\n if (this.isElement(target))\n target.removeChild(element);\n else if (target.el && target.el.nativeElement)\n target.el.nativeElement.removeChild(element);\n else\n throw 'Cannot remove ' + element + ' from ' + target;\n }\n static removeElement(element) {\n if (!('remove' in Element.prototype))\n element.parentNode.removeChild(element);\n else\n element.remove();\n }\n static isElement(obj) {\n return typeof HTMLElement === 'object' ? obj instanceof HTMLElement : obj && typeof obj === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string';\n }\n static calculateScrollbarWidth(el) {\n if (el) {\n let style = getComputedStyle(el);\n return el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth);\n }\n else {\n if (this.calculatedScrollbarWidth !== null)\n return this.calculatedScrollbarWidth;\n let scrollDiv = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n this.calculatedScrollbarWidth = scrollbarWidth;\n return scrollbarWidth;\n }\n }\n static calculateScrollbarHeight() {\n if (this.calculatedScrollbarHeight !== null)\n return this.calculatedScrollbarHeight;\n let scrollDiv = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n let scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n document.body.removeChild(scrollDiv);\n this.calculatedScrollbarWidth = scrollbarHeight;\n return scrollbarHeight;\n }\n static invokeElementMethod(element, methodName, args) {\n element[methodName].apply(element, args);\n }\n static clearSelection() {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n }\n else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n }\n else if (document['selection'] && document['selection'].empty) {\n try {\n document['selection'].empty();\n }\n catch (error) {\n //ignore IE bug\n }\n }\n }\n static getBrowser() {\n if (!this.browser) {\n let matched = this.resolveUserAgent();\n this.browser = {};\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser['version'] = matched.version;\n }\n if (this.browser['chrome']) {\n this.browser['webkit'] = true;\n }\n else if (this.browser['webkit']) {\n this.browser['safari'] = true;\n }\n }\n return this.browser;\n }\n static resolveUserAgent() {\n let ua = navigator.userAgent.toLowerCase();\n let match = /(chrome)[ \\/]([\\w.]+)/.exec(ua) || /(webkit)[ \\/]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || (ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua)) || [];\n return {\n browser: match[1] || '',\n version: match[2] || '0'\n };\n }\n static isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n else {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n }\n }\n static isHidden(element) {\n return !element || element.offsetParent === null;\n }\n static isVisible(element) {\n return element && element.offsetParent != null;\n }\n static isExist(element) {\n return element !== null && typeof element !== 'undefined' && element.nodeName && element.parentNode;\n }\n static focus(element, options) {\n element && document.activeElement !== element && element.focus(options);\n }\n static getFocusableSelectorString(selector = '') {\n return `button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n [href][clientHeight][clientWidth]:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n input:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n select:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n textarea:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n [tabIndex]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n [contenteditable]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n .p-inputtext:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n .p-button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector}`;\n }\n static getFocusableElements(element, selector = '') {\n let focusableElements = this.find(element, this.getFocusableSelectorString(selector));\n let visibleFocusableElements = [];\n for (let focusableElement of focusableElements) {\n const computedStyle = getComputedStyle(focusableElement);\n if (this.isVisible(focusableElement) && computedStyle.display != 'none' && computedStyle.visibility != 'hidden')\n visibleFocusableElements.push(focusableElement);\n }\n return visibleFocusableElements;\n }\n static getFocusableElement(element, selector = '') {\n let focusableElement = this.findSingle(element, this.getFocusableSelectorString(selector));\n if (focusableElement) {\n const computedStyle = getComputedStyle(focusableElement);\n if (this.isVisible(focusableElement) && computedStyle.display != 'none' && computedStyle.visibility != 'hidden')\n return focusableElement;\n }\n return null;\n }\n static getFirstFocusableElement(element, selector) {\n const focusableElements = this.getFocusableElements(element, selector);\n return focusableElements.length > 0 ? focusableElements[0] : null;\n }\n static getLastFocusableElement(element, selector) {\n const focusableElements = this.getFocusableElements(element, selector);\n return focusableElements.length > 0 ? focusableElements[focusableElements.length - 1] : null;\n }\n static getNextFocusableElement(element, reverse = false) {\n const focusableElements = DomHandler.getFocusableElements(element);\n let index = 0;\n if (focusableElements && focusableElements.length > 0) {\n const focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n if (reverse) {\n if (focusedIndex == -1 || focusedIndex === 0) {\n index = focusableElements.length - 1;\n }\n else {\n index = focusedIndex - 1;\n }\n }\n else if (focusedIndex != -1 && focusedIndex !== focusableElements.length - 1) {\n index = focusedIndex + 1;\n }\n }\n return focusableElements[index];\n }\n static generateZIndex() {\n this.zindex = this.zindex || 999;\n return ++this.zindex;\n }\n static getSelection() {\n if (window.getSelection)\n return window.getSelection().toString();\n else if (document.getSelection)\n return document.getSelection().toString();\n else if (document['selection'])\n return document['selection'].createRange().text;\n return null;\n }\n static getTargetElement(target, el) {\n if (!target)\n return null;\n switch (target) {\n case 'document':\n return document;\n case 'window':\n return window;\n case '@next':\n return el?.nextElementSibling;\n case '@prev':\n return el?.previousElementSibling;\n case '@parent':\n return el?.parentElement;\n case '@grandparent':\n return el?.parentElement.parentElement;\n default:\n const type = typeof target;\n if (type === 'string') {\n return document.querySelector(target);\n }\n else if (type === 'object' && target.hasOwnProperty('nativeElement')) {\n return this.isExist(target.nativeElement) ? target.nativeElement : undefined;\n }\n const isFunction = (obj) => !!(obj && obj.constructor && obj.call && obj.apply);\n const element = isFunction(target) ? target() : target;\n return (element && element.nodeType === 9) || this.isExist(element) ? element : null;\n }\n }\n static isClient() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n }\n static getAttribute(element, name) {\n if (element) {\n const value = element.getAttribute(name);\n if (!isNaN(value)) {\n return +value;\n }\n if (value === 'true' || value === 'false') {\n return value === 'true';\n }\n return value;\n }\n return undefined;\n }\n static calculateBodyScrollbarWidth() {\n return window.innerWidth - document.documentElement.offsetWidth;\n }\n static blockBodyScroll(className = 'p-overflow-hidden') {\n document.body.style.setProperty('--scrollbar-width', this.calculateBodyScrollbarWidth() + 'px');\n this.addClass(document.body, className);\n }\n static unblockBodyScroll(className = 'p-overflow-hidden') {\n document.body.style.removeProperty('--scrollbar-width');\n this.removeClass(document.body, className);\n }\n}\n\nclass ConnectedOverlayScrollHandler {\n element;\n listener;\n scrollableParents;\n constructor(element, listener = () => { }) {\n this.element = element;\n this.listener = listener;\n }\n bindScrollListener() {\n this.scrollableParents = DomHandler.getScrollableParents(this.element);\n for (let i = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].addEventListener('scroll', this.listener);\n }\n }\n unbindScrollListener() {\n if (this.scrollableParents) {\n for (let i = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].removeEventListener('scroll', this.listener);\n }\n }\n }\n destroy() {\n this.unbindScrollListener();\n this.element = null;\n this.listener = null;\n this.scrollableParents = null;\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ConnectedOverlayScrollHandler, DomHandler };\n\n","import * as i0 from '@angular/core';\nimport { booleanAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\nimport { ObjectUtils } from 'primeng/utils';\nconst _c0 = [\"*\"];\nclass BaseIcon {\n label;\n spin = false;\n styleClass;\n role;\n ariaLabel;\n ariaHidden;\n ngOnInit() {\n this.getAttributes();\n }\n getAttributes() {\n const isLabelEmpty = ObjectUtils.isEmpty(this.label);\n this.role = !isLabelEmpty ? 'img' : undefined;\n this.ariaLabel = !isLabelEmpty ? this.label : undefined;\n this.ariaHidden = isLabelEmpty;\n }\n getClassNames() {\n return `p-icon ${this.styleClass ? this.styleClass + ' ' : ''}${this.spin ? 'p-icon-spin' : ''}`;\n }\n static ɵfac = function BaseIcon_Factory(t) {\n return new (t || BaseIcon)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: BaseIcon,\n selectors: [[\"ng-component\"]],\n hostAttrs: [1, \"p-element\", \"p-icon-wrapper\"],\n inputs: {\n label: \"label\",\n spin: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"spin\", \"spin\", booleanAttribute],\n styleClass: \"styleClass\"\n },\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function BaseIcon_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BaseIcon, [{\n type: Component,\n args: [{\n template: `