{"version":3,"file":"vendor-91c40cd8.js","mappings":"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","sources":["webpack://@twenty20solutions/app/./node_modules/@petrocloud/angular-sails/angular-sails.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/math.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/enums.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/format.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/validateModifiers.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/createPopper.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/uniqueBy.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/within.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://@twenty20solutions/app/./node_modules/@popperjs/core/lib/popper.js","webpack://@twenty20solutions/app/./node_modules/native-promise-only/lib/npo.src.js","webpack://@twenty20solutions/app/../../../webpack/universalModuleDefinition","webpack://@twenty20solutions/app/../../../webpack/bootstrap f774e40ea176f23445d6","webpack://@twenty20solutions/app/../../../external \"angular\"","webpack://@twenty20solutions/app/../../../src/core/index.ts","webpack://@twenty20solutions/app/../../../src/browser/index.ts","webpack://@twenty20solutions/app/../../../src/core/data/index.ts","webpack://@twenty20solutions/app/../../../src/core/ngTableDefaults.ts","webpack://@twenty20solutions/app/../../../src/core/ngTableEventsChannel.ts","webpack://@twenty20solutions/app/../../../src/core/ngTableParams.ts","webpack://@twenty20solutions/app/../../../src/core/ngTableSettings.ts","webpack://@twenty20solutions/app/../../../src/core/util.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTable.directive.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTableColumn.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTableColumnsBinding.directive.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTableController.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTableDynamic.directive.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTableFilterConfig.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTableFilterRow.directive.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTableFilterRowController.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTableGroupRow.directive.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTableGroupRowController.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTablePagination.directive.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTableSelectFilterDs.directive.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTableSorterRow.directive.ts","webpack://@twenty20solutions/app/../../../src/browser/ngTableSorterRowController.ts","webpack://@twenty20solutions/app/../../../src/core/data/ngTableDefaultGetData.ts","webpack://@twenty20solutions/app/../../../src/core/filtering/index.ts","webpack://@twenty20solutions/app/../../../src/core/grouping/index.ts","webpack://@twenty20solutions/app/../../../src/core/grouping/ngTableDefaultGetGroups.ts","webpack://@twenty20solutions/app/../../../src/core/grouping/publicExports.ts","webpack://@twenty20solutions/app/../../../src/browser/filterRow.html","webpack://@twenty20solutions/app/../../../src/browser/filters/number.html","webpack://@twenty20solutions/app/../../../src/browser/filters/select-multiple.html","webpack://@twenty20solutions/app/../../../src/browser/filters/select.html","webpack://@twenty20solutions/app/../../../src/browser/filters/text.html","webpack://@twenty20solutions/app/../../../src/browser/groupRow.html","webpack://@twenty20solutions/app/../../../src/browser/header.html","webpack://@twenty20solutions/app/../../../src/browser/pager.html","webpack://@twenty20solutions/app/../../../src/browser/sorterRow.html","webpack://@twenty20solutions/app/../../../index.ts","webpack://@twenty20solutions/app/./node_modules/ngx-bootstrap/__ivy_ngcc__/pagination/bundles/ngx-bootstrap/pagination/pagination.config.ts","webpack://@twenty20solutions/app/./node_modules/ngx-bootstrap/__ivy_ngcc__/pagination/bundles/ngx-bootstrap/pagination/pager.component.ts","webpack://@twenty20solutions/app/./node_modules/ngx-bootstrap/__ivy_ngcc__/pagination/bundles/ngx-bootstrap/pagination/pagination.component.ts","webpack://@twenty20solutions/app/./node_modules/ngx-bootstrap/__ivy_ngcc__/pagination/bundles/ngx-bootstrap/pagination/pagination.module.ts","webpack://@twenty20solutions/app/./node_modules/overlapping-marker-spiderfier/lib/oms.js","webpack://@twenty20solutions/app/./node_modules/parseqs/index.js","webpack://@twenty20solutions/app/./node_modules/parseuri/index.js","webpack://@twenty20solutions/app/./node_modules/ngx-window-token/fesm2020/ngx-window-token.mjs","webpack://@twenty20solutions/app/./node_modules/ngx-clipboard/fesm2020/ngx-clipboard.mjs","webpack://@twenty20solutions/app/./node_modules/ngx-smart-modal/fesm2020/ngx-smart-modal.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-accordion.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-api.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-button.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-calendar.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-confirmpopup.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-contextmenu.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-dom.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-autofocus.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-dropdown.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-progressbar.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-fileupload.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-galleria.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-gmap.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-inputnumber.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-inputswitch.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-inputtext.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-listbox.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-messages.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-multiselect.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-overlay.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-paginator.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-progressspinner.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-ripple.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-scroller.mjs","webpack://@twenty20solutions/app/./node_modules/primeng/fesm2020/primeng-selectbutton.mjs"],"sourcesContent":["(function (angular, io) {\n'use strict'/*global angular */\nangular.module('ngSails', ['ng']);\n\n/*global angular, io */\n(function(angular, io) {\n 'use strict';\n if (io.sails) {\n io.sails.autoConnect = false;\n }\n\n // copied from angular\n function parseHeaders(headers) {\n var parsed = {},\n key, val, i;\n if (!headers) return parsed;\n angular.forEach(headers.split('\\n'), function(line) {\n i = line.indexOf(':');\n key = lowercase(trim(line.substr(0, i)));\n val = trim(line.substr(i + 1));\n if (key) {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n }\n\n function trim(value) {\n return angular.isString(value) ? value.trim() : value;\n }\n\n function isPromiseLike(obj) {\n return obj && angular.isFunction(obj.then);\n }\n\n // copied from angular\n function headersGetter(headers) {\n var headersObj = angular.isObject(headers) ? headers : undefined;\n return function(name) {\n if (!headersObj) headersObj = parseHeaders(headers);\n if (name) {\n var value = headersObj[lowercase(name)];\n if (value === void 0) {\n value = null;\n }\n return value;\n }\n return headersObj;\n };\n }\n\n angular.module('ngSails').provider('$sails', function() {\n var provider = this;\n\n this.httpVerbs = ['get', 'post', 'put', 'patch', 'delete'];\n\n this.eventNames = ['on', 'off'];\n\n this.url = undefined;\n\n this.urlPrefix = '';\n\n this.config = {\n transports: ['polling', 'websocket'],\n useCORSRouteToGetCookie: false\n };\n\n this.debug = false;\n\n // like https://docs.angularjs.org/api/ng/service/$http#interceptors\n // but with sails.io arguments\n var interceptorFactories = this.interceptors = [\n /*function($injectables) {\n return {\n request: function(config) {},\n response: function(response) {},\n requestError: function(rejection) {},\n responseError: function(rejection) {}\n };\n }*/\n ];\n\n /*@ngInject*/\n this.$get = [\"$q\", \"$injector\", \"$rootScope\", \"$log\", \"$timeout\", function($q, $injector, $rootScope, $log, $timeout) {\n var usingExistingSocket = Boolean(window.$sails);\n var socket = usingExistingSocket\n ? window.$sails\n : window.io.sails.connect(provider.url, provider.config);\n\n // TODO: separate out interceptors into its own file (and provider?).\n // build interceptor chain\n var reversedInterceptors = [];\n angular.forEach(interceptorFactories, function(interceptorFactory) {\n reversedInterceptors.unshift(\n angular.isString(interceptorFactory) ?\n $injector.get(interceptorFactory) : $injector.invoke(\n interceptorFactory)\n );\n });\n\n // Send the request using the socket\n function serverRequest(config) {\n var defer = $q.defer();\n if (provider.debug) $log.info(\n '$sails ' + config.method + ' ' + config.url, config.data || '');\n\n if (config.timeout > 0) {\n $timeout(timeoutRequest, config.timeout);\n } else if (isPromiseLike(config.timeout)) {\n config.timeout.then(timeoutRequest);\n }\n\n socket['legacy_' + config.method.toLowerCase()](config.url, config.data,\n serverResponse);\n\n function timeoutRequest() {\n serverResponse(null);\n }\n\n function serverResponse(result, jwr) {\n\n if (!jwr) {\n jwr = {\n body: result,\n headers: result.headers || {},\n statusCode: result.statusCode || result.status || 0,\n error: (function() {\n if (this.statusCode < 200 || this.statusCode >= 400) {\n return this.body || this.statusCode;\n }\n })()\n };\n }\n\n jwr.data = jwr.body; // $http compat\n jwr.status = jwr.statusCode; // $http compat\n jwr.socket = socket;\n jwr.url = config.url;\n jwr.method = config.method;\n jwr.config = config.config;\n if (jwr.error) {\n if (provider.debug) $log.warn(\n '$sails response ' + jwr.statusCode + ' ' + config.url, jwr);\n defer.reject(jwr);\n } else {\n if (provider.debug) $log.info('$sails response ' + config.url, jwr);\n defer.resolve(jwr);\n }\n }\n\n return defer.promise;\n }\n\n function promisify(methodName) {\n socket['legacy_' + methodName] = socket[methodName];\n\n socket[methodName] = function(url, data, config) {\n\n var chain = [serverRequest, undefined];\n\n //TODO: more compatible with $http methods and config\n\n var promise = $q.when({\n url: provider.urlPrefix + url,\n data: data,\n socket: socket,\n config: config || {},\n method: methodName.toUpperCase()\n });\n\n // apply interceptors\n angular.forEach(reversedInterceptors, function(interceptor) {\n if (interceptor.request || interceptor.requestError) {\n chain.unshift(interceptor.request, interceptor.requestError);\n }\n if (interceptor.response || interceptor.responseError) {\n chain.push(interceptor.response, interceptor.responseError);\n }\n });\n\n while (chain.length) {\n var thenFn = chain.shift();\n var rejectFn = chain.shift();\n\n promise = promise.then(thenFn, rejectFn);\n }\n\n // be $http compatible\n promise.success = function(fn) {\n promise.then(function(jwr) {\n fn(jwr.body, jwr.statusCode, headersGetter(jwr.headers), jwr);\n });\n return promise;\n };\n promise.error = function(fn) {\n promise.then(null, function(jwr) {\n fn(jwr.body, jwr.statusCode, headersGetter(jwr.headers), jwr);\n });\n return promise;\n };\n\n return promise;\n };\n }\n\n function wrapEvent(eventName) {\n if (socket[eventName] || socket._raw && socket._raw[eventName]) {\n socket['legacy_' + eventName] = socket[eventName] ||\n socket._raw[eventName];\n socket[eventName] = function(event, cb) {\n var wrapEventFn = null;\n if (eventName == 'off') {\n return socket['legacy_' + eventName](event, cb);\n } else if (cb !== null && angular.isFunction(cb)) {\n socket['legacy_' + eventName](event,\n wrapEventFn = function(result) {\n $rootScope.$evalAsync(cb.bind(socket, result));\n });\n }\n return wrapEventFn;\n };\n }\n }\n\n if (!usingExistingSocket) {\n socket.connect = function(opts) {\n if (!socket.isConnected()) {\n var _opts = opts || {};\n _opts = angular.extend({}, provider.config, opts);\n\n // These are the options sails.io.js actually sets when making the connection.\n socket.useCORSRouteToGetCookie = _opts.useCORSRouteToGetCookie;\n socket.url = _opts.url || provider.url;\n socket.multiplex = _opts.multiplex;\n\n socket._connect();\n }\n return socket;\n };\n\n // sails.io.js doesn't have `once`, need to access it through `._raw`\n socket.once = function(event, cb) {\n if (cb !== null && angular.isFunction(cb)) {\n if (socket._raw) {\n socket._raw.once(event, function(result) {\n $rootScope.$evalAsync(cb.bind(socket, result));\n });\n }\n }\n };\n\n angular.forEach(provider.httpVerbs, promisify);\n angular.forEach(provider.eventNames, wrapEvent);\n\n /**\n * Update a model on sails pushes\n * @param {String} name Sails model name\n * @param {Array} models Array with model objects\n */\n socket.$modelUpdater = function(name, models) {\n\n var update = function(message) {\n\n $rootScope.$evalAsync(function() {\n var i;\n\n switch (message.verb) {\n\n case 'created':\n // create new model item\n models.push(message.data);\n break;\n\n case 'updated':\n var obj;\n for (i = 0; i < models.length; i++) {\n if (models[i].id === message.id) {\n obj = models[i];\n break;\n }\n }\n\n // cant update if the angular-model does not have the item and the\n // sails message does not give us the previous record\n if (!obj && !message.previous) return;\n\n if (!obj) {\n // sails has given us the previous record, create it in our model\n obj = message.previous;\n models.push(obj);\n }\n\n // update the model item\n angular.extend(obj, message.data);\n break;\n\n case 'destroyed':\n for (i = 0; i < models.length; i++) {\n if (models[i].id === message.id) {\n models.splice(i, 1);\n break;\n }\n }\n break;\n }\n });\n };\n\n socket.legacy_on(name, update);\n\n return function() {\n socket.legacy_off(name, update);\n };\n };\n window.$sails = socket;\n }\n return socket;\n }];\n this.$get.$inject = [\"$q\", \"$injector\", \"$rootScope\", \"$log\", \"$timeout\"];\n });\n}(angular, io));\n}(angular, io));","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function format(str) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return [].concat(args).reduce(function (p, c) {\n return p.replace(/%s/, c);\n }, str);\n}","import format from \"./format.js\";\nimport { modifierPhases } from \"../enums.js\";\nvar INVALID_MODIFIER_ERROR = 'Popper: modifier \"%s\" provided an invalid %s property, expected %s but got %s';\nvar MISSING_DEPENDENCY_ERROR = 'Popper: modifier \"%s\" requires \"%s\", but \"%s\" modifier is not available';\nvar VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];\nexport default function validateModifiers(modifiers) {\n modifiers.forEach(function (modifier) {\n [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)`\n .filter(function (value, index, self) {\n return self.indexOf(value) === index;\n }).forEach(function (key) {\n switch (key) {\n case 'name':\n if (typeof modifier.name !== 'string') {\n console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '\"name\"', '\"string\"', \"\\\"\" + String(modifier.name) + \"\\\"\"));\n }\n\n break;\n\n case 'enabled':\n if (typeof modifier.enabled !== 'boolean') {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"enabled\"', '\"boolean\"', \"\\\"\" + String(modifier.enabled) + \"\\\"\"));\n }\n\n break;\n\n case 'phase':\n if (modifierPhases.indexOf(modifier.phase) < 0) {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"phase\"', \"either \" + modifierPhases.join(', '), \"\\\"\" + String(modifier.phase) + \"\\\"\"));\n }\n\n break;\n\n case 'fn':\n if (typeof modifier.fn !== 'function') {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"fn\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n }\n\n break;\n\n case 'effect':\n if (modifier.effect != null && typeof modifier.effect !== 'function') {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"effect\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n }\n\n break;\n\n case 'requires':\n if (modifier.requires != null && !Array.isArray(modifier.requires)) {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requires\"', '\"array\"', \"\\\"\" + String(modifier.requires) + \"\\\"\"));\n }\n\n break;\n\n case 'requiresIfExists':\n if (!Array.isArray(modifier.requiresIfExists)) {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requiresIfExists\"', '\"array\"', \"\\\"\" + String(modifier.requiresIfExists) + \"\\\"\"));\n }\n\n break;\n\n case 'options':\n case 'data':\n break;\n\n default:\n console.error(\"PopperJS: an invalid property has been provided to the \\\"\" + modifier.name + \"\\\" modifier, valid properties are \" + VALID_PROPERTIES.map(function (s) {\n return \"\\\"\" + s + \"\\\"\";\n }).join(', ') + \"; but \\\"\" + key + \"\\\" was provided.\");\n }\n\n modifier.requires && modifier.requires.forEach(function (requirement) {\n if (modifiers.find(function (mod) {\n return mod.name === requirement;\n }) == null) {\n console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));\n }\n });\n });\n });\n}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","export default function uniqueBy(arr, fn) {\n var identifiers = new Set();\n return arr.filter(function (item) {\n var identifier = fn(item);\n\n if (!identifiers.has(identifier)) {\n identifiers.add(identifier);\n return true;\n }\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/*! Native Promise Only\n v0.8.1 (c) Kyle Simpson\n MIT License: http://getify.mit-license.org\n*/\n\n(function UMD(name,context,definition){\n\t// special form of UMD for polyfilling across evironments\n\tcontext[name] = context[name] || definition();\n\tif (typeof module != \"undefined\" && module.exports) { module.exports = context[name]; }\n\telse if (typeof define == \"function\" && define.amd) { define(function $AMD$(){ return context[name]; }); }\n})(\"Promise\",typeof global != \"undefined\" ? global : this,function DEF(){\n\t/*jshint validthis:true */\n\t\"use strict\";\n\n\tvar builtInProp, cycle, scheduling_queue,\n\t\tToString = Object.prototype.toString,\n\t\ttimer = (typeof setImmediate != \"undefined\") ?\n\t\t\tfunction timer(fn) { return setImmediate(fn); } :\n\t\t\tsetTimeout\n\t;\n\n\t// dammit, IE8.\n\ttry {\n\t\tObject.defineProperty({},\"x\",{});\n\t\tbuiltInProp = function builtInProp(obj,name,val,config) {\n\t\t\treturn Object.defineProperty(obj,name,{\n\t\t\t\tvalue: val,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: config !== false\n\t\t\t});\n\t\t};\n\t}\n\tcatch (err) {\n\t\tbuiltInProp = function builtInProp(obj,name,val) {\n\t\t\tobj[name] = val;\n\t\t\treturn obj;\n\t\t};\n\t}\n\n\t// Note: using a queue instead of array for efficiency\n\tscheduling_queue = (function Queue() {\n\t\tvar first, last, item;\n\n\t\tfunction Item(fn,self) {\n\t\t\tthis.fn = fn;\n\t\t\tthis.self = self;\n\t\t\tthis.next = void 0;\n\t\t}\n\n\t\treturn {\n\t\t\tadd: function add(fn,self) {\n\t\t\t\titem = new Item(fn,self);\n\t\t\t\tif (last) {\n\t\t\t\t\tlast.next = item;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfirst = item;\n\t\t\t\t}\n\t\t\t\tlast = item;\n\t\t\t\titem = void 0;\n\t\t\t},\n\t\t\tdrain: function drain() {\n\t\t\t\tvar f = first;\n\t\t\t\tfirst = last = cycle = void 0;\n\n\t\t\t\twhile (f) {\n\t\t\t\t\tf.fn.call(f.self);\n\t\t\t\t\tf = f.next;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t})();\n\n\tfunction schedule(fn,self) {\n\t\tscheduling_queue.add(fn,self);\n\t\tif (!cycle) {\n\t\t\tcycle = timer(scheduling_queue.drain);\n\t\t}\n\t}\n\n\t// promise duck typing\n\tfunction isThenable(o) {\n\t\tvar _then, o_type = typeof o;\n\n\t\tif (o != null &&\n\t\t\t(\n\t\t\t\to_type == \"object\" || o_type == \"function\"\n\t\t\t)\n\t\t) {\n\t\t\t_then = o.then;\n\t\t}\n\t\treturn typeof _then == \"function\" ? _then : false;\n\t}\n\n\tfunction notify() {\n\t\tfor (var i=0; i 0) {\n\t\t\t\t\tschedule(notify,self);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\treject.call(new MakeDefWrapper(self),err);\n\t\t}\n\t}\n\n\tfunction reject(msg) {\n\t\tvar self = this;\n\n\t\t// already triggered?\n\t\tif (self.triggered) { return; }\n\n\t\tself.triggered = true;\n\n\t\t// unwrap\n\t\tif (self.def) {\n\t\t\tself = self.def;\n\t\t}\n\n\t\tself.msg = msg;\n\t\tself.state = 2;\n\t\tif (self.chain.length > 0) {\n\t\t\tschedule(notify,self);\n\t\t}\n\t}\n\n\tfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n\t\tfor (var idx=0; idx\n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IParamValues } from './ngTableParams';\nimport { ISettings } from './ngTableSettings';\n\n\n/**\n * An angular value object that allow for overriding of the initial default values used when constructing\n * an instance of `NgTableParams`\n */\nexport interface IDefaults {\n params?: IParamValues;\n settings?: ISettings\n}\n\n/**\n * Default values for ngTable\n */\nexport let ngTableDefaults : IDefaults = {\n params: {},\n settings: {}\n};\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableDefaults.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IScope } from 'angular';\nimport { DataResult, IDefaultGetData } from './data';\nimport { IPageButton } from './paging';\nimport { InternalTableParams, NgTableParams } from './ngTableParams';\n\n\n/**\n * Alias for the types that can be used to filter events\n */\nexport type EventSelector = NgTableParams | IEventSelectorFunc\n\n/**\n * Signature of the event hander that is registered to receive the *afterCreated* event\n */\nexport interface IAfterCreatedListener {\n (publisher: NgTableParams): any\n}\n/**\n * Signature of the event hander that is registered to receive the *afterReloadData* event\n */\nexport interface IAfterReloadDataListener {\n (publisher: NgTableParams, newData: DataResult[], oldData: DataResult[]): any\n}\n/**\n * Signature of the event hander that is registered to receive the *datasetChanged* event\n */\nexport interface IDatasetChangedListener {\n (publisher: NgTableParams, newDataset: T[], oldDataset: T[]): any\n}\n/**\n * Signature of the function used to filter the events to only specific instances of \n * {@link NgTableParams}\n */\nexport interface IEventSelectorFunc {\n (publisher: NgTableParams): boolean\n}\n/**\n * Signature of the event hander that is registered to receive the *pagesChanged* event\n */\nexport interface IPagesChangedListener {\n (publisher: NgTableParams, newPages: IPageButton[], oldPages: IPageButton[]): any\n}\n/**\n* Signature of the event hander that is registered to receive the *afterDataFiltered* event\n*/\nexport interface IAfterDataFilteredListener {\n (publisher: NgTableParams, newData: DataResult[] ): any\n}\n/**\n* Signature of the event hander that is registered to receive the *afterDataSorted* event\n*/\nexport interface IAfterDataSortedListener {\n (publisher: NgTableParams, newData: DataResult[] ): any\n}\n\n/**\n * Signature of the function used to explicitly unregister an event handler so that it stops\n * receiving notifications\n */\nexport interface IUnregistrationFunc {\n (): void\n}\n\n/**\n * Strongly typed pub/sub for {@link NgTableParams}\n *\n * Supported events:\n *\n * * afterCreated - raised when a new instance of {@link NgTableParams} has finished being constructed\n * * afterReloadData - raised when the {@link NgTableParams} `reload` method has finished loading new data\n * * datasetChanged - raised when {@link ISettings} `dataset` receives a new data array\n * * pagesChanged - raised when a new pages array has been generated\n */\nexport interface NgTableEventsChannel {\n /**\n * Subscribe to receive notification whenever a new `NgTableParams` instance has finished being constructed.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterCreated(listener: IAfterCreatedListener, scope: IScope, eventFilter?: IEventSelectorFunc): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a new `NgTableParams` instance has finished being constructed.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterCreated(listener: IAfterCreatedListener, eventFilter?: IEventSelectorFunc): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the `reload` method of an `NgTableParams` instance has successfully executed\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterReloadData(listener: IAfterReloadDataListener, scope: IScope, eventFilter?: EventSelector): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the `reload` method of an `NgTableParams` instance has successfully executed\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterReloadData(listener: IAfterReloadDataListener, eventFilter?: EventSelector): IUnregistrationFunc;\n\n /**\n * Subscribe to receive notification whenever a new data rows *array* is supplied as a `settings` value to a `NgTableParams` instance.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onDatasetChanged(listener: IDatasetChangedListener, scope: IScope, eventFilter?: EventSelector): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a new data rows *array* is supplied as a `settings` value to a `NgTableParams` instance.\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onDatasetChanged(listener: IDatasetChangedListener, eventFilter?: EventSelector): IUnregistrationFunc;\n\n /**\n * Subscribe to receive notification whenever the paging buttons for an `NgTableParams` instance change\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called. Supply a\n * `scope` to have angular automatically unregister the listener when the `scope` is destroyed.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onPagesChanged(listener: IPagesChangedListener, scope: IScope, eventFilter?: EventSelector): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever the paging buttons for an `NgTableParams` instance change\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `NgTableParams` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onPagesChanged(listener: IPagesChangedListener, eventFilter?: EventSelector): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance filters data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `IDefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataFiltered(listener: IAfterDataFilteredListener, scope: IScope, eventFilter?: EventSelector ): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance filters data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `IDefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataFiltered(listener: IAfterDataFilteredListener, eventFilter?: EventSelector ): IUnregistrationFunc; \n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance orders data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param scope the angular `$scope` that will limit the lifetime of the event subscription\n * @param eventFilter either the specific `IDefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataSorted(listener: IAfterDataSortedListener, scope: IScope, eventFilter?: EventSelector ): IUnregistrationFunc;\n /**\n * Subscribe to receive notification whenever a `ngTableDefaultGetData` instance orders data\n * Optionally supply an `eventFilter` to restrict which events that should trigger the `listener` to be called.\n *\n * @param listener the function that will be called when the event fires\n * @param eventFilter either the specific `IDefaultGetData` instance you want to receive events for or a predicate function that should return true to receive the event\n * @return a unregistration function that when called will unregister the `listener`\n */\n onAfterDataSorted(listener: IAfterDataSortedListener, eventFilter?: EventSelector ): IUnregistrationFunc;\n\n\n publishAfterCreated(publisher: NgTableParams): void;\n publishAfterReloadData(publisher: NgTableParams, newData: T[], oldData: T[]): void;\n publishDatasetChanged(publisher: NgTableParams, newDataset: T[], oldDataset: T[]): void;\n publishPagesChanged(publisher: NgTableParams, newPages: IPageButton[], oldPages: IPageButton[]): void;\n publishAfterDataFiltered(publisher: NgTableParams, newData: T[]): void;\n publishAfterDataSorted(params: NgTableParams, newData: T[]): void;\n}\n\nexport class NgTableEventsChannel {\n static $inject = ['$rootScope'];\n constructor(private $rootScope: ng1.IRootScopeService) {\n let events = this;\n events = this.addTableParamsEvent('afterCreated', events);\n events = this.addTableParamsEvent('afterReloadData', events);\n events = this.addTableParamsEvent('datasetChanged', events);\n events = this.addTableParamsEvent('pagesChanged', events);\n events = this.addTableParamsEvent('afterDataFiltered', events);\n events = this.addTableParamsEvent('afterDataSorted', events);\n }\n private addTableParamsEvent(eventName: string, target: {}) {\n const fnName = eventName.charAt(0).toUpperCase() + eventName.substring(1);\n const event = {\n ['on' + fnName]: this.createEventSubscriptionFn(eventName),\n ['publish' + fnName]: this.createPublishEventFn(eventName)\n };\n return ng1.extend(target, event);\n }\n private createPublishEventFn(eventName: string) {\n return (...args: any[]) => {\n this.$rootScope.$broadcast('ngTable:' + eventName, ...args);\n }\n }\n private createEventSubscriptionFn(eventName: string) {\n\n return (\n handler: (...args: any[]) => void,\n eventSelectorOrScope: EventSelector | ng1.IScope,\n eventSelector?: EventSelector) => {\n\n let actualEvtSelector: (publisher: NgTableParams) => boolean;\n let scope: ng1.IScope = this.$rootScope;\n\n if (isScopeLike(eventSelectorOrScope)) {\n scope = eventSelectorOrScope;\n actualEvtSelector = createEventSelectorFn(eventSelector);\n } else {\n actualEvtSelector = createEventSelectorFn(eventSelectorOrScope);\n }\n\n return scope.$on('ngTable:' + eventName, function (event: ng1.IAngularEvent, params: InternalTableParams, ...eventArgs: any[]) {\n // don't send events published by the internal NgTableParams created by ngTableController\n if (params.isNullInstance) return;\n\n const fnArgs = [params].concat(eventArgs);\n if (actualEvtSelector.apply(this, fnArgs)) {\n handler.apply(this, fnArgs);\n }\n });\n }\n\n function createEventSelectorFn(eventSelector: EventSelector): (publisher: NgTableParams) => boolean {\n if (!eventSelector) {\n return (publisher: NgTableParams) => true;\n } else if (isEventSelectorFunc(eventSelector)) {\n return eventSelector\n } else {\n // shorthand for subscriber to only receive events from a specific publisher instance\n return (publisher: NgTableParams) => publisher === eventSelector;\n }\n }\n\n function isEventSelectorFunc(val: EventSelector): val is (publisher: NgTableParams) => boolean {\n return typeof val === 'function';\n }\n\n function isScopeLike(val: any): val is ng1.IScope {\n return val && typeof val.$new === 'function';\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableEventsChannel.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IPromise } from 'angular';\nimport { convertSortToOrderBy, isGroupingFun } from './util';\nimport { IDefaults } from './ngTableDefaults'\nimport { NgTableEventsChannel } from './ngTableEventsChannel'\nimport { NgTableSettings, ISettings } from './ngTableSettings'\nimport { DataResult, IDataRowGroup, IGetDataFunc } from './data';\nimport { IFilterValues } from './filtering';\nimport { IGetGroupFunc, Grouping, IGroupingFunc, GroupSort, IGroupValues } from './grouping';\nimport { SortDirection, ISortingValues } from './sorting';\nimport { IPageButton } from './paging';\n\n/**\n * @private\n */\nexport interface InternalTableParams extends NgTableParams {\n isNullInstance: boolean\n}\n\n/**\n * The runtime values for {@link NgTableParams} that determine the set of data rows and\n * how they are to be displayed in a table\n */\nexport interface IParamValues {\n /**\n * The index of the \"slice\" of data rows, starting at 1, to be displayed by the table.\n */\n page?: number;\n /**\n * The number of data rows per page\n */\n count?: number;\n /**\n * The filter that should be applied to restrict the set of data rows\n */\n filter?: IFilterValues;\n /**\n * The sort order that should be applied to the data rows.\n */\n sorting?: ISortingValues;\n /**\n * The grouping that should be applied to the data rows\n */\n group?: string | Grouping;\n}\n\n\n/**\n * @private\n */\nfunction isNumber(n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * @private\n */\ntype Memento = {\n params: IParamValues;\n groupSortDirection?: string;\n};\n\n/**\n * Parameters manager for an ngTable directive\n */\nexport class NgTableParams {\n /**\n * The page of data rows currently being displayed in the table\n */\n data: T[] = [];\n reloadPages: () => void;\n private defaultSettings = NgTableParams.ngTableSettings.createDefaults();\n private errParamsMemento: Memento;\n private isCommittedDataset = false;\n isNullInstance: boolean;\n private initialEvents: Function[] = [];\n private prevParamsMemento: Memento;\n private _params: IParamValues = {\n page: 1,\n count: 10,\n filter: {},\n sorting: {},\n group: {}\n };\n private _settings = this.defaultSettings;\n constructor(baseParameters?: IParamValues | boolean, baseSettings?: ISettings) {\n\n // the ngTableController \"needs\" to create a dummy/null instance and it's important to know whether an instance\n // is one of these\n if (typeof baseParameters === \"boolean\") {\n this.isNullInstance = true;\n }\n\n this.reloadPages = (() => {\n let currentPages: IPageButton[];\n return () => {\n const oldPages = currentPages;\n const newPages = this.generatePagesArray(this.page(), this.total(), this.count());\n if (!ng1.equals(oldPages, newPages)) {\n currentPages = newPages;\n NgTableParams.ngTableEventsChannel.publishPagesChanged(this, newPages, oldPages);\n }\n }\n })();\n\n ng1.extend(this._params, NgTableParams.ngTableDefaults.params);\n\n this.settings(baseSettings);\n this.parameters(baseParameters, true);\n\n NgTableParams.ngTableEventsChannel.publishAfterCreated(this);\n // run events during construction after the initial create event. That way a consumer\n // can subscribe to all events for a table without \"dropping\" an event\n ng1.forEach(this.initialEvents, event => {\n event();\n });\n this.initialEvents = null;\n }\n /**\n * Returns the number of data rows per page\n */\n count(): number\n /**\n * Sets the number of data rows per page.\n * Changes to count will cause `isDataReloadRequired` to return true\n */\n count(count: number): this\n count(count?: number) {\n // reset to first page because can be blank page\n return count !== undefined ? this.parameters({\n 'count': count,\n 'page': 1\n }) : this._params.count;\n }\n /**\n * Returns the current filter values used to restrict the set of data rows.\n * @param trim supply true to return the current filter minus any insignificant values\n * (null, undefined and empty string)\n */\n filter(trim?: boolean): IFilterValues\n /**\n * Sets filter values to the `filter` supplied; any existing filter will be removed\n * Changes to filter will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n filter(filter: IFilterValues): this\n filter(filter?: IFilterValues | boolean) {\n if (filter != null && typeof filter === 'object') {\n return this.parameters({\n 'filter': filter,\n 'page': 1\n });\n } else if (filter === true) {\n const keys = Object.keys(this._params.filter);\n const significantFilter: IFilterValues = {};\n for (let i = 0; i < keys.length; i++) {\n const filterValue = this._params.filter[keys[i]];\n if (filterValue != null && filterValue !== '') {\n significantFilter[keys[i]] = filterValue;\n }\n }\n return significantFilter;\n } else {\n return this._params.filter;\n }\n }\n /**\n * Generate array of pages.\n * When no arguments supplied, the current parameter state of this `NgTableParams` instance will be used\n * @param currentPage Which page must be active\n * @param totalItems Total quantity of items\n * @param pageSize Quantity of items on page\n * @param maxBlocks Quantity of blocks for pagination\n * @returns Array of pages\n */\n generatePagesArray(currentPage?: number, totalItems?: number, pageSize?: number, maxBlocks?: number) {\n if (!arguments.length) {\n currentPage = this.page();\n totalItems = this.total();\n pageSize = this.count();\n }\n\n let maxPage: number, maxPivotPages: number, minPage: number, numPages: number;\n maxBlocks = maxBlocks && maxBlocks < 6 ? 6 : maxBlocks;\n\n const pages: IPageButton[] = [];\n numPages = Math.ceil(totalItems / pageSize);\n if (numPages > 1) {\n pages.push({\n type: 'prev',\n number: Math.max(1, currentPage - 1),\n active: currentPage > 1\n });\n pages.push({\n type: 'first',\n number: 1,\n active: currentPage > 1,\n current: currentPage === 1\n });\n maxPivotPages = Math.round((this._settings.paginationMaxBlocks - this._settings.paginationMinBlocks) / 2);\n minPage = Math.max(2, currentPage - maxPivotPages);\n maxPage = Math.min(numPages - 1, currentPage + maxPivotPages * 2 - (currentPage - minPage));\n minPage = Math.max(2, minPage - (maxPivotPages * 2 - (maxPage - minPage)));\n let i = minPage;\n while (i <= maxPage) {\n if ((i === minPage && i !== 2) || (i === maxPage && i !== numPages - 1)) {\n pages.push({\n type: 'more',\n active: false\n });\n } else {\n pages.push({\n type: 'page',\n number: i,\n active: currentPage !== i,\n current: currentPage === i\n });\n }\n i++;\n }\n pages.push({\n type: 'last',\n number: numPages,\n active: currentPage !== numPages,\n current: currentPage === numPages\n });\n pages.push({\n type: 'next',\n number: Math.min(numPages, currentPage + 1),\n active: currentPage < numPages\n });\n }\n return pages;\n }\n /**\n * Returns the current grouping used to group the data rows\n */\n group(): Grouping\n /**\n * Sets grouping to the `group` supplied; any existing grouping will be removed.\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(group: IGroupValues): this\n /**\n * Sets grouping to the `field` and `sortDirection` supplied; any existing grouping will be removed\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(field: string, sortDirection?: GroupSort): this\n /**\n * Sets grouping to the `group` supplied; any existing grouping will be removed.\n * If `sortDirection` is supplied, this will be assigned to the sortDirection property of `group`\n * Changes to group will cause `isDataReloadRequired` to return true and the current `page` to be set to 1\n */\n group(group: IGroupingFunc | string, sortDirection?: GroupSort): this\n group(group?: Grouping | string, sortDirection?: GroupSort): string | Grouping | this {\n if (group === undefined) {\n return this._params.group;\n }\n\n const newParameters: IParamValues = {\n page: 1\n };\n if (isGroupingFun(group) && sortDirection !== undefined) {\n group.sortDirection = sortDirection;\n newParameters.group = group;\n } else if (typeof group === 'string' && sortDirection !== undefined) {\n newParameters.group = { [group]: sortDirection };\n } else {\n newParameters.group = group;\n }\n this.parameters(newParameters);\n return this;\n }\n /**\n * Returns true when an attempt to `reload` the current `parameter` values have resulted in a failure.\n * This method will continue to return true until the `reload` is successfully called or when the\n * `parameter` values have changed\n */\n hasErrorState() {\n return !!(this.errParamsMemento && ng1.equals(this.errParamsMemento, this.createComparableParams()));\n }\n /**\n * Returns true if `filter` has significant filter value(s) (any value except null, undefined, or empty string),\n * otherwise false\n */\n hasFilter() {\n return Object.keys(this.filter(true)).length > 0;\n }\n /**\n * Return true when a change to `filters` require the `reload` method\n * to be run so as to ensure the data presented to the user reflects these filters\n */\n hasFilterChanges() {\n const previousFilter = (this.prevParamsMemento && this.prevParamsMemento.params.filter);\n return !ng1.equals((this._params.filter), previousFilter) || this.hasGlobalSearchFieldChanges();\n }\n /**\n * Returns true when at least one group has been set\n */\n hasGroup(): boolean\n /**\n * Returns true when the `group` and when supplied, the `sortDirection` matches an existing group\n */\n hasGroup(group: string | IGroupingFunc, sortDirection?: string): boolean\n hasGroup(group?: string | IGroupingFunc, sortDirection?: string) {\n if (group == null) {\n return isGroupingFun(this._params.group) || Object.keys(this._params.group).length > 0\n }\n\n if (isGroupingFun(group)) {\n if (sortDirection == null) {\n return this._params.group === group;\n } else {\n return this._params.group === group && group.sortDirection === sortDirection;\n }\n } else {\n if (sortDirection == null) {\n return Object.keys(this._params.group).indexOf(group) !== -1;\n } else {\n return (this._params.group as IGroupValues)[group] === sortDirection;\n }\n }\n }\n /**\n * Return true when a change to this instance should require the `reload` method\n * to be run so as to ensure the data rows presented to the user reflects the current state.\n *\n * Note that this method will return false when the `reload` method has run but fails. In this case\n * `hasErrorState` will return true.\n *\n * The built-in `ngTable` directives will watch for when this function returns true and will then call\n * the `reload` method to load its data rows\n */\n isDataReloadRequired() {\n // note: using != as want to treat null and undefined the same\n return !this.isCommittedDataset || !ng1.equals(this.createComparableParams(), this.prevParamsMemento)\n || this.hasGlobalSearchFieldChanges();\n }\n /**\n * Returns true if sorting by the field supplied. Where direction supplied\n * the field must also be sorted by that direction to return true\n */\n isSortBy(field: string, direction?: string) {\n if (direction !== undefined) {\n return this._params.sorting[field] !== undefined && this._params.sorting[field] == direction;\n } else {\n return this._params.sorting[field] !== undefined;\n }\n }\n /**\n * Returns sorting values in a format that can be consumed by the angular `$orderBy` filter service\n */\n orderBy() {\n return convertSortToOrderBy(this._params.sorting);\n }\n /**\n * Returns the index of the current \"slice\" of data rows\n */\n page(): number\n /**\n * Sets the index of the current \"slice\" of data rows. The index starts at 1.\n * Changing the page number will cause `isDataReloadRequired` to return true\n */\n page(page: number): this\n page(page?: number) {\n return page !== undefined ? this.parameters({\n 'page': page\n }) : this._params.page;\n }\n parameters(): IParamValues\n /**\n * Set new parameters\n */\n parameters(newParameters?: IParamValues | { [name: string]: string }, parseParamsFromUrl?: boolean): this\n parameters(newParameters?: IParamValues | { [name: string]: string }, parseParamsFromUrl?: boolean): IParamValues | this {\n parseParamsFromUrl = parseParamsFromUrl || false;\n if (typeof newParameters !== undefined) {\n for (const key in newParameters) {\n let value = newParameters[key];\n if (parseParamsFromUrl && key.indexOf('[') >= 0) {\n const keys = key.split(/\\[(.*)\\]/).reverse()\n let lastKey = '';\n for (let i = 0, len = keys.length; i < len; i++) {\n const name = keys[i];\n if (name !== '') {\n const v = value;\n value = {};\n value[lastKey = name] = (isNumber(v) ? parseFloat(v) : v);\n }\n }\n if (lastKey === 'sorting') {\n this._params[lastKey] = {};\n }\n this._params[lastKey] = ng1.extend(this._params[lastKey] || {}, value[lastKey]);\n } else {\n if (key === 'group') {\n this._params[key] = this.parseGroup(newParameters[key]);\n } else {\n this._params[key] = (isNumber(newParameters[key]) ? parseFloat(newParameters[key]) : newParameters[key]);\n }\n }\n }\n this.log('ngTable: set parameters', this._params);\n return this;\n }\n return this._params;\n }\n /**\n * Trigger a reload of the data rows\n */\n reload>(): IPromise {\n let pData: ng1.IPromise = null;\n\n this._settings.$loading = true;\n\n this.prevParamsMemento = ng1.copy(this.createComparableParams());\n this.isCommittedDataset = true;\n\n if (this.hasGroup()) {\n pData = this.runInterceptorPipeline(NgTableParams.$q.when(this._settings.getGroups(this)));\n } else {\n const fn = this._settings.getData as IGetDataFunc;\n pData = this.runInterceptorPipeline(NgTableParams.$q.when(fn(this)));\n }\n\n this.log('ngTable: reload data');\n\n const oldData = this.data;\n return pData.then(data => {\n this._settings.$loading = false;\n this.errParamsMemento = null;\n\n this.data = data;\n // note: I think it makes sense to publish this event even when data === oldData\n // subscribers can always set a filter to only receive the event when data !== oldData\n NgTableParams.ngTableEventsChannel.publishAfterReloadData(this, data, oldData);\n this.reloadPages();\n\n return data;\n }).catch(reason => {\n this.errParamsMemento = this.prevParamsMemento;\n // \"rethrow\"\n return NgTableParams.$q.reject(reason);\n });\n }\n /**\n * Returns the settings for the table.\n */\n settings(): ISettings\n /**\n * Sets the settings for the table; new setting values will be merged with the existing settings.\n * Supplying a new `dataset` will cause `isDataReloadRequired` to return true and the `ngTableEventsChannel`\n * to fire its `datasetChanged` event\n */\n settings(newSettings: ISettings): this\n settings(newSettings?: ISettings): this | ISettings {\n if (ng1.isDefined(newSettings)) {\n\n const settings = NgTableParams.ngTableSettings.merge(this._settings, newSettings);\n\n const originalDataset = this._settings.dataset;\n this._settings = settings;\n\n // note: using != as want null and undefined to be treated the same\n const hasDatasetChanged = newSettings.hasOwnProperty('dataset') && (newSettings.dataset != originalDataset);\n if (hasDatasetChanged) {\n if (this.isCommittedDataset) {\n this.page(1); // reset page as a new dataset has been supplied\n }\n this.isCommittedDataset = false;\n\n const fireEvent = () => {\n NgTableParams.ngTableEventsChannel.publishDatasetChanged(this, newSettings.dataset, originalDataset);\n };\n\n if (this.initialEvents) {\n this.initialEvents.push(fireEvent);\n } else {\n fireEvent();\n }\n }\n this.log('ngTable: set settings', this._settings);\n return this;\n }\n return this._settings;\n }\n /**\n * Returns the current sorting used to order the data rows.\n * Changes to sorting will cause `isDataReloadRequired` to return true\n */\n sorting(): ISortingValues\n /**\n * Sets sorting values to the `sorting` supplied; any existing sorting will be removed.\n * Changes to sorting will cause `isDataReloadRequired` to return true\n */\n sorting(sorting: ISortingValues): this\n /**\n * Sets sorting to the `field` and `direction` supplied; any existing sorting will be removed\n */\n sorting(field: string, direction: string): this\n sorting(sorting?: ISortingValues | string, direction?: SortDirection) {\n if (typeof sorting === 'string') {\n this.parameters({\n 'sorting': { [sorting]: direction }\n });\n return this;\n }\n return sorting !== undefined ? this.parameters({\n 'sorting': sorting\n }) : this._params.sorting;\n }\n /**\n * Returns the count of the data rows that match the current `filter`\n */\n total(): number\n /**\n * Sets `settings().total` to the value supplied.\n * Typically you will need to set a `total` in the body of any custom `getData` function\n * you supply as a setting value to this instance.\n * @example\n * ```js\n * const tp = new NgTableParams({}, { getData: customGetData })\n * function customGetData(params) {\n * const queryResult = // code to fetch current data rows and total //\n * params.total(queryResult.total);\n * return queryResult.dataRowsPage;\n * }\n * ```\n */\n total(total: number): this\n total(total?: number) {\n return total !== undefined ? this.settings({\n 'total': total\n }) : this._settings.total;\n }\n /**\n * Returns the current parameter values uri-encoded. Set `asString` to\n * true for the parameters to be returned as an array of strings of the form 'paramName=value'\n * otherwise parameters returned as a key-value object\n */\n url(asString?: boolean) {\n // this function is an example of Typescript gone bad!!\n asString = asString || false;\n const pairs: any[] | { [name: string]: string } = (asString ? [] : {});\n for (const key in this._params) {\n if (this._params.hasOwnProperty(key)) {\n const item = (this._params as { [name: string]: any })[key],\n name = encodeURIComponent(key);\n if (typeof item === \"object\") {\n for (const subkey in item) {\n if (isSignificantValue(item[subkey], key)) {\n const pname = name + \"[\" + encodeURIComponent(subkey) + \"]\";\n collectValue(item[subkey], pname);\n }\n }\n } else if (!ng1.isFunction(item) && isSignificantValue(item, key)) {\n collectValue(item, name);\n }\n }\n }\n return pairs;\n\n function collectValue(value: any, key: string) {\n if (isArray(pairs)) {\n pairs.push(key + \"=\" + encodeURIComponent(value));\n } else {\n pairs[key] = encodeURIComponent(value);\n }\n }\n\n function isArray(pairs: any[] | {}): pairs is Array {\n return asString;\n }\n\n function isSignificantValue(value: any, key: string) {\n return key === \"group\" ? true : typeof value !== undefined && value !== \"\";\n }\n }\n private createComparableParams(): Memento {\n const group = this._params.group;\n return {\n params: this._params,\n groupSortDirection: isGroupingFun(group) ? group.sortDirection : undefined\n };\n }\n private hasGlobalSearchFieldChanges() {\n const currentVal = (this._params.filter && this._params.filter['$']);\n const previousVal =\n (this.prevParamsMemento && this.prevParamsMemento.params.filter && this.prevParamsMemento.params.filter['$']);\n return !ng1.equals(currentVal, previousVal);\n }\n private log(...args: any[]) {\n if (this._settings.debugMode && NgTableParams.$log.debug) {\n NgTableParams.$log.debug(...args);\n }\n }\n private parseGroup(group: string | Grouping) {\n const defaultSort = this._settings.groupOptions && this._settings.groupOptions.defaultSort;\n if (!group) {\n return group;\n } else if (isGroupingFun(group)) {\n if (group.sortDirection == null) {\n group.sortDirection = defaultSort;\n }\n return group;\n } else if (typeof group === 'object') {\n for (const key in group) {\n if (group[key] == null) {\n group[key] = defaultSort;\n }\n }\n return group;\n } else {\n return {\n [group]: defaultSort\n };\n }\n }\n private runInterceptorPipeline(fetchedData: ng1.IPromise) {\n const interceptors = this._settings.interceptors || [];\n\n return interceptors.reduce((result, interceptor) => {\n const thenFn = (interceptor.response && interceptor.response.bind(interceptor)) || NgTableParams.$q.when;\n const rejectFn = (interceptor.responseError && interceptor.responseError.bind(interceptor)) || NgTableParams.$q.reject;\n return result.then(data => {\n return thenFn(data, this);\n }, reason => {\n return rejectFn(reason, this);\n });\n }, fetchedData);\n }\n\n private static $q: ng1.IQService;\n private static $log: ng1.ILogService;\n private static ngTableDefaults: IDefaults;\n private static ngTableEventsChannel: NgTableEventsChannel;\n private static ngTableSettings: NgTableSettings;\n static init(\n $q: ng1.IQService,\n $log: ng1.ILogService,\n ngTableDefaults: IDefaults,\n ngTableEventsChannel: NgTableEventsChannel,\n ngTableSettings: NgTableSettings) {\n NgTableParams.$q = $q;\n NgTableParams.$log = $log;\n NgTableParams.ngTableDefaults = ngTableDefaults;\n NgTableParams.ngTableEventsChannel = ngTableEventsChannel;\n NgTableParams.ngTableSettings = ngTableSettings;\n }\n}\n\nNgTableParams.init.$inject = ['$q', '$log', 'ngTableDefaults', 'ngTableEventsChannel', 'ngTableSettings'];\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableParams.ts","import * as ng1 from 'angular';\nimport { IPromise } from 'angular';\nimport { IDefaults } from './ngTableDefaults';\nimport { IDataRowGroup, IDataSettings, IDefaultGetData, IGetDataFunc, IInterceptor, IInterceptableGetDataFunc } from './data';\nimport { IFilterValues, IFilterSettings } from './filtering';\nimport { IGetGroupFunc, IGroupSettings } from './grouping';\nimport { SortDirection } from './sorting';\nimport { NgTableParams } from './ngTableParams';\n\n/**\n * Configuration settings for {@link NgTableParams}\n */\nexport interface ISettings {\n /**\n * Returns true whenever a call to `getData` is in progress\n */\n $loading?: boolean;\n /**\n * An array that contains all the data rows that table should manage.\n * The `gateData` function will be used to manage the data rows\n * that ultimately will be displayed.\n */\n dataset?: T[];\n dataOptions?: IDataSettings;\n debugMode?: boolean;\n /**\n * The total number of data rows before paging has been applied.\n * Typically you will not need to supply this yourself\n */\n total?: number;\n /**\n * The default sort direction that will be used whenever a sorting is supplied that\n * does not define its own sort direction\n */\n defaultSort?: SortDirection;\n filterOptions?: IFilterSettings;\n groupOptions?: IGroupSettings;\n /**\n * The page size buttons that should be displayed. Each value defined in the array\n * determines the possible values that can be supplied to {@link NgTableParams} `page`\n */\n counts?: number[];\n /**\n * The collection of interceptors that should apply to the results of a call to\n * the `getData` function before the data rows are displayed in the table\n */\n interceptors?: IInterceptor[];\n /**\n * Configuration for the template that will display the page size buttons\n */\n paginationMaxBlocks?: number;\n /**\n * Configuration for the template that will display the page size buttons\n */\n paginationMinBlocks?: number;\n /**\n * The html tag that will be used to display the sorting indicator in the table header\n */\n sortingIndicator?: string;\n /**\n * The function that will be used fetch data rows. Leave undefined to let the {@link IDefaultGetData}\n * service provide a default implementation that will work with the `dataset` array you supply.\n *\n * Typically you will supply a custom function when you need to execute filtering, paging and sorting\n * on the server\n */\n getData?: IGetDataFunc | IInterceptableGetDataFunc;\n /**\n * The function that will be used group data rows according to the groupings returned by {@link NgTableParams} `group`\n */\n getGroups?: IGetGroupFunc;\n}\n\n/**\n * @private\n */\nexport class NgTableSettings {\n static $inject = ['ngTableDefaults', 'ngTableDefaultGetData', 'ngTableDefaultGetGroups'];\n private defaults: ISettings;\n constructor(\n private ngTableDefaults: IDefaults,\n private ngTableDefaultGetData: IDefaultGetData,\n private ngTableDefaultGetGroups: IGetGroupFunc) {\n\n this.defaults = {\n $loading: false,\n dataset: null, //allows data to be set when table is initialized\n total: 0,\n defaultSort: 'desc',\n counts: [10, 25, 50, 100],\n filterOptions: {\n filterComparator: undefined, // look for a substring match in case insensitive way\n filterDelay: 500,\n filterDelayThreshold: 10000, // size of dataset array that will trigger the filterDelay being applied\n filterFilterName: undefined, // when defined overrides ngTableDefaultGetDataProvider.filterFilterName\n filterFn: undefined, // when defined overrides the filter function that ngTableDefaultGetData uses\n filterLayout: 'stack'\n },\n getData: (params: NgTableParams) => {\n return this.ngTableDefaultGetData(params.settings().dataset, params);\n },\n getGroups: this.ngTableDefaultGetGroups,\n groupOptions: {\n defaultSort: 'asc', // set to 'asc' or 'desc' to apply sorting to groups\n isExpanded: true\n },\n interceptors: [],\n paginationMaxBlocks: 11,\n paginationMinBlocks: 5,\n sortingIndicator: 'span'\n };\n }\n createDefaults(): ISettings {\n return this.merge(this.defaults, this.ngTableDefaults.settings);\n }\n merge(existing: ISettings, newSettings: ISettings): ISettings {\n\n newSettings = ng1.extend({}, newSettings);\n\n if (newSettings.filterOptions) {\n newSettings.filterOptions = ng1.extend({}, existing.filterOptions || {}, newSettings.filterOptions);\n }\n if (newSettings.groupOptions) {\n newSettings.groupOptions = ng1.extend({}, existing.groupOptions || {}, newSettings.groupOptions);\n }\n\n if (ng1.isArray(newSettings.dataset)) {\n //auto-set the total from passed in dataset\n newSettings.total = newSettings.dataset.length;\n }\n const results = ng1.extend({}, existing, newSettings);\n if (ng1.isArray(newSettings.dataset)) {\n this.optimizeFilterDelay(results);\n }\n return ng1.extend({}, existing, newSettings);\n }\n private optimizeFilterDelay(settings: ISettings) {\n // don't debounce by default filter input when working with small synchronous datasets\n if (settings.filterOptions.filterDelay === this.defaults.filterOptions.filterDelay &&\n settings.total <= settings.filterOptions.filterDelayThreshold &&\n settings.getData === this.defaults.getData) {\n settings.filterOptions.filterDelay = 0;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/ngTableSettings.ts","import { Grouping, IGroupingFunc } from './grouping';\nimport { ISortingValues } from './sorting';\n\n/**\n * @private\n */\nexport function convertSortToOrderBy(sorting: ISortingValues) {\n const result: string[] = [];\n for (let column in sorting) {\n result.push((sorting[column] === \"asc\" ? \"+\" : \"-\") + column);\n }\n return result;\n}\n\n/**\n * @private\n */\nexport function isGroupingFun(val: string | Grouping): val is IGroupingFunc {\n return typeof val === 'function'\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/core/util.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\nimport { IAugmentedJQuery, IDirective, IQService, IParseService, IPromise, IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { \n IColumnDef, ColumnFieldContext, IColumnField, IFilterTemplateDefMap, SelectData, ITableInputAttributes \n} from './public-interfaces';\nimport { NgTableController } from './ngTableController';\n\ninterface IScopeExtensions {\n $columns: IColumnDef[]\n}\n\nngTable.$inject = ['$q', '$parse'];\n\n/**\n * Directive that instantiates {@link NgTableController NgTableController}.\n * @ngdoc directive\n * @name ngTable\n * @example\n * \n * ```html\n * \n * \n * \n * \n * \n *
\n * {{user.name}}\n * \n * {{user.age}}\n *
\n * ```\n */\nexport function ngTable($q: IQService, $parse: IParseService) : IDirective {\n\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function(element: IAugmentedJQuery) {\n let columns: IColumnDef[] = [],\n i = 0,\n dataRow: JQuery,\n groupRow: JQuery\n const rows: JQuery[] = [];\n\n ng1.forEach(element.find('tr'), (tr: JQuery) => {\n rows.push(ng1.element(tr))\n });\n dataRow = rows.filter(tr => !tr.hasClass('ng-table-group'))[0];\n groupRow = rows.filter(tr => tr.hasClass('ng-table-group'))[0];\n\n if (!dataRow) {\n return undefined;\n }\n ng1.forEach(dataRow.find('td'), (item: JQuery) => {\n const el = ng1.element(item);\n if (el.attr('ignore-cell') && 'true' === el.attr('ignore-cell')) {\n return;\n }\n\n const getAttrValue = function(attr: string){\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n const setAttrValue = function(attr: string, value: string){\n if (el.attr('x-data-' + attr)){\n el.attr('x-data-' + attr, value)\n } else if (el.attr('data' + attr)){\n el.attr('data' + attr, value)\n } else {\n el.attr(attr, value)\n }\n };\n\n const parsedAttribute = function(attr: string): IColumnField {\n const expr = getAttrValue(attr);\n if (!expr){\n return undefined;\n }\n\n let localValue: any;\n const getter = (context: ColumnFieldContext) => {\n if (localValue !== undefined){\n return localValue as T;\n }\n return $parse(expr)(context) as T;\n };\n (getter as any).assign = ($scope: ColumnFieldContext, value: any) => {\n const parsedExpr = $parse(expr);\n if (parsedExpr.assign) {\n // we should be writing back to the parent scope as this is where the expression\n // came from\n parsedExpr.assign($scope.$parent, value);\n } else {\n localValue = value;\n }\n };\n return getter as IColumnField;\n };\n const titleExpr = getAttrValue('title-alt') || getAttrValue('title');\n if (titleExpr){\n el.attr('data-title-text', '{{' + titleExpr + '}}'); // this used in responsive table\n }\n // NOTE TO MAINTAINERS: if you add extra fields to a $column be sure to extend ngTableColumn with\n // a corresponding \"safe\" default\n columns.push({\n id: i++,\n title: parsedAttribute('title'),\n titleAlt: parsedAttribute('title-alt'),\n headerTitle: parsedAttribute('header-title'),\n sortable: parsedAttribute('sortable'),\n 'class': parsedAttribute('header-class'),\n filter: parsedAttribute('filter'),\n groupable: parsedAttribute('groupable'),\n headerTemplateURL: parsedAttribute('header'),\n filterData: parsedAttribute | SelectData>('filter-data'),\n show: el.attr(\"ng-if\") ? parsedAttribute('ng-if') : undefined\n });\n\n if (groupRow || el.attr(\"ng-if\")){\n // change ng-if to bind to our column definition which we know will be writable\n // because this will potentially increase the $watch count, only do so if we already have an\n // ng-if or when we definitely need to change visibility of the columns.\n // currently only ngTableGroupRow directive needs to change visibility\n setAttrValue('ng-if', '$columns[' + (columns.length - 1) + '].show(this)');\n }\n });\n return function(scope: IScope & IScopeExtensions, element: IAugmentedJQuery, attrs: ITableInputAttributes, controller: NgTableController) {\n scope.$columns = columns = controller.buildColumns(columns);\n\n controller.setupBindingsToInternalScope(attrs.ngTable);\n controller.loadFilterData(columns);\n controller.compileDirectiveTemplates();\n };\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTable.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { IColumnDef, IDynamicTableColDef } from './public-interfaces';\n\n/**\n * @private\n */\nfunction isScopeLike(object: any) {\n return object != null && ng1.isFunction(object.$new);\n}\n\n/**\n * @private\n * Service to construct a $column definition used by {@link ngTable ngTable} directive\n */\nexport class NgTableColumn {\n static $inject: string[] = [];\n\n /**\n * Creates a $column for use within a header template\n *\n * @param column the initial definition for $column to build\n * @param defaultScope the $scope to supply to the $column getter methods when not supplied by caller\n * @param columns a reference to the $columns array to make available on the context supplied to the\n * $column getter methods\n */\n buildColumn(column: TCol, defaultScope: IScope, columns: IColumnDef[]): IColumnDef {\n // note: we're not modifying the original column object. This helps to avoid unintended side affects\n const extendedCol = Object.create(column);\n const defaults = this.createDefaults();\n for (const prop in defaults) {\n if (extendedCol[prop] === undefined) {\n extendedCol[prop] = defaults[prop];\n }\n if (!ng1.isFunction(extendedCol[prop])) {\n // wrap raw field values with \"getter\" functions\n // - this is to ensure consistency with how ngTable.compile builds columns\n // - note that the original column object is being \"proxied\"; this is important\n // as it ensure that any changes to the original object will be returned by the \"getter\"\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return column[prop];\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, value: any) {\n column[prop] = value;\n };\n extendedCol[prop] = getterSetter;\n }\n // satisfy the arguments expected by the function returned by parsedAttribute in the ngTable directive\n const getterFn = extendedCol[prop];\n extendedCol[prop] = function () {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterFn.assign(defaultScope, arguments[0]);\n } else {\n const scope = arguments[0] || defaultScope;\n const context = Object.create(scope);\n ng1.extend(context, {\n $column: extendedCol,\n $columns: columns\n });\n return getterFn.call(column, context);\n }\n };\n if (getterFn.assign) {\n extendedCol[prop].assign = getterFn.assign;\n } else {\n const wrappedGetterFn = extendedCol[prop];\n let localValue: any;\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return localValue != undefined ? localValue : wrappedGetterFn.apply(extendedCol, arguments);\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, value: any) {\n localValue = value;\n };\n extendedCol[prop] = getterSetter;\n }\n }\n return extendedCol as IColumnDef;\n }\n\n private createDefaults() {\n return {\n 'class': this.createGetterSetter(''),\n filter: this.createGetterSetter(false),\n groupable: this.createGetterSetter(false),\n filterData: ng1.noop,\n headerTemplateURL: this.createGetterSetter(false),\n headerTitle: this.createGetterSetter(''),\n sortable: this.createGetterSetter(false),\n show: this.createGetterSetter(true),\n title: this.createGetterSetter(''),\n titleAlt: this.createGetterSetter('')\n };\n }\n\n private createGetterSetter(initialValue: any) {\n let value = initialValue;\n const getterSetter = function getterSetter(/*[value] || [$scope, locals]*/) {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n (getterSetter as any).assign(null, arguments[0]);\n } else {\n return value;\n }\n };\n (getterSetter as any).assign = function ($scope: IScope, newValue: any) {\n value = newValue;\n };\n return getterSetter;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableColumn.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IAugmentedJQuery, IAttributes, IDirective, IParseService } from 'angular';\nimport { ITableScope } from './ngTableController';\nimport { IColumnDef } from './public-interfaces';\n\n/**\n * @private\n */\ninterface IInputAttributes extends IAttributes {\n ngTableColumnsBinding: string;\n}\n\nngTableColumnsBinding.$inject = [\"$parse\"];\n\n/**\n * One-way data binds the $columns array generated by ngTable/ngTableDynamic to the specified\n * expression.\n * This allows the $columns array created for the table to be accessed outside of the html table\n * markup.\n * \n * @ngdoc directive\n * \n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableColumnsBinding($parse: IParseService) : IDirective {\n const directive = {\n restrict: 'A',\n link: linkFn\n };\n return directive;\n\n function linkFn($scope: ITableScope, $element: IAugmentedJQuery, $attrs: IInputAttributes){\n const setter = $parse($attrs.ngTableColumnsBinding).assign;\n if (setter){\n $scope.$watch('$columns', newColumns => {\n const shallowClone = (newColumns || []).slice(0);\n setter($scope, shallowClone);\n });\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableColumnsBinding.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport {\n IAttributes, IAugmentedJQuery, ICompileService, IDocumentService, IParseService, IPromise, IScope,\n ITimeoutService\n} from 'angular';\nimport * as ng1 from 'angular';\nimport {\n DataResult, DataResults, IDataRowGroup, GroupedDataResults, NgTableParams, NgTableEventsChannel,\n IPageButton\n} from '../core';\nimport { IColumnDef, IDynamicTableColDef, SelectData, ITableInputAttributes } from './public-interfaces';\nimport { NgTableColumn } from './ngTableColumn';\n\n/**\n * @private\n */\nexport interface ITableScope extends IScope {\n $columns: IColumnDef[];\n $loading: boolean;\n $filterRow: {\n disabled: boolean;\n };\n $data?: DataResults;\n $groups?: GroupedDataResults;\n $groupRow: {\n show: boolean;\n };\n show_filter: boolean;\n pages: IPageButton[];\n templates: {\n header: string;\n pagination: string;\n },\n params: NgTableParams\n}\n\n/**\n * The controller for the {@link ngTable ngTable} and {@link ngTableDynamic ngTableDynamic} directives\n */\nexport class NgTableController {\n static $inject = [\n '$scope', '$timeout', '$parse', '$compile', '$attrs', '$element', '$document', 'ngTableColumn', 'ngTableEventsChannel'\n ];\n private delayFilter: (callback: () => void, ms: number) => void;\n private get hasVisibleFilterColumn() {\n if (!this.$scope.$columns) return false;\n\n return this.some(this.$scope.$columns, ($column) => {\n return $column.show(this.$scope) && !!$column.filter(this.$scope);\n });\n }\n constructor(\n private $scope: ITableScope,\n $timeout: ITimeoutService,\n private $parse: IParseService,\n private $compile: ICompileService,\n private $attrs: IAttributes & ITableInputAttributes,\n private $element: IAugmentedJQuery,\n private $document: IDocumentService,\n private ngTableColumn: NgTableColumn,\n private ngTableEventsChannel: NgTableEventsChannel) {\n\n const isFirstTimeLoad = true;\n $scope.$filterRow = { disabled: false };\n $scope.$loading = false;\n\n // until such times as the directive uses an isolated scope, we need to ensure that the check for\n // the params field only consults the \"own properties\" of the $scope. This is to avoid seeing the params\n // field on a $scope higher up in the prototype chain\n if (!$scope.hasOwnProperty(\"params\")) {\n $scope.params = new NgTableParams(true);\n }\n\n this.delayFilter = (function () {\n let timer: IPromise;\n return (callback: () => void, ms: number) => {\n $timeout.cancel(timer);\n timer = $timeout(callback, ms);\n };\n })();\n\n // watch for when a new NgTableParams is bound to the scope\n // CRITICAL: the watch must be for reference and NOT value equality; this is because NgTableParams maintains\n // the current data page as a field. Checking this for value equality would be terrible for performance\n // and potentially cause an error if the items in that array has circular references\n this.$scope.$watch>('params', (newParams, oldParams) => {\n if (newParams === oldParams || !newParams) {\n return;\n }\n\n newParams.reload();\n }, false);\n\n this.subscribeToTableEvents();\n }\n\n private onDataReloadStatusChange(newStatus: boolean/*, oldStatus*/) {\n if (!newStatus || this.$scope.params.hasErrorState()) {\n return;\n }\n\n const currentParams = this.$scope.params;\n const filterOptions = currentParams.settings().filterOptions;\n\n if (currentParams.hasFilterChanges()) {\n const applyFilter = () => {\n currentParams.page(1);\n currentParams.reload();\n };\n if (filterOptions.filterDelay) {\n this.delayFilter(applyFilter, filterOptions.filterDelay);\n } else {\n applyFilter();\n }\n } else {\n currentParams.reload();\n }\n }\n\n compileDirectiveTemplates() {\n if (!this.$element.hasClass('ng-table')) {\n this.$scope.templates = {\n header: (this.$attrs.templateHeader ? this.$attrs.templateHeader : 'ng-table/header.html'),\n pagination: (this.$attrs.templatePagination ? this.$attrs.templatePagination : 'ng-table/pager.html')\n };\n this.$element.addClass('ng-table');\n let headerTemplate: IAugmentedJQuery = null;\n\n // $element.find('> thead').length === 0 doesn't work on jqlite\n let theadFound = false;\n ng1.forEach(this.$element.children(), (e) => {\n if (e.tagName === 'THEAD') {\n theadFound = true;\n }\n });\n if (!theadFound) {\n headerTemplate = ng1.element('', this.$document);\n this.$element.prepend(headerTemplate);\n }\n const paginationTemplate = ng1.element(\n '
',\n this.$document\n );\n this.$element.after(paginationTemplate);\n if (headerTemplate) {\n this.$compile(headerTemplate)(this.$scope);\n }\n this.$compile(paginationTemplate)(this.$scope);\n }\n }\n\n loadFilterData($columns: IColumnDef[]) {\n ng1.forEach($columns, ($column) => {\n const result = $column.filterData(this.$scope);\n if (!result) {\n delete $column.filterData;\n return undefined;\n }\n\n if (isPromiseLike(result)) {\n delete $column.filterData;\n return result.then(data => {\n // our deferred can eventually return arrays, functions and objects\n if (!ng1.isArray(data) && !ng1.isFunction(data) && !ng1.isObject(data)) {\n // if none of the above was found - we just want an empty array\n data = [];\n }\n $column.data = data;\n });\n }\n // otherwise, we just return what the user gave us. It could be a function, array, object, whatever\n else {\n return $column.data = result;\n }\n });\n\n function isPromiseLike(val: any): val is IPromise {\n return val && typeof val === 'object' && typeof val.then === 'function';\n }\n }\n\n buildColumns(columns: TCol[]): IColumnDef[] {\n // todo: use strictNullChecks and remove guard clause\n const result: IColumnDef[] = [];\n (columns || []).forEach(col => {\n result.push(this.ngTableColumn.buildColumn(col, this.$scope, result));\n });\n return result\n }\n\n parseNgTableDynamicExpr(attr: string) {\n if (!attr || attr.indexOf(\" with \") > -1) {\n const parts = attr.split(/\\s+with\\s+/);\n return {\n tableParams: parts[0],\n columns: parts[1]\n };\n } else {\n throw new Error('Parse error (expected example: ng-table-dynamic=\\'tableParams with cols\\')');\n }\n }\n\n setupBindingsToInternalScope(tableParamsExpr: string) {\n\n // note: this we're setting up watches to simulate angular's isolated scope bindings\n\n // note: is REALLY important to watch for a change to the ngTableParams *reference* rather than\n // $watch for value equivalence. This is because ngTableParams references the current page of data as\n // a field and it's important not to watch this\n this.$scope.$watch>(tableParamsExpr, (params) => {\n if (params === undefined) {\n return;\n }\n this.$scope.params = params;\n }, false);\n\n this.setupFilterRowBindingsToInternalScope();\n this.setupGroupRowBindingsToInternalScope();\n }\n\n private setupFilterRowBindingsToInternalScope() {\n if (this.$attrs.showFilter) {\n this.$scope.$parent.$watch(this.$attrs.showFilter, (value) => {\n this.$scope.show_filter = value;\n });\n } else {\n this.$scope.$watch(() => this.hasVisibleFilterColumn, (value) => {\n this.$scope.show_filter = value;\n })\n }\n\n if (this.$attrs.disableFilter) {\n this.$scope.$parent.$watch(this.$attrs.disableFilter, (value) => {\n this.$scope.$filterRow.disabled = value;\n });\n }\n }\n\n private setupGroupRowBindingsToInternalScope() {\n this.$scope.$groupRow = { show: false };\n if (this.$attrs.showGroup) {\n const showGroupGetter = this.$parse(this.$attrs.showGroup);\n this.$scope.$parent.$watch(showGroupGetter, (value) => {\n this.$scope.$groupRow.show = value;\n });\n if (showGroupGetter.assign) {\n // setup two-way databinding thus allowing ngTableGrowRow to assign to the showGroup expression\n this.$scope.$watch('$groupRow.show', (value) => {\n showGroupGetter.assign(this.$scope.$parent, value);\n });\n }\n } else {\n this.$scope.$watch('params.hasGroup()', (newValue) => {\n this.$scope.$groupRow.show = newValue;\n });\n }\n }\n\n private getVisibleColumns() {\n return (this.$scope.$columns || []).filter((c) => {\n return c.show(this.$scope);\n });\n }\n\n private subscribeToTableEvents() {\n\n this.$scope.$watch('params.isDataReloadRequired()', (newStatus: boolean/*, oldStatus*/) => {\n this.onDataReloadStatusChange(newStatus);\n });\n\n this.ngTableEventsChannel.onAfterReloadData(\n (params, newDatapage) => {\n const visibleColumns = this.getVisibleColumns();\n if (params.hasGroup()) {\n this.$scope.$groups = (newDatapage || []) as GroupedDataResults;\n this.$scope.$groups.visibleColumnCount = visibleColumns.length;\n } else {\n this.$scope.$data = (newDatapage || []) as DataResults;\n this.$scope.$data.visibleColumnCount = visibleColumns.length;\n }\n },\n this.$scope,\n (publisher) => this.$scope.params === publisher\n );\n\n this.ngTableEventsChannel.onPagesChanged(\n (params, newPages) => {\n this.$scope.pages = newPages;\n },\n this.$scope,\n (publisher) => this.$scope.params === publisher\n );\n }\n\n private some(array: T[], predicate: (item: T) => boolean) {\n let found = false;\n for (let i = 0; i < array.length; i++) {\n const obj = array[i];\n if (predicate(obj)) {\n found = true;\n break;\n }\n }\n return found;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IAugmentedJQuery, IDirective, IScope } from 'angular';\nimport * as ng1 from 'angular';\nimport { IColumnDef, IDynamicTableColDef, ITableInputAttributes } from './public-interfaces';\nimport { NgTableController } from './ngTableController';\n\ninterface IScopeExtensions {\n $columns: IColumnDef[]\n}\n\nngTableDynamic.$inject = [];\n\n/**\n * A dynamic version of the {@link ngTable ngTable} directive that accepts a dynamic list of columns\n * definitions to render\n * @ngdoc directive\n *\n * @example\n * ```html\n *
\n * \n * \n * \n *
{{row[col.field]}}
\n * ```\n */\nexport function ngTableDynamic () : IDirective{\n\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function(tElement: IAugmentedJQuery) {\n let row: IAugmentedJQuery;\n\n // IE 8 fix :not(.ng-table-group) selector\n ng1.forEach(tElement.find('tr'), (tr: JQuery) => {\n tr = ng1.element(tr);\n if (!tr.hasClass('ng-table-group') && !row) {\n row = tr;\n }\n });\n if (!row) {\n return undefined;\n }\n\n ng1.forEach(row.find('td'), (item: JQuery) => {\n const el = ng1.element(item);\n const getAttrValue = (attr: string) => {\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n\n // this used in responsive table\n const titleExpr = getAttrValue('title');\n if (!titleExpr){\n el.attr('data-title-text', '{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}');\n }\n const showExpr = el.attr('ng-if');\n if (!showExpr){\n el.attr('ng-if', '$columns[$index].show(this)');\n }\n });\n return function (scope: IScope & IScopeExtensions, element: IAugmentedJQuery, attrs: ITableInputAttributes, controller: NgTableController) {\n const expr = controller.parseNgTableDynamicExpr(attrs.ngTableDynamic);\n\n controller.setupBindingsToInternalScope(expr.tableParams);\n controller.compileDirectiveTemplates();\n\n scope.$watchCollection(expr.columns, (newCols/*, oldCols*/) => {\n scope.$columns = controller.buildColumns(newCols);\n controller.loadFilterData(scope.$columns);\n });\n };\n }\n };\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableDynamic.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IServiceProvider, auto } from 'angular';\nimport { IFilterConfigValues, IFilterTemplateDef } from './public-interfaces';\n\n/**\n * The angular provider used to configure the behaviour of the `NgTableFilterConfig` service.\n */\nexport class NgTableFilterConfigProvider implements IServiceProvider {\n static $inject = ['$injector'];\n $get: () => NgTableFilterConfig;\n private config: IFilterConfigValues;\n private defaultConfig: IFilterConfigValues = {\n defaultBaseUrl: 'ng-table/filters/',\n defaultExt: '.html',\n aliasUrls: {}\n };\n constructor($injector: auto.IInjectorService) {\n this.$get = () => {\n return $injector.instantiate(NgTableFilterConfig, { config: ng1.copy(this.config) });\n }\n this.$get.$inject = [];\n this.resetConfigs();\n }\n\n /**\n * Reset back to factory defaults the config values that `NgTableFilterConfig` service will use\n */\n resetConfigs() {\n this.config = this.defaultConfig;\n }\n\n /**\n * Set the config values used by `NgTableFilterConfig` service\n */\n setConfig(customConfig: IFilterConfigValues) {\n const mergeConfig = ng1.extend({}, this.config, customConfig);\n mergeConfig.aliasUrls = ng1.extend({}, this.config.aliasUrls, customConfig.aliasUrls);\n this.config = mergeConfig;\n }\n}\n\n/**\n * Exposes configuration values and methods used to return the location of the html\n * templates used to render the filter row of an ng-table directive\n */\nexport class NgTableFilterConfig {\n static $inject = ['config'];\n constructor(\n /**\n * Readonly copy of the final values used to configure the service.\n */\n public readonly config: IFilterConfigValues\n ) { }\n\n /**\n * Return the url of the html filter template registered with the alias supplied\n */\n getUrlForAlias(aliasName: string, filterKey?: string) {\n return this.config.aliasUrls[aliasName] || this.config.defaultBaseUrl + aliasName + this.config.defaultExt;\n }\n \n /**\n * Return the url of the html filter template for the supplied definition and key.\n * For more information see the documentation for {@link IFilterTemplateMap}\n */\n getTemplateUrl(filterDef: string | IFilterTemplateDef, filterKey?: string) {\n let filterName: string;\n if (typeof filterDef !== 'string') {\n filterName = filterDef.id;\n } else {\n filterName = filterDef;\n }\n if (filterName.indexOf('/') !== -1) {\n return filterName;\n }\n\n return this.getUrlForAlias(filterName, filterKey);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterConfig.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nconst templateUrl = require('./filterRow.html');\n\nngTableFilterRow.$inject = [];\n\n/**\n * directive that renders the filter header row for a table \n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableFilterRow(){\n const directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableFilterRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterRow.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IScope } from 'angular';\nimport { IFilterTemplateDef, IFilterTemplateDefMap } from './public-interfaces';\nimport { NgTableFilterConfig } from './ngTableFilterConfig';\n\n/**\n * @private\n */\nexport interface IScopeExtensions {\n getFilterPlaceholderValue(filterDef: string | IFilterTemplateDef, filterKey?: string): string;\n}\n\n/**\n * Controller for the {@link ngTableFilterRow ngTableFilterRow} directive\n */\nexport class NgTableFilterRowController {\n static $inject = ['$scope', 'ngTableFilterConfig'];\n config: NgTableFilterConfig;\n constructor($scope: IScope & IScopeExtensions, ngTableFilterConfig: NgTableFilterConfig) {\n this.config = ngTableFilterConfig;\n\n // todo: stop doing this. Why?\n // * scope inheritance makes it hard to know how supplies functions\n // * scope is not a concept in angular 2\n // make function available to filter templates\n $scope.getFilterPlaceholderValue = this.getFilterPlaceholderValue.bind(this);\n }\n\n getFilterCellCss(filter: IFilterTemplateDefMap, layout: string) {\n if (layout !== 'horizontal') {\n return 's12';\n }\n\n const size = Object.keys(filter).length;\n const width = parseInt((12 / size).toString(), 10);\n return 's' + width;\n }\n\n getFilterPlaceholderValue(filterDef: string | IFilterTemplateDef, filterKey?: string) {\n if (typeof filterDef === 'string') {\n return '';\n } else {\n return filterDef.placeholder;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableFilterRowController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nconst templateUrl = require('./groupRow.html');\n\nngTableGroupRow.$inject = [];\n\n/**\n * directive that renders the group header row for a table \n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nexport function ngTableGroupRow(){\n const directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableGroupRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableGroupRow.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport { IPromise } from 'angular';\nimport { DataResult, IGroupingFunc, Grouping, GroupSort } from '../core';\nimport { IColumnDef } from './public-interfaces';\nimport { ITableScope } from './ngTableController';\n\n/**\n * @private\n */\nexport interface IScopeExtensions {\n $selGroup: IGroupingFunc | string;\n $selGroupTitle: string;\n}\n\n\n/**\n * Controller for the {@link ngTableGroupRow ngTableGroupRow} directive\n */\nexport class NgTableGroupRowController {\n static $inject = ['$scope'];\n private groupFns: Array | IColumnDef> = [];\n constructor(private $scope: ITableScope & IScopeExtensions) {\n $scope.$watch>('params.group()', (newGrouping) => {\n this.setGroup(newGrouping);\n }, true);\n }\n\n getGroupables() {\n const groupableCols = this.$scope.$columns.filter($column => !!$column.groupable(this.$scope));\n return this.groupFns.concat(groupableCols);\n }\n\n getGroupTitle(group: IGroupingFunc | IColumnDef) {\n return this.isGroupingFunc(group) ? group.title : group.title(this.$scope);\n }\n\n\n getVisibleColumns() {\n return this.$scope.$columns.filter($column => $column.show(this.$scope))\n }\n\n groupBy(group: IGroupingFunc | IColumnDef) {\n if (this.isSelectedGroup(group)) {\n this.changeSortDirection();\n } else {\n if (this.isGroupingFunc(group)) {\n this.$scope.params.group(group);\n } else {\n // it's OK, we know that groupable will return a string\n // this is guaranteed by getGroupables returning only\n // columns that return (truthy) strings\n this.$scope.params.group(group.groupable(this.$scope) as string);\n }\n }\n }\n\n isSelectedGroup(group: IGroupingFunc | IColumnDef) {\n if (this.isGroupingFunc(group)) {\n return group === this.$scope.$selGroup;\n } else {\n return group.groupable(this.$scope) === this.$scope.$selGroup;\n }\n }\n\n toggleDetail() {\n this.$scope.params.settings().groupOptions.isExpanded = !this.$scope.params.settings().groupOptions.isExpanded;\n return this.$scope.params.reload();\n }\n\n private changeSortDirection() {\n let newDirection: GroupSort;\n if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'asc')) {\n newDirection = 'desc';\n } else if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'desc')) {\n newDirection = '';\n } else {\n newDirection = 'asc';\n }\n this.$scope.params.group(this.$scope.$selGroup, newDirection);\n }\n\n private findGroupColumn(groupKey: IGroupingFunc | string) {\n return this.$scope.$columns.filter($column => $column.groupable(this.$scope) === groupKey)[0];\n }\n\n private isGroupingFunc(val: IColumnDef | Grouping): val is IGroupingFunc {\n return typeof val === 'function';\n }\n\n private setGroup(grouping: Grouping) {\n const existingGroupCol = this.findGroupColumn(this.$scope.$selGroup);\n if (existingGroupCol && existingGroupCol.show.assign) {\n existingGroupCol.show.assign(this.$scope, true);\n }\n if (this.isGroupingFunc(grouping)) {\n this.groupFns = [grouping];\n this.$scope.$selGroup = grouping;\n this.$scope.$selGroupTitle = grouping.title;\n } else {\n // note: currently only one group is implemented\n const groupKey = Object.keys(grouping || {})[0];\n const groupedColumn = this.findGroupColumn(groupKey);\n if (groupedColumn) {\n this.$scope.$selGroupTitle = groupedColumn.title(this.$scope);\n this.$scope.$selGroup = groupKey;\n if (groupedColumn.show.assign) {\n groupedColumn.show.assign(this.$scope, false);\n }\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTableGroupRowController.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { NgTableEventsChannel, IPageButton } from '../core'\nimport { ITableScope } from './ngTableController';\n\ninterface IScopeExtensions {\n pages: IPageButton[]\n}\n\nngTablePagination.$inject = ['$compile', '$document', 'ngTableEventsChannel'];\n\n/**\n * Directive that renders the table pagination controls\n * @ngdoc directive\n */\nexport function ngTablePagination($compile: ng1.ICompileService, $document: ng1.IDocumentService, ngTableEventsChannel: NgTableEventsChannel): ng1.IDirective {\n\n return {\n restrict: 'A',\n scope: {\n 'params': '=ngTablePagination',\n 'templateUrl': '='\n },\n replace: false,\n link: function(scope: ITableScope & IScopeExtensions, element: ng1.IAugmentedJQuery/*, attrs*/) {\n\n ngTableEventsChannel.onAfterReloadData(function(pubParams) {\n scope.pages = pubParams.generatePagesArray();\n }, scope, function(pubParams){\n return pubParams === scope.params;\n });\n\n scope.$watch('templateUrl', function(templateUrl) {\n if (templateUrl === undefined) {\n return;\n }\n const template = ng1.element('
', $document);\n element.append(template);\n $compile(template)(scope);\n });\n }\n };\n}\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./src/browser/ngTablePagination.directive.ts","/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\nimport * as ng1 from 'angular';\nimport { IColumnDef, SelectData, ISelectDataFunc, ISelectOption } from './public-interfaces';\n\n/**\n * @private\n */\nexport interface IInputAttributes extends ng1.IAttributes {\n ngTableSelectFilterDs: string;\n}\n\n/**\n * @private\n */\nexport interface IScopeExtensions {\n $selectData: ISelectOption[]\n}\n\nngTableSelectFilterDs.$inject = [];\n\n/**\n * Takes the array returned by $column.filterData and makes it available as `$selectData` on the `$scope`.\n *\n * The resulting `$selectData` array will contain an extra item that is suitable to represent the user\n * \"deselecting\" an item from a `\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/number.html\n// module id = 43\n// module chunks = 0","var path = 'ng-table/filters/select-multiple.html';\nvar html = \"\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/select-multiple.html\n// module id = 44\n// module chunks = 0","var path = 'ng-table/filters/select.html';\nvar html = \"\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/select.html\n// module id = 45\n// module chunks = 0","var path = 'ng-table/filters/text.html';\nvar html = \"\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/filters/text.html\n// module id = 46\n// module chunks = 0","var path = 'ng-table/groupRow.html';\nvar html = \"\\n \\n \\n {{$selGroupTitle}}\\n \\n \\n \\n \\n \\n\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/groupRow.html\n// module id = 47\n// module chunks = 0","var path = 'ng-table/header.html';\nvar html = \"\\n\\n\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/header.html\n// module id = 48\n// module chunks = 0","var path = 'ng-table/pager.html';\nvar html = \"
\\n
\\n \\n
\\n
    \\n
  • \\n «\\n \\n \\n \\n \\n »\\n
  • \\n
\\n
\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/pager.html\n// module id = 49\n// module chunks = 0","var path = 'ng-table/sorterRow.html';\nvar html = \"\\n \\n
\\n \\n
\\n
\\n \\n\\n\";\nvar angular = require('angular');\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser/sorterRow.html\n// module id = 50\n// module chunks = 0","import * as ng1 from 'angular';\nimport { ngTableCoreModule } from './src/core';\nimport { ngTableBrowserModule } from './src/browser';\n\nconst ngTableModule = ng1.module('ngTable', [ngTableCoreModule.name, ngTableBrowserModule.name]);\n\nexport { ngTableModule };\nexport * from './src/core';\nexport * from './src/browser';\n\n\n// WEBPACK FOOTER //\n// ./~/angular1-template-loader!./index.ts","// todo: split\nimport { Injectable } from '@angular/core';\n\nimport { ConfigModel, PagerModel } from './models';\n\n/** Provides default values for Pagination and pager components */\n@Injectable()\nexport class PaginationConfig {\n main: ConfigModel = {\n maxSize: void 0,\n itemsPerPage: 10,\n boundaryLinks: false,\n directionLinks: true,\n firstText: 'First',\n previousText: 'Previous',\n nextText: 'Next',\n lastText: 'Last',\n pageBtnClass: '',\n rotate: true\n };\n pager: PagerModel = {\n itemsPerPage: 15,\n previousText: '« Previous',\n nextText: 'Next »',\n pageBtnClass: '',\n align: true\n };\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n Provider\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PageChangedEvent } from './pagination.component';\nimport { PaginationConfig } from './pagination.config';\n\nimport { ConfigModel, PagesModel } from './models';\n\nexport const PAGER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => PagerComponent),\n multi: true\n};\n\n@Component({\n selector: 'pager',\n templateUrl: './pager.component.html',\n providers: [PAGER_CONTROL_VALUE_ACCESSOR]\n})\nexport class PagerComponent implements ControlValueAccessor, OnInit {\n config: ConfigModel;\n /** if `true` aligns each link to the sides of pager */\n @Input() align: boolean;\n /** limit number for page links in pager */\n @Input() maxSize: number;\n /** if false first and last buttons will be hidden */\n @Input() boundaryLinks: boolean;\n /** if false previous and next buttons will be hidden */\n @Input() directionLinks: boolean;\n // labels\n /** first button text */\n @Input() firstText: string;\n /** previous button text */\n @Input() previousText: string;\n /** next button text */\n @Input() nextText: string;\n /** last button text */\n @Input() lastText: string;\n /** if true current page will in the middle of pages list */\n @Input() rotate: boolean;\n // css\n /** add class to */\n @Input() pageBtnClass: string;\n\n /** if true pagination component will be disabled */\n @Input() disabled: boolean;\n\n /** fired when total pages count changes, $event:number equals to total pages count */\n @Output() numPages: EventEmitter = new EventEmitter();\n /** fired when page was changed, $event:{page, itemsPerPage} equals to\n * object with current page index and number of items per page\n */\n @Output()\n pageChanged: EventEmitter = new EventEmitter();\n\n /** maximum number of items per page. If value less than 1 will display all items on one page */\n @Input()\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n set itemsPerPage(v: number) {\n this._itemsPerPage = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n /** total number of items in all pages */\n @Input()\n get totalItems(): number {\n return this._totalItems;\n }\n\n set totalItems(v: number) {\n this._totalItems = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n get totalPages(): number {\n return this._totalPages;\n }\n\n set totalPages(v: number) {\n this._totalPages = v;\n this.numPages.emit(v);\n if (this.inited) {\n this.selectPage(this.page);\n }\n }\n\n set page(value: number) {\n const _previous = this._page;\n this._page = value > this.totalPages ? this.totalPages : value || 1;\n this.changeDetection.markForCheck();\n\n if (_previous === this._page || typeof _previous === 'undefined') {\n return;\n }\n\n this.pageChanged.emit({\n page: this._page,\n itemsPerPage: this.itemsPerPage\n });\n }\n\n get page(): number {\n return this._page;\n }\n\n onChange = Function.prototype;\n onTouched = Function.prototype;\n\n classMap: string;\n pages: PagesModel[];\n\n protected _itemsPerPage: number;\n protected _totalItems: number;\n protected _totalPages: number;\n protected inited = false;\n protected _page = 1;\n\n constructor(private elementRef: ElementRef,\n paginationConfig: PaginationConfig,\n private changeDetection: ChangeDetectorRef) {\n this.elementRef = elementRef;\n if (!this.config) {\n this.configureOptions(\n Object.assign({}, paginationConfig.main, paginationConfig.pager)\n );\n }\n }\n\n configureOptions(config: ConfigModel): void {\n this.config = Object.assign({}, config);\n }\n\n ngOnInit(): void {\n if (typeof window !== 'undefined') {\n this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\n }\n // watch for maxSize\n this.maxSize =\n typeof this.maxSize !== 'undefined' ? this.maxSize : this.config.maxSize;\n this.rotate =\n typeof this.rotate !== 'undefined' ? this.rotate : this.config.rotate;\n this.boundaryLinks =\n typeof this.boundaryLinks !== 'undefined'\n ? this.boundaryLinks\n : this.config.boundaryLinks;\n this.directionLinks =\n typeof this.directionLinks !== 'undefined'\n ? this.directionLinks\n : this.config.directionLinks;\n this.pageBtnClass =\n typeof this.pageBtnClass !== 'undefined'\n ? this.pageBtnClass\n : this.config.pageBtnClass;\n\n // base class\n this.itemsPerPage =\n typeof this.itemsPerPage !== 'undefined'\n ? this.itemsPerPage\n : this.config.itemsPerPage;\n this.totalPages = this.calculateTotalPages();\n // this class\n this.pages = this.getPages(this.page, this.totalPages);\n this.inited = true;\n }\n\n writeValue(value: number): void {\n this.page = value;\n this.pages = this.getPages(this.page, this.totalPages);\n }\n\n getText(key: string): string {\n // tslint:disable-next-line:no-any\n return (this as any)[`${key}Text`] || (this as any).config[`${key}Text`];\n }\n\n noPrevious(): boolean {\n return this.page === 1;\n }\n\n noNext(): boolean {\n return this.page === this.totalPages;\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n selectPage(page: number, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n if (!this.disabled) {\n if (event && event.target) {\n // tslint:disable-next-line:no-any\n const target: any = event.target;\n target.blur();\n }\n this.writeValue(page);\n this.onChange(this.page);\n }\n }\n\n // Create page object used in template\n protected makePage(num: number,\n text: string,\n active: boolean): { number: number; text: string; active: boolean } {\n return {text, number: num, active};\n }\n\n protected getPages(currentPage: number, totalPages: number): PagesModel[] {\n const pages: PagesModel[] = [];\n\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized =\n typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;\n\n // recompute if maxSize\n if (isMaxSized) {\n if (this.rotate) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);\n endPage = startPage + this.maxSize - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - this.maxSize + 1;\n }\n } else {\n // Visible pages are paginated with maxSize\n startPage =\n (Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize + 1;\n\n // Adjust last page if limit is exceeded\n endPage = Math.min(startPage + this.maxSize - 1, totalPages);\n }\n }\n\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n const page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n\n // Add links to move between page sets\n if (isMaxSized && !this.rotate) {\n if (startPage > 1) {\n const previousPageSet = this.makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n\n if (endPage < totalPages) {\n const nextPageSet = this.makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n\n return pages;\n }\n\n // base class\n protected calculateTotalPages(): number {\n const totalPages =\n this.itemsPerPage < 1\n ? 1\n : Math.ceil(this.totalItems / this.itemsPerPage);\n\n return Math.max(totalPages || 0, 1);\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n Provider, TemplateRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PaginationConfig } from './pagination.config';\nimport { ConfigModel, PagesModel, PaginationLinkContext, PaginationNumberLinkContext } from './models';\n\nexport interface PageChangedEvent {\n itemsPerPage: number;\n page: number;\n}\n\nexport const PAGINATION_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => PaginationComponent),\n multi: true\n};\n\n@Component({\n selector: 'pagination',\n templateUrl: './pagination.component.html',\n providers: [PAGINATION_CONTROL_VALUE_ACCESSOR]\n})\nexport class PaginationComponent implements ControlValueAccessor, OnInit {\n config: ConfigModel;\n /** if `true` aligns each link to the sides of pager */\n @Input() align: boolean;\n /** limit number for page links in pager */\n @Input() maxSize: number;\n /** if false first and last buttons will be hidden */\n @Input() boundaryLinks: boolean;\n /** if false previous and next buttons will be hidden */\n @Input() directionLinks: boolean;\n // labels\n /** first button text */\n @Input() firstText: string;\n /** previous button text */\n @Input() previousText: string;\n /** next button text */\n @Input() nextText: string;\n /** last button text */\n @Input() lastText: string;\n /** if true current page will in the middle of pages list */\n @Input() rotate: boolean;\n // css\n /** add class to */\n @Input() pageBtnClass: string;\n /** if true pagination component will be disabled */\n @Input() disabled: boolean;\n /** custom template for page link */\n @Input() customPageTemplate: TemplateRef;\n /** custom template for next link */\n @Input() customNextTemplate: TemplateRef;\n /** custom template for previous link */\n @Input() customPreviousTemplate: TemplateRef;\n /** custom template for first link */\n @Input() customFirstTemplate: TemplateRef;\n /** custom template for last link */\n @Input() customLastTemplate: TemplateRef;\n\n /** fired when total pages count changes, $event:number equals to total pages count */\n @Output() numPages: EventEmitter = new EventEmitter();\n /** fired when page was changed, $event:{page, itemsPerPage} equals to object\n * with current page index and number of items per page\n */\n @Output()\n pageChanged = new EventEmitter();\n\n /** maximum number of items per page. If value less than 1 will display all items on one page */\n @Input()\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n set itemsPerPage(v: number) {\n this._itemsPerPage = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n /** total number of items in all pages */\n @Input()\n get totalItems(): number {\n return this._totalItems;\n }\n\n set totalItems(v: number) {\n this._totalItems = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n get totalPages(): number {\n return this._totalPages;\n }\n\n set totalPages(v: number) {\n this._totalPages = v;\n this.numPages.emit(v);\n if (this.inited) {\n this.selectPage(this.page);\n }\n }\n\n set page(value: number) {\n const _previous = this._page;\n this._page = value > this.totalPages ? this.totalPages : value || 1;\n this.changeDetection.markForCheck();\n\n if (_previous === this._page || typeof _previous === 'undefined') {\n return;\n }\n\n this.pageChanged.emit({\n page: this._page,\n itemsPerPage: this.itemsPerPage\n });\n }\n\n get page(): number {\n return this._page;\n }\n\n onChange = Function.prototype;\n onTouched = Function.prototype;\n\n classMap: string;\n pages: PagesModel[];\n\n protected _itemsPerPage: number;\n protected _totalItems: number;\n protected _totalPages: number;\n protected inited = false;\n protected _page = 1;\n\n constructor(\n private elementRef: ElementRef,\n paginationConfig: PaginationConfig,\n private changeDetection: ChangeDetectorRef\n ) {\n this.elementRef = elementRef;\n if (!this.config) {\n this.configureOptions(paginationConfig.main);\n }\n }\n\n configureOptions(config: ConfigModel): void {\n this.config = Object.assign({}, config);\n }\n\n ngOnInit(): void {\n if (typeof window !== 'undefined') {\n this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\n }\n // watch for maxSize\n this.maxSize =\n typeof this.maxSize !== 'undefined' ? this.maxSize : this.config.maxSize;\n this.rotate =\n typeof this.rotate !== 'undefined' ? this.rotate : this.config.rotate;\n this.boundaryLinks =\n typeof this.boundaryLinks !== 'undefined'\n ? this.boundaryLinks\n : this.config.boundaryLinks;\n this.directionLinks =\n typeof this.directionLinks !== 'undefined'\n ? this.directionLinks\n : this.config.directionLinks;\n this.pageBtnClass =\n typeof this.pageBtnClass !== 'undefined'\n ? this.pageBtnClass\n : this.config.pageBtnClass;\n\n // base class\n this.itemsPerPage =\n typeof this.itemsPerPage !== 'undefined'\n ? this.itemsPerPage\n : this.config.itemsPerPage;\n this.totalPages = this.calculateTotalPages();\n // this class\n this.pages = this.getPages(this.page, this.totalPages);\n this.inited = true;\n }\n\n writeValue(value: number): void {\n this.page = value;\n this.pages = this.getPages(this.page, this.totalPages);\n }\n\n getText(key: string): string {\n // tslint:disable-next-line:no-any\n return (this as any)[`${key}Text`] || (this as any).config[`${key}Text`];\n }\n\n noPrevious(): boolean {\n return this.page === 1;\n }\n\n noNext(): boolean {\n return this.page === this.totalPages;\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n selectPage(page: number, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n if (!this.disabled) {\n if (event && event.target) {\n // tslint:disable-next-line:no-any\n const target: any = event.target;\n target.blur();\n }\n this.writeValue(page);\n this.onChange(this.page);\n }\n }\n\n // Create page object used in template\n protected makePage(\n num: number,\n text: string,\n active: boolean\n ): { number: number; text: string; active: boolean } {\n return { text, number: num, active };\n }\n\n protected getPages(currentPage: number, totalPages: number): PagesModel[] {\n const pages: PagesModel[] = [];\n\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized =\n typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;\n\n // recompute if maxSize\n if (isMaxSized) {\n if (this.rotate) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);\n endPage = startPage + this.maxSize - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - this.maxSize + 1;\n }\n } else {\n // Visible pages are paginated with maxSize\n startPage =\n (Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize + 1;\n\n // Adjust last page if limit is exceeded\n endPage = Math.min(startPage + this.maxSize - 1, totalPages);\n }\n }\n\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n const page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n\n // Add links to move between page sets\n if (isMaxSized && !this.rotate) {\n if (startPage > 1) {\n const previousPageSet = this.makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n\n if (endPage < totalPages) {\n const nextPageSet = this.makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n\n return pages;\n }\n\n // base class\n protected calculateTotalPages(): number {\n const totalPages =\n this.itemsPerPage < 1\n ? 1\n : Math.ceil(this.totalItems / this.itemsPerPage);\n\n return Math.max(totalPages || 0, 1);\n }\n// tslint:disable-next-line:max-file-line-count\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { PaginationConfig } from './pagination.config';\n\nimport { PagerComponent } from './pager.component';\nimport { PaginationComponent } from './pagination.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [PagerComponent, PaginationComponent],\n exports: [PagerComponent, PaginationComponent]\n})\nexport class PaginationModule {\n static forRoot(): ModuleWithProviders {\n return { ngModule: PaginationModule, providers: [PaginationConfig] };\n }\n}\n","// Generated by CoffeeScript 1.10.0\n\n/** @preserve OverlappingMarkerSpiderfier\nhttps://github.com/jawj/OverlappingMarkerSpiderfier\nCopyright (c) 2011 - 2013 George MacKerron\nReleased under the MIT licence: http://opensource.org/licenses/mit-license\nNote: The Google Maps API v3 must be included *before* this code\n */\nvar hasProp = {}.hasOwnProperty,\n slice = [].slice;\n\nthis['OverlappingMarkerSpiderfier'] = (function() {\n var ge, gm, lcH, lcU, mt, p, twoPi;\n\n p = _Class.prototype;\n\n gm = google.maps;\n\n ge = gm.event;\n\n mt = gm.MapTypeId;\n\n twoPi = Math.PI * 2;\n\n p['keepSpiderfied'] = false;\n\n p['markersWontHide'] = false;\n\n p['markersWontMove'] = false;\n\n p['spiderfiedShadowColor'] = 'white';\n\n p['nudgeStackedMarkers'] = true;\n\n p['minNudgeZoomLevel'] = 8;\n\n p['nudgeRadius'] = 1;\n\n p['markerCountInBaseNudgeLevel'] = 9;\n\n p['maxNudgeCount'] = 9;\n\n p['nudgeBucketSize'] = 12;\n\n p['nearbyDistance'] = 20;\n\n p['circleSpiralSwitchover'] = 9;\n\n p['circleFootSeparation'] = 23;\n\n p['circleStartAngle'] = twoPi / 12;\n\n p['spiralFootSeparation'] = 26;\n\n p['spiralLengthStart'] = 11;\n\n p['spiralLengthFactor'] = 4;\n\n p['spiderfiedZIndex'] = 1000;\n\n p['usualLegZIndex'] = 10;\n\n p['highlightedLegZIndex'] = 20;\n\n p['event'] = 'click';\n\n p['minZoomLevel'] = false;\n\n p['lineToCenter'] = true;\n\n p['legWeight'] = 1.5;\n\n p['legColors'] = {\n 'usual': {},\n 'highlighted': {}\n };\n\n lcU = p['legColors']['usual'];\n\n lcH = p['legColors']['highlighted'];\n\n lcU[mt.HYBRID] = lcU[mt.SATELLITE] = '#fff';\n\n lcH[mt.HYBRID] = lcH[mt.SATELLITE] = '#f00';\n\n lcU[mt.TERRAIN] = lcU[mt.ROADMAP] = '#444';\n\n lcH[mt.TERRAIN] = lcH[mt.ROADMAP] = '#f00';\n\n function _Class(map1, opts) {\n var e, j, k, len, ref, v;\n this.map = map1;\n if (opts == null) {\n opts = {};\n }\n for (k in opts) {\n if (!hasProp.call(opts, k)) continue;\n v = opts[k];\n this[k] = v;\n }\n this.projHelper = new this.constructor.ProjHelper(this.map);\n this.initMarkerArrays();\n this.listeners = {};\n ref = ['click', 'zoom_changed', 'maptypeid_changed'];\n for (j = 0, len = ref.length; j < len; j++) {\n e = ref[j];\n ge.addListener(this.map, e, (function(_this) {\n return function() {\n return _this['unspiderfy']();\n };\n })(this));\n }\n if (this['nudgeStackedMarkers']) {\n ge.addListenerOnce(this.map, 'idle', (function(_this) {\n return function() {\n ge.addListener(_this.map, 'zoom_changed', function() {\n return _this.mapZoomChangeListener();\n });\n return _this.mapZoomChangeListener();\n };\n })(this));\n }\n }\n\n p.initMarkerArrays = function() {\n this.markers = [];\n return this.markerListenerRefs = [];\n };\n\n p['addMarker'] = function(marker) {\n var listenerRefs;\n if (marker['_oms'] != null) {\n return this;\n }\n marker['_oms'] = true;\n listenerRefs = [\n ge.addListener(marker, this['event'], (function(_this) {\n return function(event) {\n return _this.spiderListener(marker, event);\n };\n })(this))\n ];\n if (!this['markersWontHide']) {\n listenerRefs.push(ge.addListener(marker, 'visible_changed', (function(_this) {\n return function() {\n return _this.markerChangeListener(marker, false);\n };\n })(this)));\n }\n if (!this['markersWontMove']) {\n listenerRefs.push(ge.addListener(marker, 'position_changed', (function(_this) {\n return function() {\n return _this.markerChangeListener(marker, true);\n };\n })(this)));\n }\n this.markerListenerRefs.push(listenerRefs);\n this.markers.push(marker);\n if (this.isNudgingActive()) {\n this.requestNudge();\n }\n return this;\n };\n\n p.nudgeTimeout = null;\n\n p.requestNudge = function() {\n if (this.nudgeTimeout) {\n clearTimeout(this.nudgeTimeout);\n }\n return this.nudgeTimeout = setTimeout((function(_this) {\n return function() {\n return _this.nudgeAllMarkers();\n };\n })(this), 10);\n };\n\n p.isNudgingActive = function() {\n return this['nudgeStackedMarkers'] && !(this['minNudgeZoomLevel'] && this.map.getZoom() < this['minNudgeZoomLevel']) && !this.spiderfied;\n };\n\n p.markerChangeListener = function(marker, positionChanged) {\n if ((marker['_omsData'] != null) && marker['_omsData'].leg && (positionChanged || !marker.getVisible()) && !((this.spiderfying != null) || (this.unspiderfying != null))) {\n return this['unspiderfy'](positionChanged ? marker : null);\n }\n };\n\n p.countsPerLevel = [1, 1];\n\n p.levelsByCount = [];\n\n p.getCountPerNudgeLevel = function(level) {\n if (this.countsPerLevel[level] != null) {\n return this.countsPerLevel[level];\n }\n this.countsPerLevel[level] = this.getCountPerNudgeLevel(level - 1) + Math.pow(2, level - 2) * this['markerCountInBaseNudgeLevel'];\n return this.countsPerLevel[level];\n };\n\n p.getNudgeLevel = function(markerIndex) {\n var level;\n if (this.levelsByCount[markerIndex] != null) {\n return this.levelsByCount[markerIndex];\n }\n level = 0;\n while (markerIndex >= this.countsPerLevel[level]) {\n if (level + 1 >= this.countsPerLevel.length) {\n this.getCountPerNudgeLevel(level + 1);\n }\n level++;\n }\n this.levelsByCount[markerIndex] = level - 1;\n return this.levelsByCount[markerIndex];\n };\n\n p.nudgeAllMarkers = function() {\n var bucketSize, changeX, changeY, changesX, changesY, count, getHash, j, len, m, needsNudge, originalPos, pos, posHash, positions, ref, ref1, ref2, ref3, ref4, ref5, results, ringLevel;\n if (!this.isNudgingActive()) {\n return;\n }\n positions = {};\n changesX = [];\n changesY = [];\n bucketSize = 1 / ((1 + this['nudgeBucketSize']) * this['nudgeRadius']);\n getHash = (function(_this) {\n return function(pos) {\n return Math.floor(pos.x * bucketSize) + ',' + Math.floor(pos.y * bucketSize);\n };\n })(this);\n ref = this.markers;\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n m = ref[j];\n needsNudge = false;\n pos = this.llToPt((ref1 = (ref2 = m['_omsData']) != null ? ref2.usualPosition : void 0) != null ? ref1 : m.position);\n originalPos = {\n x: pos.x,\n y: pos.y\n };\n posHash = getHash(pos);\n while ((positions[posHash] != null) && ((this['maxNudgeCount'] == null) || positions[posHash] <= this['maxNudgeCount'])) {\n count = positions[posHash];\n positions[posHash] += 1;\n if (changesX[count] != null) {\n changeX = changesX[count];\n changeY = changesY[count];\n } else {\n ringLevel = this.getNudgeLevel(count);\n changesX[count] = changeX = Math.sin(twoPi * count / this['markerCountInBaseNudgeLevel'] / ringLevel) * 20 * this['nudgeRadius'] * ringLevel;\n changesY[count] = changeY = Math.cos(twoPi * count / this['markerCountInBaseNudgeLevel'] / ringLevel) * 20 * this['nudgeRadius'] * ringLevel;\n }\n pos.x = originalPos.x + changeX;\n pos.y = originalPos.y + changeY;\n this.nudged = true;\n needsNudge = true;\n posHash = getHash(pos);\n }\n if (needsNudge) {\n m['_omsData'] = (ref3 = m['_omsData']) != null ? ref3 : {};\n m['_omsData'].usualPosition = (ref4 = (ref5 = m['_omsData']) != null ? ref5.usualPosition : void 0) != null ? ref4 : m.position;\n m.setPosition(this.ptToLl(pos));\n } else if ((m['_omsData'] != null) && (m['_omsData'].leg == null)) {\n m.setPosition(m['_omsData'].usualPosition);\n delete m['_omsData'];\n }\n if (!(posHash in positions)) {\n results.push(positions[posHash] = 1);\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n\n p.resetNudgedMarkers = function() {\n var j, len, m, ref;\n if (!this.nudged) {\n return;\n }\n ref = this.markers;\n for (j = 0, len = ref.length; j < len; j++) {\n m = ref[j];\n if ((m['_omsData'] != null) && (m['_omsData'].leg == null)) {\n m.setPosition(m['_omsData'].usualPosition);\n delete m['_omsData'];\n }\n }\n return delete this.nudged;\n };\n\n p.mapZoomChangeListener = function() {\n if (this['minNudgeZoomLevel'] && this.map.getZoom() < this['minNudgeZoomLevel']) {\n return this.resetNudgedMarkers();\n }\n return this.requestNudge();\n };\n\n p['getMarkers'] = function() {\n return this.markers.slice(0);\n };\n\n p['removeMarker'] = function(marker) {\n var i, j, len, listenerRef, listenerRefs;\n if (marker['_omsData'] != null) {\n this['unspiderfy']();\n }\n i = this.arrIndexOf(this.markers, marker);\n if (i < 0) {\n return this;\n }\n listenerRefs = this.markerListenerRefs.splice(i, 1)[0];\n for (j = 0, len = listenerRefs.length; j < len; j++) {\n listenerRef = listenerRefs[j];\n ge.removeListener(listenerRef);\n }\n delete marker['_oms'];\n this.markers.splice(i, 1);\n if (this.isNudgingActive()) {\n this.requestNudge();\n }\n return this;\n };\n\n p['clearMarkers'] = function() {\n var i, j, l, len, len1, listenerRef, listenerRefs, marker, ref;\n this['unspiderfy']();\n ref = this.markers;\n for (i = j = 0, len = ref.length; j < len; i = ++j) {\n marker = ref[i];\n listenerRefs = this.markerListenerRefs[i];\n for (l = 0, len1 = listenerRefs.length; l < len1; l++) {\n listenerRef = listenerRefs[l];\n ge.removeListener(listenerRef);\n }\n delete marker['_oms'];\n }\n this.initMarkerArrays();\n return this;\n };\n\n p['addListener'] = function(event, func) {\n var base;\n ((base = this.listeners)[event] != null ? base[event] : base[event] = []).push(func);\n return this;\n };\n\n p['removeListener'] = function(event, func) {\n var i;\n i = this.arrIndexOf(this.listeners[event], func);\n if (!(i < 0)) {\n this.listeners[event].splice(i, 1);\n }\n return this;\n };\n\n p['clearListeners'] = function(event) {\n this.listeners[event] = [];\n return this;\n };\n\n p.trigger = function() {\n var args, event, func, j, len, ref, ref1, results;\n event = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n ref1 = (ref = this.listeners[event]) != null ? ref : [];\n results = [];\n for (j = 0, len = ref1.length; j < len; j++) {\n func = ref1[j];\n results.push(func.apply(null, args));\n }\n return results;\n };\n\n p.generatePtsCircle = function(count, centerPt) {\n var angle, angleStep, circumference, i, j, legLength, ref, results;\n circumference = this['circleFootSeparation'] * (2 + count);\n legLength = circumference / twoPi;\n angleStep = twoPi / count;\n results = [];\n for (i = j = 0, ref = count; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {\n angle = this['circleStartAngle'] + i * angleStep;\n results.push(new gm.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle)));\n }\n return results;\n };\n\n p.generatePtsSpiral = function(count, centerPt) {\n var angle, i, j, legLength, pt, ref, results;\n legLength = this['spiralLengthStart'];\n angle = 0;\n results = [];\n for (i = j = 0, ref = count; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {\n angle += this['spiralFootSeparation'] / legLength + i * 0.0005;\n pt = new gm.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle));\n legLength += twoPi * this['spiralLengthFactor'] / angle;\n results.push(pt);\n }\n return results;\n };\n\n p.spiderListener = function(marker, event) {\n var j, len, m, mPt, markerPt, markerSpiderfied, nDist, nearbyMarkerData, nonNearbyMarkers, pxSq, ref;\n markerSpiderfied = (marker['_omsData'] != null) && (marker['_omsData'].leg != null);\n if (!(markerSpiderfied && this['keepSpiderfied'])) {\n if (this['event'] === 'mouseover') {\n window.clearTimeout(p.timeout);\n p.timeout = setTimeout((function(_this) {\n return function() {\n return _this['unspiderfy']();\n };\n })(this), 3000);\n } else {\n this['unspiderfy']();\n }\n }\n if (markerSpiderfied || this.map.getStreetView().getVisible() || this.map.getMapTypeId() === 'GoogleEarthAPI' || this['minZoomLevel'] && this.map.getZoom() < this['minZoomLevel']) {\n return this.trigger('click', marker, event);\n } else {\n nearbyMarkerData = [];\n nonNearbyMarkers = [];\n nDist = this['nearbyDistance'];\n pxSq = nDist * nDist;\n markerPt = this.llToPt(marker.position);\n ref = this.markers;\n for (j = 0, len = ref.length; j < len; j++) {\n m = ref[j];\n if (!((m.map != null) && m.getVisible())) {\n continue;\n }\n mPt = this.llToPt(m.position);\n if (this.ptDistanceSq(mPt, markerPt) < pxSq) {\n nearbyMarkerData.push({\n marker: m,\n markerPt: mPt\n });\n } else {\n nonNearbyMarkers.push(m);\n }\n }\n if (nearbyMarkerData.length === 1) {\n return this.trigger('click', marker, event);\n } else {\n return this.spiderfy(nearbyMarkerData, nonNearbyMarkers);\n }\n }\n };\n\n p['markersNearMarker'] = function(marker, firstOnly) {\n var j, len, m, mPt, markerPt, markers, nDist, pxSq, ref, ref1, ref2;\n if (firstOnly == null) {\n firstOnly = false;\n }\n if (this.projHelper.getProjection() == null) {\n throw \"Must wait for 'idle' event on map before calling markersNearMarker\";\n }\n nDist = this['nearbyDistance'];\n pxSq = nDist * nDist;\n markerPt = this.llToPt(marker.position);\n markers = [];\n ref = this.markers;\n for (j = 0, len = ref.length; j < len; j++) {\n m = ref[j];\n if (m === marker || (m.map == null) || !m.getVisible()) {\n continue;\n }\n mPt = this.llToPt((ref1 = (ref2 = m['_omsData']) != null ? ref2.usualPosition : void 0) != null ? ref1 : m.position);\n if (this.ptDistanceSq(mPt, markerPt) < pxSq) {\n markers.push(m);\n if (firstOnly) {\n break;\n }\n }\n }\n return markers;\n };\n\n p['markersNearAnyOtherMarker'] = function() {\n var i, i1, i2, j, l, len, len1, len2, m, m1, m1Data, m2, m2Data, mData, n, nDist, pxSq, ref, ref1, ref2, results;\n if (this.projHelper.getProjection() == null) {\n throw \"Must wait for 'idle' event on map before calling markersNearAnyOtherMarker\";\n }\n nDist = this['nearbyDistance'];\n pxSq = nDist * nDist;\n mData = (function() {\n var j, len, ref, ref1, ref2, results;\n ref = this.markers;\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n m = ref[j];\n results.push({\n pt: this.llToPt((ref1 = (ref2 = m['_omsData']) != null ? ref2.usualPosition : void 0) != null ? ref1 : m.position),\n willSpiderfy: false\n });\n }\n return results;\n }).call(this);\n ref = this.markers;\n for (i1 = j = 0, len = ref.length; j < len; i1 = ++j) {\n m1 = ref[i1];\n if (!((m1.map != null) && m1.getVisible())) {\n continue;\n }\n m1Data = mData[i1];\n if (m1Data.willSpiderfy) {\n continue;\n }\n ref1 = this.markers;\n for (i2 = l = 0, len1 = ref1.length; l < len1; i2 = ++l) {\n m2 = ref1[i2];\n if (i2 === i1) {\n continue;\n }\n if (!((m2.map != null) && m2.getVisible())) {\n continue;\n }\n m2Data = mData[i2];\n if (i2 < i1 && !m2Data.willSpiderfy) {\n continue;\n }\n if (this.ptDistanceSq(m1Data.pt, m2Data.pt) < pxSq) {\n m1Data.willSpiderfy = m2Data.willSpiderfy = true;\n break;\n }\n }\n }\n ref2 = this.markers;\n results = [];\n for (i = n = 0, len2 = ref2.length; n < len2; i = ++n) {\n m = ref2[i];\n if (mData[i].willSpiderfy) {\n results.push(m);\n }\n }\n return results;\n };\n\n p.makeHighlightListenerFuncs = function(marker) {\n return {\n highlight: (function(_this) {\n return function() {\n var icon;\n marker['_omsData'].leg.setOptions({\n strokeColor: _this['legColors']['highlighted'][_this.map.mapTypeId],\n zIndex: _this['highlightedLegZIndex']\n });\n if (marker['_omsData'].shadow != null) {\n icon = marker['_omsData'].shadow.getIcon();\n icon.fillOpacity = 0.8;\n return marker['_omsData'].shadow.setOptions({\n icon: icon\n });\n }\n };\n })(this),\n unhighlight: (function(_this) {\n return function() {\n var icon;\n marker['_omsData'].leg.setOptions({\n strokeColor: _this['legColors']['usual'][_this.map.mapTypeId],\n zIndex: _this['usualLegZIndex']\n });\n if (marker['_omsData'].shadow != null) {\n icon = marker['_omsData'].shadow.getIcon();\n icon.fillOpacity = 0.3;\n return marker['_omsData'].shadow.setOptions({\n icon: icon\n });\n }\n };\n })(this)\n };\n };\n\n p.spiderfy = function(markerData, nonNearbyMarkers) {\n var bodyPt, centerLl, footLl, footPt, footPts, highlightListenerFuncs, leg, lineOrigin, marker, md, nearestMarkerDatum, numFeet, spiderfiedMarkers;\n this.spiderfying = true;\n numFeet = markerData.length;\n bodyPt = this.ptAverage((function() {\n var j, len, results;\n results = [];\n for (j = 0, len = markerData.length; j < len; j++) {\n md = markerData[j];\n results.push(md.markerPt);\n }\n return results;\n })());\n footPts = numFeet >= this['circleSpiralSwitchover'] ? this.generatePtsSpiral(numFeet, bodyPt).reverse() : this.generatePtsCircle(numFeet, bodyPt);\n centerLl = this.ptToLl(bodyPt);\n spiderfiedMarkers = (function() {\n var j, len, ref, ref1, ref2, results;\n results = [];\n for (j = 0, len = footPts.length; j < len; j++) {\n footPt = footPts[j];\n footLl = this.ptToLl(footPt);\n nearestMarkerDatum = this.minExtract(markerData, (function(_this) {\n return function(md) {\n return _this.ptDistanceSq(md.markerPt, footPt);\n };\n })(this));\n marker = nearestMarkerDatum.marker;\n lineOrigin = this['lineToCenter'] ? centerLl : marker.position;\n leg = new gm.Polyline({\n map: this.map,\n path: [lineOrigin, footLl],\n strokeColor: this['legColors']['usual'][this.map.mapTypeId],\n strokeWeight: this['legWeight'],\n zIndex: this['usualLegZIndex']\n });\n marker['_omsData'] = (ref = marker['_omsData']) != null ? ref : {};\n marker['_omsData'].usualPosition = (ref1 = (ref2 = marker['_omsData']) != null ? ref2.usualPosition : void 0) != null ? ref1 : marker.position;\n marker['_omsData'].leg = leg;\n if (this['spiderfiedShadowColor']) {\n marker['_omsData'].shadow = new gm.Marker({\n position: footLl,\n map: this.map,\n clickable: false,\n zIndex: -2,\n icon: {\n path: google.maps.SymbolPath.CIRCLE,\n fillOpacity: 0.3,\n fillColor: this['spiderfiedShadowColor'],\n strokeWeight: 0,\n scale: 20\n }\n });\n }\n if (this['legColors']['highlighted'][this.map.mapTypeId] !== this['legColors']['usual'][this.map.mapTypeId]) {\n highlightListenerFuncs = this.makeHighlightListenerFuncs(marker);\n marker['_omsData'].hightlightListeners = {\n highlight: ge.addListener(marker, 'mouseover', highlightListenerFuncs.highlight),\n unhighlight: ge.addListener(marker, 'mouseout', highlightListenerFuncs.unhighlight)\n };\n }\n marker.setPosition(footLl);\n marker.setZIndex(Math.round(this['spiderfiedZIndex'] + footPt.y));\n results.push(marker);\n }\n return results;\n }).call(this);\n delete this.spiderfying;\n this.spiderfied = true;\n return this.trigger('spiderfy', spiderfiedMarkers, nonNearbyMarkers);\n };\n\n p['unspiderfy'] = function(markerNotToMove) {\n var j, len, listeners, marker, nonNearbyMarkers, ref, ref1, unspiderfiedMarkers;\n if (markerNotToMove == null) {\n markerNotToMove = null;\n }\n if (!((this.spiderfied != null) || (this.nudged != null))) {\n return this;\n }\n this.unspiderfying = true;\n unspiderfiedMarkers = [];\n nonNearbyMarkers = [];\n ref = this.markers;\n for (j = 0, len = ref.length; j < len; j++) {\n marker = ref[j];\n if ((marker['_omsData'] != null) && (marker['_omsData'].leg != null)) {\n marker['_omsData'].leg.setMap(null);\n if ((ref1 = marker['_omsData'].shadow) != null) {\n ref1.setMap(null);\n }\n if (marker !== markerNotToMove) {\n marker.setPosition(marker['_omsData'].usualPosition);\n }\n marker.setZIndex(null);\n listeners = marker['_omsData'].hightlightListeners;\n if (listeners != null) {\n ge.removeListener(listeners.highlight);\n ge.removeListener(listeners.unhighlight);\n }\n delete marker['_omsData'];\n unspiderfiedMarkers.push(marker);\n } else {\n nonNearbyMarkers.push(marker);\n }\n }\n delete this.unspiderfying;\n delete this.spiderfied;\n this.trigger('unspiderfy', unspiderfiedMarkers, nonNearbyMarkers);\n if (this.nudged) {\n this.requestNudge();\n }\n return this;\n };\n\n p.ptDistanceSq = function(pt1, pt2) {\n var dx, dy;\n dx = pt1.x - pt2.x;\n dy = pt1.y - pt2.y;\n return dx * dx + dy * dy;\n };\n\n p.ptAverage = function(pts) {\n var j, len, numPts, pt, sumX, sumY;\n sumX = sumY = 0;\n for (j = 0, len = pts.length; j < len; j++) {\n pt = pts[j];\n sumX += pt.x;\n sumY += pt.y;\n }\n numPts = pts.length;\n return new gm.Point(sumX / numPts, sumY / numPts);\n };\n\n p.llToPt = function(ll) {\n return this.projHelper.getProjection().fromLatLngToDivPixel(ll);\n };\n\n p.ptToLl = function(pt) {\n return this.projHelper.getProjection().fromDivPixelToLatLng(pt);\n };\n\n p.minExtract = function(set, func) {\n var bestIndex, bestVal, index, item, j, len, val;\n for (index = j = 0, len = set.length; j < len; index = ++j) {\n item = set[index];\n val = func(item);\n if ((typeof bestIndex === \"undefined\" || bestIndex === null) || val < bestVal) {\n bestVal = val;\n bestIndex = index;\n }\n }\n return set.splice(bestIndex, 1)[0];\n };\n\n p.arrIndexOf = function(arr, obj) {\n var i, j, len, o;\n if (arr.indexOf != null) {\n return arr.indexOf(obj);\n }\n for (i = j = 0, len = arr.length; j < len; i = ++j) {\n o = arr[i];\n if (o === obj) {\n return i;\n }\n }\n return -1;\n };\n\n _Class.ProjHelper = function(map) {\n return this.setMap(map);\n };\n\n _Class.ProjHelper.prototype = new gm.OverlayView();\n\n _Class.ProjHelper.prototype['draw'] = function() {};\n\n return _Class;\n\n})();\n\nmodule.exports = this['OverlappingMarkerSpiderfier'];\n","/**\r\n * Compiles a querystring\r\n * Returns string representation of the object\r\n *\r\n * @param {Object}\r\n * @api private\r\n */\r\n\r\nexports.encode = function (obj) {\r\n var str = '';\r\n\r\n for (var i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n if (str.length) str += '&';\r\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\r\n }\r\n }\r\n\r\n return str;\r\n};\r\n\r\n/**\r\n * Parses a simple querystring into an object\r\n *\r\n * @param {String} qs\r\n * @api private\r\n */\r\n\r\nexports.decode = function(qs){\r\n var qry = {};\r\n var pairs = qs.split('&');\r\n for (var i = 0, l = pairs.length; i < l; i++) {\r\n var pair = pairs[i].split('=');\r\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n }\r\n return qry;\r\n};\r\n","/**\r\n * Parses an URI\r\n *\r\n * @author Steven Levithan (MIT license)\r\n * @api private\r\n */\r\n\r\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\r\n\r\nvar parts = [\r\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\r\n];\r\n\r\nmodule.exports = function parseuri(str) {\r\n var src = str,\r\n b = str.indexOf('['),\r\n e = str.indexOf(']');\r\n\r\n if (b != -1 && e != -1) {\r\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\r\n }\r\n\r\n var m = re.exec(str || ''),\r\n uri = {},\r\n i = 14;\r\n\r\n while (i--) {\r\n uri[parts[i]] = m[i] || '';\r\n }\r\n\r\n if (b != -1 && e != -1) {\r\n uri.source = src;\r\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\r\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\r\n uri.ipv6uri = true;\r\n }\r\n\r\n return uri;\r\n};\r\n","import { InjectionToken } from '@angular/core';\n\nconst WINDOW = new InjectionToken('WindowToken', typeof window !== 'undefined' && window.document\n ? { providedIn: 'root', factory: () => window }\n : { providedIn: 'root', factory: () => undefined });\n\n/*\n * Public API Surface of ngx-window-token\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { WINDOW };\n","import { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, Optional, EventEmitter, Directive, Input, Output, NgModule } from '@angular/core';\nimport { WINDOW } from 'ngx-window-token';\nimport { Subject } from 'rxjs';\n\n/**\n * The following code is heavily copied from https://github.com/zenorocha/clipboard.js\n */\nclass ClipboardService {\n constructor(ngZone, document, window) {\n this.ngZone = ngZone;\n this.document = document;\n this.window = window;\n this.copySubject = new Subject();\n this.copyResponse$ = this.copySubject.asObservable();\n this.config = {};\n }\n configure(config) {\n this.config = config;\n }\n copy(content) {\n if (!this.isSupported || !content) {\n return this.pushCopyResponse({ isSuccess: false, content });\n }\n const copyResult = this.copyFromContent(content);\n if (copyResult) {\n return this.pushCopyResponse({ content, isSuccess: copyResult });\n }\n return this.pushCopyResponse({ isSuccess: false, content });\n }\n get isSupported() {\n return !!this.document.queryCommandSupported && !!this.document.queryCommandSupported('copy') && !!this.window;\n }\n isTargetValid(element) {\n if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) {\n if (element.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n return true;\n }\n throw new Error('Target should be input or textarea');\n }\n /**\n * Attempts to copy from an input `targetElm`\n */\n copyFromInputElement(targetElm, isFocus = true) {\n try {\n this.selectTarget(targetElm);\n const re = this.copyText();\n this.clearSelection(isFocus ? targetElm : undefined, this.window);\n return re && this.isCopySuccessInIE11();\n }\n catch (error) {\n return false;\n }\n }\n /**\n * This is a hack for IE11 to return `true` even if copy fails.\n */\n isCopySuccessInIE11() {\n const clipboardData = this.window['clipboardData'];\n if (clipboardData && clipboardData.getData) {\n if (!clipboardData.getData('Text')) {\n return false;\n }\n }\n return true;\n }\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n * and makes a selection on it.\n */\n copyFromContent(content, container = this.document.body) {\n // check if the temp textarea still belongs to the current container.\n // In case we have multiple places using ngx-clipboard, one is in a modal using container but the other one is not.\n if (this.tempTextArea && !container.contains(this.tempTextArea)) {\n this.destroy(this.tempTextArea.parentElement || undefined);\n }\n if (!this.tempTextArea) {\n this.tempTextArea = this.createTempTextArea(this.document, this.window);\n try {\n container.appendChild(this.tempTextArea);\n }\n catch (error) {\n throw new Error('Container should be a Dom element');\n }\n }\n this.tempTextArea.value = content;\n const toReturn = this.copyFromInputElement(this.tempTextArea, false);\n if (this.config.cleanUpAfterCopy) {\n this.destroy(this.tempTextArea.parentElement || undefined);\n }\n return toReturn;\n }\n /**\n * Remove temporary textarea if any exists.\n */\n destroy(container = this.document.body) {\n if (this.tempTextArea) {\n container.removeChild(this.tempTextArea);\n // removeChild doesn't remove the reference from memory\n this.tempTextArea = undefined;\n }\n }\n /**\n * Select the target html input element.\n */\n selectTarget(inputElement) {\n inputElement.select();\n inputElement.setSelectionRange(0, inputElement.value.length);\n return inputElement.value.length;\n }\n copyText() {\n return this.document.execCommand('copy');\n }\n /**\n * Moves focus away from `target` and back to the trigger, removes current selection.\n */\n clearSelection(inputElement, window) {\n inputElement && inputElement.focus();\n window.getSelection()?.removeAllRanges();\n }\n /**\n * Creates a fake textarea for copy command.\n */\n createTempTextArea(doc, window) {\n const isRTL = doc.documentElement.getAttribute('dir') === 'rtl';\n let ta;\n ta = doc.createElement('textarea');\n // Prevent zooming on iOS\n ta.style.fontSize = '12pt';\n // Reset box model\n ta.style.border = '0';\n ta.style.padding = '0';\n ta.style.margin = '0';\n // Move element out of screen horizontally\n ta.style.position = 'absolute';\n ta.style[isRTL ? 'right' : 'left'] = '-9999px';\n // Move element to the same position vertically\n const yPosition = window.pageYOffset || doc.documentElement.scrollTop;\n ta.style.top = yPosition + 'px';\n ta.setAttribute('readonly', '');\n return ta;\n }\n /**\n * Pushes copy operation response to copySubject, to provide global access\n * to the response.\n */\n pushCopyResponse(response) {\n if (this.copySubject.observers.length > 0) {\n this.ngZone.run(() => {\n this.copySubject.next(response);\n });\n }\n }\n /**\n * @deprecated use pushCopyResponse instead.\n */\n pushCopyReponse(response) {\n this.pushCopyResponse(response);\n }\n}\nClipboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardService, deps: [{ token: i0.NgZone }, { token: DOCUMENT }, { token: WINDOW, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nClipboardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [WINDOW]\n }] }]; } });\n\nclass ClipboardDirective {\n constructor(ngZone, host, renderer, clipboardSrv) {\n this.ngZone = ngZone;\n this.host = host;\n this.renderer = renderer;\n this.clipboardSrv = clipboardSrv;\n this.cbOnSuccess = new EventEmitter();\n this.cbOnError = new EventEmitter();\n this.onClick = (event) => {\n if (!this.clipboardSrv.isSupported) {\n this.handleResult(false, undefined, event);\n }\n else if (this.targetElm && this.clipboardSrv.isTargetValid(this.targetElm)) {\n this.handleResult(this.clipboardSrv.copyFromInputElement(this.targetElm), this.targetElm.value, event);\n }\n else if (this.cbContent) {\n this.handleResult(this.clipboardSrv.copyFromContent(this.cbContent, this.container), this.cbContent, event);\n }\n };\n }\n // eslint-disable-next-line no-empty, @typescript-eslint/no-empty-function\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n // By default each host listener schedules change detection and also wrapped\n // into additional function that calls `markForCheck()`. We're listening the `click`\n // event in the context of the root zone to avoid running unnecessary change detections,\n // since this directive doesn't do anything template-related (e.g. updates template variables).\n this.clickListener = this.renderer.listen(this.host.nativeElement, 'click', this.onClick);\n });\n }\n ngOnDestroy() {\n if (this.clickListener) {\n this.clickListener();\n }\n this.clipboardSrv.destroy(this.container);\n }\n /**\n * Fires an event based on the copy operation result.\n * @param succeeded\n */\n handleResult(succeeded, copiedContent, event) {\n let response = {\n isSuccess: succeeded,\n content: copiedContent,\n successMessage: this.cbSuccessMsg,\n event\n };\n if (succeeded) {\n if (this.cbOnSuccess.observed) {\n this.ngZone.run(() => {\n this.cbOnSuccess.emit(response);\n });\n }\n }\n else {\n if (this.cbOnError.observed) {\n this.ngZone.run(() => {\n this.cbOnError.emit(response);\n });\n }\n }\n this.clipboardSrv.pushCopyResponse(response);\n }\n}\nClipboardDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ClipboardService }], target: i0.ɵɵFactoryTarget.Directive });\nClipboardDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: ClipboardDirective, selector: \"[ngxClipboard]\", inputs: { targetElm: [\"ngxClipboard\", \"targetElm\"], container: \"container\", cbContent: \"cbContent\", cbSuccessMsg: \"cbSuccessMsg\" }, outputs: { cbOnSuccess: \"cbOnSuccess\", cbOnError: \"cbOnError\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ngxClipboard]' }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ClipboardService }]; }, propDecorators: { targetElm: [{\n type: Input,\n args: ['ngxClipboard']\n }], container: [{\n type: Input\n }], cbContent: [{\n type: Input\n }], cbSuccessMsg: [{\n type: Input\n }], cbOnSuccess: [{\n type: Output\n }], cbOnError: [{\n type: Output\n }] } });\n\nclass ClipboardIfSupportedDirective {\n constructor(_clipboardService, _viewContainerRef, _templateRef) {\n this._clipboardService = _clipboardService;\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n }\n ngOnInit() {\n if (this._clipboardService.isSupported) {\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n }\n}\nClipboardIfSupportedDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardIfSupportedDirective, deps: [{ token: ClipboardService }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nClipboardIfSupportedDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: ClipboardIfSupportedDirective, selector: \"[ngxClipboardIfSupported]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardIfSupportedDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngxClipboardIfSupported]'\n }]\n }], ctorParameters: function () { return [{ type: ClipboardService }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; } });\n\nclass ClipboardModule {\n}\nClipboardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nClipboardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardModule, declarations: [ClipboardDirective, ClipboardIfSupportedDirective], imports: [CommonModule], exports: [ClipboardDirective, ClipboardIfSupportedDirective] });\nClipboardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [ClipboardDirective, ClipboardIfSupportedDirective],\n exports: [ClipboardDirective, ClipboardIfSupportedDirective]\n }]\n }] });\n\n/*\n * Public API Surface of ngx-clipboard\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ClipboardDirective, ClipboardIfSupportedDirective, ClipboardModule, ClipboardService };\n","import * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, ViewContainerRef, Component, Inject, Input, Output, ViewChildren, ViewChild, HostListener, Injectable, Type, TemplateRef, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\n\nconst NgxSmartModalConfig = {\n bodyClassOpen: 'dialog-open',\n prefixEvent: 'ngx-smart-modal.'\n};\n\nclass NgxSmartModalComponent {\n constructor(_renderer, _changeDetectorRef, _viewContainerRef, elementRef, _document, _platformId) {\n this._renderer = _renderer;\n this._changeDetectorRef = _changeDetectorRef;\n this._viewContainerRef = _viewContainerRef;\n this.elementRef = elementRef;\n this._document = _document;\n this._platformId = _platformId;\n this.closable = true;\n this.escapable = true;\n this.dismissable = true;\n this.identifier = '';\n this.customClass = 'nsm-dialog-animation-fade';\n this.visible = false;\n this.backdrop = true;\n this.force = true;\n this.hideDelay = 500;\n this.autostart = false;\n this.target = '';\n this.ariaLabel = null;\n this.ariaLabelledBy = null;\n this.ariaDescribedBy = null;\n this.refocus = true;\n this.visibleChange = new EventEmitter();\n this.onClose = new EventEmitter();\n this.onCloseFinished = new EventEmitter();\n this.onDismiss = new EventEmitter();\n this.onDismissFinished = new EventEmitter();\n this.onAnyCloseEvent = new EventEmitter();\n this.onAnyCloseEventFinished = new EventEmitter();\n this.onOpen = new EventEmitter();\n this.onOpenFinished = new EventEmitter();\n this.onEscape = new EventEmitter();\n this.onDataAdded = new EventEmitter();\n this.onDataRemoved = new EventEmitter();\n this.layerPosition = 1041;\n this.overlayVisible = false;\n this.openedClass = false;\n this.createFrom = 'html';\n }\n ngOnInit() {\n if (!this.identifier || !this.identifier.length) {\n throw new Error('identifier field isn’t set. Please set one before calling in a template.');\n }\n this._sendEvent('create');\n }\n ngAfterViewInit() {\n if (this.contentComponent) {\n const componentRef = this._viewContainerRef.createComponent(this.contentComponent);\n this.createDynamicContent(this.dynamicContentContainer, componentRef);\n }\n }\n ngOnDestroy() {\n this._sendEvent('delete');\n }\n /**\n * Open the modal instance\n *\n * @param top open the modal top of all other\n * @returns the modal component\n */\n open(top) {\n this._sendEvent('open', { top: top });\n return this;\n }\n /**\n * Close the modal instance\n *\n * @returns the modal component\n */\n close() {\n this._sendEvent('close');\n return this;\n }\n /**\n * Dismiss the modal instance\n *\n * @param e the event sent by the browser\n * @returns the modal component\n */\n dismiss(e) {\n if (!this.dismissable || !e?.target?.classList.contains('overlay')) {\n return this;\n }\n this._sendEvent('dismiss');\n return this;\n }\n /**\n * Toggle visibility of the modal instance\n *\n * @param top open the modal top of all other\n * @returns the modal component\n */\n toggle(top) {\n this._sendEvent('toggle', { top: top });\n return this;\n }\n /**\n * Add a custom class to the modal instance\n *\n * @param className the class to add\n * @returns the modal component\n */\n addCustomClass(className) {\n if (!this.customClass.length) {\n this.customClass = className;\n }\n else {\n this.customClass += ' ' + className;\n }\n return this;\n }\n /**\n * Remove a custom class to the modal instance\n *\n * @param className the class to remove\n * @returns the modal component\n */\n removeCustomClass(className) {\n if (className) {\n this.customClass = this.customClass.replace(className, '').trim();\n }\n else {\n this.customClass = '';\n }\n return this;\n }\n /**\n * Returns the visibility state of the modal instance\n */\n isVisible() {\n return this.visible;\n }\n /**\n * Checks if data is attached to the modal instance\n */\n hasData() {\n return this._data !== undefined;\n }\n /**\n * Attach data to the modal instance\n *\n * @param data the data to attach\n * @param force override potentially attached data\n * @returns the modal component\n */\n setData(data, force) {\n if (!this.hasData() || (this.hasData() && force)) {\n this._data = data;\n this.assignModalDataToComponentData(this._componentRef);\n this.onDataAdded.emit(this._data);\n this.markForCheck();\n }\n return this;\n }\n /**\n * Retrieve the data attached to the modal instance\n */\n getData() {\n this.assignComponentDataToModalData(this._componentRef);\n return this._data;\n }\n /**\n * Remove the data attached to the modal instance\n *\n * @returns the modal component\n */\n removeData() {\n this._data = undefined;\n this.onDataRemoved.emit(true);\n this.markForCheck();\n return this;\n }\n /**\n * Add body class modal opened\n *\n * @returns the modal component\n */\n addBodyClass() {\n this._renderer.addClass(this._document.body, NgxSmartModalConfig.bodyClassOpen);\n return this;\n }\n /**\n * Add body class modal opened\n *\n * @returns the modal component\n */\n removeBodyClass() {\n this._renderer.removeClass(this._document.body, NgxSmartModalConfig.bodyClassOpen);\n return this;\n }\n markForCheck() {\n try {\n this._changeDetectorRef.detectChanges();\n }\n catch (e) { /* empty */ }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Listens for window resize event and recalculates modal instance position if it is element-relative\n */\n targetPlacement() {\n if (!this.isBrowser || !this.nsmDialog.length || !this.nsmContent.length || !this.nsmOverlay.length || !this.target) {\n return false;\n }\n const targetElement = this._document.querySelector(this.target);\n if (!targetElement) {\n return false;\n }\n const targetElementRect = targetElement.getBoundingClientRect();\n const bodyRect = this.nsmOverlay.first.nativeElement.getBoundingClientRect();\n const nsmContentRect = this.nsmContent.first.nativeElement.getBoundingClientRect();\n const nsmDialogRect = this.nsmDialog.first.nativeElement.getBoundingClientRect();\n const marginLeft = parseInt(getComputedStyle(this.nsmContent.first.nativeElement).marginLeft, 10);\n const marginTop = parseInt(getComputedStyle(this.nsmContent.first.nativeElement).marginTop, 10);\n let offsetTop = targetElementRect.top - nsmDialogRect.top - ((nsmContentRect.height - targetElementRect.height) / 2);\n let offsetLeft = targetElementRect.left - nsmDialogRect.left - ((nsmContentRect.width - targetElementRect.width) / 2);\n if (offsetLeft + nsmDialogRect.left + nsmContentRect.width + (marginLeft * 2) > bodyRect.width) {\n offsetLeft = bodyRect.width - (nsmDialogRect.left + nsmContentRect.width) - (marginLeft * 2);\n }\n else if (offsetLeft + nsmDialogRect.left < 0) {\n offsetLeft = -nsmDialogRect.left;\n }\n if (offsetTop + nsmDialogRect.top + nsmContentRect.height + marginTop > bodyRect.height) {\n offsetTop = bodyRect.height - (nsmDialogRect.top + nsmContentRect.height) - marginTop;\n }\n this._renderer.setStyle(this.nsmContent.first.nativeElement, 'top', (offsetTop < 0 ? 0 : offsetTop) + 'px');\n this._renderer.setStyle(this.nsmContent.first.nativeElement, 'left', offsetLeft + 'px');\n }\n _sendEvent(name, extraData) {\n if (!this.isBrowser) {\n return false;\n }\n const data = {\n extraData: extraData,\n instance: { id: this.identifier, modal: this }\n };\n const event = new CustomEvent(NgxSmartModalConfig.prefixEvent + name, { detail: data });\n return window.dispatchEvent(event);\n }\n /**\n * Is current platform browser\n */\n get isBrowser() {\n return isPlatformBrowser(this._platformId);\n }\n /**\n * Creates content inside provided ViewContainerRef\n */\n createDynamicContent(viewContainerRef, componentRef) {\n viewContainerRef.clear();\n this.assignModalDataToComponentData(componentRef);\n this.markForCheck();\n }\n /**\n * Assigns the modal data to the ComponentRef instance properties\n */\n assignModalDataToComponentData(componentRef) {\n if (componentRef) {\n Object.assign(componentRef.instance, this._data);\n }\n }\n /**\n * Assigns the ComponentRef instance properties to the modal data object\n */\n assignComponentDataToModalData(componentRef) {\n if (componentRef) {\n Object.assign(this._data, componentRef.instance);\n }\n }\n}\nNgxSmartModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: NgxSmartModalComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nNgxSmartModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.3.0\", type: NgxSmartModalComponent, selector: \"ngx-smart-modal\", inputs: { closable: \"closable\", escapable: \"escapable\", dismissable: \"dismissable\", identifier: \"identifier\", customClass: \"customClass\", visible: \"visible\", backdrop: \"backdrop\", force: \"force\", hideDelay: \"hideDelay\", autostart: \"autostart\", target: \"target\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", ariaDescribedBy: \"ariaDescribedBy\", refocus: \"refocus\" }, outputs: { visibleChange: \"visibleChange\", onClose: \"onClose\", onCloseFinished: \"onCloseFinished\", onDismiss: \"onDismiss\", onDismissFinished: \"onDismissFinished\", onAnyCloseEvent: \"onAnyCloseEvent\", onAnyCloseEventFinished: \"onAnyCloseEventFinished\", onOpen: \"onOpen\", onOpenFinished: \"onOpenFinished\", onEscape: \"onEscape\", onDataAdded: \"onDataAdded\", onDataRemoved: \"onDataRemoved\" }, host: { listeners: { \"window:resize\": \"targetPlacement()\" } }, viewQueries: [{ propertyName: \"dynamicContentContainer\", first: true, predicate: [\"dynamicContent\"], descendants: true, read: ViewContainerRef }, { propertyName: \"nsmContent\", predicate: [\"nsmContent\"], descendants: true }, { propertyName: \"nsmDialog\", predicate: [\"nsmDialog\"], descendants: true }, { propertyName: \"nsmOverlay\", predicate: [\"nsmOverlay\"], descendants: true }], ngImport: i0, template: `\n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n`, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: NgxSmartModalComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-smart-modal', template: `\n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n` }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { closable: [{\n type: Input\n }], escapable: [{\n type: Input\n }], dismissable: [{\n type: Input\n }], identifier: [{\n type: Input\n }], customClass: [{\n type: Input\n }], visible: [{\n type: Input\n }], backdrop: [{\n type: Input\n }], force: [{\n type: Input\n }], hideDelay: [{\n type: Input\n }], autostart: [{\n type: Input\n }], target: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], ariaDescribedBy: [{\n type: Input\n }], refocus: [{\n type: Input\n }], visibleChange: [{\n type: Output\n }], onClose: [{\n type: Output\n }], onCloseFinished: [{\n type: Output\n }], onDismiss: [{\n type: Output\n }], onDismissFinished: [{\n type: Output\n }], onAnyCloseEvent: [{\n type: Output\n }], onAnyCloseEventFinished: [{\n type: Output\n }], onOpen: [{\n type: Output\n }], onOpenFinished: [{\n type: Output\n }], onEscape: [{\n type: Output\n }], onDataAdded: [{\n type: Output\n }], onDataRemoved: [{\n type: Output\n }], nsmContent: [{\n type: ViewChildren,\n args: ['nsmContent']\n }], nsmDialog: [{\n type: ViewChildren,\n args: ['nsmDialog']\n }], nsmOverlay: [{\n type: ViewChildren,\n args: ['nsmOverlay']\n }], dynamicContentContainer: [{\n type: ViewChild,\n args: ['dynamicContent', { read: ViewContainerRef }]\n }], targetPlacement: [{\n type: HostListener,\n args: ['window:resize']\n }] } });\n\nclass NgxSmartModalStackService {\n constructor() {\n this._modalStack = [];\n }\n /**\n * Add a new modal instance. This step is essential and allows to retrieve any modal at any time.\n * It stores an object that contains the given modal identifier and the modal itself directly in the `modalStack`.\n *\n * @param modalInstance The object that contains the given modal identifier and the modal itself.\n * @param force Optional parameter that forces the overriding of modal instance if it already exists.\n * @returns nothing special.\n */\n addModal(modalInstance, force) {\n if (force) {\n const i = this._modalStack.findIndex((o) => o.id === modalInstance.id);\n if (i > -1) {\n this._modalStack[i].modal = modalInstance.modal;\n }\n else {\n this._modalStack.push(modalInstance);\n }\n return;\n }\n this._modalStack.push(modalInstance);\n }\n /**\n * Retrieve a modal instance by its identifier.\n *\n * @param id The modal identifier used at creation time.\n */\n getModal(id) {\n const i = this._modalStack.find((o) => o.id === id);\n if (i !== undefined) {\n return i.modal;\n }\n else {\n throw new Error(`Cannot find modal with identifier ${id}`);\n }\n }\n /**\n * Retrieve all the created modals.\n *\n * @returns an array that contains all modal instances.\n */\n getModalStack() {\n return this._modalStack;\n }\n /**\n * Retrieve all the opened modals. It looks for all modal instances with their `visible` property set to `true`.\n *\n * @returns an array that contains all the opened modals.\n */\n getOpenedModals() {\n return this._modalStack.filter((o) => o.modal.visible);\n }\n /**\n * Retrieve the opened modal with highest z-index.\n *\n * @returns the opened modal with highest z-index.\n */\n getTopOpenedModal() {\n if (!this.getOpenedModals().length) {\n throw new Error('No modal is opened');\n }\n return this.getOpenedModals()\n .map((o) => o.modal)\n .reduce((highest, item) => item.layerPosition > highest.layerPosition ? item : highest, this.getOpenedModals()[0].modal);\n }\n /**\n * Get the higher `z-index` value between all the modal instances. It iterates over the `ModalStack` array and\n * calculates a higher value (it takes the highest index value between all the modal instances and adds 1).\n * Use it to make a modal appear foreground.\n *\n * @returns a higher index from all the existing modal instances.\n */\n getHigherIndex() {\n return Math.max(...this._modalStack.map((o) => o.modal.layerPosition), 1041) + 1;\n }\n /**\n * It gives the number of modal instances. It's helpful to know if the modal stack is empty or not.\n *\n * @returns the number of modal instances.\n */\n getModalStackCount() {\n return this._modalStack.length;\n }\n /**\n * Remove a modal instance from the modal stack.\n * Returns the removed modal instance or undefined if no modal was found\n *\n * @param id The modal identifier.\n * @returns the removed modal instance.\n */\n removeModal(id) {\n const i = this._modalStack.findIndex((o) => o.id === id);\n if (i < 0) {\n return;\n }\n const modalInstance = this._modalStack.splice(i, 1)[0];\n return modalInstance;\n }\n}\nNgxSmartModalStackService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: NgxSmartModalStackService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgxSmartModalStackService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: NgxSmartModalStackService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: NgxSmartModalStackService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\nclass NgxSmartModalService {\n constructor(_appRef, _injector, _modalStack, applicationRef, _document, _platformId) {\n this._appRef = _appRef;\n this._injector = _injector;\n this._modalStack = _modalStack;\n this.applicationRef = applicationRef;\n this._document = _document;\n this._platformId = _platformId;\n /**\n * Close the latest opened modal if escape key event is emitted\n * @param event The Keyboard Event\n */\n this._escapeKeyboardEvent = (event) => {\n if (event.key === 'Escape') {\n try {\n const modal = this.getTopOpenedModal();\n if (!modal.escapable) {\n return false;\n }\n modal.onEscape.emit(modal);\n this.closeLatestModal();\n return true;\n }\n catch (e) {\n return false;\n }\n }\n return false;\n };\n /**\n * While modal is open, the focus stay on it\n * @param event The Keyboar dEvent\n */\n this._trapFocusModal = (event) => {\n if (event.key === 'Tab') {\n try {\n const modal = this.getTopOpenedModal();\n if (!modal.nsmDialog.first.nativeElement.contains(document.activeElement)) {\n event.preventDefault();\n event.stopPropagation();\n modal.nsmDialog.first.nativeElement.focus();\n }\n return true;\n }\n catch (e) {\n return false;\n }\n }\n return false;\n };\n this._addEvents();\n }\n /**\n * Add a new modal instance. This step is essential and allows to retrieve any modal at any time.\n * It stores an object that contains the given modal identifier and the modal itself directly in the `modalStack`.\n *\n * @param modalInstance The object that contains the given modal identifier and the modal itself.\n * @param force Optional parameter that forces the overriding of modal instance if it already exists.\n * @returns nothing special.\n */\n addModal(modalInstance, force) {\n this._modalStack.addModal(modalInstance, force);\n }\n /**\n * Retrieve a modal instance by its identifier.\n *\n * @param id The modal identifier used at creation time.\n */\n getModal(id) {\n return this._modalStack.getModal(id);\n }\n /**\n * Alias of `getModal` to retrieve a modal instance by its identifier.\n *\n * @param id The modal identifier used at creation time.\n */\n get(id) {\n return this.getModal(id);\n }\n /**\n * Open a given modal\n *\n * @param id The modal identifier used at creation time.\n * @param force Tell the modal to open top of all other opened modals\n */\n open(id, force = false) {\n return this._openModal(this.get(id), force);\n }\n /**\n * Close a given modal\n *\n * @param id The modal identifier used at creation time.\n */\n close(id) {\n return this._closeModal(this.get(id));\n }\n /**\n * Close all opened modals\n */\n closeAll() {\n this.getOpenedModals().forEach((instance) => {\n this._closeModal(instance.modal);\n });\n }\n /**\n * Toggles a given modal\n * If the retrieved modal is opened it closes it, else it opens it.\n *\n * @param id The modal identifier used at creation time.\n * @param force Tell the modal to open top of all other opened modals\n */\n toggle(id, force = false) {\n return this._toggleModal(this.get(id), force);\n }\n /**\n * Retrieve all the created modals.\n *\n * @returns an array that contains all modal instances.\n */\n getModalStack() {\n return this._modalStack.getModalStack();\n }\n /**\n * Retrieve all the opened modals. It looks for all modal instances with their `visible` property set to `true`.\n *\n * @returns an array that contains all the opened modals.\n */\n getOpenedModals() {\n return this._modalStack.getOpenedModals();\n }\n /**\n * Retrieve the opened modal with highest z-index.\n *\n * @returns the opened modal with highest z-index.\n */\n getTopOpenedModal() {\n return this._modalStack.getTopOpenedModal();\n }\n /**\n * Get the higher `z-index` value between all the modal instances. It iterates over the `ModalStack` array and\n * calculates a higher value (it takes the highest index value between all the modal instances and adds 1).\n * Use it to make a modal appear foreground.\n *\n * @returns a higher index from all the existing modal instances.\n */\n getHigherIndex() {\n return this._modalStack.getHigherIndex();\n }\n /**\n * It gives the number of modal instances. It's helpful to know if the modal stack is empty or not.\n *\n * @returns the number of modal instances.\n */\n getModalStackCount() {\n return this._modalStack.getModalStackCount();\n }\n /**\n * Remove a modal instance from the modal stack.\n *\n * @param id The modal identifier.\n * @returns the removed modal instance.\n */\n removeModal(id) {\n const modalInstance = this._modalStack.removeModal(id);\n if (modalInstance) {\n this._destroyModal(modalInstance.modal);\n }\n }\n /**\n * Associate data to an identified modal. If the modal isn't already associated to some data, it creates a new\n * entry in the `modalData` array with its `id` and the given `data`. If the modal already has data, it rewrites\n * them with the new ones. Finally if no modal found it returns an error message in the console and false value\n * as method output.\n *\n * @param data The data you want to associate to the modal.\n * @param id The modal identifier.\n * @param force If true, overrides the previous stored data if there was.\n * @returns true if the given modal exists and the process has been tried, either false.\n */\n setModalData(data, id, force) {\n const modal = this.get(id);\n if (modal) {\n modal.setData(data, force);\n return true;\n }\n else {\n return false;\n }\n }\n /**\n * Retrieve modal data by its identifier.\n *\n * @param id The modal identifier used at creation time.\n * @returns the associated modal data.\n */\n getModalData(id) {\n const modal = this.get(id);\n if (modal) {\n return modal.getData();\n }\n return null;\n }\n /**\n * Reset the data attached to a given modal.\n *\n * @param id The modal identifier used at creation time.\n * @returns the removed data or false if modal doesn't exist.\n */\n resetModalData(id) {\n if (this._modalStack.getModalStack().find((o) => o.id === id)) {\n const removed = this.getModal(id).getData();\n this.getModal(id).removeData();\n return removed;\n }\n else {\n return false;\n }\n }\n /**\n * Close the latest opened modal\n */\n closeLatestModal() {\n this.getTopOpenedModal().close();\n }\n /**\n * Create dynamic NgxSmartModalComponent\n * @param vcr A ViewContainerRef instance\n * @param id The modal identifier used at creation time\n * @param content The modal content (string, templateRef or Component)\n * @param options Any NgxSmartModalComponent available options\n */\n create(vcr, id, content, options = {}) {\n try {\n return this.getModal(id);\n }\n catch (e) {\n const ngContent = this._resolveNgContent(content);\n const componentRef = vcr.createComponent(NgxSmartModalComponent, { injector: this._injector, projectableNodes: ngContent });\n if (content instanceof Type) {\n componentRef.instance.contentComponent = content;\n }\n componentRef.instance.identifier = id;\n componentRef.instance.createFrom = 'service';\n if (typeof options.closable === 'boolean') {\n componentRef.instance.closable = options.closable;\n }\n if (typeof options.escapable === 'boolean') {\n componentRef.instance.escapable = options.escapable;\n }\n if (typeof options.dismissable === 'boolean') {\n componentRef.instance.dismissable = options.dismissable;\n }\n if (typeof options.customClass === 'string') {\n componentRef.instance.customClass = options.customClass;\n }\n if (typeof options.backdrop === 'boolean') {\n componentRef.instance.backdrop = options.backdrop;\n }\n if (typeof options.force === 'boolean') {\n componentRef.instance.force = options.force;\n }\n if (typeof options.hideDelay === 'number') {\n componentRef.instance.hideDelay = options.hideDelay;\n }\n if (typeof options.autostart === 'boolean') {\n componentRef.instance.autostart = options.autostart;\n }\n if (typeof options.target === 'string') {\n componentRef.instance.target = options.target;\n }\n if (typeof options.ariaLabel === 'string') {\n componentRef.instance.ariaLabel = options.ariaLabel;\n }\n if (typeof options.ariaLabelledBy === 'string') {\n componentRef.instance.ariaLabelledBy = options.ariaLabelledBy;\n }\n if (typeof options.ariaDescribedBy === 'string') {\n componentRef.instance.ariaDescribedBy = options.ariaDescribedBy;\n }\n if (typeof options.refocus === 'boolean') {\n componentRef.instance.refocus = options.refocus;\n }\n this._appRef.attachView(componentRef.hostView);\n const domElem = componentRef.hostView.rootNodes[0];\n this._document.body.appendChild(domElem);\n return componentRef.instance;\n }\n }\n _addEvents() {\n if (!this.isBrowser) {\n return false;\n }\n window.addEventListener(NgxSmartModalConfig.prefixEvent + 'create', ((e) => {\n this._initModal(e.detail.instance);\n }));\n window.addEventListener(NgxSmartModalConfig.prefixEvent + 'delete', ((e) => {\n this._deleteModal(e.detail.instance);\n }));\n window.addEventListener(NgxSmartModalConfig.prefixEvent + 'open', ((e) => {\n this._openModal(e.detail.instance.modal, e.detail.extraData.top);\n }));\n window.addEventListener(NgxSmartModalConfig.prefixEvent + 'toggle', ((e) => {\n this._toggleModal(e.detail.instance.modal, e.detail.extraData.top);\n }));\n window.addEventListener(NgxSmartModalConfig.prefixEvent + 'close', ((e) => {\n this._closeModal(e.detail.instance.modal);\n }));\n window.addEventListener(NgxSmartModalConfig.prefixEvent + 'dismiss', ((e) => {\n this._dismissModal(e.detail.instance.modal);\n }));\n window.addEventListener('keyup', this._escapeKeyboardEvent);\n return true;\n }\n _initModal(modalInstance) {\n modalInstance.modal.layerPosition += this.getModalStackCount();\n this.addModal(modalInstance, modalInstance.modal.force);\n if (modalInstance.modal.autostart) {\n this.open(modalInstance.id);\n }\n }\n _openModal(modal, top) {\n if (modal.visible) {\n return false;\n }\n this.lastElementFocused = document.activeElement;\n if (modal.escapable) {\n window.addEventListener('keyup', this._escapeKeyboardEvent);\n }\n if (modal.backdrop) {\n window.addEventListener('keydown', this._trapFocusModal);\n }\n if (top) {\n modal.layerPosition = this.getHigherIndex();\n }\n modal.addBodyClass();\n modal.overlayVisible = true;\n modal.visible = true;\n modal.onOpen.emit(modal);\n modal.markForCheck();\n setTimeout(() => {\n modal.openedClass = true;\n if (modal.target) {\n modal.targetPlacement();\n }\n modal.nsmDialog.first.nativeElement.setAttribute('role', 'dialog');\n modal.nsmDialog.first.nativeElement.setAttribute('tabIndex', '-1');\n modal.nsmDialog.first.nativeElement.setAttribute('aria-modal', 'true');\n modal.nsmDialog.first.nativeElement.focus();\n modal.markForCheck();\n modal.onOpenFinished.emit(modal);\n });\n return true;\n }\n _toggleModal(modal, top) {\n if (modal.visible) {\n return this._closeModal(modal);\n }\n else {\n return this._openModal(modal, top);\n }\n }\n _closeModal(modal) {\n if (!modal.openedClass) {\n return false;\n }\n modal.openedClass = false;\n modal.onClose.emit(modal);\n modal.onAnyCloseEvent.emit(modal);\n if (this.getOpenedModals().length < 2) {\n modal.removeBodyClass();\n window.removeEventListener('keyup', this._escapeKeyboardEvent);\n window.removeEventListener('keydown', this._trapFocusModal);\n }\n setTimeout(() => {\n modal.visibleChange.emit(modal.visible);\n modal.visible = false;\n modal.overlayVisible = false;\n modal.nsmDialog.first.nativeElement.removeAttribute('tabIndex');\n modal.markForCheck();\n modal.onCloseFinished.emit(modal);\n modal.onAnyCloseEventFinished.emit(modal);\n if (modal.refocus) {\n this.lastElementFocused.focus();\n }\n }, modal.hideDelay);\n return true;\n }\n _dismissModal(modal) {\n if (!modal.openedClass) {\n return false;\n }\n modal.openedClass = false;\n modal.onDismiss.emit(modal);\n modal.onAnyCloseEvent.emit(modal);\n if (this.getOpenedModals().length < 2) {\n modal.removeBodyClass();\n }\n setTimeout(() => {\n modal.visible = false;\n modal.visibleChange.emit(modal.visible);\n modal.overlayVisible = false;\n modal.markForCheck();\n modal.onDismissFinished.emit(modal);\n modal.onAnyCloseEventFinished.emit(modal);\n }, modal.hideDelay);\n return true;\n }\n _deleteModal(modalInstance) {\n this.removeModal(modalInstance.id);\n if (!this.getModalStack().length) {\n modalInstance.modal.removeBodyClass();\n }\n }\n /**\n * Resolve content according to the types\n * @param content The modal content (string, templateRef or Component)\n */\n _resolveNgContent(content) {\n if (typeof content === 'string') {\n const element = this._document.createTextNode(content);\n return [[element]];\n }\n if (content instanceof TemplateRef) {\n const viewRef = content.createEmbeddedView(null);\n this.applicationRef.attachView(viewRef);\n return [viewRef.rootNodes];\n }\n return [];\n }\n /**\n * Is current platform browser\n */\n get isBrowser() {\n return isPlatformBrowser(this._platformId);\n }\n /**\n * Remove dynamically created modal from DOM\n */\n _destroyModal(modal) {\n // Prevent destruction of the inline modals\n if (modal.createFrom !== 'service') {\n return;\n }\n this._document.body.removeChild(modal.elementRef.nativeElement);\n }\n}\nNgxSmartModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: NgxSmartModalService, deps: [{ token: i0.ApplicationRef }, { token: i0.Injector }, { token: NgxSmartModalStackService }, { token: i0.ApplicationRef }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgxSmartModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: NgxSmartModalService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: NgxSmartModalService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.Injector }, { type: NgxSmartModalStackService }, { type: i0.ApplicationRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; } });\n\nclass NgxSmartModalModule {\n constructor(service) {\n this.service = service;\n }\n /**\n * Use in AppModule: new instance of NgxSmartModal.\n */\n static forRoot() {\n return {\n ngModule: NgxSmartModalModule,\n providers: [\n NgxSmartModalService,\n NgxSmartModalStackService\n ]\n };\n }\n /**\n * Use in features modules with lazy loading: new instance of NgxSmartModal.\n */\n static forChild() {\n return {\n ngModule: NgxSmartModalModule,\n providers: [\n NgxSmartModalService,\n NgxSmartModalStackService\n ]\n };\n }\n}\nNgxSmartModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: NgxSmartModalModule, deps: [{ token: NgxSmartModalService }], target: i0.ɵɵFactoryTarget.NgModule });\nNgxSmartModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.3.0\", ngImport: i0, type: NgxSmartModalModule, declarations: [NgxSmartModalComponent], imports: [CommonModule], exports: [NgxSmartModalComponent] });\nNgxSmartModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: NgxSmartModalModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: NgxSmartModalModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n NgxSmartModalComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n NgxSmartModalComponent\n ]\n }]\n }], ctorParameters: function () { return [{ type: NgxSmartModalService }]; } });\n\n/*\n * Public API Surface of ngx-smart-modal\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NgxSmartModalComponent, NgxSmartModalConfig, NgxSmartModalModule, NgxSmartModalService };\n//# sourceMappingURL=ngx-smart-modal.mjs.map\n","import { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, NgModule } from '@angular/core';\nimport { Header, PrimeTemplate, SharedModule } from 'primeng/api';\n\nlet idx = 0;\nclass AccordionTab {\n constructor(accordion, changeDetector) {\n this.changeDetector = changeDetector;\n this.cache = true;\n this.selectedChange = new EventEmitter();\n this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n this.iconPos = 'start';\n this.id = `p-accordiontab-${idx++}`;\n this.accordion = accordion;\n }\n get selected() {\n return this._selected;\n }\n set selected(val) {\n this._selected = val;\n if (!this.loaded) {\n if (this._selected && this.cache) {\n this.loaded = true;\n }\n this.changeDetector.detectChanges();\n }\n }\n get iconClass() {\n if (this.iconPos === 'end') {\n return 'p-accordion-toggle-icon-end';\n }\n else {\n return 'p-accordion-toggle-icon';\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n toggle(event) {\n if (this.disabled) {\n return false;\n }\n let index = this.findTabIndex();\n if (this.selected) {\n this.selected = false;\n this.accordion.onClose.emit({ originalEvent: event, index: index });\n }\n else {\n if (!this.accordion.multiple) {\n for (var i = 0; i < this.accordion.tabs.length; i++) {\n if (this.accordion.tabs[i].selected) {\n this.accordion.tabs[i].selected = false;\n this.accordion.tabs[i].selectedChange.emit(false);\n this.accordion.tabs[i].changeDetector.markForCheck();\n }\n }\n }\n this.selected = true;\n this.loaded = true;\n this.accordion.onOpen.emit({ originalEvent: event, index: index });\n }\n this.selectedChange.emit(this.selected);\n this.accordion.updateActiveIndex();\n this.changeDetector.markForCheck();\n event.preventDefault();\n }\n findTabIndex() {\n let index = -1;\n for (var i = 0; i < this.accordion.tabs.length; i++) {\n if (this.accordion.tabs[i] == this) {\n index = i;\n break;\n }\n }\n return index;\n }\n get hasHeaderFacet() {\n return this.headerFacet && this.headerFacet.length > 0;\n }\n onKeydown(event) {\n if (event.which === 32 || event.which === 13) {\n this.toggle(event);\n event.preventDefault();\n }\n }\n ngOnDestroy() {\n this.accordion.tabs.splice(this.findTabIndex(), 1);\n }\n}\nAccordionTab.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: AccordionTab, deps: [{ token: forwardRef(() => Accordion) }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nAccordionTab.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: AccordionTab, selector: \"p-accordionTab\", inputs: { header: \"header\", headerStyle: \"headerStyle\", tabStyle: \"tabStyle\", contentStyle: \"contentStyle\", tabStyleClass: \"tabStyleClass\", headerStyleClass: \"headerStyleClass\", contentStyleClass: \"contentStyleClass\", disabled: \"disabled\", cache: \"cache\", transitionOptions: \"transitionOptions\", iconPos: \"iconPos\", selected: \"selected\" }, outputs: { selectedChange: \"selectedChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"headerFacet\", predicate: Header }, { propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n
\n
\n \n \n \n {{ header }}\n \n \n \n \n
\n \n
\n \n \n \n \n
\n
\n \n `, isInline: true, styles: [\".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}.p-accordion .p-toggleable-content{overflow:hidden}.p-accordion .p-accordion-tab-active>.p-toggleable-content:not(.ng-animating){overflow:inherit}.p-accordion-toggle-icon-end{order:1;margin-left:auto}.p-accordion-toggle-icon{order:0}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], animations: [\n trigger('tabContent', [\n state('hidden', style({\n height: '0'\n })),\n state('visible', style({\n height: '*'\n })),\n transition('visible <=> hidden', [animate('{{transitionParams}}')]),\n transition('void => *', animate(0))\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: AccordionTab, decorators: [{\n type: Component,\n args: [{ selector: 'p-accordionTab', template: `\n
\n
\n \n \n \n {{ header }}\n \n \n \n \n
\n \n
\n \n \n \n \n
\n
\n \n `, animations: [\n trigger('tabContent', [\n state('hidden', style({\n height: '0'\n })),\n state('visible', style({\n height: '*'\n })),\n transition('visible <=> hidden', [animate('{{transitionParams}}')]),\n transition('void => *', animate(0))\n ])\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}.p-accordion .p-toggleable-content{overflow:hidden}.p-accordion .p-accordion-tab-active>.p-toggleable-content:not(.ng-animating){overflow:inherit}.p-accordion-toggle-icon-end{order:1;margin-left:auto}.p-accordion-toggle-icon{order:0}\\n\"] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => Accordion)]\n }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { header: [{\n type: Input\n }], headerStyle: [{\n type: Input\n }], tabStyle: [{\n type: Input\n }], contentStyle: [{\n type: Input\n }], tabStyleClass: [{\n type: Input\n }], headerStyleClass: [{\n type: Input\n }], contentStyleClass: [{\n type: Input\n }], disabled: [{\n type: Input\n }], cache: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], transitionOptions: [{\n type: Input\n }], iconPos: [{\n type: Input\n }], headerFacet: [{\n type: ContentChildren,\n args: [Header]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], selected: [{\n type: Input\n }] } });\nclass Accordion {\n constructor(el, changeDetector) {\n this.el = el;\n this.changeDetector = changeDetector;\n this.onClose = new EventEmitter();\n this.onOpen = new EventEmitter();\n this.expandIcon = 'pi pi-fw pi-chevron-right';\n this.collapseIcon = 'pi pi-fw pi-chevron-down';\n this.activeIndexChange = new EventEmitter();\n this.tabs = [];\n }\n ngAfterContentInit() {\n this.initTabs();\n this.tabListSubscription = this.tabList.changes.subscribe((_) => {\n this.initTabs();\n });\n }\n initTabs() {\n this.tabs = this.tabList.toArray();\n this.updateSelectionState();\n this.changeDetector.markForCheck();\n }\n getBlockableElement() {\n return this.el.nativeElement.children[0];\n }\n get activeIndex() {\n return this._activeIndex;\n }\n set activeIndex(val) {\n this._activeIndex = val;\n if (this.preventActiveIndexPropagation) {\n this.preventActiveIndexPropagation = false;\n return;\n }\n this.updateSelectionState();\n }\n updateSelectionState() {\n if (this.tabs && this.tabs.length && this._activeIndex != null) {\n for (let i = 0; i < this.tabs.length; i++) {\n let selected = this.multiple ? this._activeIndex.includes(i) : i === this._activeIndex;\n let changed = selected !== this.tabs[i].selected;\n if (changed) {\n this.tabs[i].selected = selected;\n this.tabs[i].selectedChange.emit(selected);\n this.tabs[i].changeDetector.markForCheck();\n }\n }\n }\n }\n updateActiveIndex() {\n let index = this.multiple ? [] : null;\n this.tabs.forEach((tab, i) => {\n if (tab.selected) {\n if (this.multiple) {\n index.push(i);\n }\n else {\n index = i;\n return;\n }\n }\n });\n this.preventActiveIndexPropagation = true;\n this.activeIndexChange.emit(index);\n }\n ngOnDestroy() {\n if (this.tabListSubscription) {\n this.tabListSubscription.unsubscribe();\n }\n }\n}\nAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Accordion, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nAccordion.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Accordion, selector: \"p-accordion\", inputs: { multiple: \"multiple\", style: \"style\", styleClass: \"styleClass\", expandIcon: \"expandIcon\", collapseIcon: \"collapseIcon\", activeIndex: \"activeIndex\" }, outputs: { onClose: \"onClose\", onOpen: \"onOpen\", activeIndexChange: \"activeIndexChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"tabList\", predicate: AccordionTab }], ngImport: i0, template: `\n
\n \n
\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Accordion, decorators: [{\n type: Component,\n args: [{\n selector: 'p-accordion',\n template: `\n
\n \n
\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { multiple: [{\n type: Input\n }], onClose: [{\n type: Output\n }], onOpen: [{\n type: Output\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], expandIcon: [{\n type: Input\n }], collapseIcon: [{\n type: Input\n }], activeIndexChange: [{\n type: Output\n }], tabList: [{\n type: ContentChildren,\n args: [AccordionTab]\n }], activeIndex: [{\n type: Input\n }] } });\nclass AccordionModule {\n}\nAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: AccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: AccordionModule, declarations: [Accordion, AccordionTab], imports: [CommonModule], exports: [Accordion, AccordionTab, SharedModule] });\nAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: AccordionModule, imports: [CommonModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: AccordionModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [Accordion, AccordionTab, SharedModule],\n declarations: [Accordion, AccordionTab]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Accordion, AccordionModule, AccordionTab };\n//# sourceMappingURL=primeng-accordion.mjs.map\n//# sourceMappingURL=primeng-accordion.mjs.map\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\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\nclass ConfirmationService {\n constructor() {\n this.requireConfirmationSource = new Subject();\n this.acceptConfirmationSource = new Subject();\n this.requireConfirmation$ = this.requireConfirmationSource.asObservable();\n this.accept = this.acceptConfirmationSource.asObservable();\n }\n confirm(confirmation) {\n this.requireConfirmationSource.next(confirmation);\n return this;\n }\n close() {\n this.requireConfirmationSource.next(null);\n return this;\n }\n onAccept() {\n this.acceptConfirmationSource.next(null);\n }\n}\nConfirmationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nConfirmationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ConfirmationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ConfirmationService, decorators: [{\n type: Injectable\n }] });\n\nclass ContextMenuService {\n constructor() {\n this.activeItemKeyChange = new Subject();\n this.activeItemKeyChange$ = this.activeItemKeyChange.asObservable();\n }\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}\nContextMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nContextMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ContextMenuService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ContextMenuService, decorators: [{\n type: Injectable\n }] });\n\nclass FilterMatchMode {\n}\nFilterMatchMode.STARTS_WITH = 'startsWith';\nFilterMatchMode.CONTAINS = 'contains';\nFilterMatchMode.NOT_CONTAINS = 'notContains';\nFilterMatchMode.ENDS_WITH = 'endsWith';\nFilterMatchMode.EQUALS = 'equals';\nFilterMatchMode.NOT_EQUALS = 'notEquals';\nFilterMatchMode.IN = 'in';\nFilterMatchMode.LESS_THAN = 'lt';\nFilterMatchMode.LESS_THAN_OR_EQUAL_TO = 'lte';\nFilterMatchMode.GREATER_THAN = 'gt';\nFilterMatchMode.GREATER_THAN_OR_EQUAL_TO = 'gte';\nFilterMatchMode.BETWEEN = 'between';\nFilterMatchMode.IS = 'is';\nFilterMatchMode.IS_NOT = 'isNot';\nFilterMatchMode.BEFORE = 'before';\nFilterMatchMode.AFTER = 'after';\nFilterMatchMode.DATE_IS = 'dateIs';\nFilterMatchMode.DATE_IS_NOT = 'dateIsNot';\nFilterMatchMode.DATE_BEFORE = 'dateBefore';\nFilterMatchMode.DATE_AFTER = 'dateAfter';\n\nclass FilterOperator {\n}\nFilterOperator.AND = 'and';\nFilterOperator.OR = 'or';\n\nclass FilterService {\n constructor() {\n this.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)\n return value.getTime() === filter.getTime();\n else\n 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)\n return value.getTime() !== filter.getTime();\n else\n 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)\n return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();\n else\n 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)\n return value.getTime() < filter.getTime();\n else\n 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)\n return value.getTime() <= filter.getTime();\n else\n 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)\n return value.getTime() > filter.getTime();\n else\n 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)\n return value.getTime() >= filter.getTime();\n else\n 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 }\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 register(rule, fn) {\n this.filters[rule] = fn;\n }\n}\nFilterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: FilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFilterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: FilterService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: FilterService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass MessageService {\n constructor() {\n this.messageSource = new Subject();\n this.clearSource = new Subject();\n this.messageObserver = this.messageSource.asObservable();\n this.clearObserver = this.clearSource.asObservable();\n }\n add(message) {\n if (message) {\n this.messageSource.next(message);\n }\n }\n addAll(messages) {\n if (messages && messages.length) {\n this.messageSource.next(messages);\n }\n }\n clear(key) {\n this.clearSource.next(key || null);\n }\n}\nMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MessageService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MessageService, decorators: [{\n type: Injectable\n }] });\n\nclass OverlayService {\n constructor() {\n this.clickSource = new Subject();\n this.clickObservable = this.clickSource.asObservable();\n }\n add(event) {\n if (event) {\n this.clickSource.next(event);\n }\n }\n}\nOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: OverlayService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: OverlayService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass PrimeIcons {\n}\nPrimeIcons.ALIGN_CENTER = 'pi pi-align-center';\nPrimeIcons.ALIGN_JUSTIFY = 'pi pi-align-justify';\nPrimeIcons.ALIGN_LEFT = 'pi pi-align-left';\nPrimeIcons.ALIGN_RIGHT = 'pi pi-align-right';\nPrimeIcons.AMAZON = 'pi pi-amazon';\nPrimeIcons.ANDROID = 'pi pi-android';\nPrimeIcons.ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';\nPrimeIcons.ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';\nPrimeIcons.ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';\nPrimeIcons.ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';\nPrimeIcons.ANGLE_DOWN = 'pi pi-angle-down';\nPrimeIcons.ANGLE_LEFT = 'pi pi-angle-left';\nPrimeIcons.ANGLE_RIGHT = 'pi pi-angle-right';\nPrimeIcons.ANGLE_UP = 'pi pi-angle-up';\nPrimeIcons.APPLE = 'pi pi-apple';\nPrimeIcons.ARROWS_ALT = 'pi pi-arrows-alt';\nPrimeIcons.ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';\nPrimeIcons.ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';\nPrimeIcons.ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';\nPrimeIcons.ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';\nPrimeIcons.ARROW_DOWN = 'pi pi-arrow-down';\nPrimeIcons.ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';\nPrimeIcons.ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';\nPrimeIcons.ARROW_LEFT = 'pi pi-arrow-left';\nPrimeIcons.ARROW_RIGHT_ARROW_LEFT = 'pi pi-arrow-right-arrow-left';\nPrimeIcons.ARROW_RIGHT = 'pi pi-arrow-right';\nPrimeIcons.ARROW_UP = 'pi pi-arrow-up';\nPrimeIcons.ARROW_UP_LEFT = 'pi pi-arrow-up-left';\nPrimeIcons.ARROW_UP_RIGHT = 'pi pi-arrow-up-right';\nPrimeIcons.ARROW_H = 'pi pi-arrows-h';\nPrimeIcons.ARROW_V = 'pi pi-arrows-v';\nPrimeIcons.AT = 'pi pi-at';\nPrimeIcons.BACKWARD = 'pi pi-backward';\nPrimeIcons.BAN = 'pi pi-ban';\nPrimeIcons.BARS = 'pi pi-bars';\nPrimeIcons.BELL = 'pi pi-bell';\nPrimeIcons.BITCOIN = 'pi pi-bitcoin';\nPrimeIcons.BOLT = 'pi pi-bolt';\nPrimeIcons.BOOK = 'pi pi-book';\nPrimeIcons.BOOKMARK = 'pi pi-bookmark';\nPrimeIcons.BOOKMARK_FILL = 'pi pi-bookmark-fill';\nPrimeIcons.BOX = 'pi pi-box';\nPrimeIcons.BRIEFCASE = 'pi pi-briefcase';\nPrimeIcons.BUILDING = 'pi pi-building';\nPrimeIcons.CALCULATOR = 'pi pi-calculator';\nPrimeIcons.CALENDAR = 'pi pi-calendar';\nPrimeIcons.CALENDAR_MINUS = 'pi pi-calendar-minus';\nPrimeIcons.CALENDAR_PLUS = 'pi pi-calendar-plus';\nPrimeIcons.CALENDAR_TIMES = 'pi pi-calendar-times';\nPrimeIcons.CAMERA = 'pi pi-camera';\nPrimeIcons.CAR = 'pi pi-car';\nPrimeIcons.CARET_DOWN = 'pi pi-caret-down';\nPrimeIcons.CARET_LEFT = 'pi pi-caret-left';\nPrimeIcons.CARET_RIGHT = 'pi pi-caret-right';\nPrimeIcons.CARET_UP = 'pi pi-caret-up';\nPrimeIcons.CART_PLUS = 'pi pi-cart-plus';\nPrimeIcons.CHART_BAR = 'pi pi-chart-bar';\nPrimeIcons.CHART_LINE = 'pi pi-chart-line';\nPrimeIcons.CHART_PIE = 'pi pi-chart-pie';\nPrimeIcons.CHECK = 'pi pi-check';\nPrimeIcons.CHECK_CIRCLE = 'pi pi-check-circle';\nPrimeIcons.CHECK_SQUARE = 'pi pi-check-square';\nPrimeIcons.CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';\nPrimeIcons.CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';\nPrimeIcons.CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';\nPrimeIcons.CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';\nPrimeIcons.CHEVRON_DOWN = 'pi pi-chevron-down';\nPrimeIcons.CHEVRON_LEFT = 'pi pi-chevron-left';\nPrimeIcons.CHEVRON_RIGHT = 'pi pi-chevron-right';\nPrimeIcons.CHEVRON_UP = 'pi pi-chevron-up';\nPrimeIcons.CIRCLE = 'pi pi-circle';\nPrimeIcons.CIRCLE_FILL = 'pi pi-circle-fill';\nPrimeIcons.CLOCK = 'pi pi-clock';\nPrimeIcons.CLONE = 'pi pi-clone';\nPrimeIcons.CLOUD = 'pi pi-cloud';\nPrimeIcons.CLOUD_DOWNLOAD = 'pi pi-cloud-download';\nPrimeIcons.CLOUD_UPLOAD = 'pi pi-cloud-upload';\nPrimeIcons.CODE = 'pi pi-code';\nPrimeIcons.COG = 'pi pi-cog';\nPrimeIcons.COMMENT = 'pi pi-comment';\nPrimeIcons.COMMENTS = 'pi pi-comments';\nPrimeIcons.COMPASS = 'pi pi-compass';\nPrimeIcons.COPY = 'pi pi-copy';\nPrimeIcons.CREDIT_CARD = 'pi pi-credit-card';\nPrimeIcons.DATABASE = 'pi pi-database';\nPrimeIcons.DESKTOP = 'pi pi-desktop';\nPrimeIcons.DELETE_LEFT = 'pi pi-delete-left';\nPrimeIcons.DIRECTIONS = 'pi pi-directions';\nPrimeIcons.DIRECTIONS_ALT = 'pi pi-directions-alt';\nPrimeIcons.DISCORD = 'pi pi-discord';\nPrimeIcons.DOLLAR = 'pi pi-dollar';\nPrimeIcons.DOWNLOAD = 'pi pi-download';\nPrimeIcons.EJECT = 'pi pi-eject';\nPrimeIcons.ELLIPSIS_H = 'pi pi-ellipsis-h';\nPrimeIcons.ELLIPSIS_V = 'pi pi-ellipsis-v';\nPrimeIcons.ENVELOPE = 'pi pi-envelope';\nPrimeIcons.ERASER = 'pi pi-eraser';\nPrimeIcons.EURO = 'pi pi-euro';\nPrimeIcons.EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';\nPrimeIcons.EXCLAMATION_TRIANGLE = 'pi pi-exclamation-triangle';\nPrimeIcons.EXTERNAL_LINK = 'pi pi-external-link';\nPrimeIcons.EYE = 'pi pi-eye';\nPrimeIcons.EYE_SLASH = 'pi pi-eye-slash';\nPrimeIcons.FACEBOOK = 'pi pi-facebook';\nPrimeIcons.FAST_BACKWARD = 'pi pi-fast-backward';\nPrimeIcons.FAST_FORWARD = 'pi pi-fast-forward';\nPrimeIcons.FILE = 'pi pi-file';\nPrimeIcons.FILE_EDIT = 'pi pi-file-edit';\nPrimeIcons.FILE_IMPORT = 'pi pi-file-import';\nPrimeIcons.FILE_PDF = 'pi pi-file-pdf';\nPrimeIcons.FILE_EXCEL = 'pi pi-file-excel';\nPrimeIcons.FILE_EXPORT = 'pi pi-file-export';\nPrimeIcons.FILE_WORD = 'pi pi-file-word';\nPrimeIcons.FILTER = 'pi pi-filter';\nPrimeIcons.FILTER_FILL = 'pi pi-filter-fill';\nPrimeIcons.FILTER_SLASH = 'pi pi-filter-slash';\nPrimeIcons.FLAG = 'pi pi-flag';\nPrimeIcons.FLAG_FILL = 'pi pi-flag-fill';\nPrimeIcons.FOLDER = 'pi pi-folder';\nPrimeIcons.FOLDER_OPEN = 'pi pi-folder-open';\nPrimeIcons.FORWARD = 'pi pi-forward';\nPrimeIcons.GIFT = 'pi pi-gift';\nPrimeIcons.GITHUB = 'pi pi-github';\nPrimeIcons.GLOBE = 'pi pi-globe';\nPrimeIcons.GOOGLE = 'pi pi-google';\nPrimeIcons.HASHTAG = 'pi pi-hashtag';\nPrimeIcons.HEART = 'pi pi-heart';\nPrimeIcons.HEART_FILL = 'pi pi-heart-fill';\nPrimeIcons.HISTORY = 'pi pi-history';\nPrimeIcons.HOME = 'pi pi-home';\nPrimeIcons.HOURGLASS = 'pi pi-hourglass';\nPrimeIcons.ID_CARD = 'pi pi-id-card';\nPrimeIcons.IMAGE = 'pi pi-image';\nPrimeIcons.IMAGES = 'pi pi-images';\nPrimeIcons.INBOX = 'pi pi-inbox';\nPrimeIcons.INFO = 'pi pi-info';\nPrimeIcons.INFO_CIRCLE = 'pi pi-info-circle';\nPrimeIcons.INSTAGRAM = 'pi pi-instagram';\nPrimeIcons.KEY = 'pi pi-key';\nPrimeIcons.LANGUAGE = 'pi pi-language';\nPrimeIcons.LINK = 'pi pi-link';\nPrimeIcons.LINKEDIN = 'pi pi-linkedin';\nPrimeIcons.LIST = 'pi pi-list';\nPrimeIcons.LOCK = 'pi pi-lock';\nPrimeIcons.LOCK_OPEN = 'pi pi-lock-open';\nPrimeIcons.MAP = 'pi pi-map';\nPrimeIcons.MAP_MARKER = 'pi pi-map-marker';\nPrimeIcons.MEGAPHONE = 'pi pi-megaphone';\nPrimeIcons.MICROPHONE = 'pi pi-microphone';\nPrimeIcons.MICROSOFT = 'pi pi-microsoft';\nPrimeIcons.MINUS = 'pi pi-minus';\nPrimeIcons.MINUS_CIRCLE = 'pi pi-minus-circle';\nPrimeIcons.MOBILE = 'pi pi-mobile';\nPrimeIcons.MONEY_BILL = 'pi pi-money-bill';\nPrimeIcons.MOON = 'pi pi-moon';\nPrimeIcons.PALETTE = 'pi pi-palette';\nPrimeIcons.PAPERCLIP = 'pi pi-paperclip';\nPrimeIcons.PAUSE = 'pi pi-pause';\nPrimeIcons.PAYPAL = 'pi pi-paypal';\nPrimeIcons.PENCIL = 'pi pi-pencil';\nPrimeIcons.PERCENTAGE = 'pi pi-percentage';\nPrimeIcons.PHONE = 'pi pi-phone';\nPrimeIcons.PLAY = 'pi pi-play';\nPrimeIcons.PLUS = 'pi pi-plus';\nPrimeIcons.PLUS_CIRCLE = 'pi pi-plus-circle';\nPrimeIcons.POUND = 'pi pi-pound';\nPrimeIcons.POWER_OFF = 'pi pi-power-off';\nPrimeIcons.PRIME = 'pi pi-prime';\nPrimeIcons.PRINT = 'pi pi-print';\nPrimeIcons.QRCODE = 'pi pi-qrcode';\nPrimeIcons.QUESTION = 'pi pi-question';\nPrimeIcons.QUESTION_CIRCLE = 'pi pi-question-circle';\nPrimeIcons.REDDIT = 'pi pi-reddit';\nPrimeIcons.REFRESH = 'pi pi-refresh';\nPrimeIcons.REPLAY = 'pi pi-replay';\nPrimeIcons.REPLY = 'pi pi-reply';\nPrimeIcons.SAVE = 'pi pi-save';\nPrimeIcons.SEARCH = 'pi pi-search';\nPrimeIcons.SEARCH_MINUS = 'pi pi-search-minus';\nPrimeIcons.SEARCH_PLUS = 'pi pi-search-plus';\nPrimeIcons.SEND = 'pi pi-send';\nPrimeIcons.SERVER = 'pi pi-server';\nPrimeIcons.SHARE_ALT = 'pi pi-share-alt';\nPrimeIcons.SHIELD = 'pi pi-shield';\nPrimeIcons.SHOPPING_BAG = 'pi pi-shopping-bag';\nPrimeIcons.SHOPPING_CART = 'pi pi-shopping-cart';\nPrimeIcons.SIGN_IN = 'pi pi-sign-in';\nPrimeIcons.SIGN_OUT = 'pi pi-sign-out';\nPrimeIcons.SITEMAP = 'pi pi-sitemap';\nPrimeIcons.SLACK = 'pi pi-slack';\nPrimeIcons.SLIDERS_H = 'pi pi-sliders-h';\nPrimeIcons.SLIDERS_V = 'pi pi-sliders-v';\nPrimeIcons.SORT = 'pi pi-sort';\nPrimeIcons.SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';\nPrimeIcons.SORT_ALPHA_ALT_DOWN = 'pi pi-sort-alpha-alt-down';\nPrimeIcons.SORT_ALPHA_UP = 'pi pi-sort-alpha-up';\nPrimeIcons.SORT_ALPHA_ALT_UP = 'pi pi-sort-alpha-alt-up';\nPrimeIcons.SORT_ALT = 'pi pi-sort-alt';\nPrimeIcons.SORT_ALT_SLASH = 'pi pi-sort-slash';\nPrimeIcons.SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';\nPrimeIcons.SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';\nPrimeIcons.SORT_AMOUNT_UP = 'pi pi-sort-amount-up';\nPrimeIcons.SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';\nPrimeIcons.SORT_DOWN = 'pi pi-sort-down';\nPrimeIcons.SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';\nPrimeIcons.SORT_NUMERIC_ALT_DOWN = 'pi pi-sort-numeric-alt-down';\nPrimeIcons.SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';\nPrimeIcons.SORT_NUMERIC_ALT_UP = 'pi pi-sort-numeric-alt-up';\nPrimeIcons.SORT_UP = 'pi pi-sort-up';\nPrimeIcons.SPINNER = 'pi pi-spinner';\nPrimeIcons.STAR = 'pi pi-star';\nPrimeIcons.STAR_FILL = 'pi pi-star-fill';\nPrimeIcons.STEP_BACKWARD = 'pi pi-step-backward';\nPrimeIcons.STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';\nPrimeIcons.STEP_FORWARD = 'pi pi-step-forward';\nPrimeIcons.STEP_FORWARD_ALT = 'pi pi-step-forward-alt';\nPrimeIcons.STOP = 'pi pi-stop';\nPrimeIcons.STOP_CIRCLE = 'pi pi-stop-circle';\nPrimeIcons.STOPWATCH = 'pi pi-stopwatch';\nPrimeIcons.SUN = 'pi pi-sun';\nPrimeIcons.SYNC = 'pi pi-sync';\nPrimeIcons.TABLE = 'pi pi-table';\nPrimeIcons.TABLET = 'pi pi-tablet';\nPrimeIcons.TAG = 'pi pi-tag';\nPrimeIcons.TAGS = 'pi pi-tags';\nPrimeIcons.TELEGRAM = 'pi pi-telegram';\nPrimeIcons.TH_LARGE = 'pi pi-th-large';\nPrimeIcons.THUMBS_DOWN = 'pi pi-thumbs-down';\nPrimeIcons.THUMBS_DOWN_FILL = 'pi pi-thumbs-down-fill';\nPrimeIcons.THUMBS_UP = 'pi pi-thumbs-up';\nPrimeIcons.THUMBS_UP_FILL = 'pi pi-thumbs-up-fill';\nPrimeIcons.TICKET = 'pi pi-ticket';\nPrimeIcons.TIMES = 'pi pi-times';\nPrimeIcons.TIMES_CIRCLE = 'pi pi-times-circle';\nPrimeIcons.TRASH = 'pi pi-trash';\nPrimeIcons.TRUCK = 'pi pi-truck';\nPrimeIcons.TWITTER = 'pi pi-twitter';\nPrimeIcons.UNDO = 'pi pi-undo';\nPrimeIcons.UNLOCK = 'pi pi-unlock';\nPrimeIcons.UPLOAD = 'pi pi-upload';\nPrimeIcons.USER = 'pi pi-user';\nPrimeIcons.USER_EDIT = 'pi pi-user-edit';\nPrimeIcons.USER_MINUS = 'pi pi-user-minus';\nPrimeIcons.USER_PLUS = 'pi pi-user-plus';\nPrimeIcons.USERS = 'pi pi-users';\nPrimeIcons.VERIFIED = 'pi pi-verified';\nPrimeIcons.VIDEO = 'pi pi-video';\nPrimeIcons.VIMEO = 'pi pi-vimeo';\nPrimeIcons.VOLUME_DOWN = 'pi pi-volume-down';\nPrimeIcons.VOLUME_OFF = 'pi pi-volume-off';\nPrimeIcons.VOLUME_UP = 'pi pi-volume-up';\nPrimeIcons.WALLET = 'pi pi-wallet';\nPrimeIcons.WHATSAPP = 'pi pi-whatsapp';\nPrimeIcons.WIFI = 'pi pi-wifi';\nPrimeIcons.WINDOW_MAXIMIZE = 'pi pi-window-maximize';\nPrimeIcons.WINDOW_MINIMIZE = 'pi pi-window-minimize';\nPrimeIcons.WRENCH = 'pi pi-wrench';\nPrimeIcons.YOUTUBE = 'pi pi-youtube';\n\nclass PrimeNGConfig {\n constructor() {\n this.ripple = false;\n this.overlayOptions = {};\n this.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 this.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 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 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 emptyFilterMessage: 'No results found'\n };\n this.zIndex = {\n modal: 1100,\n overlay: 1000,\n menu: 1000,\n tooltip: 1100\n };\n this.translationSource = new Subject();\n this.translationObserver = this.translationSource.asObservable();\n }\n getTranslation(key) {\n return this.translation[key];\n }\n setTranslation(value) {\n this.translation = { ...this.translation, ...value };\n this.translationSource.next(this.translation);\n }\n}\nPrimeNGConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: PrimeNGConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPrimeNGConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: PrimeNGConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: PrimeNGConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass Header {\n}\nHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Header, deps: [], target: i0.ɵɵFactoryTarget.Component });\nHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Header, selector: \"p-header\", ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Header, decorators: [{\n type: Component,\n args: [{\n selector: 'p-header',\n template: ''\n }]\n }] });\nclass Footer {\n}\nFooter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Footer, deps: [], target: i0.ɵɵFactoryTarget.Component });\nFooter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Footer, selector: \"p-footer\", ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Footer, decorators: [{\n type: Component,\n args: [{\n selector: 'p-footer',\n template: ''\n }]\n }] });\nclass PrimeTemplate {\n constructor(template) {\n this.template = template;\n }\n getType() {\n return this.name;\n }\n}\nPrimeTemplate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: PrimeTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nPrimeTemplate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.2.4\", type: PrimeTemplate, selector: \"[pTemplate]\", inputs: { type: \"type\", name: [\"pTemplate\", \"name\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: PrimeTemplate, decorators: [{\n type: Directive,\n args: [{\n selector: '[pTemplate]',\n host: {}\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { type: [{\n type: Input\n }], name: [{\n type: Input,\n args: ['pTemplate']\n }] } });\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: SharedModule, declarations: [Header, Footer, PrimeTemplate], imports: [CommonModule], exports: [Header, Footer, PrimeTemplate] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: SharedModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [Header, Footer, PrimeTemplate],\n declarations: [Header, Footer, PrimeTemplate]\n }]\n }] });\n\nclass TranslationKeys {\n}\nTranslationKeys.STARTS_WITH = 'startsWith';\nTranslationKeys.CONTAINS = 'contains';\nTranslationKeys.NOT_CONTAINS = 'notContains';\nTranslationKeys.ENDS_WITH = 'endsWith';\nTranslationKeys.EQUALS = 'equals';\nTranslationKeys.NOT_EQUALS = 'notEquals';\nTranslationKeys.NO_FILTER = 'noFilter';\nTranslationKeys.LT = 'lt';\nTranslationKeys.LTE = 'lte';\nTranslationKeys.GT = 'gt';\nTranslationKeys.GTE = 'gte';\nTranslationKeys.IS = 'is';\nTranslationKeys.IS_NOT = 'isNot';\nTranslationKeys.BEFORE = 'before';\nTranslationKeys.AFTER = 'after';\nTranslationKeys.CLEAR = 'clear';\nTranslationKeys.APPLY = 'apply';\nTranslationKeys.MATCH_ALL = 'matchAll';\nTranslationKeys.MATCH_ANY = 'matchAny';\nTranslationKeys.ADD_RULE = 'addRule';\nTranslationKeys.REMOVE_RULE = 'removeRule';\nTranslationKeys.ACCEPT = 'accept';\nTranslationKeys.REJECT = 'reject';\nTranslationKeys.CHOOSE = 'choose';\nTranslationKeys.UPLOAD = 'upload';\nTranslationKeys.CANCEL = 'cancel';\nTranslationKeys.DAY_NAMES = 'dayNames';\nTranslationKeys.DAY_NAMES_SHORT = 'dayNamesShort';\nTranslationKeys.DAY_NAMES_MIN = 'dayNamesMin';\nTranslationKeys.MONTH_NAMES = 'monthNames';\nTranslationKeys.MONTH_NAMES_SHORT = 'monthNamesShort';\nTranslationKeys.FIRST_DAY_OF_WEEK = 'firstDayOfWeek';\nTranslationKeys.TODAY = 'today';\nTranslationKeys.WEEK_HEADER = 'weekHeader';\nTranslationKeys.WEAK = 'weak';\nTranslationKeys.MEDIUM = 'medium';\nTranslationKeys.STRONG = 'strong';\nTranslationKeys.PASSWORD_PROMPT = 'passwordPrompt';\nTranslationKeys.EMPTY_MESSAGE = 'emptyMessage';\nTranslationKeys.EMPTY_FILTER_MESSAGE = 'emptyFilterMessage';\n\nclass TreeDragDropService {\n constructor() {\n this.dragStartSource = new Subject();\n this.dragStopSource = new Subject();\n this.dragStart$ = this.dragStartSource.asObservable();\n this.dragStop$ = this.dragStopSource.asObservable();\n }\n startDrag(event) {\n this.dragStartSource.next(event);\n }\n stopDrag(event) {\n this.dragStopSource.next(event);\n }\n}\nTreeDragDropService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: TreeDragDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTreeDragDropService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: TreeDragDropService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: TreeDragDropService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ConfirmEventType, ConfirmationService, ContextMenuService, FilterMatchMode, FilterOperator, FilterService, Footer, Header, MessageService, OverlayService, PrimeIcons, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys, TreeDragDropService };\n//# sourceMappingURL=primeng-api.mjs.map\n//# sourceMappingURL=primeng-api.mjs.map\n","import * as i1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Directive, Inject, Input, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, Output, NgModule } from '@angular/core';\nimport { PrimeTemplate } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { ObjectUtils } from 'primeng/utils';\n\nconst INTERNAL_BUTTON_CLASSES = {\n button: 'p-button',\n component: 'p-component',\n iconOnly: 'p-button-icon-only',\n disabled: 'p-disabled',\n loading: 'p-button-loading',\n labelOnly: 'p-button-loading-label-only'\n};\nclass ButtonDirective {\n constructor(el, document) {\n this.el = el;\n this.document = document;\n this.iconPos = 'left';\n this.loadingIcon = 'pi pi-spinner pi-spin';\n this._loading = false;\n this._internalClasses = Object.values(INTERNAL_BUTTON_CLASSES);\n }\n get label() {\n return this._label;\n }\n set label(val) {\n this._label = val;\n if (this.initialized) {\n this.updateLabel();\n this.updateIcon();\n this.setStyleClass();\n }\n }\n get icon() {\n return this._icon;\n }\n set icon(val) {\n this._icon = val;\n if (this.initialized) {\n this.updateIcon();\n this.setStyleClass();\n }\n }\n get loading() {\n return this._loading;\n }\n set loading(val) {\n this._loading = val;\n if (this.initialized) {\n this.updateIcon();\n this.setStyleClass();\n }\n }\n get htmlElement() {\n return this.el.nativeElement;\n }\n ngAfterViewInit() {\n DomHandler.addMultipleClasses(this.htmlElement, this.getStyleClass().join(' '));\n this.createIcon();\n this.createLabel();\n this.initialized = true;\n }\n getStyleClass() {\n const styleClass = [INTERNAL_BUTTON_CLASSES.button, INTERNAL_BUTTON_CLASSES.component];\n if (this.icon && !this.label && ObjectUtils.isEmpty(this.htmlElement.textContent)) {\n styleClass.push(INTERNAL_BUTTON_CLASSES.iconOnly);\n }\n if (this.loading) {\n styleClass.push(INTERNAL_BUTTON_CLASSES.disabled, INTERNAL_BUTTON_CLASSES.loading);\n if (!this.icon && this.label) {\n styleClass.push(INTERNAL_BUTTON_CLASSES.labelOnly);\n }\n }\n return styleClass;\n }\n setStyleClass() {\n const styleClass = this.getStyleClass();\n this.htmlElement.classList.remove(...this._internalClasses);\n this.htmlElement.classList.add(...styleClass);\n }\n createLabel() {\n if (this.label) {\n let labelElement = this.document.createElement('span');\n if (this.icon && !this.label) {\n labelElement.setAttribute('aria-hidden', 'true');\n }\n labelElement.className = 'p-button-label';\n labelElement.appendChild(this.document.createTextNode(this.label));\n this.htmlElement.appendChild(labelElement);\n }\n }\n createIcon() {\n if (this.icon || this.loading) {\n let iconElement = this.document.createElement('span');\n iconElement.className = 'p-button-icon';\n iconElement.setAttribute('aria-hidden', 'true');\n let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;\n if (iconPosClass) {\n DomHandler.addClass(iconElement, iconPosClass);\n }\n let iconClass = this.getIconClass();\n if (iconClass) {\n DomHandler.addMultipleClasses(iconElement, iconClass);\n }\n this.htmlElement.insertBefore(iconElement, this.htmlElement.firstChild);\n }\n }\n updateLabel() {\n let labelElement = DomHandler.findSingle(this.htmlElement, '.p-button-label');\n if (!this.label) {\n labelElement && this.htmlElement.removeChild(labelElement);\n return;\n }\n labelElement ? (labelElement.textContent = this.label) : this.createLabel();\n }\n updateIcon() {\n let iconElement = DomHandler.findSingle(this.htmlElement, '.p-button-icon');\n if (!this.icon && !this.loading) {\n iconElement && this.htmlElement.removeChild(iconElement);\n return;\n }\n if (iconElement) {\n if (this.iconPos)\n iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();\n else\n iconElement.className = 'p-button-icon ' + this.getIconClass();\n }\n else {\n this.createIcon();\n }\n }\n getIconClass() {\n return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;\n }\n ngOnDestroy() {\n this.initialized = false;\n }\n}\nButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ButtonDirective, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.2.4\", type: ButtonDirective, selector: \"[pButton]\", inputs: { iconPos: \"iconPos\", loadingIcon: \"loadingIcon\", label: \"label\", icon: \"icon\", loading: \"loading\" }, host: { classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[pButton]',\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { iconPos: [{\n type: Input\n }], loadingIcon: [{\n type: Input\n }], label: [{\n type: Input\n }], icon: [{\n type: Input\n }], loading: [{\n type: Input\n }] } });\nclass Button {\n constructor() {\n this.type = 'button';\n this.iconPos = 'left';\n this.loading = false;\n this.loadingIcon = 'pi pi-spinner pi-spin';\n this.onClick = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n badgeStyleClass() {\n return {\n 'p-badge p-component': true,\n 'p-badge-no-gutter': this.badge && String(this.badge).length === 1\n };\n }\n}\nButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Component });\nButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Button, selector: \"p-button\", inputs: { type: \"type\", iconPos: \"iconPos\", icon: \"icon\", badge: \"badge\", label: \"label\", disabled: \"disabled\", loading: \"loading\", loadingIcon: \"loadingIcon\", style: \"style\", styleClass: \"styleClass\", badgeClass: \"badgeClass\", ariaLabel: \"ariaLabel\" }, outputs: { onClick: \"onClick\", onFocus: \"onFocus\", onBlur: \"onBlur\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n \n \n \n \n {{ label }}\n {{ badge }}\n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i2.Ripple, selector: \"[pRipple]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Button, decorators: [{\n type: Component,\n args: [{\n selector: 'p-button',\n template: `\n \n \n \n \n {{ label }}\n {{ badge }}\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], propDecorators: { type: [{\n type: Input\n }], iconPos: [{\n type: Input\n }], icon: [{\n type: Input\n }], badge: [{\n type: Input\n }], label: [{\n type: Input\n }], disabled: [{\n type: Input\n }], loading: [{\n type: Input\n }], loadingIcon: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], badgeClass: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], onClick: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }] } });\nclass ButtonModule {\n}\nButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: ButtonModule, declarations: [ButtonDirective, Button], imports: [CommonModule, RippleModule], exports: [ButtonDirective, Button] });\nButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ButtonModule, imports: [CommonModule, RippleModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ButtonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RippleModule],\n exports: [ButtonDirective, Button],\n declarations: [ButtonDirective, Button]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Button, ButtonDirective, ButtonModule };\n//# sourceMappingURL=primeng-button.mjs.map\n//# sourceMappingURL=primeng-button.mjs.map\n","import { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i1 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i3 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport * as i4 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';\n\nconst CALENDAR_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Calendar),\n multi: true\n};\nclass Calendar {\n constructor(document, el, renderer, cd, zone, config, overlayService) {\n this.document = document;\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.zone = zone;\n this.config = config;\n this.overlayService = overlayService;\n this.multipleSeparator = ',';\n this.rangeSeparator = '-';\n this.inline = false;\n this.showOtherMonths = true;\n this.icon = 'pi pi-calendar';\n this.shortYearCutoff = '+10';\n this.hourFormat = '24';\n this.stepHour = 1;\n this.stepMinute = 1;\n this.stepSecond = 1;\n this.showSeconds = false;\n this.showOnFocus = true;\n this.showWeek = false;\n this.showClear = false;\n this.dataType = 'date';\n this.selectionMode = 'single';\n this.todayButtonStyleClass = 'p-button-text';\n this.clearButtonStyleClass = 'p-button-text';\n this.autoZIndex = true;\n this.baseZIndex = 0;\n this.keepInvalid = false;\n this.hideOnDateTimeSelect = true;\n this.timeSeparator = ':';\n this.focusTrap = true;\n this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n this.hideTransitionOptions = '.1s linear';\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onClose = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onClear = new EventEmitter();\n this.onInput = new EventEmitter();\n this.onTodayClick = new EventEmitter();\n this.onClearClick = new EventEmitter();\n this.onMonthChange = new EventEmitter();\n this.onYearChange = new EventEmitter();\n this.onClickOutside = new EventEmitter();\n this.onShow = new EventEmitter();\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n this.inputFieldValue = null;\n this.navigationState = null;\n this._numberOfMonths = 1;\n this._view = 'date';\n this.convertTo24Hour = function (hours, pm) {\n if (this.hourFormat == '12') {\n if (hours === 12) {\n return pm ? 12 : 0;\n }\n else {\n return pm ? hours + 12 : hours;\n }\n }\n return hours;\n };\n this.window = this.document.defaultView;\n }\n set content(content) {\n this.contentViewChild = content;\n if (this.contentViewChild) {\n if (this.isMonthNavigate) {\n Promise.resolve(null).then(() => this.updateFocus());\n this.isMonthNavigate = false;\n }\n else {\n if (!this.focus) {\n this.initFocusableCell();\n }\n }\n }\n }\n get view() {\n return this._view;\n }\n set view(view) {\n this._view = view;\n this.currentView = this._view;\n }\n get defaultDate() {\n return this._defaultDate;\n }\n set defaultDate(defaultDate) {\n this._defaultDate = defaultDate;\n if (this.initialized) {\n const date = defaultDate || new Date();\n this.currentMonth = date.getMonth();\n this.currentYear = date.getFullYear();\n this.initTime(date);\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get minDate() {\n return this._minDate;\n }\n set minDate(date) {\n this._minDate = date;\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(date) {\n this._maxDate = date;\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get disabledDates() {\n return this._disabledDates;\n }\n set disabledDates(disabledDates) {\n this._disabledDates = disabledDates;\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get disabledDays() {\n return this._disabledDays;\n }\n set disabledDays(disabledDays) {\n this._disabledDays = disabledDays;\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get yearRange() {\n return this._yearRange;\n }\n set yearRange(yearRange) {\n this._yearRange = yearRange;\n if (yearRange) {\n const years = yearRange.split(':');\n const yearStart = parseInt(years[0]);\n const yearEnd = parseInt(years[1]);\n this.populateYearOptions(yearStart, yearEnd);\n }\n }\n get showTime() {\n return this._showTime;\n }\n set showTime(showTime) {\n this._showTime = showTime;\n if (this.currentHour === undefined) {\n this.initTime(this.value || new Date());\n }\n this.updateInputfield();\n }\n get locale() {\n return this._locale;\n }\n get responsiveOptions() {\n return this._responsiveOptions;\n }\n set responsiveOptions(responsiveOptions) {\n this._responsiveOptions = responsiveOptions;\n this.destroyResponsiveStyleElement();\n this.createResponsiveStyle();\n }\n get numberOfMonths() {\n return this._numberOfMonths;\n }\n set numberOfMonths(numberOfMonths) {\n this._numberOfMonths = numberOfMonths;\n this.destroyResponsiveStyleElement();\n this.createResponsiveStyle();\n }\n get firstDayOfWeek() {\n return this._firstDayOfWeek;\n }\n set firstDayOfWeek(firstDayOfWeek) {\n this._firstDayOfWeek = firstDayOfWeek;\n this.createWeekDays();\n }\n set locale(newLocale) {\n console.warn('Locale property has no effect, use new i18n API instead.');\n }\n ngOnInit() {\n this.attributeSelector = UniqueComponentId();\n const date = this.defaultDate || new Date();\n this.createResponsiveStyle();\n this.currentMonth = date.getMonth();\n this.currentYear = date.getFullYear();\n this.currentView = this.view;\n if (this.view === 'date') {\n this.createWeekDays();\n this.initTime(date);\n this.createMonths(this.currentMonth, this.currentYear);\n this.ticksTo1970 = ((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000;\n }\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.createWeekDays();\n this.cd.markForCheck();\n });\n this.initialized = true;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'date':\n this.dateTemplate = item.template;\n break;\n case 'decade':\n this.decadeTemplate = item.template;\n break;\n case 'disabledDate':\n this.disabledDateTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n default:\n this.dateTemplate = item.template;\n break;\n }\n });\n }\n ngAfterViewInit() {\n if (this.inline) {\n this.contentViewChild && this.contentViewChild.nativeElement.setAttribute(this.attributeSelector, '');\n if (!this.disabled) {\n this.initFocusableCell();\n if (this.numberOfMonths === 1) {\n this.contentViewChild.nativeElement.style.width = DomHandler.getOuterWidth(this.containerViewChild.nativeElement) + 'px';\n }\n }\n }\n }\n getTranslation(option) {\n return this.config.getTranslation(option);\n }\n populateYearOptions(start, end) {\n this.yearOptions = [];\n for (let i = start; i <= end; i++) {\n this.yearOptions.push(i);\n }\n }\n createWeekDays() {\n this.weekDays = [];\n let dayIndex = this.getFirstDateOfWeek();\n let dayLabels = this.getTranslation(TranslationKeys.DAY_NAMES_MIN);\n for (let i = 0; i < 7; i++) {\n this.weekDays.push(dayLabels[dayIndex]);\n dayIndex = dayIndex == 6 ? 0 : ++dayIndex;\n }\n }\n monthPickerValues() {\n let monthPickerValues = [];\n for (let i = 0; i <= 11; i++) {\n monthPickerValues.push(this.config.getTranslation('monthNamesShort')[i]);\n }\n return monthPickerValues;\n }\n yearPickerValues() {\n let yearPickerValues = [];\n let base = this.currentYear - (this.currentYear % 10);\n for (let i = 0; i < 10; i++) {\n yearPickerValues.push(base + i);\n }\n return yearPickerValues;\n }\n createMonths(month, year) {\n this.months = this.months = [];\n for (let i = 0; i < this.numberOfMonths; i++) {\n let m = month + i;\n let y = year;\n if (m > 11) {\n m = (m % 11) - 1;\n y = year + 1;\n }\n this.months.push(this.createMonth(m, y));\n }\n }\n getWeekNumber(date) {\n let checkDate = new Date(date.getTime());\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n let time = checkDate.getTime();\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;\n }\n createMonth(month, year) {\n let dates = [];\n let firstDay = this.getFirstDayOfMonthIndex(month, year);\n let daysLength = this.getDaysCountInMonth(month, year);\n let prevMonthDaysLength = this.getDaysCountInPrevMonth(month, year);\n let dayNo = 1;\n let today = new Date();\n let weekNumbers = [];\n let monthRows = Math.ceil((daysLength + firstDay) / 7);\n for (let i = 0; i < monthRows; i++) {\n let week = [];\n if (i == 0) {\n for (let j = prevMonthDaysLength - firstDay + 1; j <= prevMonthDaysLength; j++) {\n let prev = this.getPreviousMonthAndYear(month, year);\n week.push({ day: j, month: prev.month, year: prev.year, otherMonth: true, today: this.isToday(today, j, prev.month, prev.year), selectable: this.isSelectable(j, prev.month, prev.year, true) });\n }\n let remainingDaysLength = 7 - week.length;\n for (let j = 0; j < remainingDaysLength; j++) {\n week.push({ day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year), selectable: this.isSelectable(dayNo, month, year, false) });\n dayNo++;\n }\n }\n else {\n for (let j = 0; j < 7; j++) {\n if (dayNo > daysLength) {\n let next = this.getNextMonthAndYear(month, year);\n week.push({\n day: dayNo - daysLength,\n month: next.month,\n year: next.year,\n otherMonth: true,\n today: this.isToday(today, dayNo - daysLength, next.month, next.year),\n selectable: this.isSelectable(dayNo - daysLength, next.month, next.year, true)\n });\n }\n else {\n week.push({ day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year), selectable: this.isSelectable(dayNo, month, year, false) });\n }\n dayNo++;\n }\n }\n if (this.showWeek) {\n weekNumbers.push(this.getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));\n }\n dates.push(week);\n }\n return {\n month: month,\n year: year,\n dates: dates,\n weekNumbers: weekNumbers\n };\n }\n initTime(date) {\n this.pm = date.getHours() > 11;\n if (this.showTime) {\n this.currentMinute = date.getMinutes();\n this.currentSecond = date.getSeconds();\n this.setCurrentHourPM(date.getHours());\n }\n else if (this.timeOnly) {\n this.currentMinute = 0;\n this.currentHour = 0;\n this.currentSecond = 0;\n }\n }\n navBackward(event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n this.isMonthNavigate = true;\n if (this.currentView === 'month') {\n this.decrementYear();\n setTimeout(() => {\n this.updateFocus();\n }, 1);\n }\n else if (this.currentView === 'year') {\n this.decrementDecade();\n setTimeout(() => {\n this.updateFocus();\n }, 1);\n }\n else {\n if (this.currentMonth === 0) {\n this.currentMonth = 11;\n this.decrementYear();\n }\n else {\n this.currentMonth--;\n }\n this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n navForward(event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n this.isMonthNavigate = true;\n if (this.currentView === 'month') {\n this.incrementYear();\n setTimeout(() => {\n this.updateFocus();\n }, 1);\n }\n else if (this.currentView === 'year') {\n this.incrementDecade();\n setTimeout(() => {\n this.updateFocus();\n }, 1);\n }\n else {\n if (this.currentMonth === 11) {\n this.currentMonth = 0;\n this.incrementYear();\n }\n else {\n this.currentMonth++;\n }\n this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n decrementYear() {\n this.currentYear--;\n if (this.yearNavigator && this.currentYear < this.yearOptions[0]) {\n let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];\n this.populateYearOptions(this.yearOptions[0] - difference, this.yearOptions[this.yearOptions.length - 1] - difference);\n }\n }\n decrementDecade() {\n this.currentYear = this.currentYear - 10;\n }\n incrementDecade() {\n this.currentYear = this.currentYear + 10;\n }\n incrementYear() {\n this.currentYear++;\n if (this.yearNavigator && this.currentYear > this.yearOptions[this.yearOptions.length - 1]) {\n let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];\n this.populateYearOptions(this.yearOptions[0] + difference, this.yearOptions[this.yearOptions.length - 1] + difference);\n }\n }\n switchToMonthView(event) {\n this.setCurrentView('month');\n event.preventDefault();\n }\n switchToYearView(event) {\n this.setCurrentView('year');\n event.preventDefault();\n }\n onDateSelect(event, dateMeta) {\n if (this.disabled || !dateMeta.selectable) {\n event.preventDefault();\n return;\n }\n if (this.isMultipleSelection() && this.isSelected(dateMeta)) {\n this.value = this.value.filter((date, i) => {\n return !this.isDateEquals(date, dateMeta);\n });\n if (this.value.length === 0) {\n this.value = null;\n }\n this.updateModel(this.value);\n }\n else {\n if (this.shouldSelectDate(dateMeta)) {\n this.selectDate(dateMeta);\n }\n }\n if (this.isSingleSelection() && this.hideOnDateTimeSelect) {\n setTimeout(() => {\n event.preventDefault();\n this.hideOverlay();\n if (this.mask) {\n this.disableModality();\n }\n this.cd.markForCheck();\n }, 150);\n }\n this.updateInputfield();\n event.preventDefault();\n }\n shouldSelectDate(dateMeta) {\n if (this.isMultipleSelection())\n return this.maxDateCount != null ? this.maxDateCount > (this.value ? this.value.length : 0) : true;\n else\n return true;\n }\n onMonthSelect(event, index) {\n if (this.view === 'month') {\n this.onDateSelect(event, { year: this.currentYear, month: index, day: 1, selectable: true });\n }\n else {\n this.currentMonth = index;\n this.createMonths(this.currentMonth, this.currentYear);\n this.setCurrentView('date');\n this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n }\n }\n onYearSelect(event, year) {\n if (this.view === 'year') {\n this.onDateSelect(event, { year: year, month: 0, day: 1, selectable: true });\n }\n else {\n this.currentYear = year;\n this.setCurrentView('month');\n this.onYearChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n }\n }\n updateInputfield() {\n let formattedValue = '';\n if (this.value) {\n if (this.isSingleSelection()) {\n formattedValue = this.formatDateTime(this.value);\n }\n else if (this.isMultipleSelection()) {\n for (let i = 0; i < this.value.length; i++) {\n let dateAsString = this.formatDateTime(this.value[i]);\n formattedValue += dateAsString;\n if (i !== this.value.length - 1) {\n formattedValue += this.multipleSeparator + ' ';\n }\n }\n }\n else if (this.isRangeSelection()) {\n if (this.value && this.value.length) {\n let startDate = this.value[0];\n let endDate = this.value[1];\n formattedValue = this.formatDateTime(startDate);\n if (endDate) {\n formattedValue += ' ' + this.rangeSeparator + ' ' + this.formatDateTime(endDate);\n }\n }\n }\n }\n this.inputFieldValue = formattedValue;\n this.updateFilledState();\n if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {\n this.inputfieldViewChild.nativeElement.value = this.inputFieldValue;\n }\n }\n formatDateTime(date) {\n let formattedValue = this.keepInvalid ? date : null;\n if (this.isValidDate(date)) {\n if (this.timeOnly) {\n formattedValue = this.formatTime(date);\n }\n else {\n formattedValue = this.formatDate(date, this.getDateFormat());\n if (this.showTime) {\n formattedValue += ' ' + this.formatTime(date);\n }\n }\n }\n return formattedValue;\n }\n setCurrentHourPM(hours) {\n if (this.hourFormat == '12') {\n this.pm = hours > 11;\n if (hours >= 12) {\n this.currentHour = hours == 12 ? 12 : hours - 12;\n }\n else {\n this.currentHour = hours == 0 ? 12 : hours;\n }\n }\n else {\n this.currentHour = hours;\n }\n }\n setCurrentView(currentView) {\n this.currentView = currentView;\n this.cd.detectChanges();\n this.alignOverlay();\n }\n selectDate(dateMeta) {\n let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n if (this.showTime) {\n if (this.hourFormat == '12') {\n if (this.currentHour === 12)\n date.setHours(this.pm ? 12 : 0);\n else\n date.setHours(this.pm ? this.currentHour + 12 : this.currentHour);\n }\n else {\n date.setHours(this.currentHour);\n }\n date.setMinutes(this.currentMinute);\n date.setSeconds(this.currentSecond);\n }\n if (this.minDate && this.minDate > date) {\n date = this.minDate;\n this.setCurrentHourPM(date.getHours());\n this.currentMinute = date.getMinutes();\n this.currentSecond = date.getSeconds();\n }\n if (this.maxDate && this.maxDate < date) {\n date = this.maxDate;\n this.setCurrentHourPM(date.getHours());\n this.currentMinute = date.getMinutes();\n this.currentSecond = date.getSeconds();\n }\n if (this.isSingleSelection()) {\n this.updateModel(date);\n }\n else if (this.isMultipleSelection()) {\n this.updateModel(this.value ? [...this.value, date] : [date]);\n }\n else if (this.isRangeSelection()) {\n if (this.value && this.value.length) {\n let startDate = this.value[0];\n let endDate = this.value[1];\n if (!endDate && date.getTime() >= startDate.getTime()) {\n endDate = date;\n }\n else {\n startDate = date;\n endDate = null;\n }\n this.updateModel([startDate, endDate]);\n }\n else {\n this.updateModel([date, null]);\n }\n }\n this.onSelect.emit(date);\n }\n updateModel(value) {\n this.value = value;\n if (this.dataType == 'date') {\n this.onModelChange(this.value);\n }\n else if (this.dataType == 'string') {\n if (this.isSingleSelection()) {\n this.onModelChange(this.formatDateTime(this.value));\n }\n else {\n let stringArrValue = null;\n if (this.value) {\n stringArrValue = this.value.map((date) => this.formatDateTime(date));\n }\n this.onModelChange(stringArrValue);\n }\n }\n }\n getFirstDayOfMonthIndex(month, year) {\n let day = new Date();\n day.setDate(1);\n day.setMonth(month);\n day.setFullYear(year);\n let dayIndex = day.getDay() + this.getSundayIndex();\n return dayIndex >= 7 ? dayIndex - 7 : dayIndex;\n }\n getDaysCountInMonth(month, year) {\n return 32 - this.daylightSavingAdjust(new Date(year, month, 32)).getDate();\n }\n getDaysCountInPrevMonth(month, year) {\n let prev = this.getPreviousMonthAndYear(month, year);\n return this.getDaysCountInMonth(prev.month, prev.year);\n }\n getPreviousMonthAndYear(month, year) {\n let m, y;\n if (month === 0) {\n m = 11;\n y = year - 1;\n }\n else {\n m = month - 1;\n y = year;\n }\n return { month: m, year: y };\n }\n getNextMonthAndYear(month, year) {\n let m, y;\n if (month === 11) {\n m = 0;\n y = year + 1;\n }\n else {\n m = month + 1;\n y = year;\n }\n return { month: m, year: y };\n }\n getSundayIndex() {\n let firstDayOfWeek = this.getFirstDateOfWeek();\n return firstDayOfWeek > 0 ? 7 - firstDayOfWeek : 0;\n }\n isSelected(dateMeta) {\n if (this.value) {\n if (this.isSingleSelection()) {\n return this.isDateEquals(this.value, dateMeta);\n }\n else if (this.isMultipleSelection()) {\n let selected = false;\n for (let date of this.value) {\n selected = this.isDateEquals(date, dateMeta);\n if (selected) {\n break;\n }\n }\n return selected;\n }\n else if (this.isRangeSelection()) {\n if (this.value[1])\n return this.isDateEquals(this.value[0], dateMeta) || this.isDateEquals(this.value[1], dateMeta) || this.isDateBetween(this.value[0], this.value[1], dateMeta);\n else\n return this.isDateEquals(this.value[0], dateMeta);\n }\n }\n else {\n return false;\n }\n }\n isComparable() {\n return this.value != null && typeof this.value !== 'string';\n }\n isMonthSelected(month) {\n if (this.isComparable() && !this.isMultipleSelection()) {\n const [start, end] = this.isRangeSelection() ? this.value : [this.value, this.value];\n const selected = new Date(this.currentYear, month, 1);\n return selected >= start && selected <= (end ?? start);\n }\n return false;\n }\n isMonthDisabled(month) {\n for (let day = 1; day < this.getDaysCountInMonth(month, this.currentYear) + 1; day++) {\n if (this.isSelectable(day, month, this.currentYear, false)) {\n return false;\n }\n }\n return true;\n }\n isYearSelected(year) {\n if (this.isComparable()) {\n let value = this.isRangeSelection() ? this.value[0] : this.value;\n return !this.isMultipleSelection() ? value.getFullYear() === year : false;\n }\n return false;\n }\n isDateEquals(value, dateMeta) {\n if (value && ObjectUtils.isDate(value))\n return value.getDate() === dateMeta.day && value.getMonth() === dateMeta.month && value.getFullYear() === dateMeta.year;\n else\n return false;\n }\n isDateBetween(start, end, dateMeta) {\n let between = false;\n if (start && end) {\n let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n return start.getTime() <= date.getTime() && end.getTime() >= date.getTime();\n }\n return between;\n }\n isSingleSelection() {\n return this.selectionMode === 'single';\n }\n isRangeSelection() {\n return this.selectionMode === 'range';\n }\n isMultipleSelection() {\n return this.selectionMode === 'multiple';\n }\n isToday(today, day, month, year) {\n return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;\n }\n isSelectable(day, month, year, otherMonth) {\n let validMin = true;\n let validMax = true;\n let validDate = true;\n let validDay = true;\n if (otherMonth && !this.selectOtherMonths) {\n return false;\n }\n if (this.minDate) {\n if (this.minDate.getFullYear() > year) {\n validMin = false;\n }\n else if (this.minDate.getFullYear() === year) {\n if (this.minDate.getMonth() > month) {\n validMin = false;\n }\n else if (this.minDate.getMonth() === month) {\n if (this.minDate.getDate() > day) {\n validMin = false;\n }\n }\n }\n }\n if (this.maxDate) {\n if (this.maxDate.getFullYear() < year) {\n validMax = false;\n }\n else if (this.maxDate.getFullYear() === year) {\n if (this.maxDate.getMonth() < month) {\n validMax = false;\n }\n else if (this.maxDate.getMonth() === month) {\n if (this.maxDate.getDate() < day) {\n validMax = false;\n }\n }\n }\n }\n if (this.disabledDates) {\n validDate = !this.isDateDisabled(day, month, year);\n }\n if (this.disabledDays) {\n validDay = !this.isDayDisabled(day, month, year);\n }\n return validMin && validMax && validDate && validDay;\n }\n isDateDisabled(day, month, year) {\n if (this.disabledDates) {\n for (let disabledDate of this.disabledDates) {\n if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {\n return true;\n }\n }\n }\n return false;\n }\n isDayDisabled(day, month, year) {\n if (this.disabledDays) {\n let weekday = new Date(year, month, day);\n let weekdayNumber = weekday.getDay();\n return this.disabledDays.indexOf(weekdayNumber) !== -1;\n }\n return false;\n }\n onInputFocus(event) {\n this.focus = true;\n if (this.showOnFocus) {\n this.showOverlay();\n }\n this.onFocus.emit(event);\n }\n onInputClick() {\n if (this.showOnFocus && !this.overlayVisible) {\n this.showOverlay();\n }\n }\n onInputBlur(event) {\n this.focus = false;\n this.onBlur.emit(event);\n if (!this.keepInvalid) {\n this.updateInputfield();\n }\n this.onModelTouched();\n }\n onButtonClick(event, inputfield) {\n if (!this.overlayVisible) {\n inputfield.focus();\n this.showOverlay();\n }\n else {\n this.hideOverlay();\n }\n }\n clear() {\n this.inputFieldValue = null;\n this.value = null;\n this.onModelChange(this.value);\n this.onClear.emit();\n }\n onOverlayClick(event) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n }\n getMonthName(index) {\n return this.config.getTranslation('monthNames')[index];\n }\n getYear(month) {\n return this.currentView === 'month' ? this.currentYear : month.year;\n }\n switchViewButtonDisabled() {\n return this.numberOfMonths > 1 || this.disabled;\n }\n onPrevButtonClick(event) {\n this.navigationState = { backward: true, button: true };\n this.navBackward(event);\n }\n onNextButtonClick(event) {\n this.navigationState = { backward: false, button: true };\n this.navForward(event);\n }\n onContainerButtonKeydown(event) {\n switch (event.which) {\n //tab\n case 9:\n if (!this.inline) {\n this.trapFocus(event);\n }\n break;\n //escape\n case 27:\n this.overlayVisible = false;\n event.preventDefault();\n break;\n default:\n //Noop\n break;\n }\n }\n onInputKeydown(event) {\n this.isKeydown = true;\n if (event.keyCode === 40 && this.contentViewChild) {\n this.trapFocus(event);\n }\n else if (event.keyCode === 27) {\n if (this.overlayVisible) {\n this.overlayVisible = false;\n event.preventDefault();\n }\n }\n else if (event.keyCode === 13) {\n if (this.overlayVisible) {\n this.overlayVisible = false;\n event.preventDefault();\n }\n }\n else if (event.keyCode === 9 && this.contentViewChild) {\n DomHandler.getFocusableElements(this.contentViewChild.nativeElement).forEach((el) => (el.tabIndex = '-1'));\n if (this.overlayVisible) {\n this.overlayVisible = false;\n }\n }\n }\n onDateCellKeydown(event, date, groupIndex) {\n const cellContent = event.currentTarget;\n const cell = cellContent.parentElement;\n switch (event.which) {\n //down arrow\n case 40: {\n cellContent.tabIndex = '-1';\n let cellIndex = DomHandler.index(cell);\n let nextRow = cell.parentElement.nextElementSibling;\n if (nextRow) {\n let focusCell = nextRow.children[cellIndex].children[0];\n if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n else {\n nextRow.children[cellIndex].children[0].tabIndex = '0';\n nextRow.children[cellIndex].children[0].focus();\n }\n }\n else {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n event.preventDefault();\n break;\n }\n //up arrow\n case 38: {\n cellContent.tabIndex = '-1';\n let cellIndex = DomHandler.index(cell);\n let prevRow = cell.parentElement.previousElementSibling;\n if (prevRow) {\n let focusCell = prevRow.children[cellIndex].children[0];\n if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n else {\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n else {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n event.preventDefault();\n break;\n }\n //left arrow\n case 37: {\n cellContent.tabIndex = '-1';\n let prevCell = cell.previousElementSibling;\n if (prevCell) {\n let focusCell = prevCell.children[0];\n if (DomHandler.hasClass(focusCell, 'p-disabled') || DomHandler.hasClass(focusCell.parentElement, 'p-datepicker-weeknumber')) {\n this.navigateToMonth(true, groupIndex);\n }\n else {\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n else {\n this.navigateToMonth(true, groupIndex);\n }\n event.preventDefault();\n break;\n }\n //right arrow\n case 39: {\n cellContent.tabIndex = '-1';\n let nextCell = cell.nextElementSibling;\n if (nextCell) {\n let focusCell = nextCell.children[0];\n if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n this.navigateToMonth(false, groupIndex);\n }\n else {\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n else {\n this.navigateToMonth(false, groupIndex);\n }\n event.preventDefault();\n break;\n }\n //enter\n //space\n case 13:\n case 32: {\n this.onDateSelect(event, date);\n event.preventDefault();\n break;\n }\n //escape\n case 27: {\n this.overlayVisible = false;\n event.preventDefault();\n break;\n }\n //tab\n case 9: {\n if (!this.inline) {\n this.trapFocus(event);\n }\n break;\n }\n default:\n //no op\n break;\n }\n }\n onMonthCellKeydown(event, index) {\n const cell = event.currentTarget;\n switch (event.which) {\n //arrows\n case 38:\n case 40: {\n cell.tabIndex = '-1';\n var cells = cell.parentElement.children;\n var cellIndex = DomHandler.index(cell);\n let nextCell = cells[event.which === 40 ? cellIndex + 3 : cellIndex - 3];\n if (nextCell) {\n nextCell.tabIndex = '0';\n nextCell.focus();\n }\n event.preventDefault();\n break;\n }\n //left arrow\n case 37: {\n cell.tabIndex = '-1';\n let prevCell = cell.previousElementSibling;\n if (prevCell) {\n prevCell.tabIndex = '0';\n prevCell.focus();\n }\n else {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n event.preventDefault();\n break;\n }\n //right arrow\n case 39: {\n cell.tabIndex = '-1';\n let nextCell = cell.nextElementSibling;\n if (nextCell) {\n nextCell.tabIndex = '0';\n nextCell.focus();\n }\n else {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n event.preventDefault();\n break;\n }\n //enter\n case 13: {\n this.onMonthSelect(event, index);\n event.preventDefault();\n break;\n }\n //enter\n //space\n case 13:\n case 32: {\n this.overlayVisible = false;\n event.preventDefault();\n break;\n }\n //escape\n case 27: {\n this.overlayVisible = false;\n event.preventDefault();\n break;\n }\n //tab\n case 9: {\n if (!this.inline) {\n this.trapFocus(event);\n }\n break;\n }\n default:\n //no op\n break;\n }\n }\n onYearCellKeydown(event, index) {\n const cell = event.currentTarget;\n switch (event.which) {\n //arrows\n case 38:\n case 40: {\n cell.tabIndex = '-1';\n var cells = cell.parentElement.children;\n var cellIndex = DomHandler.index(cell);\n let nextCell = cells[event.which === 40 ? cellIndex + 2 : cellIndex - 2];\n if (nextCell) {\n nextCell.tabIndex = '0';\n nextCell.focus();\n }\n event.preventDefault();\n break;\n }\n //left arrow\n case 37: {\n cell.tabIndex = '-1';\n let prevCell = cell.previousElementSibling;\n if (prevCell) {\n prevCell.tabIndex = '0';\n prevCell.focus();\n }\n else {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n event.preventDefault();\n break;\n }\n //right arrow\n case 39: {\n cell.tabIndex = '-1';\n let nextCell = cell.nextElementSibling;\n if (nextCell) {\n nextCell.tabIndex = '0';\n nextCell.focus();\n }\n else {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n event.preventDefault();\n break;\n }\n //enter\n //space\n case 13:\n case 32: {\n this.onYearSelect(event, index);\n event.preventDefault();\n break;\n }\n //escape\n case 27: {\n this.overlayVisible = false;\n event.preventDefault();\n break;\n }\n //tab\n case 9: {\n this.trapFocus(event);\n break;\n }\n default:\n //no op\n break;\n }\n }\n navigateToMonth(prev, groupIndex) {\n if (prev) {\n if (this.numberOfMonths === 1 || groupIndex === 0) {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n else {\n let prevMonthContainer = this.contentViewChild.nativeElement.children[groupIndex - 1];\n let cells = DomHandler.find(prevMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n let focusCell = cells[cells.length - 1];\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n else {\n if (this.numberOfMonths === 1 || groupIndex === this.numberOfMonths - 1) {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n else {\n let nextMonthContainer = this.contentViewChild.nativeElement.children[groupIndex + 1];\n let focusCell = DomHandler.findSingle(nextMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n }\n updateFocus() {\n let cell;\n if (this.navigationState) {\n if (this.navigationState.button) {\n this.initFocusableCell();\n if (this.navigationState.backward)\n DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-prev').focus();\n else\n DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-next').focus();\n }\n else {\n if (this.navigationState.backward) {\n let cells;\n if (this.currentView === 'month') {\n cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');\n }\n else if (this.currentView === 'year') {\n cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-yearpicker .p-yearpicker-year:not(.p-disabled)');\n }\n else {\n cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n }\n if (cells && cells.length > 0) {\n cell = cells[cells.length - 1];\n }\n }\n else {\n if (this.currentView === 'month') {\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');\n }\n else if (this.currentView === 'year') {\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-yearpicker .p-yearpicker-year:not(.p-disabled)');\n }\n else {\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n }\n }\n if (cell) {\n cell.tabIndex = '0';\n cell.focus();\n }\n }\n this.navigationState = null;\n }\n else {\n this.initFocusableCell();\n }\n }\n initFocusableCell() {\n const contentEl = this.contentViewChild?.nativeElement;\n let cell;\n if (this.currentView === 'month') {\n let cells = DomHandler.find(contentEl, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');\n let selectedCell = DomHandler.findSingle(contentEl, '.p-monthpicker .p-monthpicker-month.p-highlight');\n cells.forEach((cell) => (cell.tabIndex = -1));\n cell = selectedCell || cells[0];\n if (cells.length === 0) {\n let disabledCells = DomHandler.find(contentEl, '.p-monthpicker .p-monthpicker-month.p-disabled[tabindex = \"0\"]');\n disabledCells.forEach((cell) => (cell.tabIndex = -1));\n }\n }\n else if (this.currentView === 'year') {\n let cells = DomHandler.find(contentEl, '.p-yearpicker .p-yearpicker-year:not(.p-disabled)');\n let selectedCell = DomHandler.findSingle(contentEl, '.p-yearpicker .p-yearpicker-year.p-highlight');\n cells.forEach((cell) => (cell.tabIndex = -1));\n cell = selectedCell || cells[0];\n if (cells.length === 0) {\n let disabledCells = DomHandler.find(contentEl, '.p-yearpicker .p-yearpicker-year.p-disabled[tabindex = \"0\"]');\n disabledCells.forEach((cell) => (cell.tabIndex = -1));\n }\n }\n else {\n cell = DomHandler.findSingle(contentEl, 'span.p-highlight');\n if (!cell) {\n let todayCell = DomHandler.findSingle(contentEl, 'td.p-datepicker-today span:not(.p-disabled):not(.p-ink)');\n if (todayCell)\n cell = todayCell;\n else\n cell = DomHandler.findSingle(contentEl, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n }\n }\n if (cell) {\n cell.tabIndex = '0';\n if (!this.preventFocus && (!this.navigationState || !this.navigationState.button)) {\n setTimeout(() => {\n if (!this.disabled) {\n cell.focus();\n }\n }, 1);\n }\n this.preventFocus = false;\n }\n }\n trapFocus(event) {\n let focusableElements = DomHandler.getFocusableElements(this.contentViewChild.nativeElement);\n if (focusableElements && focusableElements.length > 0) {\n if (!focusableElements[0].ownerDocument.activeElement) {\n focusableElements[0].focus();\n }\n else {\n let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n if (event.shiftKey) {\n if (focusedIndex == -1 || focusedIndex === 0) {\n if (this.focusTrap) {\n focusableElements[focusableElements.length - 1].focus();\n }\n else {\n if (focusedIndex === -1)\n return this.hideOverlay();\n else if (focusedIndex === 0)\n return;\n }\n }\n else {\n focusableElements[focusedIndex - 1].focus();\n }\n }\n else {\n if (focusedIndex == -1 || focusedIndex === focusableElements.length - 1) {\n if (!this.focusTrap && focusedIndex != -1)\n return this.hideOverlay();\n else\n focusableElements[0].focus();\n }\n else {\n focusableElements[focusedIndex + 1].focus();\n }\n }\n }\n }\n event.preventDefault();\n }\n onMonthDropdownChange(m) {\n this.currentMonth = parseInt(m);\n this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n onYearDropdownChange(y) {\n this.currentYear = parseInt(y);\n this.onYearChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n validateTime(hour, minute, second, pm) {\n let value = this.value;\n const convertedHour = this.convertTo24Hour(hour, pm);\n if (this.isRangeSelection()) {\n value = this.value[1] || this.value[0];\n }\n if (this.isMultipleSelection()) {\n value = this.value[this.value.length - 1];\n }\n const valueDateString = value ? value.toDateString() : null;\n if (this.minDate && valueDateString && this.minDate.toDateString() === valueDateString) {\n if (this.minDate.getHours() > convertedHour) {\n return false;\n }\n if (this.minDate.getHours() === convertedHour) {\n if (this.minDate.getMinutes() > minute) {\n return false;\n }\n if (this.minDate.getMinutes() === minute) {\n if (this.minDate.getSeconds() > second) {\n return false;\n }\n }\n }\n }\n if (this.maxDate && valueDateString && this.maxDate.toDateString() === valueDateString) {\n if (this.maxDate.getHours() < convertedHour) {\n return false;\n }\n if (this.maxDate.getHours() === convertedHour) {\n if (this.maxDate.getMinutes() < minute) {\n return false;\n }\n if (this.maxDate.getMinutes() === minute) {\n if (this.maxDate.getSeconds() < second) {\n return false;\n }\n }\n }\n }\n return true;\n }\n incrementHour(event) {\n const prevHour = this.currentHour;\n let newHour = this.currentHour + this.stepHour;\n let newPM = this.pm;\n if (this.hourFormat == '24')\n newHour = newHour >= 24 ? newHour - 24 : newHour;\n else if (this.hourFormat == '12') {\n // Before the AM/PM break, now after\n if (prevHour < 12 && newHour > 11) {\n newPM = !this.pm;\n }\n newHour = newHour >= 13 ? newHour - 12 : newHour;\n }\n if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {\n this.currentHour = newHour;\n this.pm = newPM;\n }\n event.preventDefault();\n }\n onTimePickerElementMouseDown(event, type, direction) {\n if (!this.disabled) {\n this.repeat(event, null, type, direction);\n event.preventDefault();\n }\n }\n onTimePickerElementMouseUp(event) {\n if (!this.disabled) {\n this.clearTimePickerTimer();\n this.updateTime();\n }\n }\n onTimePickerElementMouseLeave() {\n if (!this.disabled && this.timePickerTimer) {\n this.clearTimePickerTimer();\n this.updateTime();\n }\n }\n repeat(event, interval, type, direction) {\n let i = interval || 500;\n this.clearTimePickerTimer();\n this.timePickerTimer = setTimeout(() => {\n this.repeat(event, 100, type, direction);\n this.cd.markForCheck();\n }, i);\n switch (type) {\n case 0:\n if (direction === 1)\n this.incrementHour(event);\n else\n this.decrementHour(event);\n break;\n case 1:\n if (direction === 1)\n this.incrementMinute(event);\n else\n this.decrementMinute(event);\n break;\n case 2:\n if (direction === 1)\n this.incrementSecond(event);\n else\n this.decrementSecond(event);\n break;\n }\n this.updateInputfield();\n }\n clearTimePickerTimer() {\n if (this.timePickerTimer) {\n clearTimeout(this.timePickerTimer);\n this.timePickerTimer = null;\n }\n }\n decrementHour(event) {\n let newHour = this.currentHour - this.stepHour;\n let newPM = this.pm;\n if (this.hourFormat == '24')\n newHour = newHour < 0 ? 24 + newHour : newHour;\n else if (this.hourFormat == '12') {\n // If we were at noon/midnight, then switch\n if (this.currentHour === 12) {\n newPM = !this.pm;\n }\n newHour = newHour <= 0 ? 12 + newHour : newHour;\n }\n if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {\n this.currentHour = newHour;\n this.pm = newPM;\n }\n event.preventDefault();\n }\n incrementMinute(event) {\n let newMinute = this.currentMinute + this.stepMinute;\n newMinute = newMinute > 59 ? newMinute - 60 : newMinute;\n if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {\n this.currentMinute = newMinute;\n }\n event.preventDefault();\n }\n decrementMinute(event) {\n let newMinute = this.currentMinute - this.stepMinute;\n newMinute = newMinute < 0 ? 60 + newMinute : newMinute;\n if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {\n this.currentMinute = newMinute;\n }\n event.preventDefault();\n }\n incrementSecond(event) {\n let newSecond = this.currentSecond + this.stepSecond;\n newSecond = newSecond > 59 ? newSecond - 60 : newSecond;\n if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {\n this.currentSecond = newSecond;\n }\n event.preventDefault();\n }\n decrementSecond(event) {\n let newSecond = this.currentSecond - this.stepSecond;\n newSecond = newSecond < 0 ? 60 + newSecond : newSecond;\n if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {\n this.currentSecond = newSecond;\n }\n event.preventDefault();\n }\n updateTime() {\n let value = this.value;\n if (this.isRangeSelection()) {\n value = this.value[1] || this.value[0];\n }\n if (this.isMultipleSelection()) {\n value = this.value[this.value.length - 1];\n }\n value = value ? new Date(value.getTime()) : new Date();\n if (this.hourFormat == '12') {\n if (this.currentHour === 12)\n value.setHours(this.pm ? 12 : 0);\n else\n value.setHours(this.pm ? this.currentHour + 12 : this.currentHour);\n }\n else {\n value.setHours(this.currentHour);\n }\n value.setMinutes(this.currentMinute);\n value.setSeconds(this.currentSecond);\n if (this.isRangeSelection()) {\n if (this.value[1])\n value = [this.value[0], value];\n else\n value = [value, null];\n }\n if (this.isMultipleSelection()) {\n value = [...this.value.slice(0, -1), value];\n }\n this.updateModel(value);\n this.onSelect.emit(value);\n this.updateInputfield();\n }\n toggleAMPM(event) {\n const newPM = !this.pm;\n if (this.validateTime(this.currentHour, this.currentMinute, this.currentSecond, newPM)) {\n this.pm = newPM;\n this.updateTime();\n }\n event.preventDefault();\n }\n onUserInput(event) {\n // IE 11 Workaround for input placeholder : https://github.com/primefaces/primeng/issues/2026\n if (!this.isKeydown) {\n return;\n }\n this.isKeydown = false;\n let val = event.target.value;\n try {\n let value = this.parseValueFromString(val);\n if (this.isValidSelection(value)) {\n this.updateModel(value);\n this.updateUI();\n }\n }\n catch (err) {\n //invalid date\n let value = this.keepInvalid ? val : null;\n this.updateModel(value);\n }\n this.filled = val != null && val.length;\n this.onInput.emit(event);\n }\n isValidSelection(value) {\n let isValid = true;\n if (this.isSingleSelection()) {\n if (!this.isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) {\n isValid = false;\n }\n }\n else if (value.every((v) => this.isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false))) {\n if (this.isRangeSelection()) {\n isValid = value.length > 1 && value[1] > value[0] ? true : false;\n }\n }\n return isValid;\n }\n parseValueFromString(text) {\n if (!text || text.trim().length === 0) {\n return null;\n }\n let value;\n if (this.isSingleSelection()) {\n value = this.parseDateTime(text);\n }\n else if (this.isMultipleSelection()) {\n let tokens = text.split(this.multipleSeparator);\n value = [];\n for (let token of tokens) {\n value.push(this.parseDateTime(token.trim()));\n }\n }\n else if (this.isRangeSelection()) {\n let tokens = text.split(' ' + this.rangeSeparator + ' ');\n value = [];\n for (let i = 0; i < tokens.length; i++) {\n value[i] = this.parseDateTime(tokens[i].trim());\n }\n }\n return value;\n }\n parseDateTime(text) {\n let date;\n let parts = text.split(' ');\n if (this.timeOnly) {\n date = new Date();\n this.populateTime(date, parts[0], parts[1]);\n }\n else {\n const dateFormat = this.getDateFormat();\n if (this.showTime) {\n let ampm = this.hourFormat == '12' ? parts.pop() : null;\n let timeString = parts.pop();\n date = this.parseDate(parts.join(' '), dateFormat);\n this.populateTime(date, timeString, ampm);\n }\n else {\n date = this.parseDate(text, dateFormat);\n }\n }\n return date;\n }\n populateTime(value, timeString, ampm) {\n if (this.hourFormat == '12' && !ampm) {\n throw 'Invalid Time';\n }\n this.pm = ampm === 'PM' || ampm === 'pm';\n let time = this.parseTime(timeString);\n value.setHours(time.hour);\n value.setMinutes(time.minute);\n value.setSeconds(time.second);\n }\n isValidDate(date) {\n return ObjectUtils.isDate(date) && ObjectUtils.isNotEmpty(date);\n }\n updateUI() {\n let propValue = this.value;\n if (Array.isArray(propValue)) {\n propValue = propValue[0];\n }\n let val = this.defaultDate && this.isValidDate(this.defaultDate) && !this.value ? this.defaultDate : propValue && this.isValidDate(propValue) ? propValue : new Date();\n this.currentMonth = val.getMonth();\n this.currentYear = val.getFullYear();\n this.createMonths(this.currentMonth, this.currentYear);\n if (this.showTime || this.timeOnly) {\n this.setCurrentHourPM(val.getHours());\n this.currentMinute = val.getMinutes();\n this.currentSecond = val.getSeconds();\n }\n }\n showOverlay() {\n if (!this.overlayVisible) {\n this.updateUI();\n if (!this.touchUI) {\n this.preventFocus = true;\n }\n this.overlayVisible = true;\n }\n }\n hideOverlay() {\n this.overlayVisible = false;\n this.clearTimePickerTimer();\n if (this.touchUI) {\n this.disableModality();\n }\n this.cd.markForCheck();\n }\n toggle() {\n if (!this.inline) {\n if (!this.overlayVisible) {\n this.showOverlay();\n this.inputfieldViewChild.nativeElement.focus();\n }\n else {\n this.hideOverlay();\n }\n }\n }\n onOverlayAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n case 'visibleTouchUI':\n if (!this.inline) {\n this.overlay = event.element;\n this.overlay.setAttribute(this.attributeSelector, '');\n this.appendOverlay();\n this.updateFocus();\n if (this.autoZIndex) {\n if (this.touchUI)\n ZIndexUtils.set('modal', this.overlay, this.baseZIndex || this.config.zIndex.modal);\n else\n ZIndexUtils.set('overlay', this.overlay, this.baseZIndex || this.config.zIndex.overlay);\n }\n this.alignOverlay();\n this.onShow.emit(event);\n }\n break;\n case 'void':\n this.onOverlayHide();\n this.onClose.emit(event);\n break;\n }\n }\n onOverlayAnimationDone(event) {\n switch (event.toState) {\n case 'visible':\n case 'visibleTouchUI':\n if (!this.inline) {\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n }\n break;\n case 'void':\n if (this.autoZIndex) {\n ZIndexUtils.clear(event.element);\n }\n break;\n }\n }\n appendOverlay() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n this.document.body.appendChild(this.overlay);\n else\n DomHandler.appendChild(this.overlay, this.appendTo);\n }\n }\n restoreOverlayAppend() {\n if (this.overlay && this.appendTo) {\n this.el.nativeElement.appendChild(this.overlay);\n }\n }\n alignOverlay() {\n if (this.touchUI) {\n this.enableModality(this.overlay);\n }\n else if (this.overlay) {\n if (this.appendTo) {\n if (this.view === 'date') {\n this.overlay.style.width = DomHandler.getOuterWidth(this.overlay) + 'px';\n this.overlay.style.minWidth = DomHandler.getOuterWidth(this.inputfieldViewChild.nativeElement) + 'px';\n }\n else {\n this.overlay.style.width = DomHandler.getOuterWidth(this.inputfieldViewChild.nativeElement) + 'px';\n }\n DomHandler.absolutePosition(this.overlay, this.inputfieldViewChild.nativeElement);\n }\n else {\n DomHandler.relativePosition(this.overlay, this.inputfieldViewChild.nativeElement);\n }\n }\n }\n enableModality(element) {\n if (!this.mask && this.touchUI) {\n this.mask = this.renderer.createElement('div');\n this.renderer.setStyle(this.mask, 'zIndex', String(parseInt(element.style.zIndex) - 1));\n let maskStyleClass = 'p-component-overlay p-datepicker-mask p-datepicker-mask-scrollblocker p-component-overlay p-component-overlay-enter';\n DomHandler.addMultipleClasses(this.mask, maskStyleClass);\n this.maskClickListener = this.renderer.listen(this.mask, 'click', (event) => {\n this.disableModality();\n });\n this.renderer.appendChild(this.document.body, this.mask);\n DomHandler.addClass(this.document.body, 'p-overflow-hidden');\n }\n }\n disableModality() {\n if (this.mask) {\n DomHandler.addClass(this.mask, 'p-component-overlay-leave');\n if (!this.animationEndListener) {\n this.animationEndListener = this.renderer.listen(this.mask, 'animationend', this.destroyMask.bind(this));\n }\n }\n }\n destroyMask() {\n if (!this.mask) {\n return;\n }\n this.renderer.removeChild(this.document.body, this.mask);\n let bodyChildren = this.document.body.children;\n let hasBlockerMasks;\n for (let i = 0; i < bodyChildren.length; i++) {\n let bodyChild = bodyChildren[i];\n if (DomHandler.hasClass(bodyChild, 'p-datepicker-mask-scrollblocker')) {\n hasBlockerMasks = true;\n break;\n }\n }\n if (!hasBlockerMasks) {\n DomHandler.removeClass(this.document.body, 'p-overflow-hidden');\n }\n this.unbindAnimationEndListener();\n this.unbindMaskClickListener();\n this.mask = null;\n }\n unbindMaskClickListener() {\n if (this.maskClickListener) {\n this.maskClickListener();\n this.maskClickListener = null;\n }\n }\n unbindAnimationEndListener() {\n if (this.animationEndListener && this.mask) {\n this.animationEndListener();\n this.animationEndListener = null;\n }\n }\n writeValue(value) {\n this.value = value;\n if (this.value && typeof this.value === 'string') {\n try {\n this.value = this.parseValueFromString(this.value);\n }\n catch {\n if (this.keepInvalid) {\n this.value = value;\n }\n }\n }\n this.updateInputfield();\n this.updateUI();\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n getDateFormat() {\n return this.dateFormat || this.getTranslation('dateFormat');\n }\n getFirstDateOfWeek() {\n return this._firstDayOfWeek || this.getTranslation(TranslationKeys.FIRST_DAY_OF_WEEK);\n }\n // Ported from jquery-ui datepicker formatDate\n formatDate(date, format) {\n if (!date) {\n return '';\n }\n let iFormat;\n const lookAhead = (match) => {\n const matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n if (matches) {\n iFormat++;\n }\n return matches;\n }, formatNumber = (match, value, len) => {\n let num = '' + value;\n if (lookAhead(match)) {\n while (num.length < len) {\n num = '0' + num;\n }\n }\n return num;\n }, formatName = (match, value, shortNames, longNames) => {\n return lookAhead(match) ? longNames[value] : shortNames[value];\n };\n let output = '';\n let literal = false;\n if (date) {\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n }\n else {\n output += format.charAt(iFormat);\n }\n }\n else {\n switch (format.charAt(iFormat)) {\n case 'd':\n output += formatNumber('d', date.getDate(), 2);\n break;\n case 'D':\n output += formatName('D', date.getDay(), this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));\n break;\n case 'o':\n output += formatNumber('o', Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n break;\n case 'm':\n output += formatNumber('m', date.getMonth() + 1, 2);\n break;\n case 'M':\n output += formatName('M', date.getMonth(), this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));\n break;\n case 'y':\n output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + (date.getFullYear() % 100);\n break;\n case '@':\n output += date.getTime();\n break;\n case '!':\n output += date.getTime() * 10000 + this.ticksTo1970;\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n output += \"'\";\n }\n else {\n literal = true;\n }\n break;\n default:\n output += format.charAt(iFormat);\n }\n }\n }\n }\n return output;\n }\n formatTime(date) {\n if (!date) {\n return '';\n }\n let output = '';\n let hours = date.getHours();\n let minutes = date.getMinutes();\n let seconds = date.getSeconds();\n if (this.hourFormat == '12' && hours > 11 && hours != 12) {\n hours -= 12;\n }\n if (this.hourFormat == '12') {\n output += hours === 0 ? 12 : hours < 10 ? '0' + hours : hours;\n }\n else {\n output += hours < 10 ? '0' + hours : hours;\n }\n output += ':';\n output += minutes < 10 ? '0' + minutes : minutes;\n if (this.showSeconds) {\n output += ':';\n output += seconds < 10 ? '0' + seconds : seconds;\n }\n if (this.hourFormat == '12') {\n output += date.getHours() > 11 ? ' PM' : ' AM';\n }\n return output;\n }\n parseTime(value) {\n let tokens = value.split(':');\n let validTokenLength = this.showSeconds ? 3 : 2;\n if (tokens.length !== validTokenLength) {\n throw 'Invalid time';\n }\n let h = parseInt(tokens[0]);\n let m = parseInt(tokens[1]);\n let s = this.showSeconds ? parseInt(tokens[2]) : null;\n if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || (this.hourFormat == '12' && h > 12) || (this.showSeconds && (isNaN(s) || s > 59))) {\n throw 'Invalid time';\n }\n else {\n if (this.hourFormat == '12') {\n if (h !== 12 && this.pm) {\n h += 12;\n }\n else if (!this.pm && h === 12) {\n h -= 12;\n }\n }\n return { hour: h, minute: m, second: s };\n }\n }\n // Ported from jquery-ui datepicker parseDate\n parseDate(value, format) {\n if (format == null || value == null) {\n throw 'Invalid arguments';\n }\n value = typeof value === 'object' ? value.toString() : value + '';\n if (value === '') {\n return null;\n }\n let iFormat, dim, extra, iValue = 0, shortYearCutoff = typeof this.shortYearCutoff !== 'string' ? this.shortYearCutoff : (new Date().getFullYear() % 100) + parseInt(this.shortYearCutoff, 10), year = -1, month = -1, day = -1, doy = -1, literal = false, date, lookAhead = (match) => {\n let matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n if (matches) {\n iFormat++;\n }\n return matches;\n }, getNumber = (match) => {\n let isDoubled = lookAhead(match), size = match === '@' ? 14 : match === '!' ? 20 : match === 'y' && isDoubled ? 4 : match === 'o' ? 3 : 2, minSize = match === 'y' ? size : 1, digits = new RegExp('^\\\\d{' + minSize + ',' + size + '}'), num = value.substring(iValue).match(digits);\n if (!num) {\n throw 'Missing number at position ' + iValue;\n }\n iValue += num[0].length;\n return parseInt(num[0], 10);\n }, getName = (match, shortNames, longNames) => {\n let index = -1;\n let arr = lookAhead(match) ? longNames : shortNames;\n let names = [];\n for (let i = 0; i < arr.length; i++) {\n names.push([i, arr[i]]);\n }\n names.sort((a, b) => {\n return -(a[1].length - b[1].length);\n });\n for (let i = 0; i < names.length; i++) {\n let name = names[i][1];\n if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n index = names[i][0];\n iValue += name.length;\n break;\n }\n }\n if (index !== -1) {\n return index + 1;\n }\n else {\n throw 'Unknown name at position ' + iValue;\n }\n }, checkLiteral = () => {\n if (value.charAt(iValue) !== format.charAt(iFormat)) {\n throw 'Unexpected literal at position ' + iValue;\n }\n iValue++;\n };\n if (this.view === 'month') {\n day = 1;\n }\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n }\n else {\n checkLiteral();\n }\n }\n else {\n switch (format.charAt(iFormat)) {\n case 'd':\n day = getNumber('d');\n break;\n case 'D':\n getName('D', this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));\n break;\n case 'o':\n doy = getNumber('o');\n break;\n case 'm':\n month = getNumber('m');\n break;\n case 'M':\n month = getName('M', this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));\n break;\n case 'y':\n year = getNumber('y');\n break;\n case '@':\n date = new Date(getNumber('@'));\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case '!':\n date = new Date((getNumber('!') - this.ticksTo1970) / 10000);\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n checkLiteral();\n }\n else {\n literal = true;\n }\n break;\n default:\n checkLiteral();\n }\n }\n }\n if (iValue < value.length) {\n extra = value.substr(iValue);\n if (!/^\\s+/.test(extra)) {\n throw 'Extra/unparsed characters found in date: ' + extra;\n }\n }\n if (year === -1) {\n year = new Date().getFullYear();\n }\n else if (year < 100) {\n year += new Date().getFullYear() - (new Date().getFullYear() % 100) + (year <= shortYearCutoff ? 0 : -100);\n }\n if (doy > -1) {\n month = 1;\n day = doy;\n do {\n dim = this.getDaysCountInMonth(year, month - 1);\n if (day <= dim) {\n break;\n }\n month++;\n day -= dim;\n } while (true);\n }\n if (this.view === 'year') {\n month = month === -1 ? 1 : month;\n day = day === -1 ? 1 : day;\n }\n date = this.daylightSavingAdjust(new Date(year, month - 1, day));\n if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n throw 'Invalid date'; // E.g. 31/02/00\n }\n return date;\n }\n daylightSavingAdjust(date) {\n if (!date) {\n return null;\n }\n date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n return date;\n }\n updateFilledState() {\n this.filled = this.inputFieldValue && this.inputFieldValue != '';\n }\n onTodayButtonClick(event) {\n let date = new Date();\n let dateMeta = { day: date.getDate(), month: date.getMonth(), year: date.getFullYear(), otherMonth: date.getMonth() !== this.currentMonth || date.getFullYear() !== this.currentYear, today: true, selectable: true };\n this.onDateSelect(event, dateMeta);\n this.onTodayClick.emit(event);\n }\n onClearButtonClick(event) {\n this.updateModel(null);\n this.updateInputfield();\n this.hideOverlay();\n this.onClearClick.emit(event);\n }\n createResponsiveStyle() {\n if (this.numberOfMonths > 1 && this.responsiveOptions) {\n if (!this.responsiveStyleElement) {\n this.responsiveStyleElement = this.renderer.createElement('style');\n this.responsiveStyleElement.type = 'text/css';\n this.renderer.appendChild(this.document.body, this.responsiveStyleElement);\n }\n let innerHTML = '';\n if (this.responsiveOptions) {\n let responsiveOptions = [...this.responsiveOptions].filter((o) => !!(o.breakpoint && o.numMonths)).sort((o1, o2) => -1 * o1.breakpoint.localeCompare(o2.breakpoint, undefined, { numeric: true }));\n for (let i = 0; i < responsiveOptions.length; i++) {\n let { breakpoint, numMonths } = responsiveOptions[i];\n let styles = `\n .p-datepicker[${this.attributeSelector}] .p-datepicker-group:nth-child(${numMonths}) .p-datepicker-next {\n display: inline-flex !important;\n }\n `;\n for (let j = numMonths; j < this.numberOfMonths; j++) {\n styles += `\n .p-datepicker[${this.attributeSelector}] .p-datepicker-group:nth-child(${j + 1}) {\n display: none !important;\n }\n `;\n }\n innerHTML += `\n @media screen and (max-width: ${breakpoint}) {\n ${styles}\n }\n `;\n }\n }\n this.responsiveStyleElement.innerHTML = innerHTML;\n }\n }\n destroyResponsiveStyleElement() {\n if (this.responsiveStyleElement) {\n this.responsiveStyleElement.remove();\n this.responsiveStyleElement = null;\n }\n }\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n this.zone.runOutsideAngular(() => {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : this.document;\n this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', (event) => {\n if (this.isOutsideClicked(event) && this.overlayVisible) {\n this.zone.run(() => {\n this.hideOverlay();\n this.onClickOutside.emit(event);\n this.cd.markForCheck();\n });\n }\n });\n });\n }\n }\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n bindDocumentResizeListener() {\n if (!this.documentResizeListener && !this.touchUI) {\n this.documentResizeListener = this.renderer.listen(this.window, 'resize', this.onWindowResize.bind(this));\n }\n }\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {\n if (this.overlayVisible) {\n this.hideOverlay();\n }\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n isOutsideClicked(event) {\n return !(this.el.nativeElement.isSameNode(event.target) || this.isNavIconClicked(event) || this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));\n }\n isNavIconClicked(event) {\n return (DomHandler.hasClass(event.target, 'p-datepicker-prev') || DomHandler.hasClass(event.target, 'p-datepicker-prev-icon') || DomHandler.hasClass(event.target, 'p-datepicker-next') || DomHandler.hasClass(event.target, 'p-datepicker-next-icon'));\n }\n onWindowResize() {\n if (this.overlayVisible && !DomHandler.isTouchDevice()) {\n this.hideOverlay();\n }\n }\n onOverlayHide() {\n this.currentView = this.view;\n if (this.mask) {\n this.destroyMask();\n }\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n this.overlay = null;\n this.onModelTouched();\n }\n ngOnDestroy() {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n if (this.overlay && this.autoZIndex) {\n ZIndexUtils.clear(this.overlay);\n }\n this.destroyResponsiveStyleElement();\n this.clearTimePickerTimer();\n this.restoreOverlayAppend();\n this.onOverlayHide();\n }\n}\nCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Calendar, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\nCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Calendar, selector: \"p-calendar\", inputs: { style: \"style\", styleClass: \"styleClass\", inputStyle: \"inputStyle\", inputId: \"inputId\", name: \"name\", inputStyleClass: \"inputStyleClass\", placeholder: \"placeholder\", ariaLabelledBy: \"ariaLabelledBy\", iconAriaLabel: \"iconAriaLabel\", disabled: \"disabled\", dateFormat: \"dateFormat\", multipleSeparator: \"multipleSeparator\", rangeSeparator: \"rangeSeparator\", inline: \"inline\", showOtherMonths: \"showOtherMonths\", selectOtherMonths: \"selectOtherMonths\", showIcon: \"showIcon\", icon: \"icon\", appendTo: \"appendTo\", readonlyInput: \"readonlyInput\", shortYearCutoff: \"shortYearCutoff\", monthNavigator: \"monthNavigator\", yearNavigator: \"yearNavigator\", hourFormat: \"hourFormat\", timeOnly: \"timeOnly\", stepHour: \"stepHour\", stepMinute: \"stepMinute\", stepSecond: \"stepSecond\", showSeconds: \"showSeconds\", required: \"required\", showOnFocus: \"showOnFocus\", showWeek: \"showWeek\", showClear: \"showClear\", dataType: \"dataType\", selectionMode: \"selectionMode\", maxDateCount: \"maxDateCount\", showButtonBar: \"showButtonBar\", todayButtonStyleClass: \"todayButtonStyleClass\", clearButtonStyleClass: \"clearButtonStyleClass\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", panelStyleClass: \"panelStyleClass\", panelStyle: \"panelStyle\", keepInvalid: \"keepInvalid\", hideOnDateTimeSelect: \"hideOnDateTimeSelect\", touchUI: \"touchUI\", timeSeparator: \"timeSeparator\", focusTrap: \"focusTrap\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", tabindex: \"tabindex\", view: \"view\", defaultDate: \"defaultDate\", minDate: \"minDate\", maxDate: \"maxDate\", disabledDates: \"disabledDates\", disabledDays: \"disabledDays\", yearRange: \"yearRange\", showTime: \"showTime\", responsiveOptions: \"responsiveOptions\", numberOfMonths: \"numberOfMonths\", firstDayOfWeek: \"firstDayOfWeek\", locale: \"locale\" }, outputs: { onFocus: \"onFocus\", onBlur: \"onBlur\", onClose: \"onClose\", onSelect: \"onSelect\", onClear: \"onClear\", onInput: \"onInput\", onTodayClick: \"onTodayClick\", onClearClick: \"onClearClick\", onMonthChange: \"onMonthChange\", onYearChange: \"onYearChange\", onClickOutside: \"onClickOutside\", onShow: \"onShow\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled\", \"class.p-inputwrapper-focus\": \"focus\", \"class.p-calendar-clearable\": \"showClear && !disabled\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [CALENDAR_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"inputfieldViewChild\", first: true, predicate: [\"inputfield\"], descendants: true }, { propertyName: \"content\", first: true, predicate: [\"contentWrapper\"], descendants: true }], ngImport: i0, template: `\n \n \n \n \n \n \n 1,\n 'p-datepicker-monthpicker': view === 'month',\n 'p-datepicker-touch-ui': touchUI\n }\"\n [@overlayAnimation]=\"\n touchUI\n ? { value: 'visibleTouchUI', params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions } }\n : { value: 'visible', params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions } }\n \"\n [@.disabled]=\"inline === true\"\n (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\"\n (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\"\n (click)=\"onOverlayClick($event)\"\n *ngIf=\"inline || overlayVisible\"\n >\n \n \n \n
\n
\n
\n \n
\n \n \n \n {{ yearPickerValues()[0] }} - {{ yearPickerValues()[yearPickerValues().length - 1] }}\n \n \n
\n \n \n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{ getTranslation('weekHeader') }}\n \n {{ weekDay }}\n
\n \n {{ month.weekNumbers[j] }}\n \n \n \n \n {{ date.day }}\n \n \n \n
\n
\n
\n
\n
\n \n {{ m }}\n \n
\n
\n \n {{ y }}\n \n
\n
\n
\n
\n \n \n \n 0{{ currentHour }}\n \n \n \n
\n
\n {{ timeSeparator }}\n
\n
\n \n \n \n 0{{ currentMinute }}\n \n \n \n
\n
\n {{ timeSeparator }}\n
\n
\n \n \n \n 0{{ currentSecond }}\n \n \n \n
\n
\n \n {{ pm ? 'PM' : 'AM' }}\n \n
\n
\n
\n \n \n
\n \n \n \n
\n `, isInline: true, styles: [\".p-calendar{position:relative;display:inline-flex;max-width:100%}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{display:inline-block;position:static;overflow-x:auto}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container .p-datepicker-group{flex:1 1 auto}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}.p-yearpicker-year{width:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-calendar-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-calendar-clearable{position:relative}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i3.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }, { kind: \"directive\", type: i4.Ripple, selector: \"[pRipple]\" }], animations: [\n trigger('overlayAnimation', [\n state('visibleTouchUI', style({\n transform: 'translate(-50%,-50%)',\n opacity: 1\n })),\n transition('void => visible', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))]),\n transition('visible => void', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))]),\n transition('void => visibleTouchUI', [style({ opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)' }), animate('{{showTransitionParams}}')]),\n transition('visibleTouchUI => void', [\n animate('{{hideTransitionParams}}', style({\n opacity: 0,\n transform: 'translate3d(-50%, -40%, 0) scale(0.9)'\n }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Calendar, decorators: [{\n type: Component,\n args: [{ selector: 'p-calendar', template: `\n \n \n \n \n \n \n 1,\n 'p-datepicker-monthpicker': view === 'month',\n 'p-datepicker-touch-ui': touchUI\n }\"\n [@overlayAnimation]=\"\n touchUI\n ? { value: 'visibleTouchUI', params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions } }\n : { value: 'visible', params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions } }\n \"\n [@.disabled]=\"inline === true\"\n (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\"\n (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\"\n (click)=\"onOverlayClick($event)\"\n *ngIf=\"inline || overlayVisible\"\n >\n \n \n \n
\n
\n
\n \n
\n \n \n \n {{ yearPickerValues()[0] }} - {{ yearPickerValues()[yearPickerValues().length - 1] }}\n \n \n
\n \n \n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{ getTranslation('weekHeader') }}\n \n {{ weekDay }}\n
\n \n {{ month.weekNumbers[j] }}\n \n \n \n \n {{ date.day }}\n \n \n \n
\n
\n
\n
\n
\n \n {{ m }}\n \n
\n
\n \n {{ y }}\n \n
\n
\n
\n
\n \n \n \n 0{{ currentHour }}\n \n \n \n
\n
\n {{ timeSeparator }}\n
\n
\n \n \n \n 0{{ currentMinute }}\n \n \n \n
\n
\n {{ timeSeparator }}\n
\n
\n \n \n \n 0{{ currentSecond }}\n \n \n \n
\n
\n \n {{ pm ? 'PM' : 'AM' }}\n \n
\n
\n
\n \n \n
\n \n \n \n
\n `, animations: [\n trigger('overlayAnimation', [\n state('visibleTouchUI', style({\n transform: 'translate(-50%,-50%)',\n opacity: 1\n })),\n transition('void => visible', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))]),\n transition('visible => void', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))]),\n transition('void => visibleTouchUI', [style({ opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)' }), animate('{{showTransitionParams}}')]),\n transition('visibleTouchUI => void', [\n animate('{{hideTransitionParams}}', style({\n opacity: 0,\n transform: 'translate3d(-50%, -40%, 0) scale(0.9)'\n }))\n ])\n ])\n ], host: {\n class: 'p-element p-inputwrapper',\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': 'focus',\n '[class.p-calendar-clearable]': 'showClear && !disabled'\n }, providers: [CALENDAR_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".p-calendar{position:relative;display:inline-flex;max-width:100%}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{display:inline-block;position:static;overflow-x:auto}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container .p-datepicker-group{flex:1 1 auto}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}.p-yearpicker-year{width:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-calendar-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-calendar-clearable{position:relative}\\n\"] }]\n }], ctorParameters: function () { return [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], inputStyle: [{\n type: Input\n }], inputId: [{\n type: Input\n }], name: [{\n type: Input\n }], inputStyleClass: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], iconAriaLabel: [{\n type: Input\n }], disabled: [{\n type: Input\n }], dateFormat: [{\n type: Input\n }], multipleSeparator: [{\n type: Input\n }], rangeSeparator: [{\n type: Input\n }], inline: [{\n type: Input\n }], showOtherMonths: [{\n type: Input\n }], selectOtherMonths: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], icon: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], readonlyInput: [{\n type: Input\n }], shortYearCutoff: [{\n type: Input\n }], monthNavigator: [{\n type: Input\n }], yearNavigator: [{\n type: Input\n }], hourFormat: [{\n type: Input\n }], timeOnly: [{\n type: Input\n }], stepHour: [{\n type: Input\n }], stepMinute: [{\n type: Input\n }], stepSecond: [{\n type: Input\n }], showSeconds: [{\n type: Input\n }], required: [{\n type: Input\n }], showOnFocus: [{\n type: Input\n }], showWeek: [{\n type: Input\n }], showClear: [{\n type: Input\n }], dataType: [{\n type: Input\n }], selectionMode: [{\n type: Input\n }], maxDateCount: [{\n type: Input\n }], showButtonBar: [{\n type: Input\n }], todayButtonStyleClass: [{\n type: Input\n }], clearButtonStyleClass: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], panelStyleClass: [{\n type: Input\n }], panelStyle: [{\n type: Input\n }], keepInvalid: [{\n type: Input\n }], hideOnDateTimeSelect: [{\n type: Input\n }], touchUI: [{\n type: Input\n }], timeSeparator: [{\n type: Input\n }], focusTrap: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onClose: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onClear: [{\n type: Output\n }], onInput: [{\n type: Output\n }], onTodayClick: [{\n type: Output\n }], onClearClick: [{\n type: Output\n }], onMonthChange: [{\n type: Output\n }], onYearChange: [{\n type: Output\n }], onClickOutside: [{\n type: Output\n }], onShow: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], tabindex: [{\n type: Input\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container', { static: false }]\n }], inputfieldViewChild: [{\n type: ViewChild,\n args: ['inputfield', { static: false }]\n }], content: [{\n type: ViewChild,\n args: ['contentWrapper', { static: false }]\n }], view: [{\n type: Input\n }], defaultDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], disabledDays: [{\n type: Input\n }], yearRange: [{\n type: Input\n }], showTime: [{\n type: Input\n }], responsiveOptions: [{\n type: Input\n }], numberOfMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], locale: [{\n type: Input\n }] } });\nclass CalendarModule {\n}\nCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: CalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: CalendarModule, declarations: [Calendar], imports: [CommonModule, ButtonModule, SharedModule, RippleModule], exports: [Calendar, ButtonModule, SharedModule] });\nCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: CalendarModule, imports: [CommonModule, ButtonModule, SharedModule, RippleModule, ButtonModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: CalendarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, ButtonModule, SharedModule, RippleModule],\n exports: [Calendar, ButtonModule, SharedModule],\n declarations: [Calendar]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CALENDAR_VALUE_ACCESSOR, Calendar, CalendarModule };\n//# sourceMappingURL=primeng-calendar.mjs.map\n//# sourceMappingURL=primeng-calendar.mjs.map\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/api';\nimport { TranslationKeys } from 'primeng/api';\nimport * as i3 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\n\nclass ConfirmPopup {\n constructor(el, confirmationService, renderer, cd, config, overlayService, document) {\n this.el = el;\n this.confirmationService = confirmationService;\n this.renderer = renderer;\n this.cd = cd;\n this.config = config;\n this.overlayService = overlayService;\n this.document = document;\n this.defaultFocus = 'accept';\n this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n this.hideTransitionOptions = '.1s linear';\n this.autoZIndex = true;\n this.baseZIndex = 0;\n this.window = this.document.defaultView;\n this.subscription = this.confirmationService.requireConfirmation$.subscribe((confirmation) => {\n if (!confirmation) {\n this.hide();\n return;\n }\n if (confirmation.key === this.key) {\n this.confirmation = confirmation;\n if (this.confirmation.accept) {\n this.confirmation.acceptEvent = new EventEmitter();\n this.confirmation.acceptEvent.subscribe(this.confirmation.accept);\n }\n if (this.confirmation.reject) {\n this.confirmation.rejectEvent = new EventEmitter();\n this.confirmation.rejectEvent.subscribe(this.confirmation.reject);\n }\n this.visible = true;\n }\n });\n }\n get visible() {\n return this._visible;\n }\n set visible(value) {\n this._visible = value;\n this.cd.markForCheck();\n }\n onAnimationStart(event) {\n if (event.toState === 'open') {\n this.container = event.element;\n this.renderer.appendChild(this.document.body, this.container);\n this.align();\n this.bindListeners();\n const element = this.getElementToFocus();\n if (element) {\n element.focus();\n }\n }\n }\n onAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n this.onContainerDestroy();\n break;\n }\n }\n getElementToFocus() {\n switch (this.defaultFocus) {\n case 'accept':\n return DomHandler.findSingle(this.container, '.p-confirm-popup-accept');\n case 'reject':\n return DomHandler.findSingle(this.container, '.p-confirm-popup-reject');\n case 'none':\n return null;\n }\n }\n align() {\n if (this.autoZIndex) {\n ZIndexUtils.set('overlay', this.container, this.config.zIndex.overlay);\n }\n DomHandler.absolutePosition(this.container, this.confirmation.target);\n const containerOffset = DomHandler.getOffset(this.container);\n const targetOffset = DomHandler.getOffset(this.confirmation.target);\n let arrowLeft = 0;\n if (containerOffset.left < targetOffset.left) {\n arrowLeft = targetOffset.left - containerOffset.left;\n }\n this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);\n if (containerOffset.top < targetOffset.top) {\n DomHandler.addClass(this.container, 'p-confirm-popup-flipped');\n }\n }\n hide() {\n this.visible = false;\n }\n accept() {\n if (this.confirmation.acceptEvent) {\n this.confirmation.acceptEvent.emit();\n }\n this.hide();\n }\n reject() {\n if (this.confirmation.rejectEvent) {\n this.confirmation.rejectEvent.emit();\n }\n this.hide();\n }\n onOverlayClick(event) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n }\n bindListeners() {\n /*\n * Called inside `setTimeout` to avoid listening to the click event that appears when `confirm` is first called(bubbling).\n * Need wait when bubbling event up and hang the handler on the next tick.\n * This is the case when eventTarget and confirmation.target do not match when the `confirm` method is called.\n */\n setTimeout(() => {\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n });\n }\n unbindListeners() {\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n }\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : this.document;\n this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {\n let targetElement = this.confirmation.target;\n if (this.container !== event.target && !this.container.contains(event.target) && targetElement !== event.target && !targetElement.contains(event.target)) {\n this.hide();\n }\n });\n }\n }\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n onWindowResize() {\n if (this.visible && !DomHandler.isTouchDevice()) {\n this.hide();\n }\n }\n bindDocumentResizeListener() {\n if (!this.documentResizeListener) {\n this.documentResizeListener = this.renderer.listen(this.window, 'resize', this.onWindowResize.bind(this));\n }\n }\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.confirmation.target, () => {\n if (this.visible) {\n this.hide();\n }\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n unsubscribeConfirmationSubscriptions() {\n if (this.confirmation) {\n if (this.confirmation.acceptEvent) {\n this.confirmation.acceptEvent.unsubscribe();\n }\n if (this.confirmation.rejectEvent) {\n this.confirmation.rejectEvent.unsubscribe();\n }\n }\n }\n onContainerDestroy() {\n this.unbindListeners();\n this.unsubscribeConfirmationSubscriptions();\n if (this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n this.confirmation = null;\n this.container = null;\n }\n restoreAppend() {\n if (this.container) {\n this.renderer.removeChild(this.document.body, this.container);\n }\n this.onContainerDestroy();\n }\n get acceptButtonLabel() {\n return this.confirmation.acceptLabel || this.config.getTranslation(TranslationKeys.ACCEPT);\n }\n get rejectButtonLabel() {\n return this.confirmation.rejectLabel || this.config.getTranslation(TranslationKeys.REJECT);\n }\n ngOnDestroy() {\n this.restoreAppend();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nConfirmPopup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ConfirmPopup, deps: [{ token: i0.ElementRef }, { token: i1.ConfirmationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });\nConfirmPopup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: ConfirmPopup, selector: \"p-confirmPopup\", inputs: { key: \"key\", defaultFocus: \"defaultFocus\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", style: \"style\", styleClass: \"styleClass\", visible: \"visible\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n
\n \n {{ confirmation.message }}\n
\n
\n \n \n
\n \n `, isInline: true, styles: [\".p-confirm-popup{position:absolute;margin-top:10px;top:0;left:0}.p-confirm-popup-flipped{margin-top:0;margin-bottom:10px}.p-confirm-popup:after,.p-confirm-popup:before{bottom:100%;left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\\\" \\\";height:0;width:0;position:absolute;pointer-events:none}.p-confirm-popup:after{border-width:8px;margin-left:-8px}.p-confirm-popup:before{border-width:10px;margin-left:-10px}.p-confirm-popup-flipped:after,.p-confirm-popup-flipped:before{bottom:auto;top:100%}.p-confirm-popup.p-confirm-popup-flipped:after{border-bottom-color:transparent}.p-confirm-popup.p-confirm-popup-flipped:before{border-bottom-color:transparent}.p-confirm-popup .p-confirm-popup-content{display:flex;align-items:center}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i3.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }], animations: [\n trigger('animation', [\n state('void', style({\n transform: 'scaleY(0.8)',\n opacity: 0\n })),\n state('open', style({\n transform: 'translateY(0)',\n opacity: 1\n })),\n transition('void => open', animate('{{showTransitionParams}}')),\n transition('open => void', animate('{{hideTransitionParams}}'))\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ConfirmPopup, decorators: [{\n type: Component,\n args: [{ selector: 'p-confirmPopup', template: `\n \n
\n \n {{ confirmation.message }}\n
\n
\n \n \n
\n \n `, animations: [\n trigger('animation', [\n state('void', style({\n transform: 'scaleY(0.8)',\n opacity: 0\n })),\n state('open', style({\n transform: 'translateY(0)',\n opacity: 1\n })),\n transition('void => open', animate('{{showTransitionParams}}')),\n transition('open => void', animate('{{hideTransitionParams}}'))\n ])\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-confirm-popup{position:absolute;margin-top:10px;top:0;left:0}.p-confirm-popup-flipped{margin-top:0;margin-bottom:10px}.p-confirm-popup:after,.p-confirm-popup:before{bottom:100%;left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\\\" \\\";height:0;width:0;position:absolute;pointer-events:none}.p-confirm-popup:after{border-width:8px;margin-left:-8px}.p-confirm-popup:before{border-width:10px;margin-left:-10px}.p-confirm-popup-flipped:after,.p-confirm-popup-flipped:before{bottom:auto;top:100%}.p-confirm-popup.p-confirm-popup-flipped:after{border-bottom-color:transparent}.p-confirm-popup.p-confirm-popup-flipped:before{border-bottom-color:transparent}.p-confirm-popup .p-confirm-popup-content{display:flex;align-items:center}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ConfirmationService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { key: [{\n type: Input\n }], defaultFocus: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\nclass ConfirmPopupModule {\n}\nConfirmPopupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ConfirmPopupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nConfirmPopupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: ConfirmPopupModule, declarations: [ConfirmPopup], imports: [CommonModule, ButtonModule], exports: [ConfirmPopup] });\nConfirmPopupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ConfirmPopupModule, imports: [CommonModule, ButtonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ConfirmPopupModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, ButtonModule],\n exports: [ConfirmPopup],\n declarations: [ConfirmPopup]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ConfirmPopup, ConfirmPopupModule };\n//# sourceMappingURL=primeng-confirmpopup.mjs.map\n//# sourceMappingURL=primeng-confirmpopup.mjs.map\n","import * as i1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, forwardRef, Component, ViewEncapsulation, Inject, Input, Output, ViewChild, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport * as i2 from '@angular/router';\nimport { RouterModule } from '@angular/router';\nimport * as i5 from 'primeng/api';\nimport { ContextMenuService } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i4 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nclass ContextMenuSub {\n constructor(contextMenu) {\n this.leafClick = new EventEmitter();\n this.contextMenu = contextMenu;\n }\n ngOnInit() {\n this.activeItemKeyChangeSubscription = this.contextMenu.contextMenuService.activeItemKeyChange$.pipe(takeUntil(this.contextMenu.ngDestroy$)).subscribe((activeItemKey) => {\n this.activeItemKey = activeItemKey;\n if (this.isActive(this.parentItemKey) && DomHandler.hasClass(this.sublistViewChild.nativeElement, 'p-submenu-list-active')) {\n this.contextMenu.positionSubmenu(this.sublistViewChild.nativeElement);\n }\n this.contextMenu.cd.markForCheck();\n });\n }\n onItemMouseEnter(event, item, key) {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n if (item.disabled) {\n this.activeItemKey = null;\n return;\n }\n if (item.items) {\n let childSublist = DomHandler.findSingle(event.currentTarget, '.p-submenu-list');\n DomHandler.addClass(childSublist, 'p-submenu-list-active');\n }\n this.contextMenu.contextMenuService.changeKey(key);\n }\n onItemMouseLeave(event, item) {\n if (item.disabled) {\n return;\n }\n if (this.contextMenu.el.nativeElement.contains(event.toElement)) {\n if (item.items) {\n this.contextMenu.removeActiveFromSubLists(event.currentTarget);\n }\n if (!this.root) {\n this.contextMenu.contextMenuService.changeKey(this.parentItemKey);\n }\n }\n }\n onItemClick(event, item, menuitem, key) {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n if (!item.url && !item.routerLink) {\n event.preventDefault();\n }\n if (item.command) {\n item.command({\n originalEvent: event,\n item: item\n });\n }\n if (item.items) {\n let childSublist = DomHandler.findSingle(menuitem, '.p-submenu-list');\n if (childSublist) {\n if (this.isActive(key) && DomHandler.hasClass(childSublist, 'p-submenu-list-active')) {\n this.contextMenu.removeActiveFromSubLists(menuitem);\n }\n else {\n DomHandler.addClass(childSublist, 'p-submenu-list-active');\n }\n this.contextMenu.contextMenuService.changeKey(key);\n }\n }\n if (!item.items) {\n this.onLeafClick();\n }\n }\n onLeafClick() {\n if (this.root) {\n this.contextMenu.hide();\n }\n this.leafClick.emit();\n }\n getKey(index) {\n return this.root ? String(index) : this.parentItemKey + '_' + index;\n }\n isActive(key) {\n return this.activeItemKey && (this.activeItemKey.startsWith(key + '_') || this.activeItemKey === key);\n }\n}\nContextMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ContextMenuSub, deps: [{ token: forwardRef(() => ContextMenu) }], target: i0.ɵɵFactoryTarget.Component });\nContextMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: ContextMenuSub, selector: \"p-contextMenuSub\", inputs: { item: \"item\", root: \"root\", parentItemKey: \"parentItemKey\" }, outputs: { leafClick: \"leafClick\" }, host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"sublistViewChild\", first: true, predicate: [\"sublist\"], descendants: true }, { propertyName: \"menuitemViewChild\", first: true, predicate: [\"menuitem\"], descendants: true }], ngImport: i0, template: `\n
    \n \n
  • \n \n \n \n {{ child.label }}\n \n {{ child.badge }}\n \n \n \n \n {{ child.label }}\n \n {{ child.badge }}\n \n \n \n \n
    \n
\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i2.RouterLink, selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"directive\", type: i2.RouterLinkActive, selector: \"[routerLinkActive]\", inputs: [\"routerLinkActiveOptions\", \"ariaCurrentWhenActive\", \"routerLinkActive\"], outputs: [\"isActiveChange\"], exportAs: [\"routerLinkActive\"] }, { kind: \"directive\", type: i3.Ripple, selector: \"[pRipple]\" }, { kind: \"directive\", type: i4.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"component\", type: ContextMenuSub, selector: \"p-contextMenuSub\", inputs: [\"item\", \"root\", \"parentItemKey\"], outputs: [\"leafClick\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ContextMenuSub, decorators: [{\n type: Component,\n args: [{\n selector: 'p-contextMenuSub',\n template: `\n
    \n \n
  • \n \n \n \n {{ child.label }}\n \n {{ child.badge }}\n \n \n \n \n {{ child.label }}\n \n {{ child.badge }}\n \n \n \n \n
    \n
\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => ContextMenu)]\n }] }]; }, propDecorators: { item: [{\n type: Input\n }], root: [{\n type: Input\n }], parentItemKey: [{\n type: Input\n }], leafClick: [{\n type: Output\n }], sublistViewChild: [{\n type: ViewChild,\n args: ['sublist']\n }], menuitemViewChild: [{\n type: ViewChild,\n args: ['menuitem']\n }] } });\nclass ContextMenu {\n constructor(document, el, renderer, cd, zone, contextMenuService, config) {\n this.document = document;\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.zone = zone;\n this.contextMenuService = contextMenuService;\n this.config = config;\n this.autoZIndex = true;\n this.baseZIndex = 0;\n this.triggerEvent = 'contextmenu';\n this.onShow = new EventEmitter();\n this.onHide = new EventEmitter();\n this.ngDestroy$ = new Subject();\n this.preventDocumentDefault = false;\n this.window = this.document.defaultView;\n }\n ngAfterViewInit() {\n if (this.global) {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.triggerEventListener = this.renderer.listen(documentTarget, this.triggerEvent, (event) => {\n this.show(event);\n event.preventDefault();\n });\n }\n else if (this.target) {\n this.triggerEventListener = this.renderer.listen(this.target, this.triggerEvent, (event) => {\n this.show(event);\n event.preventDefault();\n });\n }\n if (this.appendTo) {\n if (this.appendTo === 'body')\n this.renderer.appendChild(this.document.body, this.containerViewChild.nativeElement);\n else\n DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);\n }\n }\n show(event) {\n this.clearActiveItem();\n this.position(event);\n this.moveOnTop();\n this.containerViewChild.nativeElement.style.display = 'block';\n this.preventDocumentDefault = true;\n DomHandler.fadeIn(this.containerViewChild.nativeElement, 250);\n this.bindGlobalListeners();\n if (event) {\n event.preventDefault();\n }\n this.onShow.emit();\n }\n hide() {\n this.containerViewChild.nativeElement.style.display = 'none';\n if (this.autoZIndex) {\n ZIndexUtils.clear(this.containerViewChild.nativeElement);\n }\n this.clearActiveItem();\n this.unbindGlobalListeners();\n this.onHide.emit();\n }\n moveOnTop() {\n if (this.autoZIndex && this.containerViewChild && this.containerViewChild.nativeElement.style.display !== 'block') {\n ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);\n }\n }\n toggle(event) {\n if (this.containerViewChild.nativeElement.offsetParent)\n this.hide();\n else\n this.show(event);\n }\n position(event) {\n if (event) {\n let left = event.pageX + 1;\n let top = event.pageY + 1;\n let width = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetWidth : DomHandler.getHiddenElementOuterWidth(this.containerViewChild.nativeElement);\n let height = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetHeight : DomHandler.getHiddenElementOuterHeight(this.containerViewChild.nativeElement);\n let viewport = DomHandler.getViewport();\n //flip\n if (left + width - this.document.scrollingElement.scrollLeft > viewport.width) {\n left -= width;\n }\n //flip\n if (top + height - this.document.scrollingElement.scrollTop > viewport.height) {\n top -= height;\n }\n //fit\n if (left < this.document.scrollingElement.scrollLeft) {\n left = this.document.scrollingElement.scrollLeft;\n }\n //fit\n if (top < this.document.scrollingElement.scrollTop) {\n top = this.document.scrollingElement.scrollTop;\n }\n this.containerViewChild.nativeElement.style.left = left + 'px';\n this.containerViewChild.nativeElement.style.top = top + 'px';\n }\n }\n positionSubmenu(sublist) {\n let parentMenuItem = sublist.parentElement.parentElement;\n let viewport = DomHandler.getViewport();\n let sublistWidth = sublist.offsetParent ? sublist.offsetWidth : DomHandler.getHiddenElementOuterWidth(sublist);\n let sublistHeight = sublist.offsetHeight ? sublist.offsetHeight : DomHandler.getHiddenElementOuterHeight(sublist);\n let itemOuterWidth = DomHandler.getOuterWidth(parentMenuItem.children[0]);\n let itemOuterHeight = DomHandler.getOuterHeight(parentMenuItem.children[0]);\n let containerOffset = DomHandler.getOffset(parentMenuItem.parentElement);\n sublist.style.zIndex = ++DomHandler.zindex;\n if (parseInt(containerOffset.top) + itemOuterHeight + sublistHeight > viewport.height - DomHandler.calculateScrollbarHeight()) {\n sublist.style.removeProperty('top');\n sublist.style.bottom = '0px';\n }\n else {\n sublist.style.removeProperty('bottom');\n sublist.style.top = '0px';\n }\n if (parseInt(containerOffset.left) + itemOuterWidth + sublistWidth > viewport.width - DomHandler.calculateScrollbarWidth()) {\n sublist.style.left = -sublistWidth + 'px';\n }\n else {\n sublist.style.left = itemOuterWidth + 'px';\n }\n }\n isItemMatched(menuitem) {\n return DomHandler.hasClass(menuitem, 'p-menuitem') && !DomHandler.hasClass(menuitem.children[0], 'p-disabled');\n }\n findNextItem(menuitem, isRepeated) {\n let nextMenuitem = menuitem.nextElementSibling;\n if (nextMenuitem) {\n return this.isItemMatched(nextMenuitem) ? nextMenuitem : this.findNextItem(nextMenuitem, isRepeated);\n }\n else {\n let firstItem = menuitem.parentElement.children[0];\n return this.isItemMatched(firstItem) ? firstItem : !isRepeated ? this.findNextItem(firstItem, true) : null;\n }\n }\n findPrevItem(menuitem, isRepeated) {\n let prevMenuitem = menuitem.previousElementSibling;\n if (prevMenuitem) {\n return this.isItemMatched(prevMenuitem) ? prevMenuitem : this.findPrevItem(prevMenuitem, isRepeated);\n }\n else {\n let lastItem = menuitem.parentElement.children[menuitem.parentElement.children.length - 1];\n return this.isItemMatched(lastItem) ? lastItem : !isRepeated ? this.findPrevItem(lastItem, true) : null;\n }\n }\n getActiveItem() {\n let activeItemKey = this.contextMenuService.activeItemKey;\n return activeItemKey == null ? null : DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-menuitem[data-ik=\"' + activeItemKey + '\"]');\n }\n clearActiveItem() {\n if (this.contextMenuService.activeItemKey) {\n this.removeActiveFromSubLists(this.containerViewChild.nativeElement);\n this.contextMenuService.reset();\n }\n }\n removeActiveFromSubLists(el) {\n let sublists = DomHandler.find(el, '.p-submenu-list-active');\n for (let sublist of sublists) {\n DomHandler.removeClass(sublist, 'p-submenu-list-active');\n }\n }\n removeActiveFromSublist(menuitem) {\n if (menuitem) {\n let sublist = DomHandler.findSingle(menuitem, '.p-submenu-list');\n if (sublist && DomHandler.hasClass(menuitem, 'p-submenu-list-active')) {\n DomHandler.removeClass(menuitem, 'p-submenu-list-active');\n }\n }\n }\n bindGlobalListeners() {\n if (!this.documentClickListener) {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n if (this.containerViewChild.nativeElement.offsetParent && this.isOutsideClicked(event) && !event.ctrlKey && event.button !== 2 && this.triggerEvent !== 'click') {\n this.hide();\n }\n });\n this.documentTriggerListener = this.renderer.listen(documentTarget, this.triggerEvent, (event) => {\n if (this.containerViewChild.nativeElement.offsetParent && this.isOutsideClicked(event) && !this.preventDocumentDefault) {\n this.hide();\n }\n this.preventDocumentDefault = false;\n });\n }\n this.zone.runOutsideAngular(() => {\n if (!this.windowResizeListener) {\n this.renderer.listen(this.window, 'resize', this.onWindowResize.bind(this));\n }\n });\n if (!this.documentKeydownListener) {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentKeydownListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n let activeItem = this.getActiveItem();\n switch (event.key) {\n case 'ArrowDown':\n if (activeItem) {\n this.removeActiveFromSublist(activeItem);\n activeItem = this.findNextItem(activeItem);\n }\n else {\n let firstItem = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-menuitem-link').parentElement;\n activeItem = this.isItemMatched(firstItem) ? firstItem : this.findNextItem(firstItem);\n }\n if (activeItem) {\n this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));\n }\n event.preventDefault();\n break;\n case 'ArrowUp':\n if (activeItem) {\n this.removeActiveFromSublist(activeItem);\n activeItem = this.findPrevItem(activeItem);\n }\n else {\n let sublist = DomHandler.findSingle(this.containerViewChild.nativeElement, 'ul');\n let lastItem = sublist.children[sublist.children.length - 1];\n activeItem = this.isItemMatched(lastItem) ? lastItem : this.findPrevItem(lastItem);\n }\n if (activeItem) {\n this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));\n }\n event.preventDefault();\n break;\n case 'ArrowRight':\n if (activeItem) {\n let sublist = DomHandler.findSingle(activeItem, '.p-submenu-list');\n if (sublist) {\n DomHandler.addClass(sublist, 'p-submenu-list-active');\n activeItem = DomHandler.findSingle(sublist, '.p-menuitem-link:not(.p-disabled)').parentElement;\n if (activeItem) {\n this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));\n }\n }\n }\n event.preventDefault();\n break;\n case 'ArrowLeft':\n if (activeItem) {\n let sublist = activeItem.parentElement;\n if (sublist && DomHandler.hasClass(sublist, 'p-submenu-list-active')) {\n DomHandler.removeClass(sublist, 'p-submenu-list-active');\n activeItem = sublist.parentElement.parentElement;\n if (activeItem) {\n this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));\n }\n }\n }\n event.preventDefault();\n break;\n case 'Escape':\n this.hide();\n event.preventDefault();\n break;\n case 'Enter':\n if (activeItem) {\n this.handleItemClick(event, this.findModelItemFromKey(this.contextMenuService.activeItemKey), activeItem);\n }\n event.preventDefault();\n break;\n default:\n break;\n }\n });\n }\n }\n findModelItemFromKey(key) {\n if (key == null || !this.model) {\n return null;\n }\n let indexes = key.split('_');\n return indexes.reduce((item, currentIndex) => {\n return item ? item.items[currentIndex] : this.model[currentIndex];\n }, null);\n }\n handleItemClick(event, item, menuitem) {\n if (!item || item.disabled) {\n return;\n }\n if (item.command) {\n item.command({\n originalEvent: event,\n item: item\n });\n }\n if (item.items) {\n let childSublist = DomHandler.findSingle(menuitem, '.p-submenu-list');\n if (childSublist) {\n if (DomHandler.hasClass(childSublist, 'p-submenu-list-active')) {\n this.removeActiveFromSubLists(menuitem);\n }\n else {\n DomHandler.addClass(childSublist, 'p-submenu-list-active');\n this.positionSubmenu(childSublist);\n }\n }\n }\n if (!item.items) {\n this.hide();\n }\n }\n unbindGlobalListeners() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n if (this.documentTriggerListener) {\n this.documentTriggerListener();\n this.documentTriggerListener = null;\n }\n if (this.windowResizeListener) {\n this.windowResizeListener();\n this.windowResizeListener = null;\n }\n if (this.documentKeydownListener) {\n this.documentKeydownListener();\n this.documentKeydownListener = null;\n }\n }\n onWindowResize(event) {\n if (this.containerViewChild.nativeElement.offsetParent) {\n this.hide();\n }\n }\n isOutsideClicked(event) {\n return !(this.containerViewChild.nativeElement.isSameNode(event.target) || this.containerViewChild.nativeElement.contains(event.target));\n }\n ngOnDestroy() {\n this.unbindGlobalListeners();\n if (this.triggerEventListener) {\n this.triggerEventListener();\n this.triggerEventListener = null;\n }\n if (this.containerViewChild && this.autoZIndex) {\n ZIndexUtils.clear(this.containerViewChild.nativeElement);\n }\n if (this.appendTo) {\n this.renderer.appendChild(this.el.nativeElement, this.containerViewChild.nativeElement);\n }\n this.ngDestroy$.next(true);\n this.ngDestroy$.complete();\n }\n}\nContextMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ContextMenu, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i5.ContextMenuService }, { token: i5.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\nContextMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: ContextMenu, selector: \"p-contextMenu\", inputs: { model: \"model\", global: \"global\", target: \"target\", style: \"style\", styleClass: \"styleClass\", appendTo: \"appendTo\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", triggerEvent: \"triggerEvent\" }, outputs: { onShow: \"onShow\", onHide: \"onHide\" }, host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }], ngImport: i0, template: `\n
\n \n
\n `, isInline: true, styles: [\".p-contextmenu{position:absolute;display:none}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-contextmenu .p-menuitem-active>p-contextmenusub>.p-submenu-list.p-submenu-list-active{display:block!important}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: ContextMenuSub, selector: \"p-contextMenuSub\", inputs: [\"item\", \"root\", \"parentItemKey\"], outputs: [\"leafClick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ContextMenu, decorators: [{\n type: Component,\n args: [{ selector: 'p-contextMenu', template: `\n
\n \n
\n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-contextmenu{position:absolute;display:none}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-contextmenu .p-menuitem-active>p-contextmenusub>.p-submenu-list.p-submenu-list-active{display:block!important}\\n\"] }]\n }], ctorParameters: function () { return [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i5.ContextMenuService }, { type: i5.PrimeNGConfig }]; }, propDecorators: { model: [{\n type: Input\n }], global: [{\n type: Input\n }], target: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], triggerEvent: [{\n type: Input\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }] } });\nclass ContextMenuModule {\n}\nContextMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ContextMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nContextMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: ContextMenuModule, declarations: [ContextMenu, ContextMenuSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [ContextMenu, RouterModule, TooltipModule] });\nContextMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ContextMenuModule, providers: [ContextMenuService], imports: [CommonModule, RouterModule, RippleModule, TooltipModule, RouterModule, TooltipModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ContextMenuModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RouterModule, RippleModule, TooltipModule],\n exports: [ContextMenu, RouterModule, TooltipModule],\n declarations: [ContextMenu, ContextMenuSub],\n providers: [ContextMenuService]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ContextMenu, ContextMenuModule, ContextMenuSub };\n//# sourceMappingURL=primeng-contextmenu.mjs.map\n//# sourceMappingURL=primeng-contextmenu.mjs.map\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 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 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 if (element) {\n return element.querySelector(selector);\n }\n return 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 calculateMinWidth && (overlay.style.minWidth || (overlay.style.minWidth = DomHandler.getOuterWidth(target) + 'px'));\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 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 (targetOffset.left - relativeElementOffset.left + elementDimensions.width > viewport.width) {\n // element wider then viewport but can be fit on screen (align at right side of viewport)\n left = (targetOffset.left - relativeElementOffset.left + elementDimensions.width - viewport.width) * -1;\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.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 getFocusableElements(element) {\n let focusableElements = DomHandler.find(element, `button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n [href]:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n input:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), select:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n textarea:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), [tabIndex]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n [contenteditable]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]):not(.p-disabled)`);\n let visibleFocusableElements = [];\n for (let focusableElement of focusableElements) {\n if (!!(focusableElement.offsetWidth || focusableElement.offsetHeight || focusableElement.getClientRects().length))\n visibleFocusableElements.push(focusableElement);\n }\n return visibleFocusableElements;\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}\nDomHandler.zindex = 1000;\nDomHandler.calculatedScrollbarWidth = null;\nDomHandler.calculatedScrollbarHeight = null;\n\nclass ConnectedOverlayScrollHandler {\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//# sourceMappingURL=primeng-dom.mjs.map\n//# sourceMappingURL=primeng-dom.mjs.map\n","import { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Directive, Input, NgModule } from '@angular/core';\nimport { DomHandler } from 'primeng/dom';\n\nclass AutoFocus {\n constructor(host) {\n this.host = host;\n this.focused = false;\n }\n ngAfterViewChecked() {\n if (!this.focused) {\n if (this.autofocus) {\n const focusableElements = DomHandler.getFocusableElements(this.host.nativeElement);\n if (focusableElements.length === 0) {\n this.host.nativeElement.focus();\n }\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n }\n this.focused = true;\n }\n }\n }\n}\nAutoFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: AutoFocus, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nAutoFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.2.4\", type: AutoFocus, selector: \"[pAutoFocus]\", inputs: { autofocus: \"autofocus\" }, host: { classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: AutoFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[pAutoFocus]',\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { autofocus: [{\n type: Input\n }] } });\nclass AutoFocusModule {\n}\nAutoFocusModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: AutoFocusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAutoFocusModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: AutoFocusModule, declarations: [AutoFocus], imports: [CommonModule], exports: [AutoFocus] });\nAutoFocusModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: AutoFocusModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: AutoFocusModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [AutoFocus],\n declarations: [AutoFocus]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutoFocus, AutoFocusModule };\n//# sourceMappingURL=primeng-autofocus.mjs.map\n//# sourceMappingURL=primeng-autofocus.mjs.map\n","import * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, Input, Output, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i3 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i7 from 'primeng/autofocus';\nimport { AutoFocusModule } from 'primeng/autofocus';\nimport { DomHandler } from 'primeng/dom';\nimport * as i4 from 'primeng/overlay';\nimport { OverlayModule } from 'primeng/overlay';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i6 from 'primeng/scroller';\nimport { ScrollerModule } from 'primeng/scroller';\nimport * as i5 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { UniqueComponentId, ObjectUtils } from 'primeng/utils';\n\nconst DROPDOWN_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Dropdown),\n multi: true\n};\nclass DropdownItem {\n constructor() {\n this.onClick = new EventEmitter();\n }\n onOptionClick(event) {\n this.onClick.emit({\n originalEvent: event,\n option: this.option\n });\n }\n}\nDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: DropdownItem, deps: [], target: i0.ɵɵFactoryTarget.Component });\nDropdownItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: DropdownItem, selector: \"p-dropdownItem\", inputs: { option: \"option\", selected: \"selected\", label: \"label\", disabled: \"disabled\", visible: \"visible\", itemSize: \"itemSize\", template: \"template\" }, outputs: { onClick: \"onClick\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n {{ label ?? 'empty' }}\n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i2.Ripple, selector: \"[pRipple]\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: DropdownItem, decorators: [{\n type: Component,\n args: [{\n selector: 'p-dropdownItem',\n template: `\n \n {{ label ?? 'empty' }}\n \n \n `,\n host: {\n class: 'p-element'\n }\n }]\n }], propDecorators: { option: [{\n type: Input\n }], selected: [{\n type: Input\n }], label: [{\n type: Input\n }], disabled: [{\n type: Input\n }], visible: [{\n type: Input\n }], itemSize: [{\n type: Input\n }], template: [{\n type: Input\n }], onClick: [{\n type: Output\n }] } });\nclass Dropdown {\n constructor(el, renderer, cd, zone, filterService, config) {\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.zone = zone;\n this.filterService = filterService;\n this.config = config;\n this.scrollHeight = '200px';\n this.resetFilterOnHide = false;\n this.dropdownIcon = 'pi pi-chevron-down';\n this.optionGroupChildren = 'items';\n this.autoDisplayFirst = true;\n this.emptyFilterMessage = '';\n this.emptyMessage = '';\n this.lazy = false;\n this.filterMatchMode = 'contains';\n this.tooltip = '';\n this.tooltipPosition = 'right';\n this.tooltipPositionStyle = 'absolute';\n this.autofocusFilter = true;\n this.overlayDirection = 'end';\n this.onChange = new EventEmitter();\n this.onFilter = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onClick = new EventEmitter();\n this.onShow = new EventEmitter();\n this.onHide = new EventEmitter();\n this.onClear = new EventEmitter();\n this.onLazyLoad = new EventEmitter();\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n this.id = UniqueComponentId();\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(_disabled) {\n if (_disabled) {\n this.focused = false;\n if (this.overlayVisible)\n this.hide();\n }\n this._disabled = _disabled;\n if (!this.cd.destroyed) {\n this.cd.detectChanges();\n }\n }\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(val) {\n this._itemSize = val;\n console.warn('The itemSize property is deprecated, use virtualScrollItemSize property instead.');\n }\n get autoZIndex() {\n return this._autoZIndex;\n }\n set autoZIndex(val) {\n this._autoZIndex = val;\n console.warn('The autoZIndex property is deprecated since v14.2.0, use overlayOptions property instead.');\n }\n get baseZIndex() {\n return this._baseZIndex;\n }\n set baseZIndex(val) {\n this._baseZIndex = val;\n console.warn('The baseZIndex property is deprecated since v14.2.0, use overlayOptions property instead.');\n }\n get showTransitionOptions() {\n return this._showTransitionOptions;\n }\n set showTransitionOptions(val) {\n this._showTransitionOptions = val;\n console.warn('The showTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n }\n get hideTransitionOptions() {\n return this._hideTransitionOptions;\n }\n set hideTransitionOptions(val) {\n this._hideTransitionOptions = val;\n console.warn('The hideTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n case 'selectedItem':\n this.selectedItemTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'filter':\n this.filterTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'emptyfilter':\n this.emptyFilterTemplate = item.template;\n break;\n case 'empty':\n this.emptyTemplate = item.template;\n break;\n case 'group':\n this.groupTemplate = item.template;\n break;\n case 'loader':\n this.loaderTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n ngOnInit() {\n this.optionsToDisplay = this.options;\n this.updateSelectedOption(null);\n this.labelId = this.id + '_label';\n this.listId = this.id + '_list';\n if (this.filterBy) {\n this.filterOptions = {\n filter: (value) => this.onFilterInputChange(value),\n reset: () => this.resetFilter()\n };\n }\n }\n get options() {\n return this._options;\n }\n set options(val) {\n this._options = val;\n this.optionsToDisplay = this._options;\n this.updateSelectedOption(this.value);\n this.selectedOption = this.findOption(this.value, this.optionsToDisplay);\n if (!this.selectedOption && ObjectUtils.isNotEmpty(this.value) && !this.editable) {\n this.value = null;\n this.onModelChange(this.value);\n }\n this.optionsChanged = true;\n if (this._filterValue && this._filterValue.length) {\n this.activateFilter();\n }\n }\n get filterValue() {\n return this._filterValue;\n }\n set filterValue(val) {\n this._filterValue = val;\n this.activateFilter();\n }\n ngAfterViewInit() {\n if (this.editable) {\n this.updateEditableLabel();\n }\n }\n get label() {\n if (typeof this.selectedOption === 'number') {\n this.selectedOption = this.selectedOption.toString();\n }\n return this.selectedOption ? this.getOptionLabel(this.selectedOption) : null;\n }\n get emptyMessageLabel() {\n return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n }\n get emptyFilterMessageLabel() {\n return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);\n }\n get filled() {\n if (typeof this.value === 'string')\n return !!this.value;\n return this.value || this.value != null || this.value != undefined;\n }\n get isVisibleClearIcon() {\n return this.value != null && this.value !== '' && this.showClear && !this.disabled;\n }\n updateEditableLabel() {\n if (this.editableInputViewChild && this.editableInputViewChild.nativeElement) {\n this.editableInputViewChild.nativeElement.value = this.selectedOption ? this.getOptionLabel(this.selectedOption) : this.value || '';\n }\n }\n getOptionLabel(option) {\n return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option && option.label !== undefined ? option.label : option;\n }\n getOptionValue(option) {\n return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : !this.optionLabel && option && option.value !== undefined ? option.value : option;\n }\n isOptionDisabled(option) {\n return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : option && option.disabled !== undefined ? option.disabled : false;\n }\n getOptionGroupLabel(optionGroup) {\n return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label !== undefined ? optionGroup.label : optionGroup;\n }\n getOptionGroupChildren(optionGroup) {\n return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n }\n onItemClick(event) {\n const option = event.option;\n if (!this.isOptionDisabled(option)) {\n this.selectItem(event.originalEvent, option);\n this.accessibleViewChild.nativeElement.focus({ preventScroll: true });\n }\n setTimeout(() => {\n this.hide();\n }, 1);\n }\n selectItem(event, option) {\n if (this.selectedOption != option) {\n this.selectedOption = option;\n this.value = this.getOptionValue(option);\n this.onModelChange(this.value);\n this.updateEditableLabel();\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n }\n ngAfterViewChecked() {\n if (this.optionsChanged && this.overlayVisible) {\n this.optionsChanged = false;\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n if (this.overlayViewChild) {\n this.overlayViewChild.alignOverlay();\n }\n }, 1);\n });\n }\n if (this.selectedOptionUpdated && this.itemsWrapper) {\n let selectedItem = DomHandler.findSingle(this.overlayViewChild.overlayViewChild.nativeElement, 'li.p-highlight');\n if (selectedItem) {\n DomHandler.scrollInView(this.itemsWrapper, selectedItem);\n }\n this.selectedOptionUpdated = false;\n }\n }\n writeValue(value) {\n if (this.filter) {\n this.resetFilter();\n }\n this.value = value;\n this.updateSelectedOption(value);\n this.updateEditableLabel();\n this.cd.markForCheck();\n }\n resetFilter() {\n this._filterValue = null;\n if (this.filterViewChild && this.filterViewChild.nativeElement) {\n this.filterViewChild.nativeElement.value = '';\n }\n this.optionsToDisplay = this.options;\n }\n updateSelectedOption(val) {\n this.selectedOption = this.findOption(val, this.optionsToDisplay);\n if (this.autoDisplayFirst && !this.placeholder && !this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length && !this.editable) {\n if (this.group) {\n this.selectedOption = this.optionsToDisplay[0].items[0];\n }\n else {\n this.selectedOption = this.optionsToDisplay[0];\n }\n this.value = this.getOptionValue(this.selectedOption);\n this.onModelChange(this.value);\n }\n this.selectedOptionUpdated = true;\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n onMouseclick(event) {\n if (this.disabled || this.readonly || this.isInputClick(event)) {\n return;\n }\n this.onClick.emit(event);\n this.accessibleViewChild.nativeElement.focus({ preventScroll: true });\n if (this.overlayVisible)\n this.hide();\n else\n this.show();\n this.cd.detectChanges();\n }\n isInputClick(event) {\n return DomHandler.hasClass(event.target, 'p-dropdown-clear-icon') || event.target.isSameNode(this.accessibleViewChild.nativeElement) || (this.editableInputViewChild && event.target.isSameNode(this.editableInputViewChild.nativeElement));\n }\n isEmpty() {\n return !this.optionsToDisplay || (this.optionsToDisplay && this.optionsToDisplay.length === 0);\n }\n onEditableInputFocus(event) {\n this.focused = true;\n this.hide();\n this.onFocus.emit(event);\n }\n onEditableInputChange(event) {\n this.value = event.target.value;\n this.updateSelectedOption(this.value);\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n show() {\n this.overlayVisible = true;\n this.cd.markForCheck();\n }\n onOverlayAnimationStart(event) {\n if (event.toState === 'visible') {\n this.itemsWrapper = DomHandler.findSingle(this.overlayViewChild.overlayViewChild.nativeElement, this.virtualScroll ? '.p-scroller' : '.p-dropdown-items-wrapper');\n this.virtualScroll && this.scroller.setContentEl(this.itemsViewChild.nativeElement);\n if (this.options && this.options.length) {\n if (this.virtualScroll) {\n const selectedIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n if (selectedIndex !== -1) {\n this.scroller.scrollToIndex(selectedIndex);\n }\n }\n else {\n let selectedListItem = DomHandler.findSingle(this.itemsWrapper, '.p-dropdown-item.p-highlight');\n if (selectedListItem) {\n selectedListItem.scrollIntoView({ block: 'nearest', inline: 'center' });\n }\n }\n }\n if (this.filterViewChild && this.filterViewChild.nativeElement) {\n this.preventModelTouched = true;\n if (this.autofocusFilter) {\n this.filterViewChild.nativeElement.focus();\n }\n }\n this.onShow.emit(event);\n }\n if (event.toState === 'void') {\n this.itemsWrapper = null;\n this.onModelTouched();\n this.onHide.emit(event);\n }\n }\n hide() {\n this.overlayVisible = false;\n if (this.filter && this.resetFilterOnHide) {\n this.resetFilter();\n }\n this.cd.markForCheck();\n }\n onInputFocus(event) {\n this.focused = true;\n this.onFocus.emit(event);\n }\n onInputBlur(event) {\n this.focused = false;\n this.onBlur.emit(event);\n if (!this.preventModelTouched) {\n this.onModelTouched();\n }\n this.preventModelTouched = false;\n }\n findPrevEnabledOption(index) {\n let prevEnabledOption;\n if (this.optionsToDisplay && this.optionsToDisplay.length) {\n for (let i = index - 1; 0 <= i; i--) {\n let option = this.optionsToDisplay[i];\n if (this.isOptionDisabled(option)) {\n continue;\n }\n else {\n prevEnabledOption = option;\n break;\n }\n }\n if (!prevEnabledOption) {\n for (let i = this.optionsToDisplay.length - 1; i >= index; i--) {\n let option = this.optionsToDisplay[i];\n if (this.isOptionDisabled(option)) {\n continue;\n }\n else {\n prevEnabledOption = option;\n break;\n }\n }\n }\n }\n return prevEnabledOption;\n }\n findNextEnabledOption(index) {\n let nextEnabledOption;\n if (this.optionsToDisplay && this.optionsToDisplay.length) {\n for (let i = index + 1; i < this.optionsToDisplay.length; i++) {\n let option = this.optionsToDisplay[i];\n if (this.isOptionDisabled(option)) {\n continue;\n }\n else {\n nextEnabledOption = option;\n break;\n }\n }\n if (!nextEnabledOption) {\n for (let i = 0; i < index; i++) {\n let option = this.optionsToDisplay[i];\n if (this.isOptionDisabled(option)) {\n continue;\n }\n else {\n nextEnabledOption = option;\n break;\n }\n }\n }\n }\n return nextEnabledOption;\n }\n onKeydown(event, search) {\n if (this.readonly || !this.optionsToDisplay || this.optionsToDisplay.length === null) {\n return;\n }\n switch (event.which) {\n //down\n case 40:\n if (!this.overlayVisible && event.altKey) {\n this.show();\n }\n else {\n if (this.group) {\n let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n if (selectedItemIndex !== -1) {\n let nextItemIndex = selectedItemIndex.itemIndex + 1;\n if (nextItemIndex < this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex]).length) {\n this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[nextItemIndex]);\n this.selectedOptionUpdated = true;\n }\n else if (this.optionsToDisplay[selectedItemIndex.groupIndex + 1]) {\n this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex + 1])[0]);\n this.selectedOptionUpdated = true;\n }\n }\n else {\n if (this.optionsToDisplay && this.optionsToDisplay.length > 0) {\n this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[0])[0]);\n }\n }\n }\n else {\n let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n let nextEnabledOption = this.findNextEnabledOption(selectedItemIndex);\n if (nextEnabledOption) {\n this.selectItem(event, nextEnabledOption);\n this.selectedOptionUpdated = true;\n }\n }\n }\n event.preventDefault();\n break;\n //up\n case 38:\n if (this.group) {\n let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n if (selectedItemIndex !== -1) {\n let prevItemIndex = selectedItemIndex.itemIndex - 1;\n if (prevItemIndex >= 0) {\n this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[prevItemIndex]);\n this.selectedOptionUpdated = true;\n }\n else if (prevItemIndex < 0) {\n let prevGroup = this.optionsToDisplay[selectedItemIndex.groupIndex - 1];\n if (prevGroup) {\n this.selectItem(event, this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1]);\n this.selectedOptionUpdated = true;\n }\n }\n }\n }\n else {\n let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n let prevEnabledOption = this.findPrevEnabledOption(selectedItemIndex);\n if (prevEnabledOption) {\n this.selectItem(event, prevEnabledOption);\n this.selectedOptionUpdated = true;\n }\n }\n event.preventDefault();\n break;\n //space\n case 32:\n if (search) {\n if (!this.overlayVisible) {\n this.show();\n }\n else {\n this.hide();\n }\n event.preventDefault();\n }\n break;\n //enter\n case 13:\n if (this.overlayVisible && (!this.filter || (this.optionsToDisplay && this.optionsToDisplay.length > 0))) {\n this.hide();\n }\n else if (!this.overlayVisible) {\n this.show();\n }\n event.preventDefault();\n break;\n //escape and tab\n case 27:\n case 9:\n this.hide();\n break;\n //search item based on keyboard input\n default:\n if (search && !event.metaKey && event.which !== 17) {\n this.search(event);\n }\n break;\n }\n }\n search(event) {\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n const char = event.key;\n this.previousSearchChar = this.currentSearchChar;\n this.currentSearchChar = char;\n if (this.previousSearchChar === this.currentSearchChar)\n this.searchValue = this.currentSearchChar;\n else\n this.searchValue = this.searchValue ? this.searchValue + char : char;\n let newOption;\n if (this.group) {\n let searchIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : { groupIndex: 0, itemIndex: 0 };\n newOption = this.searchOptionWithinGroup(searchIndex);\n }\n else {\n let searchIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n newOption = this.searchOption(++searchIndex);\n }\n if (newOption && !this.isOptionDisabled(newOption)) {\n this.selectItem(event, newOption);\n this.selectedOptionUpdated = true;\n }\n this.searchTimeout = setTimeout(() => {\n this.searchValue = null;\n }, 250);\n }\n searchOption(index) {\n let option;\n if (this.searchValue) {\n option = this.searchOptionInRange(index, this.optionsToDisplay.length);\n if (!option) {\n option = this.searchOptionInRange(0, index);\n }\n }\n return option;\n }\n searchOptionInRange(start, end) {\n for (let i = start; i < end; i++) {\n let opt = this.optionsToDisplay[i];\n if (this.getOptionLabel(opt)\n .toLocaleLowerCase(this.filterLocale)\n .startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) &&\n !this.isOptionDisabled(opt)) {\n return opt;\n }\n }\n return null;\n }\n searchOptionWithinGroup(index) {\n let option;\n if (this.searchValue) {\n for (let i = index.groupIndex; i < this.optionsToDisplay.length; i++) {\n for (let j = index.groupIndex === i ? index.itemIndex + 1 : 0; j < this.getOptionGroupChildren(this.optionsToDisplay[i]).length; j++) {\n let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];\n if (this.getOptionLabel(opt)\n .toLocaleLowerCase(this.filterLocale)\n .startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) &&\n !this.isOptionDisabled(opt)) {\n return opt;\n }\n }\n }\n if (!option) {\n for (let i = 0; i <= index.groupIndex; i++) {\n for (let j = 0; j < (index.groupIndex === i ? index.itemIndex : this.getOptionGroupChildren(this.optionsToDisplay[i]).length); j++) {\n let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];\n if (this.getOptionLabel(opt)\n .toLocaleLowerCase(this.filterLocale)\n .startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) &&\n !this.isOptionDisabled(opt)) {\n return opt;\n }\n }\n }\n }\n }\n return null;\n }\n findOptionIndex(val, opts) {\n let index = -1;\n if (opts) {\n for (let i = 0; i < opts.length; i++) {\n if ((val == null && this.getOptionValue(opts[i]) == null) || ObjectUtils.equals(val, this.getOptionValue(opts[i]), this.dataKey)) {\n index = i;\n break;\n }\n }\n }\n return index;\n }\n findOptionGroupIndex(val, opts) {\n let groupIndex, itemIndex;\n if (opts) {\n for (let i = 0; i < opts.length; i++) {\n groupIndex = i;\n itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));\n if (itemIndex !== -1) {\n break;\n }\n }\n }\n if (itemIndex !== -1) {\n return { groupIndex: groupIndex, itemIndex: itemIndex };\n }\n else {\n return -1;\n }\n }\n findOption(val, opts, inGroup) {\n if (this.group && !inGroup) {\n let opt;\n if (opts && opts.length) {\n for (let optgroup of opts) {\n opt = this.findOption(val, this.getOptionGroupChildren(optgroup), true);\n if (opt) {\n break;\n }\n }\n }\n return opt;\n }\n else {\n let index = this.findOptionIndex(val, opts);\n return index != -1 ? opts[index] : null;\n }\n }\n onFilterInputChange(event) {\n let inputValue = event.target.value;\n if (inputValue && inputValue.length) {\n this._filterValue = inputValue;\n this.activateFilter();\n }\n else {\n this._filterValue = null;\n this.optionsToDisplay = this.options;\n }\n this.virtualScroll && this.scroller.scrollToIndex(0);\n this.optionsChanged = true;\n this.onFilter.emit({ originalEvent: event, filter: this._filterValue });\n }\n activateFilter() {\n let searchFields = (this.filterBy || this.optionLabel || 'label').split(',');\n if (this.options && this.options.length) {\n if (this.group) {\n let filteredGroups = [];\n for (let optgroup of this.options) {\n let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n if (filteredSubOptions && filteredSubOptions.length) {\n filteredGroups.push({ ...optgroup, ...{ [this.optionGroupChildren]: filteredSubOptions } });\n }\n }\n this.optionsToDisplay = filteredGroups;\n }\n else {\n this.optionsToDisplay = this.filterService.filter(this.options, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n }\n this.optionsChanged = true;\n }\n }\n applyFocus() {\n if (this.editable)\n DomHandler.findSingle(this.el.nativeElement, '.p-dropdown-label.p-inputtext').focus();\n else\n DomHandler.findSingle(this.el.nativeElement, 'input[readonly]').focus();\n }\n focus() {\n this.applyFocus();\n }\n clear(event) {\n this.value = null;\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n this.updateSelectedOption(this.value);\n this.updateEditableLabel();\n this.onClear.emit(event);\n }\n}\nDropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Dropdown, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i3.FilterService }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\nDropdown.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Dropdown, selector: \"p-dropdown\", inputs: { scrollHeight: \"scrollHeight\", filter: \"filter\", name: \"name\", style: \"style\", panelStyle: \"panelStyle\", styleClass: \"styleClass\", panelStyleClass: \"panelStyleClass\", readonly: \"readonly\", required: \"required\", editable: \"editable\", appendTo: \"appendTo\", tabindex: \"tabindex\", placeholder: \"placeholder\", filterPlaceholder: \"filterPlaceholder\", filterLocale: \"filterLocale\", inputId: \"inputId\", selectId: \"selectId\", dataKey: \"dataKey\", filterBy: \"filterBy\", autofocus: \"autofocus\", resetFilterOnHide: \"resetFilterOnHide\", dropdownIcon: \"dropdownIcon\", optionLabel: \"optionLabel\", optionValue: \"optionValue\", optionDisabled: \"optionDisabled\", optionGroupLabel: \"optionGroupLabel\", optionGroupChildren: \"optionGroupChildren\", autoDisplayFirst: \"autoDisplayFirst\", group: \"group\", showClear: \"showClear\", emptyFilterMessage: \"emptyFilterMessage\", emptyMessage: \"emptyMessage\", lazy: \"lazy\", virtualScroll: \"virtualScroll\", virtualScrollItemSize: \"virtualScrollItemSize\", virtualScrollOptions: \"virtualScrollOptions\", overlayOptions: \"overlayOptions\", ariaFilterLabel: \"ariaFilterLabel\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", filterMatchMode: \"filterMatchMode\", maxlength: \"maxlength\", tooltip: \"tooltip\", tooltipPosition: \"tooltipPosition\", tooltipPositionStyle: \"tooltipPositionStyle\", tooltipStyleClass: \"tooltipStyleClass\", autofocusFilter: \"autofocusFilter\", overlayDirection: \"overlayDirection\", disabled: \"disabled\", itemSize: \"itemSize\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", options: \"options\", filterValue: \"filterValue\" }, outputs: { onChange: \"onChange\", onFilter: \"onFilter\", onFocus: \"onFocus\", onBlur: \"onBlur\", onClick: \"onClick\", onShow: \"onShow\", onHide: \"onHide\", onClear: \"onClear\", onLazyLoad: \"onLazyLoad\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled\", \"class.p-inputwrapper-focus\": \"focused || overlayVisible\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [DROPDOWN_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"filterViewChild\", first: true, predicate: [\"filter\"], descendants: true }, { propertyName: \"accessibleViewChild\", first: true, predicate: [\"in\"], descendants: true }, { propertyName: \"editableInputViewChild\", first: true, predicate: [\"editableInput\"], descendants: true }, { propertyName: \"itemsViewChild\", first: true, predicate: [\"items\"], descendants: true }, { propertyName: \"scroller\", first: true, predicate: [\"scroller\"], descendants: true }, { propertyName: \"overlayViewChild\", first: true, predicate: [\"overlay\"], descendants: true }], ngImport: i0, template: `\n \n
\n \n
\n \n {{ label || 'empty' }}\n \n \n {{ placeholder || 'empty' }}\n \n \n
\n \n
\n \n \n
\n \n
\n \n \n \n \n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n
    \n \n \n
  • \n {{ getOptionGroupLabel(optgroup) || 'empty' }}\n \n
  • \n \n
    \n
    \n \n \n \n \n \n \n \n \n
  • \n \n {{ emptyFilterMessageLabel }}\n \n \n
  • \n
  • \n \n {{ emptyMessageLabel }}\n \n \n
  • \n
\n
\n
\n \n
\n
\n \n \n `, isInline: true, styles: [\".p-dropdown{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.p-dropdown-clear-icon{position:absolute;top:50%;margin-top:-.5rem}.p-dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-dropdown-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-dropdown-label-empty{overflow:hidden;visibility:hidden}input.p-dropdown-label{cursor:default}.p-dropdown-items-wrapper{overflow:auto}.p-dropdown-item{cursor:pointer;font-weight:400;white-space:nowrap;position:relative;overflow:hidden}.p-dropdown-items{margin:0;padding:0;list-style-type:none}.p-dropdown-filter{width:100%}.p-dropdown-filter-container{position:relative}.p-dropdown-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-dropdown{display:flex}.p-fluid .p-dropdown .p-dropdown-label{width:1%}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i4.Overlay, selector: \"p-overlay\", inputs: [\"visible\", \"mode\", \"style\", \"styleClass\", \"contentStyle\", \"contentStyleClass\", \"target\", \"appendTo\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"listener\", \"responsive\", \"options\"], outputs: [\"visibleChange\", \"onBeforeShow\", \"onShow\", \"onBeforeHide\", \"onHide\", \"onAnimationStart\", \"onAnimationDone\"] }, { kind: \"directive\", type: i3.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"directive\", type: i5.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"component\", type: i6.Scroller, selector: \"p-scroller\", inputs: [\"id\", \"style\", \"styleClass\", \"tabindex\", \"items\", \"itemSize\", \"scrollHeight\", \"scrollWidth\", \"orientation\", \"step\", \"delay\", \"resizeDelay\", \"appendOnly\", \"inline\", \"lazy\", \"disabled\", \"loaderDisabled\", \"columns\", \"showSpacer\", \"showLoader\", \"numToleratedItems\", \"loading\", \"autoSize\", \"trackBy\", \"options\"], outputs: [\"onLazyLoad\", \"onScroll\", \"onScrollIndexChange\"] }, { kind: \"directive\", type: i7.AutoFocus, selector: \"[pAutoFocus]\", inputs: [\"autofocus\"] }, { kind: \"component\", type: DropdownItem, selector: \"p-dropdownItem\", inputs: [\"option\", \"selected\", \"label\", \"disabled\", \"visible\", \"itemSize\", \"template\"], outputs: [\"onClick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Dropdown, decorators: [{\n type: Component,\n args: [{ selector: 'p-dropdown', template: `\n \n
\n \n
\n \n {{ label || 'empty' }}\n \n \n {{ placeholder || 'empty' }}\n \n \n
\n \n
\n \n \n
\n \n
\n \n \n \n \n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n
    \n \n \n
  • \n {{ getOptionGroupLabel(optgroup) || 'empty' }}\n \n
  • \n \n
    \n
    \n \n \n \n \n \n \n \n \n
  • \n \n {{ emptyFilterMessageLabel }}\n \n \n
  • \n
  • \n \n {{ emptyMessageLabel }}\n \n \n
  • \n
\n
\n
\n \n
\n
\n \n \n `, host: {\n class: 'p-element p-inputwrapper',\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': 'focused || overlayVisible'\n }, providers: [DROPDOWN_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".p-dropdown{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.p-dropdown-clear-icon{position:absolute;top:50%;margin-top:-.5rem}.p-dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-dropdown-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-dropdown-label-empty{overflow:hidden;visibility:hidden}input.p-dropdown-label{cursor:default}.p-dropdown-items-wrapper{overflow:auto}.p-dropdown-item{cursor:pointer;font-weight:400;white-space:nowrap;position:relative;overflow:hidden}.p-dropdown-items{margin:0;padding:0;list-style-type:none}.p-dropdown-filter{width:100%}.p-dropdown-filter-container{position:relative}.p-dropdown-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-dropdown{display:flex}.p-fluid .p-dropdown .p-dropdown-label{width:1%}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i3.FilterService }, { type: i3.PrimeNGConfig }]; }, propDecorators: { scrollHeight: [{\n type: Input\n }], filter: [{\n type: Input\n }], name: [{\n type: Input\n }], style: [{\n type: Input\n }], panelStyle: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], panelStyleClass: [{\n type: Input\n }], readonly: [{\n type: Input\n }], required: [{\n type: Input\n }], editable: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], filterPlaceholder: [{\n type: Input\n }], filterLocale: [{\n type: Input\n }], inputId: [{\n type: Input\n }], selectId: [{\n type: Input\n }], dataKey: [{\n type: Input\n }], filterBy: [{\n type: Input\n }], autofocus: [{\n type: Input\n }], resetFilterOnHide: [{\n type: Input\n }], dropdownIcon: [{\n type: Input\n }], optionLabel: [{\n type: Input\n }], optionValue: [{\n type: Input\n }], optionDisabled: [{\n type: Input\n }], optionGroupLabel: [{\n type: Input\n }], optionGroupChildren: [{\n type: Input\n }], autoDisplayFirst: [{\n type: Input\n }], group: [{\n type: Input\n }], showClear: [{\n type: Input\n }], emptyFilterMessage: [{\n type: Input\n }], emptyMessage: [{\n type: Input\n }], lazy: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], virtualScrollItemSize: [{\n type: Input\n }], virtualScrollOptions: [{\n type: Input\n }], overlayOptions: [{\n type: Input\n }], ariaFilterLabel: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], filterMatchMode: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], tooltipPosition: [{\n type: Input\n }], tooltipPositionStyle: [{\n type: Input\n }], tooltipStyleClass: [{\n type: Input\n }], autofocusFilter: [{\n type: Input\n }], overlayDirection: [{\n type: Input\n }], onChange: [{\n type: Output\n }], onFilter: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onClick: [{\n type: Output\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], onClear: [{\n type: Output\n }], onLazyLoad: [{\n type: Output\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }], filterViewChild: [{\n type: ViewChild,\n args: ['filter']\n }], accessibleViewChild: [{\n type: ViewChild,\n args: ['in']\n }], editableInputViewChild: [{\n type: ViewChild,\n args: ['editableInput']\n }], itemsViewChild: [{\n type: ViewChild,\n args: ['items']\n }], scroller: [{\n type: ViewChild,\n args: ['scroller']\n }], overlayViewChild: [{\n type: ViewChild,\n args: ['overlay']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], disabled: [{\n type: Input\n }], itemSize: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], options: [{\n type: Input\n }], filterValue: [{\n type: Input\n }] } });\nclass DropdownModule {\n}\nDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: DropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: DropdownModule, declarations: [Dropdown, DropdownItem], imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, AutoFocusModule], exports: [Dropdown, OverlayModule, SharedModule, ScrollerModule] });\nDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: DropdownModule, imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, AutoFocusModule, OverlayModule, SharedModule, ScrollerModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: DropdownModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, AutoFocusModule],\n exports: [Dropdown, OverlayModule, SharedModule, ScrollerModule],\n declarations: [Dropdown, DropdownItem]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DROPDOWN_VALUE_ACCESSOR, Dropdown, DropdownItem, DropdownModule };\n//# sourceMappingURL=primeng-dropdown.mjs.map\n//# sourceMappingURL=primeng-dropdown.mjs.map\n","import * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';\n\nclass ProgressBar {\n constructor() {\n this.showValue = true;\n this.unit = '%';\n this.mode = 'determinate';\n }\n}\nProgressBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component });\nProgressBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: ProgressBar, selector: \"p-progressBar\", inputs: { value: \"value\", showValue: \"showValue\", style: \"style\", styleClass: \"styleClass\", unit: \"unit\", mode: \"mode\", color: \"color\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n
\n
{{ value }}{{ unit }}
\n
\n
\n
\n
\n \n `, isInline: true, styles: [\".p-progressbar{position:relative;overflow:hidden}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;border:0 none;display:flex;align-items:center;justify-content:center;overflow:hidden}.p-progressbar-determinate .p-progressbar-label{display:inline-flex}.p-progressbar-determinate .p-progressbar-value-animate{transition:width 1s ease-in-out}.p-progressbar-indeterminate .p-progressbar-value:before{content:\\\"\\\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.p-progressbar-indeterminate .p-progressbar-value:after{content:\\\"\\\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s}@keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ProgressBar, decorators: [{\n type: Component,\n args: [{ selector: 'p-progressBar', template: `\n \n
\n
{{ value }}{{ unit }}
\n
\n
\n
\n
\n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-progressbar{position:relative;overflow:hidden}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;border:0 none;display:flex;align-items:center;justify-content:center;overflow:hidden}.p-progressbar-determinate .p-progressbar-label{display:inline-flex}.p-progressbar-determinate .p-progressbar-value-animate{transition:width 1s ease-in-out}.p-progressbar-indeterminate .p-progressbar-value:before{content:\\\"\\\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.p-progressbar-indeterminate .p-progressbar-value:after{content:\\\"\\\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s}@keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}\\n\"] }]\n }], propDecorators: { value: [{\n type: Input\n }], showValue: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], unit: [{\n type: Input\n }], mode: [{\n type: Input\n }], color: [{\n type: Input\n }] } });\nclass ProgressBarModule {\n}\nProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: ProgressBarModule, declarations: [ProgressBar], imports: [CommonModule], exports: [ProgressBar] });\nProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ProgressBarModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ProgressBarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [ProgressBar],\n declarations: [ProgressBar]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ProgressBar, ProgressBarModule };\n//# sourceMappingURL=primeng-progressbar.mjs.map\n//# sourceMappingURL=primeng-progressbar.mjs.map\n","import * as i4 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i2 from '@angular/common/http';\nimport { HttpEventType } from '@angular/common/http';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';\nimport * as i3 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i5 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport { DomHandler } from 'primeng/dom';\nimport * as i7 from 'primeng/messages';\nimport { MessagesModule } from 'primeng/messages';\nimport * as i6 from 'primeng/progressbar';\nimport { ProgressBarModule } from 'primeng/progressbar';\nimport * as i8 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i1 from '@angular/platform-browser';\n\nclass FileUpload {\n constructor(document, platformId, renderer, el, sanitizer, zone, http, cd, config) {\n this.document = document;\n this.platformId = platformId;\n this.renderer = renderer;\n this.el = el;\n this.sanitizer = sanitizer;\n this.zone = zone;\n this.http = http;\n this.cd = cd;\n this.config = config;\n this.method = 'post';\n this.invalidFileSizeMessageSummary = '{0}: Invalid file size, ';\n this.invalidFileSizeMessageDetail = 'maximum upload size is {0}.';\n this.invalidFileTypeMessageSummary = '{0}: Invalid file type, ';\n this.invalidFileTypeMessageDetail = 'allowed file types: {0}.';\n this.invalidFileLimitMessageDetail = 'limit is {0} at most.';\n this.invalidFileLimitMessageSummary = 'Maximum number of files exceeded, ';\n this.previewWidth = 50;\n this.chooseIcon = 'pi pi-plus';\n this.uploadIcon = 'pi pi-upload';\n this.cancelIcon = 'pi pi-times';\n this.showUploadButton = true;\n this.showCancelButton = true;\n this.mode = 'advanced';\n this.onBeforeUpload = new EventEmitter();\n this.onSend = new EventEmitter();\n this.onUpload = new EventEmitter();\n this.onError = new EventEmitter();\n this.onClear = new EventEmitter();\n this.onRemove = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onProgress = new EventEmitter();\n this.uploadHandler = new EventEmitter();\n this.onImageError = new EventEmitter();\n this._files = [];\n this.progress = 0;\n this.uploadedFileCount = 0;\n }\n set files(files) {\n this._files = [];\n for (let i = 0; i < files.length; i++) {\n let file = files[i];\n if (this.validate(file)) {\n if (this.isImage(file)) {\n file.objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(files[i]));\n }\n this._files.push(files[i]);\n }\n }\n }\n get files() {\n return this._files;\n }\n get basicButtonLabel() {\n if (this.auto || !this.hasFiles()) {\n return this.chooseLabel;\n }\n return this.uploadLabel ?? this.files[0].name;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'file':\n this.fileTemplate = item.template;\n break;\n case 'content':\n this.contentTemplate = item.template;\n break;\n case 'toolbar':\n this.toolbarTemplate = item.template;\n break;\n default:\n this.fileTemplate = item.template;\n break;\n }\n });\n }\n ngOnInit() {\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.cd.markForCheck();\n });\n }\n ngAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.mode === 'advanced') {\n this.zone.runOutsideAngular(() => {\n if (this.content) {\n this.dragOverListener = this.renderer.listen(this.content.nativeElement, 'dragover', this.onDragOver.bind(this));\n }\n });\n }\n }\n }\n choose() {\n this.advancedFileInput.nativeElement.click();\n }\n onFileSelect(event) {\n if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {\n this.duplicateIEEvent = false;\n return;\n }\n this.msgs = [];\n if (!this.multiple) {\n this.files = [];\n }\n let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n for (let i = 0; i < files.length; i++) {\n let file = files[i];\n if (!this.isFileSelected(file)) {\n if (this.validate(file)) {\n if (this.isImage(file)) {\n file.objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(files[i]));\n }\n this.files.push(files[i]);\n }\n }\n }\n this.onSelect.emit({ originalEvent: event, files: files, currentFiles: this.files });\n if (this.fileLimit && this.mode == 'advanced') {\n this.checkFileLimit();\n }\n if (this.hasFiles() && this.auto && (!(this.mode === 'advanced') || !this.isFileLimitExceeded())) {\n this.upload();\n }\n if (event.type !== 'drop' && this.isIE11()) {\n this.clearIEInput();\n }\n else {\n this.clearInputElement();\n }\n }\n isFileSelected(file) {\n for (let sFile of this.files) {\n if (sFile.name + sFile.type + sFile.size === file.name + file.type + file.size) {\n return true;\n }\n }\n return false;\n }\n isIE11() {\n if (isPlatformBrowser(this.platformId)) {\n return !!this.document.defaultView['MSInputMethodContext'] && !!this.document['documentMode'];\n }\n }\n validate(file) {\n this.msgs = [];\n if (this.accept && !this.isFileTypeValid(file)) {\n this.msgs.push({\n severity: 'error',\n summary: this.invalidFileTypeMessageSummary.replace('{0}', file.name),\n detail: this.invalidFileTypeMessageDetail.replace('{0}', this.accept)\n });\n return false;\n }\n if (this.maxFileSize && file.size > this.maxFileSize) {\n this.msgs.push({\n severity: 'error',\n summary: this.invalidFileSizeMessageSummary.replace('{0}', file.name),\n detail: this.invalidFileSizeMessageDetail.replace('{0}', this.formatSize(this.maxFileSize))\n });\n return false;\n }\n return true;\n }\n isFileTypeValid(file) {\n let acceptableTypes = this.accept.split(',').map((type) => type.trim());\n for (let type of acceptableTypes) {\n let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type) : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();\n if (acceptable) {\n return true;\n }\n }\n return false;\n }\n getTypeClass(fileType) {\n return fileType.substring(0, fileType.indexOf('/'));\n }\n isWildcard(fileType) {\n return fileType.indexOf('*') !== -1;\n }\n getFileExtension(file) {\n return '.' + file.name.split('.').pop();\n }\n isImage(file) {\n return /^image\\//.test(file.type);\n }\n onImageLoad(img) {\n window.URL.revokeObjectURL(img.src);\n }\n upload() {\n if (this.customUpload) {\n if (this.fileLimit) {\n this.uploadedFileCount += this.files.length;\n }\n this.uploadHandler.emit({\n files: this.files\n });\n this.cd.markForCheck();\n }\n else {\n this.uploading = true;\n this.msgs = [];\n let formData = new FormData();\n this.onBeforeUpload.emit({\n formData: formData\n });\n for (let i = 0; i < this.files.length; i++) {\n formData.append(this.name, this.files[i], this.files[i].name);\n }\n this.http[this.method](this.url, formData, {\n headers: this.headers,\n reportProgress: true,\n observe: 'events',\n withCredentials: this.withCredentials\n }).subscribe((event) => {\n switch (event.type) {\n case HttpEventType.Sent:\n this.onSend.emit({\n originalEvent: event,\n formData: formData\n });\n break;\n case HttpEventType.Response:\n this.uploading = false;\n this.progress = 0;\n if (event['status'] >= 200 && event['status'] < 300) {\n if (this.fileLimit) {\n this.uploadedFileCount += this.files.length;\n }\n this.onUpload.emit({ originalEvent: event, files: this.files });\n }\n else {\n this.onError.emit({ files: this.files });\n }\n this.clear();\n break;\n case HttpEventType.UploadProgress: {\n if (event['loaded']) {\n this.progress = Math.round((event['loaded'] * 100) / event['total']);\n }\n this.onProgress.emit({ originalEvent: event, progress: this.progress });\n break;\n }\n }\n this.cd.markForCheck();\n }, (error) => {\n this.uploading = false;\n this.onError.emit({ files: this.files, error: error });\n });\n }\n }\n clear() {\n this.files = [];\n this.onClear.emit();\n this.clearInputElement();\n this.cd.markForCheck();\n }\n remove(event, index) {\n this.clearInputElement();\n this.onRemove.emit({ originalEvent: event, file: this.files[index] });\n this.files.splice(index, 1);\n this.checkFileLimit();\n }\n isFileLimitExceeded() {\n if (this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount && this.focus) {\n this.focus = false;\n }\n return this.fileLimit && this.fileLimit < this.files.length + this.uploadedFileCount;\n }\n isChooseDisabled() {\n return this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount;\n }\n checkFileLimit() {\n this.msgs = [];\n if (this.isFileLimitExceeded()) {\n this.msgs.push({\n severity: 'error',\n summary: this.invalidFileLimitMessageSummary.replace('{0}', this.fileLimit.toString()),\n detail: this.invalidFileLimitMessageDetail.replace('{0}', this.fileLimit.toString())\n });\n }\n else {\n this.msgs = [];\n }\n }\n clearInputElement() {\n if (this.advancedFileInput && this.advancedFileInput.nativeElement) {\n this.advancedFileInput.nativeElement.value = '';\n }\n if (this.basicFileInput && this.basicFileInput.nativeElement) {\n this.basicFileInput.nativeElement.value = '';\n }\n }\n clearIEInput() {\n if (this.advancedFileInput && this.advancedFileInput.nativeElement) {\n this.duplicateIEEvent = true; //IE11 fix to prevent onFileChange trigger again\n this.advancedFileInput.nativeElement.value = '';\n }\n }\n hasFiles() {\n return this.files && this.files.length > 0;\n }\n onDragEnter(e) {\n if (!this.disabled) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n onDragOver(e) {\n if (!this.disabled) {\n DomHandler.addClass(this.content.nativeElement, 'p-fileupload-highlight');\n this.dragHighlight = true;\n e.stopPropagation();\n e.preventDefault();\n }\n }\n onDragLeave(event) {\n if (!this.disabled) {\n DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');\n }\n }\n onDrop(event) {\n if (!this.disabled) {\n DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');\n event.stopPropagation();\n event.preventDefault();\n let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n let allowDrop = this.multiple || (files && files.length === 1);\n if (allowDrop) {\n this.onFileSelect(event);\n }\n }\n }\n onFocus() {\n this.focus = true;\n }\n onBlur() {\n this.focus = false;\n }\n formatSize(bytes) {\n if (bytes == 0) {\n return '0 B';\n }\n let k = 1000, dm = 3, sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n }\n onBasicUploaderClick() {\n if (this.hasFiles())\n this.upload();\n else\n this.basicFileInput.nativeElement.click();\n }\n onBasicKeydown(event) {\n switch (event.code) {\n case 'Space':\n case 'Enter':\n this.onBasicUploaderClick();\n event.preventDefault();\n break;\n }\n }\n imageError(event) {\n this.onImageError.emit(event);\n }\n getBlockableElement() {\n return this.el.nativeElement.children[0];\n }\n get chooseButtonLabel() {\n return this.chooseLabel || this.config.getTranslation(TranslationKeys.CHOOSE);\n }\n get uploadButtonLabel() {\n return this.uploadLabel || this.config.getTranslation(TranslationKeys.UPLOAD);\n }\n get cancelButtonLabel() {\n return this.cancelLabel || this.config.getTranslation(TranslationKeys.CANCEL);\n }\n ngOnDestroy() {\n if (this.content && this.content.nativeElement) {\n this.dragOverListener();\n this.dragOverListener = null;\n }\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n }\n}\nFileUpload.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: FileUpload, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.NgZone }, { token: i2.HttpClient }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\nFileUpload.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: FileUpload, selector: \"p-fileUpload\", inputs: { name: \"name\", url: \"url\", method: \"method\", multiple: \"multiple\", accept: \"accept\", disabled: \"disabled\", auto: \"auto\", withCredentials: \"withCredentials\", maxFileSize: \"maxFileSize\", invalidFileSizeMessageSummary: \"invalidFileSizeMessageSummary\", invalidFileSizeMessageDetail: \"invalidFileSizeMessageDetail\", invalidFileTypeMessageSummary: \"invalidFileTypeMessageSummary\", invalidFileTypeMessageDetail: \"invalidFileTypeMessageDetail\", invalidFileLimitMessageDetail: \"invalidFileLimitMessageDetail\", invalidFileLimitMessageSummary: \"invalidFileLimitMessageSummary\", style: \"style\", styleClass: \"styleClass\", previewWidth: \"previewWidth\", chooseLabel: \"chooseLabel\", uploadLabel: \"uploadLabel\", cancelLabel: \"cancelLabel\", chooseIcon: \"chooseIcon\", uploadIcon: \"uploadIcon\", cancelIcon: \"cancelIcon\", showUploadButton: \"showUploadButton\", showCancelButton: \"showCancelButton\", mode: \"mode\", headers: \"headers\", customUpload: \"customUpload\", fileLimit: \"fileLimit\", uploadStyleClass: \"uploadStyleClass\", cancelStyleClass: \"cancelStyleClass\", removeStyleClass: \"removeStyleClass\", chooseStyleClass: \"chooseStyleClass\", files: \"files\" }, outputs: { onBeforeUpload: \"onBeforeUpload\", onSend: \"onSend\", onUpload: \"onUpload\", onError: \"onError\", onClear: \"onClear\", onRemove: \"onRemove\", onSelect: \"onSelect\", onProgress: \"onProgress\", uploadHandler: \"uploadHandler\", onImageError: \"onImageError\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"advancedFileInput\", first: true, predicate: [\"advancedfileinput\"], descendants: true }, { propertyName: \"basicFileInput\", first: true, predicate: [\"basicfileinput\"], descendants: true }, { propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true }], ngImport: i0, template: `\n
\n
\n \n \n \n {{ chooseButtonLabel }}\n \n\n \n \n\n \n
\n
\n \n\n \n\n
\n
\n
\n
\n
{{ file.name }}
\n
{{ formatSize(file.size) }}
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n \n {{ basicButtonLabel }}\n \n \n
\n `, isInline: true, styles: [\".p-fileupload-content{position:relative}.p-fileupload-row{display:flex;align-items:center}.p-fileupload-row>div{flex:1 1 auto;width:25%}.p-fileupload-row>div:last-child{text-align:right}.p-fileupload-content .p-progressbar{width:100%;position:absolute;top:0;left:0}.p-button.p-fileupload-choose{position:relative;overflow:hidden}.p-button.p-fileupload-choose input[type=file],.p-fileupload-choose.p-fileupload-choose-selected input[type=file]{display:none}.p-fluid .p-fileupload .p-button{width:auto}.p-fileupload-filename{word-break:break-all}\\n\"], dependencies: [{ kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i4.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i5.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }, { kind: \"component\", type: i5.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"style\", \"styleClass\", \"badgeClass\", \"ariaLabel\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"component\", type: i6.ProgressBar, selector: \"p-progressBar\", inputs: [\"value\", \"showValue\", \"style\", \"styleClass\", \"unit\", \"mode\", \"color\"] }, { kind: \"component\", type: i7.Messages, selector: \"p-messages\", inputs: [\"value\", \"closable\", \"style\", \"styleClass\", \"enableService\", \"key\", \"escape\", \"severity\", \"showTransitionOptions\", \"hideTransitionOptions\"], outputs: [\"valueChange\"] }, { kind: \"directive\", type: i8.Ripple, selector: \"[pRipple]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: FileUpload, decorators: [{\n type: Component,\n args: [{ selector: 'p-fileUpload', template: `\n
\n
\n \n \n \n {{ chooseButtonLabel }}\n \n\n \n \n\n \n
\n
\n \n\n \n\n
\n
\n
\n
\n
{{ file.name }}
\n
{{ formatSize(file.size) }}
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n \n {{ basicButtonLabel }}\n \n \n
\n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-fileupload-content{position:relative}.p-fileupload-row{display:flex;align-items:center}.p-fileupload-row>div{flex:1 1 auto;width:25%}.p-fileupload-row>div:last-child{text-align:right}.p-fileupload-content .p-progressbar{width:100%;position:absolute;top:0;left:0}.p-button.p-fileupload-choose{position:relative;overflow:hidden}.p-button.p-fileupload-choose input[type=file],.p-fileupload-choose.p-fileupload-choose-selected input[type=file]{display:none}.p-fluid .p-fileupload .p-button{width:auto}.p-fileupload-filename{word-break:break-all}\\n\"] }]\n }], ctorParameters: function () { return [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i0.NgZone }, { type: i2.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }]; }, propDecorators: { name: [{\n type: Input\n }], url: [{\n type: Input\n }], method: [{\n type: Input\n }], multiple: [{\n type: Input\n }], accept: [{\n type: Input\n }], disabled: [{\n type: Input\n }], auto: [{\n type: Input\n }], withCredentials: [{\n type: Input\n }], maxFileSize: [{\n type: Input\n }], invalidFileSizeMessageSummary: [{\n type: Input\n }], invalidFileSizeMessageDetail: [{\n type: Input\n }], invalidFileTypeMessageSummary: [{\n type: Input\n }], invalidFileTypeMessageDetail: [{\n type: Input\n }], invalidFileLimitMessageDetail: [{\n type: Input\n }], invalidFileLimitMessageSummary: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], previewWidth: [{\n type: Input\n }], chooseLabel: [{\n type: Input\n }], uploadLabel: [{\n type: Input\n }], cancelLabel: [{\n type: Input\n }], chooseIcon: [{\n type: Input\n }], uploadIcon: [{\n type: Input\n }], cancelIcon: [{\n type: Input\n }], showUploadButton: [{\n type: Input\n }], showCancelButton: [{\n type: Input\n }], mode: [{\n type: Input\n }], headers: [{\n type: Input\n }], customUpload: [{\n type: Input\n }], fileLimit: [{\n type: Input\n }], uploadStyleClass: [{\n type: Input\n }], cancelStyleClass: [{\n type: Input\n }], removeStyleClass: [{\n type: Input\n }], chooseStyleClass: [{\n type: Input\n }], onBeforeUpload: [{\n type: Output\n }], onSend: [{\n type: Output\n }], onUpload: [{\n type: Output\n }], onError: [{\n type: Output\n }], onClear: [{\n type: Output\n }], onRemove: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onProgress: [{\n type: Output\n }], uploadHandler: [{\n type: Output\n }], onImageError: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], advancedFileInput: [{\n type: ViewChild,\n args: ['advancedfileinput']\n }], basicFileInput: [{\n type: ViewChild,\n args: ['basicfileinput']\n }], content: [{\n type: ViewChild,\n args: ['content']\n }], files: [{\n type: Input\n }] } });\nclass FileUploadModule {\n}\nFileUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFileUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: FileUploadModule, declarations: [FileUpload], imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule], exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });\nFileUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: FileUploadModule, imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: FileUploadModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule],\n exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule],\n declarations: [FileUpload]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FileUpload, FileUploadModule };\n//# sourceMappingURL=primeng-fileupload.mjs.map\n//# sourceMappingURL=primeng-fileupload.mjs.map\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, ViewChild, Output, ContentChildren, PLATFORM_ID, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, isPlatformBrowser, CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { ZIndexUtils, UniqueComponentId } from 'primeng/utils';\nimport { DomHandler } from 'primeng/dom';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { trigger, transition, style, animate } from '@angular/animations';\n\nclass Galleria {\n constructor(document, element, cd, config) {\n this.document = document;\n this.element = element;\n this.cd = cd;\n this.config = config;\n this.fullScreen = false;\n this.numVisible = 3;\n this.showItemNavigators = false;\n this.showThumbnailNavigators = true;\n this.showItemNavigatorsOnHover = false;\n this.changeItemOnIndicatorHover = false;\n this.circular = false;\n this.autoPlay = false;\n this.transitionInterval = 4000;\n this.showThumbnails = true;\n this.thumbnailsPosition = 'bottom';\n this.verticalThumbnailViewPortHeight = '300px';\n this.showIndicators = false;\n this.showIndicatorsOnItem = false;\n this.indicatorsPosition = 'bottom';\n this.baseZIndex = 0;\n this.showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n this.hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n this.activeIndexChange = new EventEmitter();\n this.visibleChange = new EventEmitter();\n this._visible = false;\n this._activeIndex = 0;\n this.maskVisible = false;\n }\n get activeIndex() {\n return this._activeIndex;\n }\n set activeIndex(activeIndex) {\n this._activeIndex = activeIndex;\n }\n get visible() {\n return this._visible;\n }\n set visible(visible) {\n this._visible = visible;\n if (this._visible && !this.maskVisible) {\n this.maskVisible = true;\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerFacet = item.template;\n break;\n case 'footer':\n this.footerFacet = item.template;\n break;\n case 'indicator':\n this.indicatorFacet = item.template;\n break;\n case 'caption':\n this.captionFacet = item.template;\n break;\n }\n });\n }\n ngOnChanges(simpleChanges) {\n if (simpleChanges.value && simpleChanges.value.currentValue?.length < this.numVisible) {\n this.numVisible = simpleChanges.value.currentValue.length;\n }\n }\n onMaskHide() {\n this.visible = false;\n this.visibleChange.emit(false);\n }\n onActiveItemChange(index) {\n if (this.activeIndex !== index) {\n this.activeIndex = index;\n this.activeIndexChange.emit(index);\n }\n }\n onAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.enableModality();\n break;\n case 'void':\n DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');\n break;\n }\n }\n onAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n this.disableModality();\n break;\n }\n }\n enableModality() {\n DomHandler.addClass(this.document.body, 'p-overflow-hidden');\n this.cd.markForCheck();\n if (this.mask) {\n ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n }\n }\n disableModality() {\n DomHandler.removeClass(this.document.body, 'p-overflow-hidden');\n this.maskVisible = false;\n this.cd.markForCheck();\n if (this.mask) {\n ZIndexUtils.clear(this.mask.nativeElement);\n }\n }\n ngOnDestroy() {\n if (this.fullScreen) {\n DomHandler.removeClass(this.document.body, 'p-overflow-hidden');\n }\n if (this.mask) {\n this.disableModality();\n }\n }\n}\nGalleria.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Galleria, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\nGalleria.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Galleria, selector: \"p-galleria\", inputs: { activeIndex: \"activeIndex\", fullScreen: \"fullScreen\", id: \"id\", value: \"value\", numVisible: \"numVisible\", responsiveOptions: \"responsiveOptions\", showItemNavigators: \"showItemNavigators\", showThumbnailNavigators: \"showThumbnailNavigators\", showItemNavigatorsOnHover: \"showItemNavigatorsOnHover\", changeItemOnIndicatorHover: \"changeItemOnIndicatorHover\", circular: \"circular\", autoPlay: \"autoPlay\", transitionInterval: \"transitionInterval\", showThumbnails: \"showThumbnails\", thumbnailsPosition: \"thumbnailsPosition\", verticalThumbnailViewPortHeight: \"verticalThumbnailViewPortHeight\", showIndicators: \"showIndicators\", showIndicatorsOnItem: \"showIndicatorsOnItem\", indicatorsPosition: \"indicatorsPosition\", baseZIndex: \"baseZIndex\", maskClass: \"maskClass\", containerClass: \"containerClass\", containerStyle: \"containerStyle\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", visible: \"visible\" }, outputs: { activeIndexChange: \"activeIndexChange\", visibleChange: \"visibleChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"mask\", first: true, predicate: [\"mask\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
\n
\n \n
\n
\n\n \n \n \n `, isInline: true, styles: [\".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(function () { return i2.NgClass; }), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i2.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i2.NgStyle; }), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(function () { return GalleriaContent; }), selector: \"p-galleriaContent\", inputs: [\"activeIndex\", \"value\", \"numVisible\"], outputs: [\"maskHide\", \"activeItemChange\"] }], animations: [\n trigger('animation', [\n transition('void => visible', [style({ transform: 'scale(0.7)', opacity: 0 }), animate('{{showTransitionParams}}')]),\n transition('visible => void', [animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Galleria, decorators: [{\n type: Component,\n args: [{ selector: 'p-galleria', template: `\n
\n
\n \n
\n
\n\n \n \n \n `, animations: [\n trigger('animation', [\n transition('void => visible', [style({ transform: 'scale(0.7)', opacity: 0 }), animate('{{showTransitionParams}}')]),\n transition('visible => void', [animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))])\n ])\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\\n\"] }]\n }], ctorParameters: function () { return [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { activeIndex: [{\n type: Input\n }], fullScreen: [{\n type: Input\n }], id: [{\n type: Input\n }], value: [{\n type: Input\n }], numVisible: [{\n type: Input\n }], responsiveOptions: [{\n type: Input\n }], showItemNavigators: [{\n type: Input\n }], showThumbnailNavigators: [{\n type: Input\n }], showItemNavigatorsOnHover: [{\n type: Input\n }], changeItemOnIndicatorHover: [{\n type: Input\n }], circular: [{\n type: Input\n }], autoPlay: [{\n type: Input\n }], transitionInterval: [{\n type: Input\n }], showThumbnails: [{\n type: Input\n }], thumbnailsPosition: [{\n type: Input\n }], verticalThumbnailViewPortHeight: [{\n type: Input\n }], showIndicators: [{\n type: Input\n }], showIndicatorsOnItem: [{\n type: Input\n }], indicatorsPosition: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], maskClass: [{\n type: Input\n }], containerClass: [{\n type: Input\n }], containerStyle: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], mask: [{\n type: ViewChild,\n args: ['mask']\n }], visible: [{\n type: Input\n }], activeIndexChange: [{\n type: Output\n }], visibleChange: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass GalleriaContent {\n constructor(galleria, cd, differs) {\n this.galleria = galleria;\n this.cd = cd;\n this.differs = differs;\n this.value = [];\n this.maskHide = new EventEmitter();\n this.activeItemChange = new EventEmitter();\n this.id = this.galleria.id || UniqueComponentId();\n this._activeIndex = 0;\n this.slideShowActive = true;\n this.differ = this.differs.find(this.galleria).create();\n }\n get activeIndex() {\n return this._activeIndex;\n }\n set activeIndex(activeIndex) {\n this._activeIndex = activeIndex;\n }\n ngDoCheck() {\n const changes = this.differ.diff(this.galleria);\n if (changes?.forEachItem.length > 0) {\n // Because we change the properties of the parent component,\n // and the children take our entity from the injector.\n // We can tell the children to redraw themselves when we change the properties of the parent component.\n // Since we have an onPush strategy\n this.cd.markForCheck();\n }\n }\n galleriaClass() {\n const thumbnailsPosClass = this.galleria.showThumbnails && this.getPositionClass('p-galleria-thumbnails', this.galleria.thumbnailsPosition);\n const indicatorPosClass = this.galleria.showIndicators && this.getPositionClass('p-galleria-indicators', this.galleria.indicatorsPosition);\n return (this.galleria.containerClass ? this.galleria.containerClass + ' ' : '') + (thumbnailsPosClass ? thumbnailsPosClass + ' ' : '') + (indicatorPosClass ? indicatorPosClass + ' ' : '');\n }\n startSlideShow() {\n this.interval = setInterval(() => {\n let activeIndex = this.galleria.circular && this.value.length - 1 === this.activeIndex ? 0 : this.activeIndex + 1;\n this.onActiveIndexChange(activeIndex);\n this.activeIndex = activeIndex;\n }, this.galleria.transitionInterval);\n this.slideShowActive = true;\n }\n stopSlideShow() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n this.slideShowActive = false;\n }\n getPositionClass(preClassName, position) {\n const positions = ['top', 'left', 'bottom', 'right'];\n const pos = positions.find((item) => item === position);\n return pos ? `${preClassName}-${pos}` : '';\n }\n isVertical() {\n return this.galleria.thumbnailsPosition === 'left' || this.galleria.thumbnailsPosition === 'right';\n }\n onActiveIndexChange(index) {\n if (this.activeIndex !== index) {\n this.activeIndex = index;\n this.activeItemChange.emit(this.activeIndex);\n }\n }\n}\nGalleriaContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GalleriaContent, deps: [{ token: Galleria }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component });\nGalleriaContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: GalleriaContent, selector: \"p-galleriaContent\", inputs: { activeIndex: \"activeIndex\", value: \"value\", numVisible: \"numVisible\" }, outputs: { maskHide: \"maskHide\", activeItemChange: \"activeItemChange\" }, ngImport: i0, template: `\n 0\"\n [ngClass]=\"{\n 'p-galleria p-component': true,\n 'p-galleria-fullscreen': this.galleria.fullScreen,\n 'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem,\n 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen\n }\"\n [ngStyle]=\"!galleria.fullScreen ? galleria.containerStyle : {}\"\n [class]=\"galleriaClass()\"\n >\n \n
\n \n
\n
\n \n\n \n
\n
\n \n
\n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(function () { return i2.NgClass; }), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i2.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i2.NgStyle; }), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i3.Ripple; }), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(function () { return GalleriaItemSlot; }), selector: \"p-galleriaItemSlot\", inputs: [\"templates\", \"index\", \"item\", \"type\"] }, { kind: \"component\", type: i0.forwardRef(function () { return GalleriaItem; }), selector: \"p-galleriaItem\", inputs: [\"circular\", \"value\", \"showItemNavigators\", \"showIndicators\", \"slideShowActive\", \"changeItemOnIndicatorHover\", \"autoPlay\", \"templates\", \"indicatorFacet\", \"captionFacet\", \"activeIndex\"], outputs: [\"startSlideShow\", \"stopSlideShow\", \"onActiveIndexChange\"] }, { kind: \"component\", type: i0.forwardRef(function () { return GalleriaThumbnails; }), selector: \"p-galleriaThumbnails\", inputs: [\"containerId\", \"value\", \"isVertical\", \"slideShowActive\", \"circular\", \"responsiveOptions\", \"contentHeight\", \"showThumbnailNavigators\", \"templates\", \"numVisible\", \"activeIndex\"], outputs: [\"onActiveIndexChange\", \"stopSlideShow\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GalleriaContent, decorators: [{\n type: Component,\n args: [{\n selector: 'p-galleriaContent',\n template: `\n 0\"\n [ngClass]=\"{\n 'p-galleria p-component': true,\n 'p-galleria-fullscreen': this.galleria.fullScreen,\n 'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem,\n 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen\n }\"\n [ngStyle]=\"!galleria.fullScreen ? galleria.containerStyle : {}\"\n [class]=\"galleriaClass()\"\n >\n \n
\n \n
\n
\n \n\n \n
\n
\n \n
\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: Galleria }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; }, propDecorators: { activeIndex: [{\n type: Input\n }], value: [{\n type: Input\n }], numVisible: [{\n type: Input\n }], maskHide: [{\n type: Output\n }], activeItemChange: [{\n type: Output\n }] } });\nclass GalleriaItemSlot {\n get item() {\n return this._item;\n }\n set item(item) {\n this._item = item;\n if (this.templates) {\n this.templates.forEach((item) => {\n if (item.getType() === this.type) {\n switch (this.type) {\n case 'item':\n case 'caption':\n case 'thumbnail':\n this.context = { $implicit: this.item };\n this.contentTemplate = item.template;\n break;\n }\n }\n });\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n if (item.getType() === this.type) {\n switch (this.type) {\n case 'item':\n case 'caption':\n case 'thumbnail':\n this.context = { $implicit: this.item };\n this.contentTemplate = item.template;\n break;\n case 'indicator':\n this.context = { $implicit: this.index };\n this.contentTemplate = item.template;\n break;\n default:\n this.context = {};\n this.contentTemplate = item.template;\n break;\n }\n }\n });\n }\n}\nGalleriaItemSlot.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GalleriaItemSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGalleriaItemSlot.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: GalleriaItemSlot, selector: \"p-galleriaItemSlot\", inputs: { templates: \"templates\", index: \"index\", item: \"item\", type: \"type\" }, ngImport: i0, template: `\n \n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GalleriaItemSlot, decorators: [{\n type: Component,\n args: [{\n selector: 'p-galleriaItemSlot',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { templates: [{\n type: Input\n }], index: [{\n type: Input\n }], item: [{\n type: Input\n }], type: [{\n type: Input\n }] } });\nclass GalleriaItem {\n constructor() {\n this.circular = false;\n this.showItemNavigators = false;\n this.showIndicators = true;\n this.slideShowActive = true;\n this.changeItemOnIndicatorHover = true;\n this.autoPlay = false;\n this.startSlideShow = new EventEmitter();\n this.stopSlideShow = new EventEmitter();\n this.onActiveIndexChange = new EventEmitter();\n this._activeIndex = 0;\n }\n get activeIndex() {\n return this._activeIndex;\n }\n set activeIndex(activeIndex) {\n this._activeIndex = activeIndex;\n }\n get activeItem() {\n return this.value[this._activeIndex];\n }\n ngOnChanges({ autoPlay }) {\n if (autoPlay?.currentValue) {\n this.startSlideShow.emit();\n }\n if (autoPlay && autoPlay.currentValue === false) {\n this.stopTheSlideShow();\n }\n }\n next() {\n let nextItemIndex = this.activeIndex + 1;\n let activeIndex = this.circular && this.value.length - 1 === this.activeIndex ? 0 : nextItemIndex;\n this.onActiveIndexChange.emit(activeIndex);\n }\n prev() {\n let prevItemIndex = this.activeIndex !== 0 ? this.activeIndex - 1 : 0;\n let activeIndex = this.circular && this.activeIndex === 0 ? this.value.length - 1 : prevItemIndex;\n this.onActiveIndexChange.emit(activeIndex);\n }\n stopTheSlideShow() {\n if (this.slideShowActive && this.stopSlideShow) {\n this.stopSlideShow.emit();\n }\n }\n navForward(e) {\n this.stopTheSlideShow();\n this.next();\n if (e && e.cancelable) {\n e.preventDefault();\n }\n }\n navBackward(e) {\n this.stopTheSlideShow();\n this.prev();\n if (e && e.cancelable) {\n e.preventDefault();\n }\n }\n onIndicatorClick(index) {\n this.stopTheSlideShow();\n this.onActiveIndexChange.emit(index);\n }\n onIndicatorMouseEnter(index) {\n if (this.changeItemOnIndicatorHover) {\n this.stopTheSlideShow();\n this.onActiveIndexChange.emit(index);\n }\n }\n onIndicatorKeyDown(index) {\n this.stopTheSlideShow();\n this.onActiveIndexChange.emit(index);\n }\n isNavForwardDisabled() {\n return !this.circular && this.activeIndex === this.value.length - 1;\n }\n isNavBackwardDisabled() {\n return !this.circular && this.activeIndex === 0;\n }\n isIndicatorItemActive(index) {\n return this.activeIndex === index;\n }\n}\nGalleriaItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GalleriaItem, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGalleriaItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: GalleriaItem, selector: \"p-galleriaItem\", inputs: { circular: \"circular\", value: \"value\", showItemNavigators: \"showItemNavigators\", showIndicators: \"showIndicators\", slideShowActive: \"slideShowActive\", changeItemOnIndicatorHover: \"changeItemOnIndicatorHover\", autoPlay: \"autoPlay\", templates: \"templates\", indicatorFacet: \"indicatorFacet\", captionFacet: \"captionFacet\", activeIndex: \"activeIndex\" }, outputs: { startSlideShow: \"startSlideShow\", stopSlideShow: \"stopSlideShow\", onActiveIndexChange: \"onActiveIndexChange\" }, usesOnChanges: true, ngImport: i0, template: `\n
\n
\n \n \n \n \n \n \n \n
\n \n
\n
\n
    \n \n \n \n \n
\n
\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3.Ripple, selector: \"[pRipple]\" }, { kind: \"component\", type: GalleriaItemSlot, selector: \"p-galleriaItemSlot\", inputs: [\"templates\", \"index\", \"item\", \"type\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GalleriaItem, decorators: [{\n type: Component,\n args: [{\n selector: 'p-galleriaItem',\n template: `\n
\n
\n \n \n \n \n \n \n \n
\n \n
\n
\n
    \n \n \n \n \n
\n
\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { circular: [{\n type: Input\n }], value: [{\n type: Input\n }], showItemNavigators: [{\n type: Input\n }], showIndicators: [{\n type: Input\n }], slideShowActive: [{\n type: Input\n }], changeItemOnIndicatorHover: [{\n type: Input\n }], autoPlay: [{\n type: Input\n }], templates: [{\n type: Input\n }], indicatorFacet: [{\n type: Input\n }], captionFacet: [{\n type: Input\n }], startSlideShow: [{\n type: Output\n }], stopSlideShow: [{\n type: Output\n }], onActiveIndexChange: [{\n type: Output\n }], activeIndex: [{\n type: Input\n }] } });\nclass GalleriaThumbnails {\n constructor(document, platformId, renderer, cd) {\n this.document = document;\n this.platformId = platformId;\n this.renderer = renderer;\n this.cd = cd;\n this.isVertical = false;\n this.slideShowActive = false;\n this.circular = false;\n this.contentHeight = '300px';\n this.showThumbnailNavigators = true;\n this.onActiveIndexChange = new EventEmitter();\n this.stopSlideShow = new EventEmitter();\n this.startPos = null;\n this.thumbnailsStyle = null;\n this.sortedResponsiveOptions = null;\n this.totalShiftedItems = 0;\n this.page = 0;\n this._numVisible = 0;\n this.d_numVisible = 0;\n this._oldNumVisible = 0;\n this._activeIndex = 0;\n this._oldactiveIndex = 0;\n }\n get numVisible() {\n return this._numVisible;\n }\n set numVisible(numVisible) {\n this._numVisible = numVisible;\n this._oldNumVisible = this.d_numVisible;\n this.d_numVisible = numVisible;\n }\n get activeIndex() {\n return this._activeIndex;\n }\n set activeIndex(activeIndex) {\n this._oldactiveIndex = this._activeIndex;\n this._activeIndex = activeIndex;\n }\n ngOnInit() {\n this.createStyle();\n if (this.responsiveOptions) {\n this.bindDocumentListeners();\n }\n }\n ngAfterContentChecked() {\n let totalShiftedItems = this.totalShiftedItems;\n if ((this._oldNumVisible !== this.d_numVisible || this._oldactiveIndex !== this._activeIndex) && this.itemsContainer) {\n if (this._activeIndex <= this.getMedianItemIndex()) {\n totalShiftedItems = 0;\n }\n else if (this.value.length - this.d_numVisible + this.getMedianItemIndex() < this._activeIndex) {\n totalShiftedItems = this.d_numVisible - this.value.length;\n }\n else if (this.value.length - this.d_numVisible < this._activeIndex && this.d_numVisible % 2 === 0) {\n totalShiftedItems = this._activeIndex * -1 + this.getMedianItemIndex() + 1;\n }\n else {\n totalShiftedItems = this._activeIndex * -1 + this.getMedianItemIndex();\n }\n if (totalShiftedItems !== this.totalShiftedItems) {\n this.totalShiftedItems = totalShiftedItems;\n }\n if (this.itemsContainer && this.itemsContainer.nativeElement) {\n this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;\n }\n if (this._oldactiveIndex !== this._activeIndex) {\n DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n }\n this._oldactiveIndex = this._activeIndex;\n this._oldNumVisible = this.d_numVisible;\n }\n }\n ngAfterViewInit() {\n this.calculatePosition();\n }\n createStyle() {\n if (!this.thumbnailsStyle) {\n this.thumbnailsStyle = this.document.createElement('style');\n this.thumbnailsStyle.type = 'text/css';\n this.document.body.appendChild(this.thumbnailsStyle);\n }\n let innerHTML = `\n #${this.containerId} .p-galleria-thumbnail-item {\n flex: 1 0 ${100 / this.d_numVisible}%\n }\n `;\n if (this.responsiveOptions) {\n this.sortedResponsiveOptions = [...this.responsiveOptions];\n this.sortedResponsiveOptions.sort((data1, data2) => {\n const value1 = data1.breakpoint;\n const value2 = data2.breakpoint;\n let result = null;\n if (value1 == null && value2 != null)\n result = -1;\n else if (value1 != null && value2 == null)\n result = 1;\n else if (value1 == null && value2 == null)\n result = 0;\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2, undefined, { numeric: true });\n else\n result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n return -1 * result;\n });\n for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n let res = this.sortedResponsiveOptions[i];\n innerHTML += `\n @media screen and (max-width: ${res.breakpoint}) {\n #${this.containerId} .p-galleria-thumbnail-item {\n flex: 1 0 ${100 / res.numVisible}%\n }\n }\n `;\n }\n }\n this.thumbnailsStyle.innerHTML = innerHTML;\n }\n calculatePosition() {\n if (this.itemsContainer && this.sortedResponsiveOptions) {\n let windowWidth = window.innerWidth;\n let matchedResponsiveData = {\n numVisible: this._numVisible\n };\n for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n let res = this.sortedResponsiveOptions[i];\n if (parseInt(res.breakpoint, 10) >= windowWidth) {\n matchedResponsiveData = res;\n }\n }\n if (this.d_numVisible !== matchedResponsiveData.numVisible) {\n this.d_numVisible = matchedResponsiveData.numVisible;\n this.cd.markForCheck();\n }\n }\n }\n getTabIndex(index) {\n return this.isItemActive(index) ? 0 : null;\n }\n navForward(e) {\n this.stopTheSlideShow();\n let nextItemIndex = this._activeIndex + 1;\n if (nextItemIndex + this.totalShiftedItems > this.getMedianItemIndex() && (-1 * this.totalShiftedItems < this.getTotalPageNumber() - 1 || this.circular)) {\n this.step(-1);\n }\n let activeIndex = this.circular && this.value.length - 1 === this._activeIndex ? 0 : nextItemIndex;\n this.onActiveIndexChange.emit(activeIndex);\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n navBackward(e) {\n this.stopTheSlideShow();\n let prevItemIndex = this._activeIndex !== 0 ? this._activeIndex - 1 : 0;\n let diff = prevItemIndex + this.totalShiftedItems;\n if (this.d_numVisible - diff - 1 > this.getMedianItemIndex() && (-1 * this.totalShiftedItems !== 0 || this.circular)) {\n this.step(1);\n }\n let activeIndex = this.circular && this._activeIndex === 0 ? this.value.length - 1 : prevItemIndex;\n this.onActiveIndexChange.emit(activeIndex);\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n onItemClick(index) {\n this.stopTheSlideShow();\n let selectedItemIndex = index;\n if (selectedItemIndex !== this._activeIndex) {\n const diff = selectedItemIndex + this.totalShiftedItems;\n let dir = 0;\n if (selectedItemIndex < this._activeIndex) {\n dir = this.d_numVisible - diff - 1 - this.getMedianItemIndex();\n if (dir > 0 && -1 * this.totalShiftedItems !== 0) {\n this.step(dir);\n }\n }\n else {\n dir = this.getMedianItemIndex() - diff;\n if (dir < 0 && -1 * this.totalShiftedItems < this.getTotalPageNumber() - 1) {\n this.step(dir);\n }\n }\n this.activeIndex = selectedItemIndex;\n this.onActiveIndexChange.emit(this.activeIndex);\n }\n }\n step(dir) {\n let totalShiftedItems = this.totalShiftedItems + dir;\n if (dir < 0 && -1 * totalShiftedItems + this.d_numVisible > this.value.length - 1) {\n totalShiftedItems = this.d_numVisible - this.value.length;\n }\n else if (dir > 0 && totalShiftedItems > 0) {\n totalShiftedItems = 0;\n }\n if (this.circular) {\n if (dir < 0 && this.value.length - 1 === this._activeIndex) {\n totalShiftedItems = 0;\n }\n else if (dir > 0 && this._activeIndex === 0) {\n totalShiftedItems = this.d_numVisible - this.value.length;\n }\n }\n if (this.itemsContainer) {\n DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;\n this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n }\n this.totalShiftedItems = totalShiftedItems;\n }\n stopTheSlideShow() {\n if (this.slideShowActive && this.stopSlideShow) {\n this.stopSlideShow.emit();\n }\n }\n changePageOnTouch(e, diff) {\n if (diff < 0) {\n // left\n this.navForward(e);\n }\n else {\n // right\n this.navBackward(e);\n }\n }\n getTotalPageNumber() {\n return this.value.length > this.d_numVisible ? this.value.length - this.d_numVisible + 1 : 0;\n }\n getMedianItemIndex() {\n let index = Math.floor(this.d_numVisible / 2);\n return this.d_numVisible % 2 ? index : index - 1;\n }\n onTransitionEnd() {\n if (this.itemsContainer && this.itemsContainer.nativeElement) {\n DomHandler.addClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n this.itemsContainer.nativeElement.style.transition = '';\n }\n }\n onTouchEnd(e) {\n let touchobj = e.changedTouches[0];\n if (this.isVertical) {\n this.changePageOnTouch(e, touchobj.pageY - this.startPos.y);\n }\n else {\n this.changePageOnTouch(e, touchobj.pageX - this.startPos.x);\n }\n }\n onTouchMove(e) {\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n onTouchStart(e) {\n let touchobj = e.changedTouches[0];\n this.startPos = {\n x: touchobj.pageX,\n y: touchobj.pageY\n };\n }\n isNavBackwardDisabled() {\n return (!this.circular && this._activeIndex === 0) || this.value.length <= this.d_numVisible;\n }\n isNavForwardDisabled() {\n return (!this.circular && this._activeIndex === this.value.length - 1) || this.value.length <= this.d_numVisible;\n }\n firstItemAciveIndex() {\n return this.totalShiftedItems * -1;\n }\n lastItemActiveIndex() {\n return this.firstItemAciveIndex() + this.d_numVisible - 1;\n }\n isItemActive(index) {\n return this.firstItemAciveIndex() <= index && this.lastItemActiveIndex() >= index;\n }\n bindDocumentListeners() {\n if (isPlatformBrowser(this.platformId)) {\n const window = this.document.defaultView || 'window';\n this.documentResizeListener = this.renderer.listen(window, 'resize', () => {\n this.calculatePosition();\n });\n }\n }\n unbindDocumentListeners() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n ngOnDestroy() {\n if (this.responsiveOptions) {\n this.unbindDocumentListeners();\n }\n if (this.thumbnailsStyle) {\n this.thumbnailsStyle.parentNode.removeChild(this.thumbnailsStyle);\n }\n }\n}\nGalleriaThumbnails.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GalleriaThumbnails, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nGalleriaThumbnails.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: GalleriaThumbnails, selector: \"p-galleriaThumbnails\", inputs: { containerId: \"containerId\", value: \"value\", isVertical: \"isVertical\", slideShowActive: \"slideShowActive\", circular: \"circular\", responsiveOptions: \"responsiveOptions\", contentHeight: \"contentHeight\", showThumbnailNavigators: \"showThumbnailNavigators\", templates: \"templates\", numVisible: \"numVisible\", activeIndex: \"activeIndex\" }, outputs: { onActiveIndexChange: \"onActiveIndexChange\", stopSlideShow: \"stopSlideShow\" }, viewQueries: [{ propertyName: \"itemsContainer\", first: true, predicate: [\"itemsContainer\"], descendants: true }], ngImport: i0, template: `\n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i3.Ripple, selector: \"[pRipple]\" }, { kind: \"component\", type: GalleriaItemSlot, selector: \"p-galleriaItemSlot\", inputs: [\"templates\", \"index\", \"item\", \"type\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GalleriaThumbnails, decorators: [{\n type: Component,\n args: [{\n selector: 'p-galleriaThumbnails',\n template: `\n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { containerId: [{\n type: Input\n }], value: [{\n type: Input\n }], isVertical: [{\n type: Input\n }], slideShowActive: [{\n type: Input\n }], circular: [{\n type: Input\n }], responsiveOptions: [{\n type: Input\n }], contentHeight: [{\n type: Input\n }], showThumbnailNavigators: [{\n type: Input\n }], templates: [{\n type: Input\n }], onActiveIndexChange: [{\n type: Output\n }], stopSlideShow: [{\n type: Output\n }], itemsContainer: [{\n type: ViewChild,\n args: ['itemsContainer']\n }], numVisible: [{\n type: Input\n }], activeIndex: [{\n type: Input\n }] } });\nclass GalleriaModule {\n}\nGalleriaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GalleriaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGalleriaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: GalleriaModule, declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails], imports: [CommonModule, SharedModule, RippleModule], exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule] });\nGalleriaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GalleriaModule, imports: [CommonModule, SharedModule, RippleModule, CommonModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GalleriaModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, RippleModule],\n exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule],\n declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Galleria, GalleriaContent, GalleriaItem, GalleriaItemSlot, GalleriaModule, GalleriaThumbnails };\n//# sourceMappingURL=primeng-galleria.mjs.map\n//# sourceMappingURL=primeng-galleria.mjs.map\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\nclass GMap {\n constructor(el, differs, cd, zone) {\n this.el = el;\n this.cd = cd;\n this.zone = zone;\n this.onMapClick = new EventEmitter();\n this.onOverlayClick = new EventEmitter();\n this.onOverlayDblClick = new EventEmitter();\n this.onOverlayDragStart = new EventEmitter();\n this.onOverlayDrag = new EventEmitter();\n this.onOverlayDragEnd = new EventEmitter();\n this.onMapReady = new EventEmitter();\n this.onMapDragEnd = new EventEmitter();\n this.onZoomChanged = new EventEmitter();\n this.differ = differs.find([]).create(null);\n }\n ngAfterViewChecked() {\n if (!this.map && this.el.nativeElement.offsetParent) {\n this.initialize();\n }\n }\n initialize() {\n this.map = new google.maps.Map(this.el.nativeElement.children[0], this.options);\n this.onMapReady.emit({\n map: this.map\n });\n if (this.overlays) {\n for (let overlay of this.overlays) {\n overlay.setMap(this.map);\n this.bindOverlayEvents(overlay);\n }\n }\n this.map.addListener('click', (event) => {\n this.zone.run(() => {\n this.onMapClick.emit(event);\n });\n });\n this.map.addListener('dragend', (event) => {\n this.zone.run(() => {\n this.onMapDragEnd.emit(event);\n });\n });\n this.map.addListener('zoom_changed', (event) => {\n this.zone.run(() => {\n this.onZoomChanged.emit(event);\n });\n });\n }\n bindOverlayEvents(overlay) {\n overlay.addListener('click', (event) => {\n this.zone.run(() => {\n this.onOverlayClick.emit({\n originalEvent: event,\n overlay: overlay,\n map: this.map\n });\n });\n });\n overlay.addListener('dblclick', (event) => {\n this.zone.run(() => {\n this.onOverlayDblClick.emit({\n originalEvent: event,\n overlay: overlay,\n map: this.map\n });\n });\n });\n if (overlay.getDraggable()) {\n this.bindDragEvents(overlay);\n }\n }\n ngDoCheck() {\n let changes = this.differ.diff(this.overlays);\n if (changes && this.map) {\n changes.forEachRemovedItem((record) => {\n google.maps.event.clearInstanceListeners(record.item);\n record.item.setMap(null);\n });\n changes.forEachAddedItem((record) => {\n record.item.setMap(this.map);\n record.item.addListener('click', (event) => {\n this.zone.run(() => {\n this.onOverlayClick.emit({\n originalEvent: event,\n overlay: record.item,\n map: this.map\n });\n });\n });\n if (record.item.getDraggable()) {\n this.bindDragEvents(record.item);\n }\n });\n }\n }\n bindDragEvents(overlay) {\n overlay.addListener('dragstart', (event) => {\n this.zone.run(() => {\n this.onOverlayDragStart.emit({\n originalEvent: event,\n overlay: overlay,\n map: this.map\n });\n });\n });\n overlay.addListener('drag', (event) => {\n this.zone.run(() => {\n this.onOverlayDrag.emit({\n originalEvent: event,\n overlay: overlay,\n map: this.map\n });\n });\n });\n overlay.addListener('dragend', (event) => {\n this.zone.run(() => {\n this.onOverlayDragEnd.emit({\n originalEvent: event,\n overlay: overlay,\n map: this.map\n });\n });\n });\n }\n getMap() {\n return this.map;\n }\n}\nGMap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GMap, deps: [{ token: i0.ElementRef }, { token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nGMap.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: GMap, selector: \"p-gmap\", inputs: { style: \"style\", styleClass: \"styleClass\", options: \"options\", overlays: \"overlays\" }, outputs: { onMapClick: \"onMapClick\", onOverlayClick: \"onOverlayClick\", onOverlayDblClick: \"onOverlayDblClick\", onOverlayDragStart: \"onOverlayDragStart\", onOverlayDrag: \"onOverlayDrag\", onOverlayDragEnd: \"onOverlayDragEnd\", onMapReady: \"onMapReady\", onMapDragEnd: \"onMapDragEnd\", onZoomChanged: \"onZoomChanged\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `
`, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GMap, decorators: [{\n type: Component,\n args: [{\n selector: 'p-gmap',\n template: `
`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], options: [{\n type: Input\n }], overlays: [{\n type: Input\n }], onMapClick: [{\n type: Output\n }], onOverlayClick: [{\n type: Output\n }], onOverlayDblClick: [{\n type: Output\n }], onOverlayDragStart: [{\n type: Output\n }], onOverlayDrag: [{\n type: Output\n }], onOverlayDragEnd: [{\n type: Output\n }], onMapReady: [{\n type: Output\n }], onMapDragEnd: [{\n type: Output\n }], onZoomChanged: [{\n type: Output\n }] } });\nclass GMapModule {\n}\nGMapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGMapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: GMapModule, declarations: [GMap], imports: [CommonModule], exports: [GMap] });\nGMapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GMapModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: GMapModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [GMap],\n declarations: [GMap]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { GMap, GMapModule };\n//# sourceMappingURL=primeng-gmap.mjs.map\n//# sourceMappingURL=primeng-gmap.mjs.map\n","import * as i1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, ViewChild, Output, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i3 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport { DomHandler } from 'primeng/dom';\nimport * as i2 from 'primeng/inputtext';\nimport { InputTextModule } from 'primeng/inputtext';\n\nconst INPUTNUMBER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputNumber),\n multi: true\n};\nclass InputNumber {\n constructor(document, el, cd) {\n this.document = document;\n this.el = el;\n this.cd = cd;\n this.showButtons = false;\n this.format = true;\n this.buttonLayout = 'stacked';\n this.incrementButtonIcon = 'pi pi-angle-up';\n this.decrementButtonIcon = 'pi pi-angle-down';\n this.readonly = false;\n this.step = 1;\n this.allowEmpty = true;\n this.mode = 'decimal';\n this.useGrouping = true;\n this.showClear = false;\n this.onInput = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onKeyDown = new EventEmitter();\n this.onClear = new EventEmitter();\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n this.groupChar = '';\n this.prefixChar = '';\n this.suffixChar = '';\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(disabled) {\n if (disabled)\n this.focused = false;\n this._disabled = disabled;\n if (this.timer)\n this.clearTimer();\n }\n ngOnChanges(simpleChange) {\n const props = ['locale', 'localeMatcher', 'mode', 'currency', 'currencyDisplay', 'useGrouping', 'minFractionDigits', 'maxFractionDigits', 'prefix', 'suffix'];\n if (props.some((p) => !!simpleChange[p])) {\n this.updateConstructParser();\n }\n }\n ngOnInit() {\n this.constructParser();\n this.initialized = true;\n }\n getOptions() {\n return {\n localeMatcher: this.localeMatcher,\n style: this.mode,\n currency: this.currency,\n currencyDisplay: this.currencyDisplay,\n useGrouping: this.useGrouping,\n minimumFractionDigits: this.minFractionDigits,\n maximumFractionDigits: this.maxFractionDigits\n };\n }\n constructParser() {\n this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());\n const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();\n const index = new Map(numerals.map((d, i) => [d, i]));\n this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n this._group = this.getGroupingExpression();\n this._minusSign = this.getMinusSignExpression();\n this._currency = this.getCurrencyExpression();\n this._decimal = this.getDecimalExpression();\n this._suffix = this.getSuffixExpression();\n this._prefix = this.getPrefixExpression();\n this._index = (d) => index.get(d);\n }\n updateConstructParser() {\n if (this.initialized) {\n this.constructParser();\n }\n }\n escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n getDecimalExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { ...this.getOptions(), useGrouping: false });\n return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');\n }\n getGroupingExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });\n this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);\n return new RegExp(`[${this.groupChar}]`, 'g');\n }\n getMinusSignExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });\n return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');\n }\n getCurrencyExpression() {\n if (this.currency) {\n const formatter = new Intl.NumberFormat(this.locale, { style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0 });\n return new RegExp(`[${formatter.format(1).replace(/\\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');\n }\n return new RegExp(`[]`, 'g');\n }\n getPrefixExpression() {\n if (this.prefix) {\n this.prefixChar = this.prefix;\n }\n else {\n const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay });\n this.prefixChar = formatter.format(1).split('1')[0];\n }\n return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');\n }\n getSuffixExpression() {\n if (this.suffix) {\n this.suffixChar = this.suffix;\n }\n else {\n const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0 });\n this.suffixChar = formatter.format(1).split('1')[1];\n }\n return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');\n }\n formatValue(value) {\n if (value != null) {\n if (value === '-') {\n // Minus sign\n return value;\n }\n if (this.format) {\n let formatter = new Intl.NumberFormat(this.locale, this.getOptions());\n let formattedValue = formatter.format(value);\n if (this.prefix) {\n formattedValue = this.prefix + formattedValue;\n }\n if (this.suffix) {\n formattedValue = formattedValue + this.suffix;\n }\n return formattedValue;\n }\n return value.toString();\n }\n return '';\n }\n parseValue(text) {\n let filteredText = text\n .replace(this._suffix, '')\n .replace(this._prefix, '')\n .trim()\n .replace(/\\s/g, '')\n .replace(this._currency, '')\n .replace(this._group, '')\n .replace(this._minusSign, '-')\n .replace(this._decimal, '.')\n .replace(this._numeral, this._index);\n if (filteredText) {\n if (filteredText === '-')\n // Minus sign\n return filteredText;\n let parsedValue = +filteredText;\n return isNaN(parsedValue) ? null : parsedValue;\n }\n return null;\n }\n repeat(event, interval, dir) {\n if (this.readonly) {\n return;\n }\n let i = interval || 500;\n this.clearTimer();\n this.timer = setTimeout(() => {\n this.repeat(event, 40, dir);\n }, i);\n this.spin(event, dir);\n }\n spin(event, dir) {\n let step = this.step * dir;\n let currentValue = this.parseValue(this.input.nativeElement.value) || 0;\n let newValue = this.validateValue(currentValue + step);\n if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {\n return;\n }\n this.updateInput(newValue, null, 'spin', null);\n this.updateModel(event, newValue);\n this.handleOnInput(event, currentValue, newValue);\n }\n clear() {\n this.value = null;\n this.onModelChange(this.value);\n this.onClear.emit();\n }\n onUpButtonMouseDown(event) {\n this.input.nativeElement.focus();\n this.repeat(event, null, 1);\n event.preventDefault();\n }\n onUpButtonMouseUp() {\n this.clearTimer();\n }\n onUpButtonMouseLeave() {\n this.clearTimer();\n }\n onUpButtonKeyDown(event) {\n if (event.keyCode === 32 || event.keyCode === 13) {\n this.repeat(event, null, 1);\n }\n }\n onUpButtonKeyUp() {\n this.clearTimer();\n }\n onDownButtonMouseDown(event) {\n this.input.nativeElement.focus();\n this.repeat(event, null, -1);\n event.preventDefault();\n }\n onDownButtonMouseUp() {\n this.clearTimer();\n }\n onDownButtonMouseLeave() {\n this.clearTimer();\n }\n onDownButtonKeyUp() {\n this.clearTimer();\n }\n onDownButtonKeyDown(event) {\n if (event.keyCode === 32 || event.keyCode === 13) {\n this.repeat(event, null, -1);\n }\n }\n onUserInput(event) {\n if (this.readonly) {\n return;\n }\n if (this.isSpecialChar) {\n event.target.value = this.lastValue;\n }\n this.isSpecialChar = false;\n }\n onInputKeyDown(event) {\n if (this.readonly) {\n return;\n }\n this.lastValue = event.target.value;\n if (event.shiftKey || event.altKey) {\n this.isSpecialChar = true;\n return;\n }\n let selectionStart = event.target.selectionStart;\n let selectionEnd = event.target.selectionEnd;\n let inputValue = event.target.value;\n let newValueStr = null;\n if (event.altKey) {\n event.preventDefault();\n }\n switch (event.which) {\n //up\n case 38:\n this.spin(event, 1);\n event.preventDefault();\n break;\n //down\n case 40:\n this.spin(event, -1);\n event.preventDefault();\n break;\n //left\n case 37:\n if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n event.preventDefault();\n }\n break;\n //right\n case 39:\n if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {\n event.preventDefault();\n }\n break;\n //enter\n case 13:\n newValueStr = this.validateValue(this.parseValue(this.input.nativeElement.value));\n this.input.nativeElement.value = this.formatValue(newValueStr);\n this.input.nativeElement.setAttribute('aria-valuenow', newValueStr);\n this.updateModel(event, newValueStr);\n break;\n //backspace\n case 8: {\n event.preventDefault();\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart - 1);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n if (this.isNumeralChar(deleteChar)) {\n const decimalLength = this.getDecimalLength(inputValue);\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n }\n else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n if (decimalLength) {\n this.input.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);\n }\n else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n }\n else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n }\n else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n this.updateValue(event, newValueStr, null, 'delete-single');\n }\n else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n break;\n }\n // del\n case 46:\n event.preventDefault();\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n if (this.isNumeralChar(deleteChar)) {\n const decimalLength = this.getDecimalLength(inputValue);\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n }\n else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n if (decimalLength) {\n this.input.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);\n }\n else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n }\n else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n }\n else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n this.updateValue(event, newValueStr, null, 'delete-back-single');\n }\n else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n break;\n default:\n break;\n }\n this.onKeyDown.emit(event);\n }\n onInputKeyPress(event) {\n if (this.readonly) {\n return;\n }\n let code = event.which || event.keyCode;\n let char = String.fromCharCode(code);\n const isDecimalSign = this.isDecimalSign(char);\n const isMinusSign = this.isMinusSign(char);\n if (code != 13) {\n event.preventDefault();\n }\n if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {\n this.insert(event, char, { isDecimalSign, isMinusSign });\n }\n }\n onPaste(event) {\n if (!this.disabled && !this.readonly) {\n event.preventDefault();\n let data = (event.clipboardData || this.document.defaultView['clipboardData']).getData('Text');\n if (data) {\n let filteredData = this.parseValue(data);\n if (filteredData != null) {\n this.insert(event, filteredData.toString());\n }\n }\n }\n }\n allowMinusSign() {\n return this.min == null || this.min < 0;\n }\n isMinusSign(char) {\n if (this._minusSign.test(char) || char === '-') {\n this._minusSign.lastIndex = 0;\n return true;\n }\n return false;\n }\n isDecimalSign(char) {\n if (this._decimal.test(char)) {\n this._decimal.lastIndex = 0;\n return true;\n }\n return false;\n }\n isDecimalMode() {\n return this.mode === 'decimal';\n }\n getDecimalCharIndexes(val) {\n let decimalCharIndex = val.search(this._decimal);\n this._decimal.lastIndex = 0;\n const filteredVal = val.replace(this._prefix, '').trim().replace(/\\s/g, '').replace(this._currency, '');\n const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);\n this._decimal.lastIndex = 0;\n return { decimalCharIndex, decimalCharIndexWithoutPrefix };\n }\n getCharIndexes(val) {\n const decimalCharIndex = val.search(this._decimal);\n this._decimal.lastIndex = 0;\n const minusCharIndex = val.search(this._minusSign);\n this._minusSign.lastIndex = 0;\n const suffixCharIndex = val.search(this._suffix);\n this._suffix.lastIndex = 0;\n const currencyCharIndex = val.search(this._currency);\n this._currency.lastIndex = 0;\n return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };\n }\n insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {\n const minusCharIndexOnText = text.search(this._minusSign);\n this._minusSign.lastIndex = 0;\n if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {\n return;\n }\n let selectionStart = this.input.nativeElement.selectionStart;\n let selectionEnd = this.input.nativeElement.selectionEnd;\n let inputValue = this.input.nativeElement.value.trim();\n const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);\n let newValueStr;\n if (sign.isMinusSign) {\n if (selectionStart === 0) {\n newValueStr = inputValue;\n if (minusCharIndex === -1 || selectionEnd !== 0) {\n newValueStr = this.insertText(inputValue, text, 0, selectionEnd);\n }\n this.updateValue(event, newValueStr, text, 'insert');\n }\n }\n else if (sign.isDecimalSign) {\n if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n this.updateValue(event, inputValue, text, 'insert');\n }\n else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n }\n else if (decimalCharIndex === -1 && this.maxFractionDigits) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n }\n }\n else {\n const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;\n const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {\n const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;\n newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);\n this.updateValue(event, newValueStr, text, operation);\n }\n }\n else {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, operation);\n }\n }\n }\n insertText(value, text, start, end) {\n let textSplit = text === '.' ? text : text.split('.');\n if (textSplit.length === 2) {\n const decimalCharIndex = value.slice(start, end).search(this._decimal);\n this._decimal.lastIndex = 0;\n return decimalCharIndex > 0 ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : value || this.formatValue(text);\n }\n else if (end - start === value.length) {\n return this.formatValue(text);\n }\n else if (start === 0) {\n return text + value.slice(end);\n }\n else if (end === value.length) {\n return value.slice(0, start) + text;\n }\n else {\n return value.slice(0, start) + text + value.slice(end);\n }\n }\n deleteRange(value, start, end) {\n let newValueStr;\n if (end - start === value.length)\n newValueStr = '';\n else if (start === 0)\n newValueStr = value.slice(end);\n else if (end === value.length)\n newValueStr = value.slice(0, start);\n else\n newValueStr = value.slice(0, start) + value.slice(end);\n return newValueStr;\n }\n initCursor() {\n let selectionStart = this.input.nativeElement.selectionStart;\n let inputValue = this.input.nativeElement.value;\n let valueLength = inputValue.length;\n let index = null;\n // remove prefix\n let prefixLength = (this.prefixChar || '').length;\n inputValue = inputValue.replace(this._prefix, '');\n selectionStart = selectionStart - prefixLength;\n let char = inputValue.charAt(selectionStart);\n if (this.isNumeralChar(char)) {\n return selectionStart + prefixLength;\n }\n //left\n let i = selectionStart - 1;\n while (i >= 0) {\n char = inputValue.charAt(i);\n if (this.isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n }\n else {\n i--;\n }\n }\n if (index !== null) {\n this.input.nativeElement.setSelectionRange(index + 1, index + 1);\n }\n else {\n i = selectionStart;\n while (i < valueLength) {\n char = inputValue.charAt(i);\n if (this.isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n }\n else {\n i++;\n }\n }\n if (index !== null) {\n this.input.nativeElement.setSelectionRange(index, index);\n }\n }\n return index || 0;\n }\n onInputClick() {\n const currentValue = this.input.nativeElement.value;\n if (!this.readonly && currentValue !== DomHandler.getSelection()) {\n this.initCursor();\n }\n }\n isNumeralChar(char) {\n if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {\n this.resetRegex();\n return true;\n }\n return false;\n }\n resetRegex() {\n this._numeral.lastIndex = 0;\n this._decimal.lastIndex = 0;\n this._group.lastIndex = 0;\n this._minusSign.lastIndex = 0;\n }\n updateValue(event, valueStr, insertedValueStr, operation) {\n let currentValue = this.input.nativeElement.value;\n let newValue = null;\n if (valueStr != null) {\n newValue = this.parseValue(valueStr);\n newValue = !newValue && !this.allowEmpty ? 0 : newValue;\n this.updateInput(newValue, insertedValueStr, operation, valueStr);\n this.handleOnInput(event, currentValue, newValue);\n }\n }\n handleOnInput(event, currentValue, newValue) {\n if (this.isValueChanged(currentValue, newValue)) {\n this.input.nativeElement.value = this.formatValue(newValue);\n this.input.nativeElement.setAttribute('aria-valuenow', newValue);\n this.updateModel(event, newValue);\n this.onInput.emit({ originalEvent: event, value: newValue, formattedValue: currentValue });\n }\n }\n isValueChanged(currentValue, newValue) {\n if (newValue === null && currentValue !== null) {\n return true;\n }\n if (newValue != null) {\n let parsedCurrentValue = typeof currentValue === 'string' ? this.parseValue(currentValue) : currentValue;\n return newValue !== parsedCurrentValue;\n }\n return false;\n }\n validateValue(value) {\n if (value === '-' || value == null) {\n return null;\n }\n if (this.min != null && value < this.min) {\n return this.min;\n }\n if (this.max != null && value > this.max) {\n return this.max;\n }\n return value;\n }\n updateInput(value, insertedValueStr, operation, valueStr) {\n insertedValueStr = insertedValueStr || '';\n let inputValue = this.input.nativeElement.value;\n let newValue = this.formatValue(value);\n let currentLength = inputValue.length;\n if (newValue !== valueStr) {\n newValue = this.concatValues(newValue, valueStr);\n }\n if (currentLength === 0) {\n this.input.nativeElement.value = newValue;\n this.input.nativeElement.setSelectionRange(0, 0);\n const index = this.initCursor();\n const selectionEnd = index + insertedValueStr.length;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else {\n let selectionStart = this.input.nativeElement.selectionStart;\n let selectionEnd = this.input.nativeElement.selectionEnd;\n if (this.maxlength && this.maxlength < newValue.length) {\n return;\n }\n this.input.nativeElement.value = newValue;\n let newLength = newValue.length;\n if (operation === 'range-insert') {\n const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));\n const startValueStr = startValue !== null ? startValue.toString() : '';\n const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);\n const sRegex = new RegExp(startExpr, 'g');\n sRegex.test(newValue);\n const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);\n const tRegex = new RegExp(tExpr, 'g');\n tRegex.test(newValue.slice(sRegex.lastIndex));\n selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else if (newLength === currentLength) {\n if (operation === 'insert' || operation === 'delete-back-single')\n this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n else if (operation === 'delete-single')\n this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n else if (operation === 'delete-range' || operation === 'spin')\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else if (operation === 'delete-back-single') {\n let prevChar = inputValue.charAt(selectionEnd - 1);\n let nextChar = inputValue.charAt(selectionEnd);\n let diff = currentLength - newLength;\n let isGroupChar = this._group.test(nextChar);\n if (isGroupChar && diff === 1) {\n selectionEnd += 1;\n }\n else if (!isGroupChar && this.isNumeralChar(prevChar)) {\n selectionEnd += -1 * diff + 1;\n }\n this._group.lastIndex = 0;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else if (inputValue === '-' && operation === 'insert') {\n this.input.nativeElement.setSelectionRange(0, 0);\n const index = this.initCursor();\n const selectionEnd = index + insertedValueStr.length + 1;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else {\n selectionEnd = selectionEnd + (newLength - currentLength);\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n }\n this.input.nativeElement.setAttribute('aria-valuenow', value);\n }\n concatValues(val1, val2) {\n if (val1 && val2) {\n let decimalCharIndex = val2.search(this._decimal);\n this._decimal.lastIndex = 0;\n if (this.suffixChar) {\n return val1.replace(this.suffixChar, '').split(this._decimal)[0] + val2.replace(this.suffixChar, '').slice(decimalCharIndex) + this.suffixChar;\n }\n else {\n return decimalCharIndex !== -1 ? val1.split(this._decimal)[0] + val2.slice(decimalCharIndex) : val1;\n }\n }\n return val1;\n }\n getDecimalLength(value) {\n if (value) {\n const valueSplit = value.split(this._decimal);\n if (valueSplit.length === 2) {\n return valueSplit[1].replace(this._suffix, '').trim().replace(/\\s/g, '').replace(this._currency, '').length;\n }\n }\n return 0;\n }\n onInputFocus(event) {\n this.focused = true;\n this.onFocus.emit(event);\n }\n onInputBlur(event) {\n this.focused = false;\n let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));\n this.input.nativeElement.value = this.formatValue(newValue);\n this.input.nativeElement.setAttribute('aria-valuenow', newValue);\n this.updateModel(event, newValue);\n this.onBlur.emit(event);\n }\n formattedValue() {\n const val = !this.value && !this.allowEmpty ? 0 : this.value;\n return this.formatValue(val);\n }\n updateModel(event, value) {\n if (this.value !== value) {\n this.value = value;\n this.onModelChange(value);\n }\n this.onModelTouched();\n }\n writeValue(value) {\n this.value = value;\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n get filled() {\n return this.value != null && this.value.toString().length > 0;\n }\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n }\n getFormatter() {\n return this.numberFormat;\n }\n}\nInputNumber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputNumber, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nInputNumber.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: InputNumber, selector: \"p-inputNumber\", inputs: { showButtons: \"showButtons\", format: \"format\", buttonLayout: \"buttonLayout\", inputId: \"inputId\", styleClass: \"styleClass\", style: \"style\", placeholder: \"placeholder\", size: \"size\", maxlength: \"maxlength\", tabindex: \"tabindex\", title: \"title\", ariaLabel: \"ariaLabel\", ariaRequired: \"ariaRequired\", name: \"name\", required: \"required\", autocomplete: \"autocomplete\", min: \"min\", max: \"max\", incrementButtonClass: \"incrementButtonClass\", decrementButtonClass: \"decrementButtonClass\", incrementButtonIcon: \"incrementButtonIcon\", decrementButtonIcon: \"decrementButtonIcon\", readonly: \"readonly\", step: \"step\", allowEmpty: \"allowEmpty\", locale: \"locale\", localeMatcher: \"localeMatcher\", mode: \"mode\", currency: \"currency\", currencyDisplay: \"currencyDisplay\", useGrouping: \"useGrouping\", minFractionDigits: \"minFractionDigits\", maxFractionDigits: \"maxFractionDigits\", prefix: \"prefix\", suffix: \"suffix\", inputStyle: \"inputStyle\", inputStyleClass: \"inputStyleClass\", showClear: \"showClear\", disabled: \"disabled\" }, outputs: { onInput: \"onInput\", onFocus: \"onFocus\", onBlur: \"onBlur\", onKeyDown: \"onKeyDown\", onClear: \"onClear\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled\", \"class.p-inputwrapper-focus\": \"focused\", \"class.p-inputnumber-clearable\": \"showClear && buttonLayout != \\\"vertical\\\"\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [INPUTNUMBER_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\"p-inputnumber,.p-inputnumber{display:inline-flex}.p-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label{display:none}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up{border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-button-group{display:flex;flex-direction:column}.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button{flex:1 1 auto}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.p-inputnumber-buttons-horizontal .p-inputnumber-input{order:2;border-radius:0}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-vertical{flex-direction:column}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.p-inputnumber-buttons-vertical .p-inputnumber-input{order:2;border-radius:0;text-align:center}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.p-inputnumber-input{flex:1 1 auto}.p-fluid p-inputnumber,.p-fluid .p-inputnumber{width:100%}.p-fluid .p-inputnumber .p-inputnumber-input{width:1%}.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input{width:100%}.p-inputnumber-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-inputnumber-clearable{position:relative}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i2.InputText, selector: \"[pInputText]\" }, { kind: \"directive\", type: i3.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputNumber, decorators: [{\n type: Component,\n args: [{ selector: 'p-inputNumber', template: `\n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, providers: [INPUTNUMBER_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element p-inputwrapper',\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': 'focused',\n '[class.p-inputnumber-clearable]': 'showClear && buttonLayout != \"vertical\"'\n }, styles: [\"p-inputnumber,.p-inputnumber{display:inline-flex}.p-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label{display:none}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up{border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-button-group{display:flex;flex-direction:column}.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button{flex:1 1 auto}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.p-inputnumber-buttons-horizontal .p-inputnumber-input{order:2;border-radius:0}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-vertical{flex-direction:column}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.p-inputnumber-buttons-vertical .p-inputnumber-input{order:2;border-radius:0;text-align:center}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.p-inputnumber-input{flex:1 1 auto}.p-fluid p-inputnumber,.p-fluid .p-inputnumber{width:100%}.p-fluid .p-inputnumber .p-inputnumber-input{width:1%}.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input{width:100%}.p-inputnumber-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-inputnumber-clearable{position:relative}\\n\"] }]\n }], ctorParameters: function () { return [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { showButtons: [{\n type: Input\n }], format: [{\n type: Input\n }], buttonLayout: [{\n type: Input\n }], inputId: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], style: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], size: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], title: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaRequired: [{\n type: Input\n }], name: [{\n type: Input\n }], required: [{\n type: Input\n }], autocomplete: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], incrementButtonClass: [{\n type: Input\n }], decrementButtonClass: [{\n type: Input\n }], incrementButtonIcon: [{\n type: Input\n }], decrementButtonIcon: [{\n type: Input\n }], readonly: [{\n type: Input\n }], step: [{\n type: Input\n }], allowEmpty: [{\n type: Input\n }], locale: [{\n type: Input\n }], localeMatcher: [{\n type: Input\n }], mode: [{\n type: Input\n }], currency: [{\n type: Input\n }], currencyDisplay: [{\n type: Input\n }], useGrouping: [{\n type: Input\n }], minFractionDigits: [{\n type: Input\n }], maxFractionDigits: [{\n type: Input\n }], prefix: [{\n type: Input\n }], suffix: [{\n type: Input\n }], inputStyle: [{\n type: Input\n }], inputStyleClass: [{\n type: Input\n }], showClear: [{\n type: Input\n }], input: [{\n type: ViewChild,\n args: ['input']\n }], onInput: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onKeyDown: [{\n type: Output\n }], onClear: [{\n type: Output\n }], disabled: [{\n type: Input\n }] } });\nclass InputNumberModule {\n}\nInputNumberModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nInputNumberModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: InputNumberModule, declarations: [InputNumber], imports: [CommonModule, InputTextModule, ButtonModule], exports: [InputNumber] });\nInputNumberModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputNumberModule, imports: [CommonModule, InputTextModule, ButtonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputNumberModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, InputTextModule, ButtonModule],\n exports: [InputNumber],\n declarations: [InputNumber]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { INPUTNUMBER_VALUE_ACCESSOR, InputNumber, InputNumberModule };\n//# sourceMappingURL=primeng-inputnumber.mjs.map\n//# sourceMappingURL=primeng-inputnumber.mjs.map\n","import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nconst INPUTSWITCH_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputSwitch),\n multi: true\n};\nclass InputSwitch {\n constructor(cd) {\n this.cd = cd;\n this.trueValue = true;\n this.falseValue = false;\n this.onChange = new EventEmitter();\n this.modelValue = false;\n this.focused = false;\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n }\n onClick(event, cb) {\n if (!this.disabled && !this.readonly) {\n event.preventDefault();\n this.toggle(event);\n cb.focus();\n }\n }\n onInputChange(event) {\n if (!this.readonly) {\n const inputChecked = event.target.checked;\n this.updateModel(event, inputChecked);\n }\n }\n toggle(event) {\n this.updateModel(event, !this.checked());\n }\n updateModel(event, value) {\n this.modelValue = value ? this.trueValue : this.falseValue;\n this.onModelChange(this.modelValue);\n this.onChange.emit({\n originalEvent: event,\n checked: this.modelValue\n });\n }\n onFocus(event) {\n this.focused = true;\n }\n onBlur(event) {\n this.focused = false;\n this.onModelTouched();\n }\n writeValue(value) {\n this.modelValue = value;\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n checked() {\n return this.modelValue === this.trueValue;\n }\n}\nInputSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputSwitch, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nInputSwitch.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: InputSwitch, selector: \"p-inputSwitch\", inputs: { style: \"style\", styleClass: \"styleClass\", tabindex: \"tabindex\", inputId: \"inputId\", name: \"name\", disabled: \"disabled\", readonly: \"readonly\", trueValue: \"trueValue\", falseValue: \"falseValue\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\" }, outputs: { onChange: \"onChange\" }, host: { classAttribute: \"p-element\" }, providers: [INPUTSWITCH_VALUE_ACCESSOR], ngImport: i0, template: `\n
\n
\n \n
\n \n
\n `, isInline: true, styles: [\".p-inputswitch{position:relative;display:inline-block;-webkit-user-select:none;user-select:none}.p-inputswitch-slider{position:absolute;cursor:pointer;inset:0}.p-inputswitch-slider:before{position:absolute;content:\\\"\\\";top:50%}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputSwitch, decorators: [{\n type: Component,\n args: [{ selector: 'p-inputSwitch', template: `\n
\n
\n \n
\n \n
\n `, providers: [INPUTSWITCH_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-inputswitch{position:relative;display:inline-block;-webkit-user-select:none;user-select:none}.p-inputswitch-slider{position:absolute;cursor:pointer;inset:0}.p-inputswitch-slider:before{position:absolute;content:\\\"\\\";top:50%}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], inputId: [{\n type: Input\n }], name: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], trueValue: [{\n type: Input\n }], falseValue: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], onChange: [{\n type: Output\n }] } });\nclass InputSwitchModule {\n}\nInputSwitchModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputSwitchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nInputSwitchModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: InputSwitchModule, declarations: [InputSwitch], imports: [CommonModule], exports: [InputSwitch] });\nInputSwitchModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputSwitchModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputSwitchModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [InputSwitch],\n declarations: [InputSwitch]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { INPUTSWITCH_VALUE_ACCESSOR, InputSwitch, InputSwitchModule };\n//# sourceMappingURL=primeng-inputswitch.mjs.map\n//# sourceMappingURL=primeng-inputswitch.mjs.map\n","import * as i0 from '@angular/core';\nimport { Directive, Optional, HostListener, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from '@angular/forms';\n\nclass InputText {\n constructor(el, ngModel, cd) {\n this.el = el;\n this.ngModel = ngModel;\n this.cd = cd;\n }\n ngAfterViewInit() {\n this.updateFilledState();\n this.cd.detectChanges();\n }\n ngDoCheck() {\n this.updateFilledState();\n }\n onInput(e) {\n this.updateFilledState();\n }\n updateFilledState() {\n this.filled = (this.el.nativeElement.value && this.el.nativeElement.value.length) || (this.ngModel && this.ngModel.model);\n }\n}\nInputText.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputText, deps: [{ token: i0.ElementRef }, { token: i1.NgModel, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nInputText.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.2.4\", type: InputText, selector: \"[pInputText]\", host: { listeners: { \"input\": \"onInput($event)\" }, properties: { \"class.p-filled\": \"filled\" }, classAttribute: \"p-inputtext p-component p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputText, decorators: [{\n type: Directive,\n args: [{\n selector: '[pInputText]',\n host: {\n class: 'p-inputtext p-component p-element',\n '[class.p-filled]': 'filled'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgModel, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onInput: [{\n type: HostListener,\n args: ['input', ['$event']]\n }] } });\nclass InputTextModule {\n}\nInputTextModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputTextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nInputTextModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: InputTextModule, declarations: [InputText], imports: [CommonModule], exports: [InputText] });\nInputTextModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputTextModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: InputTextModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [InputText],\n declarations: [InputText]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { InputText, InputTextModule };\n//# sourceMappingURL=primeng-inputtext.mjs.map\n//# sourceMappingURL=primeng-inputtext.mjs.map\n","import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/api';\nimport { TranslationKeys, Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ObjectUtils } from 'primeng/utils';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\n\nconst LISTBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Listbox),\n multi: true\n};\nclass Listbox {\n constructor(el, cd, filterService, config) {\n this.el = el;\n this.cd = cd;\n this.filterService = filterService;\n this.config = config;\n this.checkbox = false;\n this.filter = false;\n this.filterMatchMode = 'contains';\n this.metaKeySelection = true;\n this.showToggleAll = true;\n this.optionGroupChildren = 'items';\n this.onChange = new EventEmitter();\n this.onClick = new EventEmitter();\n this.onDblClick = new EventEmitter();\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n }\n get options() {\n return this._options;\n }\n set options(val) {\n this._options = val;\n if (this.hasFilter())\n this.activateFilter();\n }\n get filterValue() {\n return this._filterValue;\n }\n set filterValue(val) {\n this._filterValue = val;\n this.activateFilter();\n }\n ngOnInit() {\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.cd.markForCheck();\n });\n if (this.filterBy) {\n this.filterOptions = {\n filter: (value) => this.onFilter(value),\n reset: () => this.resetFilter()\n };\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n case 'group':\n this.groupTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'filter':\n this.filterTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'empty':\n this.emptyTemplate = item.template;\n break;\n case 'emptyfilter':\n this.emptyFilterTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n getOptionLabel(option) {\n return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option.label != undefined ? option.label : option;\n }\n getOptionGroupChildren(optionGroup) {\n return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n }\n getOptionGroupLabel(optionGroup) {\n return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup.label != undefined ? optionGroup.label : optionGroup;\n }\n getOptionValue(option) {\n return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : this.optionLabel || option.value === undefined ? option : option.value;\n }\n isOptionDisabled(option) {\n return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : option.disabled !== undefined ? option.disabled : false;\n }\n writeValue(value) {\n this.value = value;\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n onOptionClick(event, option) {\n if (this.disabled || this.isOptionDisabled(option) || this.readonly) {\n return;\n }\n if (this.multiple) {\n if (this.checkbox)\n this.onOptionClickCheckbox(event, option);\n else\n this.onOptionClickMultiple(event, option);\n }\n else {\n this.onOptionClickSingle(event, option);\n }\n this.onClick.emit({\n originalEvent: event,\n option: option,\n value: this.value\n });\n this.optionTouched = false;\n }\n onOptionTouchEnd(option) {\n if (this.disabled || this.isOptionDisabled(option) || this.readonly) {\n return;\n }\n this.optionTouched = true;\n }\n onOptionDoubleClick(event, option) {\n if (this.disabled || this.isOptionDisabled(option) || this.readonly) {\n return;\n }\n this.onDblClick.emit({\n originalEvent: event,\n option: option,\n value: this.value\n });\n }\n onOptionClickSingle(event, option) {\n let selected = this.isSelected(option);\n let valueChanged = false;\n let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n if (metaSelection) {\n let metaKey = event.metaKey || event.ctrlKey;\n if (selected) {\n if (metaKey) {\n this.value = null;\n valueChanged = true;\n }\n }\n else {\n this.value = this.getOptionValue(option);\n valueChanged = true;\n }\n }\n else {\n this.value = selected ? null : this.getOptionValue(option);\n valueChanged = true;\n }\n if (valueChanged) {\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n }\n onOptionClickMultiple(event, option) {\n let selected = this.isSelected(option);\n let valueChanged = false;\n let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n if (metaSelection) {\n let metaKey = event.metaKey || event.ctrlKey;\n if (selected) {\n if (metaKey) {\n this.removeOption(option);\n }\n else {\n this.value = [this.getOptionValue(option)];\n }\n valueChanged = true;\n }\n else {\n this.value = metaKey ? this.value || [] : [];\n this.value = [...this.value, this.getOptionValue(option)];\n valueChanged = true;\n }\n }\n else {\n if (selected) {\n this.removeOption(option);\n }\n else {\n this.value = [...(this.value || []), this.getOptionValue(option)];\n }\n valueChanged = true;\n }\n if (valueChanged) {\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n }\n onOptionClickCheckbox(event, option) {\n if (this.disabled || this.readonly) {\n return;\n }\n let selected = this.isSelected(option);\n if (selected) {\n this.removeOption(option);\n }\n else {\n this.value = this.value ? this.value : [];\n this.value = [...this.value, this.getOptionValue(option)];\n }\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n removeOption(option) {\n this.value = this.value.filter((val) => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));\n }\n isSelected(option) {\n let selected = false;\n let optionValue = this.getOptionValue(option);\n if (this.multiple) {\n if (this.value) {\n for (let val of this.value) {\n if (ObjectUtils.equals(val, optionValue, this.dataKey)) {\n selected = true;\n break;\n }\n }\n }\n }\n else {\n selected = ObjectUtils.equals(this.value, optionValue, this.dataKey);\n }\n return selected;\n }\n get allChecked() {\n let optionsToRender = this.optionsToRender;\n if (!optionsToRender || optionsToRender.length === 0) {\n return false;\n }\n else {\n let selectedDisabledItemsLength = 0;\n let unselectedDisabledItemsLength = 0;\n let selectedEnabledItemsLength = 0;\n let visibleOptionsLength = this.group ? 0 : this.optionsToRender.length;\n for (let option of optionsToRender) {\n if (!this.group) {\n let disabled = this.isOptionDisabled(option);\n let selected = this.isSelected(option);\n if (disabled) {\n if (selected)\n selectedDisabledItemsLength++;\n else\n unselectedDisabledItemsLength++;\n }\n else {\n if (selected)\n selectedEnabledItemsLength++;\n else\n return false;\n }\n }\n else {\n for (let opt of this.getOptionGroupChildren(option)) {\n let disabled = this.isOptionDisabled(opt);\n let selected = this.isSelected(opt);\n if (disabled) {\n if (selected)\n selectedDisabledItemsLength++;\n else\n unselectedDisabledItemsLength++;\n }\n else {\n if (selected)\n selectedEnabledItemsLength++;\n else {\n return false;\n }\n }\n visibleOptionsLength++;\n }\n }\n }\n return (visibleOptionsLength === selectedDisabledItemsLength ||\n visibleOptionsLength === selectedEnabledItemsLength ||\n (selectedEnabledItemsLength && visibleOptionsLength === selectedEnabledItemsLength + unselectedDisabledItemsLength + selectedDisabledItemsLength));\n }\n }\n get optionsToRender() {\n return this._filteredOptions || this.options;\n }\n get emptyMessageLabel() {\n return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n }\n get emptyFilterMessageLabel() {\n return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);\n }\n hasFilter() {\n return this._filterValue && this._filterValue.trim().length > 0;\n }\n isEmpty() {\n return !this.optionsToRender || (this.optionsToRender && this.optionsToRender.length === 0);\n }\n onFilter(event) {\n this._filterValue = event.target.value;\n this.activateFilter();\n }\n activateFilter() {\n if (this.hasFilter() && this._options) {\n if (this.group) {\n let searchFields = (this.filterBy || this.optionLabel || 'label').split(',');\n let filteredGroups = [];\n for (let optgroup of this.options) {\n let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n if (filteredSubOptions && filteredSubOptions.length) {\n filteredGroups.push({ ...optgroup, ...{ [this.optionGroupChildren]: filteredSubOptions } });\n }\n }\n this._filteredOptions = filteredGroups;\n }\n else {\n this._filteredOptions = this._options.filter((option) => this.filterService.filters[this.filterMatchMode](this.getOptionLabel(option), this._filterValue, this.filterLocale));\n }\n }\n else {\n this._filteredOptions = null;\n }\n }\n resetFilter() {\n if (this.filterViewChild && this.filterViewChild.nativeElement) {\n this.filterViewChild.nativeElement.value = '';\n }\n this._filterValue = null;\n this._filteredOptions = null;\n }\n get toggleAllDisabled() {\n let optionsToRender = this.optionsToRender;\n if (!optionsToRender || optionsToRender.length === 0) {\n return true;\n }\n else {\n for (let option of optionsToRender) {\n if (!this.isOptionDisabled(option))\n return false;\n }\n return true;\n }\n }\n toggleAll(event) {\n if (this.disabled || this.toggleAllDisabled || this.readonly) {\n return;\n }\n let allChecked = this.allChecked;\n if (allChecked)\n this.uncheckAll();\n else\n this.checkAll();\n this.onModelChange(this.value);\n this.onChange.emit({ originalEvent: event, value: this.value });\n event.preventDefault();\n }\n checkAll() {\n let optionsToRender = this.optionsToRender;\n let val = [];\n optionsToRender.forEach((opt) => {\n if (!this.group) {\n let optionDisabled = this.isOptionDisabled(opt);\n if (!optionDisabled || (optionDisabled && this.isSelected(opt))) {\n val.push(this.getOptionValue(opt));\n }\n }\n else {\n let subOptions = this.getOptionGroupChildren(opt);\n if (subOptions) {\n subOptions.forEach((option) => {\n let optionDisabled = this.isOptionDisabled(option);\n if (!optionDisabled || (optionDisabled && this.isSelected(option))) {\n val.push(this.getOptionValue(option));\n }\n });\n }\n }\n });\n this.value = val;\n }\n uncheckAll() {\n let optionsToRender = this.optionsToRender;\n let val = [];\n optionsToRender.forEach((opt) => {\n if (!this.group) {\n let optionDisabled = this.isOptionDisabled(opt);\n if (optionDisabled && this.isSelected(opt)) {\n val.push(this.getOptionValue(opt));\n }\n }\n else {\n if (opt.items) {\n opt.items.forEach((option) => {\n let optionDisabled = this.isOptionDisabled(option);\n if (optionDisabled && this.isSelected(option)) {\n val.push(this.getOptionValue(option));\n }\n });\n }\n }\n });\n this.value = val;\n }\n onOptionKeyDown(event, option) {\n if (this.readonly) {\n return;\n }\n let item = event.currentTarget;\n switch (event.which) {\n //down\n case 40:\n var nextItem = this.findNextItem(item);\n if (nextItem) {\n nextItem.focus();\n }\n event.preventDefault();\n break;\n //up\n case 38:\n var prevItem = this.findPrevItem(item);\n if (prevItem) {\n prevItem.focus();\n }\n event.preventDefault();\n break;\n //enter\n case 13:\n this.onOptionClick(event, option);\n event.preventDefault();\n break;\n }\n }\n findNextItem(item) {\n let nextItem = item.nextElementSibling;\n if (nextItem)\n return DomHandler.hasClass(nextItem, 'p-disabled') || DomHandler.isHidden(nextItem) || DomHandler.hasClass(nextItem, 'p-listbox-item-group') ? this.findNextItem(nextItem) : nextItem;\n else\n return null;\n }\n findPrevItem(item) {\n let prevItem = item.previousElementSibling;\n if (prevItem)\n return DomHandler.hasClass(prevItem, 'p-disabled') || DomHandler.isHidden(prevItem) || DomHandler.hasClass(prevItem, 'p-listbox-item-group') ? this.findPrevItem(prevItem) : prevItem;\n else\n return null;\n }\n onHeaderCheckboxFocus() {\n this.headerCheckboxFocus = true;\n }\n onHeaderCheckboxBlur() {\n this.headerCheckboxFocus = false;\n }\n ngOnDestroy() {\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n }\n}\nListbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Listbox, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\nListbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Listbox, selector: \"p-listbox\", inputs: { multiple: \"multiple\", style: \"style\", styleClass: \"styleClass\", listStyle: \"listStyle\", listStyleClass: \"listStyleClass\", readonly: \"readonly\", disabled: \"disabled\", checkbox: \"checkbox\", filter: \"filter\", filterBy: \"filterBy\", filterMatchMode: \"filterMatchMode\", filterLocale: \"filterLocale\", metaKeySelection: \"metaKeySelection\", dataKey: \"dataKey\", showToggleAll: \"showToggleAll\", optionLabel: \"optionLabel\", optionValue: \"optionValue\", optionGroupChildren: \"optionGroupChildren\", optionGroupLabel: \"optionGroupLabel\", optionDisabled: \"optionDisabled\", ariaFilterLabel: \"ariaFilterLabel\", filterPlaceHolder: \"filterPlaceHolder\", emptyFilterMessage: \"emptyFilterMessage\", emptyMessage: \"emptyMessage\", group: \"group\", options: \"options\", filterValue: \"filterValue\" }, outputs: { onChange: \"onChange\", onClick: \"onClick\", onDblClick: \"onDblClick\" }, host: { classAttribute: \"p-element\" }, providers: [LISTBOX_VALUE_ACCESSOR], queries: [{ propertyName: \"headerFacet\", first: true, predicate: Header, descendants: true }, { propertyName: \"footerFacet\", first: true, predicate: Footer, descendants: true }, { propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"headerCheckboxViewChild\", first: true, predicate: [\"headerchkbox\"], descendants: true }, { propertyName: \"filterViewChild\", first: true, predicate: [\"filter\"], descendants: true }], ngImport: i0, template: `\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n \n \n \n
\n \n \n
\n
\n
\n
\n
    \n \n \n
  • \n {{ getOptionGroupLabel(optgroup) || 'empty' }}\n \n
  • \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n
    \n
    \n {{ getOptionLabel(option) }}\n \n \n
    \n
  • \n \n {{ emptyFilterMessageLabel }}\n \n \n
  • \n
  • \n \n {{ emptyMessageLabel }}\n \n \n
  • \n
\n
\n
\n \n \n
\n
\n `, isInline: true, styles: [\".p-listbox-list-wrapper{overflow:auto}.p-listbox-list{list-style-type:none;margin:0;padding:0}.p-listbox-item{cursor:pointer;position:relative;overflow:hidden;display:flex;align-items:center;-webkit-user-select:none;user-select:none}.p-listbox-header{display:flex;align-items:center}.p-listbox-filter-container{position:relative;flex:1 1 auto}.p-listbox-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-listbox-filter{width:100%}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i3.Ripple, selector: \"[pRipple]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Listbox, decorators: [{\n type: Component,\n args: [{ selector: 'p-listbox', template: `\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n \n \n \n
\n \n \n
\n
\n
\n
\n
    \n \n \n
  • \n {{ getOptionGroupLabel(optgroup) || 'empty' }}\n \n
  • \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n
    \n
    \n {{ getOptionLabel(option) }}\n \n \n
    \n
  • \n \n {{ emptyFilterMessageLabel }}\n \n \n
  • \n
  • \n \n {{ emptyMessageLabel }}\n \n \n
  • \n
\n
\n
\n \n \n
\n
\n `, providers: [LISTBOX_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-listbox-list-wrapper{overflow:auto}.p-listbox-list{list-style-type:none;margin:0;padding:0}.p-listbox-item{cursor:pointer;position:relative;overflow:hidden;display:flex;align-items:center;-webkit-user-select:none;user-select:none}.p-listbox-header{display:flex;align-items:center}.p-listbox-filter-container{position:relative;flex:1 1 auto}.p-listbox-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-listbox-filter{width:100%}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.PrimeNGConfig }]; }, propDecorators: { multiple: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], listStyle: [{\n type: Input\n }], listStyleClass: [{\n type: Input\n }], readonly: [{\n type: Input\n }], disabled: [{\n type: Input\n }], checkbox: [{\n type: Input\n }], filter: [{\n type: Input\n }], filterBy: [{\n type: Input\n }], filterMatchMode: [{\n type: Input\n }], filterLocale: [{\n type: Input\n }], metaKeySelection: [{\n type: Input\n }], dataKey: [{\n type: Input\n }], showToggleAll: [{\n type: Input\n }], optionLabel: [{\n type: Input\n }], optionValue: [{\n type: Input\n }], optionGroupChildren: [{\n type: Input\n }], optionGroupLabel: [{\n type: Input\n }], optionDisabled: [{\n type: Input\n }], ariaFilterLabel: [{\n type: Input\n }], filterPlaceHolder: [{\n type: Input\n }], emptyFilterMessage: [{\n type: Input\n }], emptyMessage: [{\n type: Input\n }], group: [{\n type: Input\n }], onChange: [{\n type: Output\n }], onClick: [{\n type: Output\n }], onDblClick: [{\n type: Output\n }], headerCheckboxViewChild: [{\n type: ViewChild,\n args: ['headerchkbox']\n }], filterViewChild: [{\n type: ViewChild,\n args: ['filter']\n }], headerFacet: [{\n type: ContentChild,\n args: [Header]\n }], footerFacet: [{\n type: ContentChild,\n args: [Footer]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], options: [{\n type: Input\n }], filterValue: [{\n type: Input\n }] } });\nclass ListboxModule {\n}\nListboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ListboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nListboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: ListboxModule, declarations: [Listbox], imports: [CommonModule, SharedModule, RippleModule], exports: [Listbox, SharedModule] });\nListboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ListboxModule, imports: [CommonModule, SharedModule, RippleModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ListboxModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, RippleModule],\n exports: [Listbox, SharedModule],\n declarations: [Listbox]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LISTBOX_VALUE_ACCESSOR, Listbox, ListboxModule };\n//# sourceMappingURL=primeng-listbox.mjs.map\n//# sourceMappingURL=primeng-listbox.mjs.map\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Input, ContentChildren, Output, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate } from 'primeng/api';\nimport { timer } from 'rxjs';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\n\nclass Messages {\n constructor(messageService, el, cd) {\n this.messageService = messageService;\n this.el = el;\n this.cd = cd;\n this.closable = true;\n this.enableService = true;\n this.escape = true;\n this.showTransitionOptions = '300ms ease-out';\n this.hideTransitionOptions = '200ms cubic-bezier(0.86, 0, 0.07, 1)';\n this.valueChange = new EventEmitter();\n this.timerSubscriptions = [];\n }\n set value(messages) {\n this.messages = messages;\n this.startMessageLifes(this.messages);\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n if (this.messageService && this.enableService && !this.contentTemplate) {\n this.messageSubscription = this.messageService.messageObserver.subscribe((messages) => {\n if (messages) {\n if (!Array.isArray(messages)) {\n messages = [messages];\n }\n const filteredMessages = messages.filter((m) => this.key === m.key);\n this.messages = this.messages ? [...this.messages, ...filteredMessages] : [...filteredMessages];\n this.startMessageLifes(filteredMessages);\n this.cd.markForCheck();\n }\n });\n this.clearSubscription = this.messageService.clearObserver.subscribe((key) => {\n if (key) {\n if (this.key === key) {\n this.messages = null;\n }\n }\n else {\n this.messages = null;\n }\n this.cd.markForCheck();\n });\n }\n }\n hasMessages() {\n let parentEl = this.el.nativeElement.parentElement;\n if (parentEl && parentEl.offsetParent) {\n return this.contentTemplate != null || (this.messages && this.messages.length > 0);\n }\n return false;\n }\n clear() {\n this.messages = [];\n this.valueChange.emit(this.messages);\n }\n removeMessage(i) {\n this.messages = this.messages.filter((msg, index) => index !== i);\n this.valueChange.emit(this.messages);\n }\n get icon() {\n const severity = this.severity || (this.hasMessages() ? this.messages[0].severity : null);\n if (this.hasMessages()) {\n switch (severity) {\n case 'success':\n return 'pi-check';\n case 'info':\n return 'pi-info-circle';\n case 'error':\n return 'pi-times';\n case 'warn':\n return 'pi-exclamation-triangle';\n default:\n return 'pi-info-circle';\n }\n }\n return null;\n }\n ngOnDestroy() {\n if (this.messageSubscription) {\n this.messageSubscription.unsubscribe();\n }\n if (this.clearSubscription) {\n this.clearSubscription.unsubscribe();\n }\n this.timerSubscriptions?.forEach((subscription) => subscription.unsubscribe());\n }\n startMessageLifes(messages) {\n messages?.forEach((message) => message.life && this.startMessageLife(message));\n }\n startMessageLife(message) {\n const timerSubsctiption = timer(message.life).subscribe(() => {\n this.messages = this.messages?.filter((msgEl) => msgEl !== message);\n this.timerSubscriptions = this.timerSubscriptions?.filter((timerEl) => timerEl !== timerSubsctiption);\n this.valueChange.emit(this.messages);\n this.cd.markForCheck();\n });\n this.timerSubscriptions.push(timerSubsctiption);\n }\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Messages, deps: [{ token: i1.MessageService, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMessages.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Messages, selector: \"p-messages\", inputs: { value: \"value\", closable: \"closable\", style: \"style\", styleClass: \"styleClass\", enableService: \"enableService\", key: \"key\", escape: \"escape\", severity: \"severity\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\" }, outputs: { valueChange: \"valueChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n
\n \n \n
\n \n \n \n \n \n \n {{ msg.summary }}\n {{ msg.detail }}\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n \n `, isInline: true, styles: [\".p-message-wrapper{display:flex;align-items:center}.p-message-close{display:flex;align-items:center;justify-content:center}.p-message-close.p-link{margin-left:auto;overflow:hidden;position:relative}.p-messages .p-message.ng-animating{overflow:hidden}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i3.Ripple, selector: \"[pRipple]\" }], animations: [\n trigger('messageAnimation', [\n transition(':enter', [style({ opacity: 0, transform: 'translateY(-25%)' }), animate('{{showTransitionParams}}')]),\n transition(':leave', [animate('{{hideTransitionParams}}', style({ height: 0, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, opacity: 0 }))])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Messages, decorators: [{\n type: Component,\n args: [{ selector: 'p-messages', template: `\n
\n \n \n
\n \n \n \n \n \n \n {{ msg.summary }}\n {{ msg.detail }}\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n \n `, animations: [\n trigger('messageAnimation', [\n transition(':enter', [style({ opacity: 0, transform: 'translateY(-25%)' }), animate('{{showTransitionParams}}')]),\n transition(':leave', [animate('{{hideTransitionParams}}', style({ height: 0, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, opacity: 0 }))])\n ])\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-message-wrapper{display:flex;align-items:center}.p-message-close{display:flex;align-items:center;justify-content:center}.p-message-close.p-link{margin-left:auto;overflow:hidden;position:relative}.p-messages .p-message.ng-animating{overflow:hidden}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{\n type: Input\n }], closable: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], enableService: [{\n type: Input\n }], key: [{\n type: Input\n }], escape: [{\n type: Input\n }], severity: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], valueChange: [{\n type: Output\n }] } });\nclass MessagesModule {\n}\nMessagesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MessagesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMessagesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: MessagesModule, declarations: [Messages], imports: [CommonModule, RippleModule], exports: [Messages] });\nMessagesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MessagesModule, imports: [CommonModule, RippleModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MessagesModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RippleModule],\n exports: [Messages],\n declarations: [Messages]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Messages, MessagesModule };\n//# sourceMappingURL=primeng-messages.mjs.map\n//# sourceMappingURL=primeng-messages.mjs.map\n","import * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ViewEncapsulation, Input, Output, ChangeDetectionStrategy, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i3 from 'primeng/api';\nimport { TranslationKeys, Footer, Header, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport * as i4 from 'primeng/overlay';\nimport { OverlayModule } from 'primeng/overlay';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i6 from 'primeng/scroller';\nimport { ScrollerModule } from 'primeng/scroller';\nimport * as i5 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ObjectUtils } from 'primeng/utils';\n\nconst MULTISELECT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelect),\n multi: true\n};\nclass MultiSelectItem {\n constructor() {\n this.onClick = new EventEmitter();\n this.onKeydown = new EventEmitter();\n }\n onOptionClick(event) {\n this.onClick.emit({\n originalEvent: event,\n option: this.option,\n selected: this.selected\n });\n }\n onOptionKeydown(event) {\n this.onKeydown.emit({\n originalEvent: event,\n option: this.option\n });\n }\n}\nMultiSelectItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MultiSelectItem, deps: [], target: i0.ɵɵFactoryTarget.Component });\nMultiSelectItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: MultiSelectItem, selector: \"p-multiSelectItem\", inputs: { option: \"option\", selected: \"selected\", label: \"label\", disabled: \"disabled\", itemSize: \"itemSize\", template: \"template\" }, outputs: { onClick: \"onClick\", onKeydown: \"onKeydown\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n
\n
\n \n
\n
\n {{ label }}\n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i2.Ripple, selector: \"[pRipple]\" }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MultiSelectItem, decorators: [{\n type: Component,\n args: [{\n selector: 'p-multiSelectItem',\n template: `\n \n
\n
\n \n
\n
\n {{ label }}\n \n \n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], propDecorators: { option: [{\n type: Input\n }], selected: [{\n type: Input\n }], label: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemSize: [{\n type: Input\n }], template: [{\n type: Input\n }], onClick: [{\n type: Output\n }], onKeydown: [{\n type: Output\n }] } });\nclass MultiSelect {\n constructor(el, renderer, cd, zone, filterService, config, overlayService) {\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.zone = zone;\n this.filterService = filterService;\n this.config = config;\n this.overlayService = overlayService;\n this.filter = true;\n this.displaySelectedLabel = true;\n this.maxSelectedLabels = 3;\n this.selectedItemsLabel = 'ellipsis';\n this.showToggleAll = true;\n this.emptyFilterMessage = '';\n this.emptyMessage = '';\n this.resetFilterOnHide = false;\n this.dropdownIcon = 'pi pi-chevron-down';\n this.optionGroupChildren = 'items';\n this.showHeader = true;\n this.scrollHeight = '200px';\n this.lazy = false;\n this.filterMatchMode = 'contains';\n this.tooltip = '';\n this.tooltipPosition = 'right';\n this.tooltipPositionStyle = 'absolute';\n this.autofocusFilter = true;\n this.display = 'comma';\n this.autocomplete = 'on';\n this.showClear = false;\n this.onChange = new EventEmitter();\n this.onFilter = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onClick = new EventEmitter();\n this.onClear = new EventEmitter();\n this.onPanelShow = new EventEmitter();\n this.onPanelHide = new EventEmitter();\n this.onLazyLoad = new EventEmitter();\n this.onRemove = new EventEmitter();\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n }\n get autoZIndex() {\n return this._autoZIndex;\n }\n set autoZIndex(val) {\n this._autoZIndex = val;\n console.warn('The autoZIndex property is deprecated since v14.2.0, use overlayOptions property instead.');\n }\n get baseZIndex() {\n return this._baseZIndex;\n }\n set baseZIndex(val) {\n this._baseZIndex = val;\n console.warn('The baseZIndex property is deprecated since v14.2.0, use overlayOptions property instead.');\n }\n get showTransitionOptions() {\n return this._showTransitionOptions;\n }\n set showTransitionOptions(val) {\n this._showTransitionOptions = val;\n console.warn('The showTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n }\n get hideTransitionOptions() {\n return this._hideTransitionOptions;\n }\n set hideTransitionOptions(val) {\n this._hideTransitionOptions = val;\n console.warn('The hideTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n }\n set defaultLabel(val) {\n this._defaultLabel = val;\n this.updateLabel();\n }\n get defaultLabel() {\n return this._defaultLabel;\n }\n set placeholder(val) {\n this._placeholder = val;\n this.updateLabel();\n }\n get placeholder() {\n return this._placeholder;\n }\n get options() {\n return this._options;\n }\n set options(val) {\n this._options = val;\n this.updateLabel();\n }\n get filterValue() {\n return this._filterValue;\n }\n set filterValue(val) {\n this._filterValue = val;\n this.activateFilter();\n }\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(val) {\n this._itemSize = val;\n console.warn('The itemSize property is deprecated, use virtualScrollItemSize property instead.');\n }\n ngOnInit() {\n this.updateLabel();\n if (this.filterBy) {\n this.filterOptions = {\n filter: (value) => this.onFilterInputChange(value),\n reset: () => this.resetFilter()\n };\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n case 'group':\n this.groupTemplate = item.template;\n break;\n case 'selectedItems':\n this.selectedItemsTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'filter':\n this.filterTemplate = item.template;\n break;\n case 'emptyfilter':\n this.emptyFilterTemplate = item.template;\n break;\n case 'empty':\n this.emptyTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'loader':\n this.loaderTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n ngAfterViewInit() {\n if (this.overlayVisible) {\n this.show();\n }\n }\n ngAfterViewChecked() {\n if (this.filtered) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.overlayViewChild?.alignOverlay();\n }, 1);\n });\n this.filtered = false;\n }\n }\n getOptionLabel(option) {\n return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option && option.label != undefined ? option.label : option;\n }\n getOptionValue(option) {\n return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : !this.optionLabel && option && option.value !== undefined ? option.value : option;\n }\n getOptionGroupLabel(optionGroup) {\n return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label != undefined ? optionGroup.label : optionGroup;\n }\n getOptionGroupChildren(optionGroup) {\n return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n }\n isOptionDisabled(option) {\n let disabled = this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : option && option.disabled !== undefined ? option.disabled : false;\n return disabled || (this.maxSelectionLimitReached && !this.isSelected(option));\n }\n writeValue(value) {\n this.value = value;\n this.updateLabel();\n this.updateFilledState();\n this.checkSelectionLimit();\n this.cd.markForCheck();\n }\n checkSelectionLimit() {\n if (this.selectionLimit && this.value && this.value.length === this.selectionLimit) {\n this.maxSelectionLimitReached = true;\n }\n else {\n this.maxSelectionLimitReached = false;\n }\n }\n updateFilledState() {\n this.filled = this.value && this.value.length > 0;\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n onOptionClick(event) {\n let option = event.option;\n if (this.isOptionDisabled(option)) {\n return;\n }\n let optionValue = this.getOptionValue(option);\n let selectionIndex = this.findSelectionIndex(optionValue);\n if (selectionIndex != -1) {\n this.value = this.value.filter((val, i) => i != selectionIndex);\n this.onRemove.emit({ newValue: this.value, removed: optionValue });\n if (this.selectionLimit) {\n this.maxSelectionLimitReached = false;\n }\n }\n else {\n if (!this.selectionLimit || !this.value || this.value.length < this.selectionLimit) {\n this.value = [...(this.value || []), optionValue];\n }\n this.checkSelectionLimit();\n }\n this.onModelChange(this.value);\n this.onChange.emit({ originalEvent: event.originalEvent, value: this.value, itemValue: optionValue });\n this.updateLabel();\n this.updateFilledState();\n }\n isSelected(option) {\n return this.findSelectionIndex(this.getOptionValue(option)) != -1;\n }\n findSelectionIndex(val) {\n let index = -1;\n if (this.value) {\n for (let i = 0; i < this.value.length; i++) {\n if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {\n index = i;\n break;\n }\n }\n }\n return index;\n }\n get toggleAllDisabled() {\n let optionsToRender = this.optionsToRender;\n if (!optionsToRender || optionsToRender.length === 0) {\n return true;\n }\n else {\n for (let option of optionsToRender) {\n if (!this.isOptionDisabled(option))\n return false;\n }\n return true;\n }\n }\n toggleAll(event) {\n if (this.disabled || this.toggleAllDisabled || this.readonly) {\n return;\n }\n let allChecked = this.allChecked;\n if (allChecked)\n this.uncheckAll();\n else\n this.checkAll();\n this.onModelChange(this.value);\n this.onChange.emit({ originalEvent: event, value: this.value });\n this.updateFilledState();\n this.updateLabel();\n event.preventDefault();\n }\n checkAll() {\n let optionsToRender = this.optionsToRender;\n let val = [];\n optionsToRender.forEach((opt) => {\n if (!this.group) {\n let optionDisabled = this.isOptionDisabled(opt);\n if (!optionDisabled || (optionDisabled && this.isSelected(opt))) {\n val.push(this.getOptionValue(opt));\n }\n }\n else {\n let subOptions = this.getOptionGroupChildren(opt);\n if (subOptions) {\n subOptions.forEach((option) => {\n let optionDisabled = this.isOptionDisabled(option);\n if (!optionDisabled || (optionDisabled && this.isSelected(option))) {\n val.push(this.getOptionValue(option));\n }\n });\n }\n }\n });\n this.value = val;\n }\n uncheckAll() {\n let optionsToRender = this.optionsToRender;\n let val = [];\n optionsToRender.forEach((opt) => {\n if (!this.group) {\n let optionDisabled = this.isOptionDisabled(opt);\n if (optionDisabled && this.isSelected(opt)) {\n val.push(this.getOptionValue(opt));\n }\n }\n else {\n if (opt.items) {\n opt.items.forEach((option) => {\n let optionDisabled = this.isOptionDisabled(option);\n if (optionDisabled && this.isSelected(option)) {\n val.push(this.getOptionValue(option));\n }\n });\n }\n }\n });\n this.value = val;\n }\n show() {\n if (!this.overlayVisible) {\n this.overlayVisible = true;\n this.preventDocumentDefault = true;\n this.cd.markForCheck();\n }\n }\n onOverlayAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.virtualScroll && this.scroller?.setContentEl(this.itemsViewChild.nativeElement);\n if (this.filterInputChild && this.filterInputChild.nativeElement) {\n this.preventModelTouched = true;\n if (this.autofocusFilter) {\n this.filterInputChild.nativeElement.focus();\n }\n }\n this.onPanelShow.emit();\n break;\n case 'void':\n this.onModelTouched();\n break;\n }\n }\n hide() {\n this.overlayVisible = false;\n if (this.resetFilterOnHide) {\n this.resetFilter();\n }\n this.onPanelHide.emit();\n this.cd.markForCheck();\n }\n resetFilter() {\n if (this.filterInputChild && this.filterInputChild.nativeElement) {\n this.filterInputChild.nativeElement.value = '';\n }\n this._filterValue = null;\n this._filteredOptions = null;\n }\n close(event) {\n this.hide();\n event.preventDefault();\n event.stopPropagation();\n }\n clear(event) {\n this.value = null;\n this.updateLabel();\n this.updateFilledState();\n this.onClear.emit();\n this.onModelChange(this.value);\n event.stopPropagation();\n }\n onMouseclick(event, input) {\n if (this.disabled || this.readonly || event.target.isSameNode(this.accessibleViewChild.nativeElement)) {\n return;\n }\n this.onClick.emit(event);\n if (!this.overlayViewChild?.el?.nativeElement?.contains(event.target) && !DomHandler.hasClass(event.target, 'p-multiselect-token-icon')) {\n if (this.overlayVisible) {\n this.hide();\n }\n else {\n this.show();\n }\n input.focus();\n }\n }\n removeChip(chip, event) {\n this.value = this.value.filter((val) => !ObjectUtils.equals(val, chip, this.dataKey));\n this.onModelChange(this.value);\n this.checkSelectionLimit();\n this.onChange.emit({ originalEvent: event, value: this.value, itemValue: chip });\n this.updateLabel();\n this.updateFilledState();\n }\n onInputFocus(event) {\n this.focus = true;\n this.onFocus.emit({ originalEvent: event });\n }\n onInputBlur(event) {\n this.focus = false;\n this.onBlur.emit({ originalEvent: event });\n if (!this.preventModelTouched) {\n this.onModelTouched();\n }\n this.preventModelTouched = false;\n }\n onOptionKeydown(event) {\n if (this.readonly) {\n return;\n }\n switch (event.originalEvent.which) {\n //down\n case 40:\n var nextItem = this.findNextItem(event.originalEvent.target.parentElement);\n if (nextItem) {\n nextItem.focus();\n }\n event.originalEvent.preventDefault();\n break;\n //up\n case 38:\n var prevItem = this.findPrevItem(event.originalEvent.target.parentElement);\n if (prevItem) {\n prevItem.focus();\n }\n event.originalEvent.preventDefault();\n break;\n //enter\n case 13:\n this.onOptionClick(event);\n event.originalEvent.preventDefault();\n break;\n case 27:\n case 9:\n this.hide();\n break;\n }\n }\n findNextItem(item) {\n let nextItem = item.nextElementSibling;\n if (nextItem)\n return DomHandler.hasClass(nextItem.children[0], 'p-disabled') || DomHandler.isHidden(nextItem.children[0]) || DomHandler.hasClass(nextItem, 'p-multiselect-item-group') ? this.findNextItem(nextItem) : nextItem.children[0];\n else\n return null;\n }\n findPrevItem(item) {\n let prevItem = item.previousElementSibling;\n if (prevItem)\n return DomHandler.hasClass(prevItem.children[0], 'p-disabled') || DomHandler.isHidden(prevItem.children[0]) || DomHandler.hasClass(prevItem, 'p-multiselect-item-group') ? this.findPrevItem(prevItem) : prevItem.children[0];\n else\n return null;\n }\n onKeydown(event) {\n switch (event.which) {\n //down\n case 40:\n if (!this.overlayVisible && event.altKey) {\n this.show();\n event.preventDefault();\n }\n break;\n //space\n case 32:\n if (!this.overlayVisible) {\n this.show();\n event.preventDefault();\n }\n break;\n //escape\n case 27:\n this.hide();\n break;\n }\n }\n updateLabel() {\n if (this.value && this.options && this.value.length && this.displaySelectedLabel) {\n let label = '';\n for (let i = 0; i < this.value.length; i++) {\n let itemLabel = this.findLabelByValue(this.value[i]);\n if (itemLabel) {\n if (label.length > 0) {\n label = label + ', ';\n }\n label = label + itemLabel;\n }\n }\n if (this.value.length <= this.maxSelectedLabels || this.selectedItemsLabel === 'ellipsis') {\n this.valuesAsString = label;\n }\n else {\n let pattern = /{(.*?)}/;\n if (pattern.test(this.selectedItemsLabel)) {\n this.valuesAsString = this.selectedItemsLabel.replace(this.selectedItemsLabel.match(pattern)[0], this.value.length + '');\n }\n else {\n this.valuesAsString = this.selectedItemsLabel;\n }\n }\n }\n else {\n this.valuesAsString = this.placeholder || this.defaultLabel;\n }\n }\n findLabelByValue(val) {\n if (this.group) {\n let label = null;\n for (let i = 0; i < this.options.length; i++) {\n let subOptions = this.getOptionGroupChildren(this.options[i]);\n if (subOptions) {\n label = this.searchLabelByValue(val, subOptions);\n if (label) {\n break;\n }\n }\n }\n return label;\n }\n else {\n return this.searchLabelByValue(val, this.options);\n }\n }\n searchLabelByValue(val, options) {\n let label = null;\n for (let i = 0; i < options.length; i++) {\n let option = options[i];\n let optionValue = this.getOptionValue(option);\n if ((val == null && optionValue == null) || ObjectUtils.equals(val, optionValue, this.dataKey)) {\n label = this.getOptionLabel(option);\n break;\n }\n }\n return label;\n }\n get allChecked() {\n let optionsToRender = this.optionsToRender;\n if (!optionsToRender || optionsToRender.length === 0) {\n return false;\n }\n else {\n let selectedDisabledItemsLength = 0;\n let unselectedDisabledItemsLength = 0;\n let selectedEnabledItemsLength = 0;\n let visibleOptionsLength = this.group ? 0 : this.optionsToRender.length;\n for (let option of optionsToRender) {\n if (!this.group) {\n let disabled = this.isOptionDisabled(option);\n let selected = this.isSelected(option);\n if (disabled) {\n if (selected)\n selectedDisabledItemsLength++;\n else\n unselectedDisabledItemsLength++;\n }\n else {\n if (selected)\n selectedEnabledItemsLength++;\n else\n return false;\n }\n }\n else {\n for (let opt of this.getOptionGroupChildren(option)) {\n let disabled = this.isOptionDisabled(opt);\n let selected = this.isSelected(opt);\n if (disabled) {\n if (selected)\n selectedDisabledItemsLength++;\n else\n unselectedDisabledItemsLength++;\n }\n else {\n if (selected)\n selectedEnabledItemsLength++;\n else {\n return false;\n }\n }\n visibleOptionsLength++;\n }\n }\n }\n return (visibleOptionsLength === selectedDisabledItemsLength ||\n visibleOptionsLength === selectedEnabledItemsLength ||\n (selectedEnabledItemsLength && visibleOptionsLength === selectedEnabledItemsLength + unselectedDisabledItemsLength + selectedDisabledItemsLength));\n }\n }\n get optionsToRender() {\n return this._filteredOptions || this.options;\n }\n get emptyMessageLabel() {\n return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n }\n get emptyFilterMessageLabel() {\n return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);\n }\n hasFilter() {\n return this._filterValue && this._filterValue.trim().length > 0;\n }\n isEmpty() {\n return !this.optionsToRender || (this.optionsToRender && this.optionsToRender.length === 0);\n }\n onFilterInputChange(event) {\n this._filterValue = event.target.value;\n this.activateFilter();\n this.onFilter.emit({ originalEvent: event, filter: this._filterValue });\n this.cd.detectChanges();\n }\n activateFilter() {\n if (this.hasFilter() && this._options) {\n let searchFields = (this.filterBy || this.optionLabel || 'label').split(',');\n if (this.group) {\n let filteredGroups = [];\n for (let optgroup of this.options) {\n let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n if (filteredSubOptions && filteredSubOptions.length) {\n filteredGroups.push({ ...optgroup, ...{ [this.optionGroupChildren]: filteredSubOptions } });\n }\n }\n this._filteredOptions = filteredGroups;\n }\n else {\n this._filteredOptions = this.filterService.filter(this.options, searchFields, this._filterValue, this.filterMatchMode, this.filterLocale);\n }\n }\n else {\n this._filteredOptions = null;\n }\n }\n onHeaderCheckboxFocus() {\n this.headerCheckboxFocus = true;\n }\n onHeaderCheckboxBlur() {\n this.headerCheckboxFocus = false;\n }\n}\nMultiSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MultiSelect, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i3.FilterService }, { token: i3.PrimeNGConfig }, { token: i3.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\nMultiSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: MultiSelect, selector: \"p-multiSelect\", inputs: { style: \"style\", styleClass: \"styleClass\", panelStyle: \"panelStyle\", panelStyleClass: \"panelStyleClass\", inputId: \"inputId\", disabled: \"disabled\", readonly: \"readonly\", group: \"group\", filter: \"filter\", filterPlaceHolder: \"filterPlaceHolder\", filterLocale: \"filterLocale\", overlayVisible: \"overlayVisible\", tabindex: \"tabindex\", appendTo: \"appendTo\", dataKey: \"dataKey\", name: \"name\", label: \"label\", ariaLabelledBy: \"ariaLabelledBy\", displaySelectedLabel: \"displaySelectedLabel\", maxSelectedLabels: \"maxSelectedLabels\", selectionLimit: \"selectionLimit\", selectedItemsLabel: \"selectedItemsLabel\", showToggleAll: \"showToggleAll\", emptyFilterMessage: \"emptyFilterMessage\", emptyMessage: \"emptyMessage\", resetFilterOnHide: \"resetFilterOnHide\", dropdownIcon: \"dropdownIcon\", optionLabel: \"optionLabel\", optionValue: \"optionValue\", optionDisabled: \"optionDisabled\", optionGroupLabel: \"optionGroupLabel\", optionGroupChildren: \"optionGroupChildren\", showHeader: \"showHeader\", filterBy: \"filterBy\", scrollHeight: \"scrollHeight\", lazy: \"lazy\", virtualScroll: \"virtualScroll\", virtualScrollItemSize: \"virtualScrollItemSize\", virtualScrollOptions: \"virtualScrollOptions\", overlayOptions: \"overlayOptions\", ariaFilterLabel: \"ariaFilterLabel\", filterMatchMode: \"filterMatchMode\", tooltip: \"tooltip\", tooltipPosition: \"tooltipPosition\", tooltipPositionStyle: \"tooltipPositionStyle\", tooltipStyleClass: \"tooltipStyleClass\", autofocusFilter: \"autofocusFilter\", display: \"display\", autocomplete: \"autocomplete\", showClear: \"showClear\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", defaultLabel: \"defaultLabel\", placeholder: \"placeholder\", options: \"options\", filterValue: \"filterValue\", itemSize: \"itemSize\" }, outputs: { onChange: \"onChange\", onFilter: \"onFilter\", onFocus: \"onFocus\", onBlur: \"onBlur\", onClick: \"onClick\", onClear: \"onClear\", onPanelShow: \"onPanelShow\", onPanelHide: \"onPanelHide\", onLazyLoad: \"onLazyLoad\", onRemove: \"onRemove\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled\", \"class.p-inputwrapper-focus\": \"focus || overlayVisible\", \"class.p-multiselect-clearable\": \"showClear && !disabled\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [MULTISELECT_VALUE_ACCESSOR], queries: [{ propertyName: \"footerFacet\", first: true, predicate: Footer, descendants: true }, { propertyName: \"headerFacet\", first: true, predicate: Header, descendants: true }, { propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"overlayViewChild\", first: true, predicate: [\"overlay\"], descendants: true }, { propertyName: \"filterInputChild\", first: true, predicate: [\"filterInput\"], descendants: true }, { propertyName: \"accessibleViewChild\", first: true, predicate: [\"in\"], descendants: true }, { propertyName: \"itemsViewChild\", first: true, predicate: [\"items\"], descendants: true }, { propertyName: \"scroller\", first: true, predicate: [\"scroller\"], descendants: true }], ngImport: i0, template: `\n \n
\n \n
\n
\n \n \n {{ valuesAsString || 'empty' }}\n \n
\n {{ findLabelByValue(item) }}\n \n
\n {{ placeholder || defaultLabel || 'empty' }}\n
\n
\n \n
\n \n \n
\n \n
\n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n
\n \n \n
\n
\n
\n \n \n
\n \n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n
    \n \n \n
  • \n {{ getOptionGroupLabel(optgroup) || 'empty' }}\n \n
  • \n \n
    \n
    \n \n \n \n \n \n \n \n \n
  • \n \n {{ emptyFilterMessageLabel }}\n \n \n
  • \n
  • \n \n {{ emptyMessageLabel }}\n \n \n
  • \n
\n
\n
\n
\n \n \n
\n \n
\n \n \n `, isInline: true, styles: [\".p-multiselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.p-multiselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-multiselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-multiselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-multiselect-chip .p-multiselect-label{display:flex}.p-multiselect-label-empty{overflow:hidden;visibility:hidden}.p-multiselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-multiselect-token-icon{cursor:pointer}.p-multiselect-items-wrapper{overflow:auto}.p-multiselect-items{margin:0;padding:0;list-style-type:none}.p-multiselect-item{cursor:pointer;display:flex;align-items:center;font-weight:400;white-space:nowrap;position:relative;overflow:hidden}.p-multiselect-header{display:flex;align-items:center;justify-content:space-between}.p-multiselect-filter-container{position:relative;flex:1 1 auto}.p-multiselect-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-multiselect-filter-container .p-inputtext{width:100%}.p-multiselect-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative}.p-fluid .p-multiselect{display:flex}.p-multiselect-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-multiselect-clearable{position:relative}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i4.Overlay, selector: \"p-overlay\", inputs: [\"visible\", \"mode\", \"style\", \"styleClass\", \"contentStyle\", \"contentStyleClass\", \"target\", \"appendTo\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"listener\", \"responsive\", \"options\"], outputs: [\"visibleChange\", \"onBeforeShow\", \"onShow\", \"onBeforeHide\", \"onHide\", \"onAnimationStart\", \"onAnimationDone\"] }, { kind: \"directive\", type: i3.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"directive\", type: i5.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"directive\", type: i2.Ripple, selector: \"[pRipple]\" }, { kind: \"component\", type: i6.Scroller, selector: \"p-scroller\", inputs: [\"id\", \"style\", \"styleClass\", \"tabindex\", \"items\", \"itemSize\", \"scrollHeight\", \"scrollWidth\", \"orientation\", \"step\", \"delay\", \"resizeDelay\", \"appendOnly\", \"inline\", \"lazy\", \"disabled\", \"loaderDisabled\", \"columns\", \"showSpacer\", \"showLoader\", \"numToleratedItems\", \"loading\", \"autoSize\", \"trackBy\", \"options\"], outputs: [\"onLazyLoad\", \"onScroll\", \"onScrollIndexChange\"] }, { kind: \"component\", type: MultiSelectItem, selector: \"p-multiSelectItem\", inputs: [\"option\", \"selected\", \"label\", \"disabled\", \"itemSize\", \"template\"], outputs: [\"onClick\", \"onKeydown\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MultiSelect, decorators: [{\n type: Component,\n args: [{ selector: 'p-multiSelect', template: `\n \n
\n \n
\n
\n \n \n {{ valuesAsString || 'empty' }}\n \n
\n {{ findLabelByValue(item) }}\n \n
\n {{ placeholder || defaultLabel || 'empty' }}\n
\n
\n \n
\n \n \n
\n \n
\n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n
\n \n \n
\n
\n
\n \n \n
\n \n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n
    \n \n \n
  • \n {{ getOptionGroupLabel(optgroup) || 'empty' }}\n \n
  • \n \n
    \n
    \n \n \n \n \n \n \n \n \n
  • \n \n {{ emptyFilterMessageLabel }}\n \n \n
  • \n
  • \n \n {{ emptyMessageLabel }}\n \n \n
  • \n
\n
\n
\n
\n \n \n
\n \n
\n \n \n `, host: {\n class: 'p-element p-inputwrapper',\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': 'focus || overlayVisible',\n '[class.p-multiselect-clearable]': 'showClear && !disabled'\n }, providers: [MULTISELECT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".p-multiselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.p-multiselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-multiselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-multiselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-multiselect-chip .p-multiselect-label{display:flex}.p-multiselect-label-empty{overflow:hidden;visibility:hidden}.p-multiselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-multiselect-token-icon{cursor:pointer}.p-multiselect-items-wrapper{overflow:auto}.p-multiselect-items{margin:0;padding:0;list-style-type:none}.p-multiselect-item{cursor:pointer;display:flex;align-items:center;font-weight:400;white-space:nowrap;position:relative;overflow:hidden}.p-multiselect-header{display:flex;align-items:center;justify-content:space-between}.p-multiselect-filter-container{position:relative;flex:1 1 auto}.p-multiselect-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-multiselect-filter-container .p-inputtext{width:100%}.p-multiselect-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative}.p-fluid .p-multiselect{display:flex}.p-multiselect-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-multiselect-clearable{position:relative}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i3.FilterService }, { type: i3.PrimeNGConfig }, { type: i3.OverlayService }]; }, propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], panelStyle: [{\n type: Input\n }], panelStyleClass: [{\n type: Input\n }], inputId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], group: [{\n type: Input\n }], filter: [{\n type: Input\n }], filterPlaceHolder: [{\n type: Input\n }], filterLocale: [{\n type: Input\n }], overlayVisible: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], dataKey: [{\n type: Input\n }], name: [{\n type: Input\n }], label: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], displaySelectedLabel: [{\n type: Input\n }], maxSelectedLabels: [{\n type: Input\n }], selectionLimit: [{\n type: Input\n }], selectedItemsLabel: [{\n type: Input\n }], showToggleAll: [{\n type: Input\n }], emptyFilterMessage: [{\n type: Input\n }], emptyMessage: [{\n type: Input\n }], resetFilterOnHide: [{\n type: Input\n }], dropdownIcon: [{\n type: Input\n }], optionLabel: [{\n type: Input\n }], optionValue: [{\n type: Input\n }], optionDisabled: [{\n type: Input\n }], optionGroupLabel: [{\n type: Input\n }], optionGroupChildren: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], filterBy: [{\n type: Input\n }], scrollHeight: [{\n type: Input\n }], lazy: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], virtualScrollItemSize: [{\n type: Input\n }], virtualScrollOptions: [{\n type: Input\n }], overlayOptions: [{\n type: Input\n }], ariaFilterLabel: [{\n type: Input\n }], filterMatchMode: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], tooltipPosition: [{\n type: Input\n }], tooltipPositionStyle: [{\n type: Input\n }], tooltipStyleClass: [{\n type: Input\n }], autofocusFilter: [{\n type: Input\n }], display: [{\n type: Input\n }], autocomplete: [{\n type: Input\n }], showClear: [{\n type: Input\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }], overlayViewChild: [{\n type: ViewChild,\n args: ['overlay']\n }], filterInputChild: [{\n type: ViewChild,\n args: ['filterInput']\n }], accessibleViewChild: [{\n type: ViewChild,\n args: ['in']\n }], itemsViewChild: [{\n type: ViewChild,\n args: ['items']\n }], scroller: [{\n type: ViewChild,\n args: ['scroller']\n }], footerFacet: [{\n type: ContentChild,\n args: [Footer]\n }], headerFacet: [{\n type: ContentChild,\n args: [Header]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], onChange: [{\n type: Output\n }], onFilter: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onClick: [{\n type: Output\n }], onClear: [{\n type: Output\n }], onPanelShow: [{\n type: Output\n }], onPanelHide: [{\n type: Output\n }], onLazyLoad: [{\n type: Output\n }], onRemove: [{\n type: Output\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], defaultLabel: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], options: [{\n type: Input\n }], filterValue: [{\n type: Input\n }], itemSize: [{\n type: Input\n }] } });\nclass MultiSelectModule {\n}\nMultiSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMultiSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: MultiSelectModule, declarations: [MultiSelect, MultiSelectItem], imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule], exports: [MultiSelect, OverlayModule, SharedModule, ScrollerModule] });\nMultiSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MultiSelectModule, imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, OverlayModule, SharedModule, ScrollerModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: MultiSelectModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule],\n exports: [MultiSelect, OverlayModule, SharedModule, ScrollerModule],\n declarations: [MultiSelect, MultiSelectItem]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MULTISELECT_VALUE_ACCESSOR, MultiSelect, MultiSelectItem, MultiSelectModule };\n//# sourceMappingURL=primeng-multiselect.mjs.map\n//# sourceMappingURL=primeng-multiselect.mjs.map\n","import { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ObjectUtils, ZIndexUtils } from 'primeng/utils';\n\nconst OVERLAY_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Overlay),\n multi: true\n};\nconst showOverlayContentAnimation = animation([style({ transform: '{{transform}}', opacity: 0 }), animate('{{showTransitionParams}}')]);\nconst hideOverlayContentAnimation = animation([animate('{{hideTransitionParams}}', style({ transform: '{{transform}}', opacity: 0 }))]);\nclass Overlay {\n constructor(document, platformId, el, renderer, config, overlayService, zone) {\n this.document = document;\n this.platformId = platformId;\n this.el = el;\n this.renderer = renderer;\n this.config = config;\n this.overlayService = overlayService;\n this.zone = zone;\n this.visibleChange = new EventEmitter();\n this.onBeforeShow = new EventEmitter();\n this.onShow = new EventEmitter();\n this.onBeforeHide = new EventEmitter();\n this.onHide = new EventEmitter();\n this.onAnimationStart = new EventEmitter();\n this.onAnimationDone = new EventEmitter();\n this._visible = false;\n this.modalVisible = false;\n this.isOverlayClicked = false;\n this.isOverlayContentClicked = false;\n this.transformOptions = {\n default: 'scaleY(0.8)',\n center: 'scale(0.7)',\n top: 'translate3d(0px, -100%, 0px)',\n 'top-start': 'translate3d(0px, -100%, 0px)',\n 'top-end': 'translate3d(0px, -100%, 0px)',\n bottom: 'translate3d(0px, 100%, 0px)',\n 'bottom-start': 'translate3d(0px, 100%, 0px)',\n 'bottom-end': 'translate3d(0px, 100%, 0px)',\n left: 'translate3d(-100%, 0px, 0px)',\n 'left-start': 'translate3d(-100%, 0px, 0px)',\n 'left-end': 'translate3d(-100%, 0px, 0px)',\n right: 'translate3d(100%, 0px, 0px)',\n 'right-start': 'translate3d(100%, 0px, 0px)',\n 'right-end': 'translate3d(100%, 0px, 0px)'\n };\n this.window = this.document.defaultView;\n }\n get visible() {\n return this._visible;\n }\n set visible(value) {\n this._visible = value;\n if (this._visible && !this.modalVisible) {\n this.modalVisible = true;\n }\n }\n get mode() {\n return this._mode || this.overlayOptions?.mode;\n }\n set mode(value) {\n this._mode = value;\n }\n get style() {\n return ObjectUtils.merge(this._style, this.modal ? this.overlayResponsiveOptions?.style : this.overlayOptions?.style);\n }\n set style(value) {\n this._style = value;\n }\n get styleClass() {\n return ObjectUtils.merge(this._styleClass, this.modal ? this.overlayResponsiveOptions?.styleClass : this.overlayOptions?.styleClass);\n }\n set styleClass(value) {\n this._styleClass = value;\n }\n get contentStyle() {\n return ObjectUtils.merge(this._contentStyle, this.modal ? this.overlayResponsiveOptions?.contentStyle : this.overlayOptions?.contentStyle);\n }\n set contentStyle(value) {\n this._contentStyle = value;\n }\n get contentStyleClass() {\n return ObjectUtils.merge(this._contentStyleClass, this.modal ? this.overlayResponsiveOptions?.contentStyleClass : this.overlayOptions?.contentStyleClass);\n }\n set contentStyleClass(value) {\n this._contentStyleClass = value;\n }\n get target() {\n const value = this._target || this.overlayOptions?.target;\n return value === undefined ? '@prev' : value;\n }\n set target(value) {\n this._target = value;\n }\n get appendTo() {\n return this._appendTo || this.overlayOptions?.appendTo;\n }\n set appendTo(value) {\n this._appendTo = value;\n }\n get autoZIndex() {\n const value = this._autoZIndex || this.overlayOptions?.autoZIndex;\n return value === undefined ? true : value;\n }\n set autoZIndex(value) {\n this._autoZIndex = value;\n }\n get baseZIndex() {\n const value = this._baseZIndex || this.overlayOptions?.baseZIndex;\n return value === undefined ? 0 : value;\n }\n set baseZIndex(value) {\n this._baseZIndex = value;\n }\n get showTransitionOptions() {\n const value = this._showTransitionOptions || this.overlayOptions?.showTransitionOptions;\n return value === undefined ? '.12s cubic-bezier(0, 0, 0.2, 1)' : value;\n }\n set showTransitionOptions(value) {\n this._showTransitionOptions = value;\n }\n get hideTransitionOptions() {\n const value = this._hideTransitionOptions || this.overlayOptions?.hideTransitionOptions;\n return value === undefined ? '.1s linear' : value;\n }\n set hideTransitionOptions(value) {\n this._hideTransitionOptions = value;\n }\n get listener() {\n return this._listener || this.overlayOptions?.listener;\n }\n set listener(value) {\n this._listener = value;\n }\n get responsive() {\n return this._responsive || this.overlayOptions?.responsive;\n }\n set responsive(val) {\n this._responsive = val;\n }\n get options() {\n return this._options;\n }\n set options(val) {\n this._options = val;\n }\n get modal() {\n if (isPlatformBrowser(this.platformId)) {\n return this.mode === 'modal' || (this.overlayResponsiveOptions && this.window?.matchMedia(this.overlayResponsiveOptions.media?.replace('@media', '') || `(max-width: ${this.overlayResponsiveOptions.breakpoint})`).matches);\n }\n }\n get overlayMode() {\n return this.mode || (this.modal ? 'modal' : 'overlay');\n }\n get overlayOptions() {\n return { ...this.config?.overlayOptions, ...this.options }; // TODO: Improve performance\n }\n get overlayResponsiveOptions() {\n return { ...this.overlayOptions?.responsive, ...this.responsive }; // TODO: Improve performance\n }\n get overlayResponsiveDirection() {\n return this.overlayResponsiveOptions?.direction || 'center';\n }\n get overlayEl() {\n return this.overlayViewChild?.nativeElement;\n }\n get contentEl() {\n return this.contentViewChild?.nativeElement;\n }\n get targetEl() {\n return DomHandler.getTargetElement(this.target, this.el?.nativeElement);\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n // TODO: new template types may be added.\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n show(overlay, isFocus = false) {\n this.onVisibleChange(true);\n this.handleEvents('onShow', { overlay: overlay || this.overlayEl, target: this.targetEl, mode: this.overlayMode });\n isFocus && DomHandler.focus(this.targetEl);\n this.modal && DomHandler.addClass(this.document?.body, 'p-overflow-hidden');\n }\n hide(overlay, isFocus = false) {\n if (!this.visible) {\n return;\n }\n else {\n this.onVisibleChange(false);\n this.handleEvents('onHide', { overlay: overlay || this.overlayEl, target: this.targetEl, mode: this.overlayMode });\n isFocus && DomHandler.focus(this.targetEl);\n this.modal && DomHandler.removeClass(this.document?.body, 'p-overflow-hidden');\n }\n }\n alignOverlay() {\n !this.modal && DomHandler.alignOverlay(this.overlayEl, this.targetEl, this.appendTo);\n }\n onVisibleChange(visible) {\n this._visible = visible;\n this.visibleChange.emit(visible);\n }\n onOverlayClick(event) {\n this.isOverlayClicked = true;\n }\n onOverlayContentClick(event) {\n this.overlayService.add({\n originalEvent: event,\n target: this.targetEl\n });\n this.isOverlayContentClicked = true;\n }\n onOverlayContentAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.handleEvents('onBeforeShow', { overlay: this.overlayEl, target: this.targetEl, mode: this.overlayMode });\n if (this.autoZIndex) {\n ZIndexUtils.set(this.overlayMode, this.overlayEl, this.baseZIndex + this.config?.zIndex[this.overlayMode]);\n }\n DomHandler.appendOverlay(this.overlayEl, this.appendTo === 'body' ? this.document.body : this.appendTo, this.appendTo);\n this.alignOverlay();\n break;\n case 'void':\n this.handleEvents('onBeforeHide', { overlay: this.overlayEl, target: this.targetEl, mode: this.overlayMode });\n this.modal && DomHandler.addClass(this.overlayEl, 'p-component-overlay-leave');\n break;\n }\n this.handleEvents('onAnimationStart', event);\n }\n onOverlayContentAnimationDone(event) {\n const container = this.overlayEl || event.element.parentElement;\n switch (event.toState) {\n case 'visible':\n this.show(container, true);\n this.bindListeners();\n break;\n case 'void':\n this.hide(container, true);\n this.unbindListeners();\n DomHandler.appendOverlay(this.overlayEl, this.targetEl, this.appendTo);\n ZIndexUtils.clear(container);\n this.modalVisible = false;\n break;\n }\n this.handleEvents('onAnimationDone', event);\n }\n handleEvents(name, params) {\n this[name].emit(params);\n this.options && this.options[name] && this.options[name](params);\n this.config?.overlayOptions && (this.config?.overlayOptions)[name] && (this.config?.overlayOptions)[name](params);\n }\n bindListeners() {\n this.bindScrollListener();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindDocumentKeyboardListener();\n }\n unbindListeners() {\n this.unbindScrollListener();\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindDocumentKeyboardListener();\n }\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.targetEl, (event) => {\n const valid = this.listener ? this.listener(event, { type: 'scroll', mode: this.overlayMode, valid: true }) : true;\n valid && this.hide(event, true);\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n this.documentClickListener = this.renderer.listen(this.document, 'click', (event) => {\n const isTargetClicked = this.targetEl && (this.targetEl.isSameNode(event.target) || (!this.isOverlayClicked && this.targetEl.contains(event.target)));\n const isOutsideClicked = !isTargetClicked && !this.isOverlayContentClicked;\n const valid = this.listener ? this.listener(event, { type: 'outside', mode: this.overlayMode, valid: event.which !== 3 && isOutsideClicked }) : isOutsideClicked;\n valid && this.hide(event);\n this.isOverlayClicked = this.isOverlayContentClicked = false;\n });\n }\n }\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n bindDocumentResizeListener() {\n if (!this.documentResizeListener) {\n this.documentResizeListener = this.renderer.listen(this.window, 'resize', (event) => {\n const valid = this.listener ? this.listener(event, { type: 'resize', mode: this.overlayMode, valid: !DomHandler.isTouchDevice() }) : !DomHandler.isTouchDevice();\n valid && this.hide(event, true);\n });\n }\n }\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n bindDocumentKeyboardListener() {\n if (this.documentKeyboardListener) {\n return;\n }\n this.zone.runOutsideAngular(() => {\n this.documentKeyboardListener = this.renderer.listen(this.window, 'keydown', (event) => {\n if (!this.overlayOptions.hideOnEscape || event.keyCode !== 27) {\n return;\n }\n const valid = this.listener ? this.listener(event, { type: 'keydown', mode: this.overlayMode, valid: !DomHandler.isTouchDevice() }) : !DomHandler.isTouchDevice();\n if (valid) {\n this.zone.run(() => {\n this.hide(event, true);\n });\n }\n });\n });\n }\n unbindDocumentKeyboardListener() {\n if (this.documentKeyboardListener) {\n this.documentKeyboardListener();\n this.documentKeyboardListener = null;\n }\n }\n ngOnDestroy() {\n this.hide(this.overlayEl, true);\n if (this.overlayEl) {\n DomHandler.appendOverlay(this.overlayEl, this.targetEl, this.appendTo);\n ZIndexUtils.clear(this.overlayEl);\n }\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n this.unbindListeners();\n }\n}\nOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Overlay, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nOverlay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Overlay, selector: \"p-overlay\", inputs: { visible: \"visible\", mode: \"mode\", style: \"style\", styleClass: \"styleClass\", contentStyle: \"contentStyle\", contentStyleClass: \"contentStyleClass\", target: \"target\", appendTo: \"appendTo\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", listener: \"listener\", responsive: \"responsive\", options: \"options\" }, outputs: { visibleChange: \"visibleChange\", onBeforeShow: \"onBeforeShow\", onShow: \"onShow\", onBeforeHide: \"onBeforeHide\", onHide: \"onHide\", onAnimationStart: \"onAnimationStart\", onAnimationDone: \"onAnimationDone\" }, host: { classAttribute: \"p-element\" }, providers: [OVERLAY_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"overlayViewChild\", first: true, predicate: [\"overlay\"], descendants: true }, { propertyName: \"contentViewChild\", first: true, predicate: [\"content\"], descendants: true }], ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, styles: [\".p-overlay{position:absolute;top:0;left:0}.p-overlay-modal{display:flex;align-items:center;justify-content:center;position:fixed;top:0;left:0;width:100%;height:100%}.p-overlay-content{transform-origin:inherit}.p-overlay-modal>.p-overlay-content{z-index:1;width:90%}.p-overlay-top{align-items:flex-start}.p-overlay-top-start{align-items:flex-start;justify-content:flex-start}.p-overlay-top-end{align-items:flex-start;justify-content:flex-end}.p-overlay-bottom{align-items:flex-end}.p-overlay-bottom-start{align-items:flex-end;justify-content:flex-start}.p-overlay-bottom-end{align-items:flex-end;justify-content:flex-end}.p-overlay-left{justify-content:flex-start}.p-overlay-left-start{justify-content:flex-start;align-items:flex-start}.p-overlay-left-end{justify-content:flex-start;align-items:flex-end}.p-overlay-right{justify-content:flex-end}.p-overlay-right-start{justify-content:flex-end;align-items:flex-start}.p-overlay-right-end{justify-content:flex-end;align-items:flex-end}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], animations: [trigger('overlayContentAnimation', [transition(':enter', [useAnimation(showOverlayContentAnimation)]), transition(':leave', [useAnimation(hideOverlayContentAnimation)])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Overlay, decorators: [{\n type: Component,\n args: [{ selector: 'p-overlay', template: `\n \n \n \n \n \n \n `, animations: [trigger('overlayContentAnimation', [transition(':enter', [useAnimation(showOverlayContentAnimation)]), transition(':leave', [useAnimation(hideOverlayContentAnimation)])])], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [OVERLAY_VALUE_ACCESSOR], host: {\n class: 'p-element'\n }, styles: [\".p-overlay{position:absolute;top:0;left:0}.p-overlay-modal{display:flex;align-items:center;justify-content:center;position:fixed;top:0;left:0;width:100%;height:100%}.p-overlay-content{transform-origin:inherit}.p-overlay-modal>.p-overlay-content{z-index:1;width:90%}.p-overlay-top{align-items:flex-start}.p-overlay-top-start{align-items:flex-start;justify-content:flex-start}.p-overlay-top-end{align-items:flex-start;justify-content:flex-end}.p-overlay-bottom{align-items:flex-end}.p-overlay-bottom-start{align-items:flex-end;justify-content:flex-start}.p-overlay-bottom-end{align-items:flex-end;justify-content:flex-end}.p-overlay-left{justify-content:flex-start}.p-overlay-left-start{justify-content:flex-start;align-items:flex-start}.p-overlay-left-end{justify-content:flex-start;align-items:flex-end}.p-overlay-right{justify-content:flex-end}.p-overlay-right-start{justify-content:flex-end;align-items:flex-start}.p-overlay-right-end{justify-content:flex-end;align-items:flex-end}\\n\"] }]\n }], ctorParameters: function () { return [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }, { type: i0.NgZone }]; }, propDecorators: { visible: [{\n type: Input\n }], mode: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], contentStyle: [{\n type: Input\n }], contentStyleClass: [{\n type: Input\n }], target: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], listener: [{\n type: Input\n }], responsive: [{\n type: Input\n }], options: [{\n type: Input\n }], visibleChange: [{\n type: Output\n }], onBeforeShow: [{\n type: Output\n }], onShow: [{\n type: Output\n }], onBeforeHide: [{\n type: Output\n }], onHide: [{\n type: Output\n }], onAnimationStart: [{\n type: Output\n }], onAnimationDone: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], overlayViewChild: [{\n type: ViewChild,\n args: ['overlay']\n }], contentViewChild: [{\n type: ViewChild,\n args: ['content']\n }] } });\nclass OverlayModule {\n}\nOverlayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nOverlayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: OverlayModule, declarations: [Overlay], imports: [CommonModule, SharedModule], exports: [Overlay, SharedModule] });\nOverlayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: OverlayModule, imports: [CommonModule, SharedModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: OverlayModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule],\n exports: [Overlay, SharedModule],\n declarations: [Overlay]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { OVERLAY_VALUE_ACCESSOR, Overlay, OverlayModule };\n//# sourceMappingURL=primeng-overlay.mjs.map\n//# sourceMappingURL=primeng-overlay.mjs.map\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i5 from '@angular/forms';\nimport { FormsModule } from '@angular/forms';\nimport * as i2 from 'primeng/dropdown';\nimport { DropdownModule } from 'primeng/dropdown';\nimport * as i6 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i3 from 'primeng/api';\nimport { SharedModule } from 'primeng/api';\nimport * as i4 from 'primeng/inputnumber';\nimport { InputNumberModule } from 'primeng/inputnumber';\n\nclass Paginator {\n constructor(cd) {\n this.cd = cd;\n this.pageLinkSize = 5;\n this.onPageChange = new EventEmitter();\n this.alwaysShow = true;\n this.dropdownScrollHeight = '200px';\n this.currentPageReportTemplate = '{currentPage} of {totalPages}';\n this.showFirstLastIcon = true;\n this.totalRecords = 0;\n this.rows = 0;\n this.showPageLinks = true;\n this._first = 0;\n this._page = 0;\n }\n ngOnInit() {\n this.updatePaginatorState();\n }\n ngOnChanges(simpleChange) {\n if (simpleChange.totalRecords) {\n this.updatePageLinks();\n this.updatePaginatorState();\n this.updateFirst();\n this.updateRowsPerPageOptions();\n }\n if (simpleChange.first) {\n this._first = simpleChange.first.currentValue;\n this.updatePageLinks();\n this.updatePaginatorState();\n }\n if (simpleChange.rows) {\n this.updatePageLinks();\n this.updatePaginatorState();\n }\n if (simpleChange.rowsPerPageOptions) {\n this.updateRowsPerPageOptions();\n }\n }\n get first() {\n return this._first;\n }\n set first(val) {\n this._first = val;\n }\n updateRowsPerPageOptions() {\n if (this.rowsPerPageOptions) {\n this.rowsPerPageItems = [];\n for (let opt of this.rowsPerPageOptions) {\n if (typeof opt == 'object' && opt['showAll']) {\n this.rowsPerPageItems.unshift({ label: opt['showAll'], value: this.totalRecords });\n }\n else {\n this.rowsPerPageItems.push({ label: String(opt), value: opt });\n }\n }\n }\n }\n isFirstPage() {\n return this.getPage() === 0;\n }\n isLastPage() {\n return this.getPage() === this.getPageCount() - 1;\n }\n getPageCount() {\n return Math.ceil(this.totalRecords / this.rows);\n }\n calculatePageLinkBoundaries() {\n let numberOfPages = this.getPageCount(), visiblePages = Math.min(this.pageLinkSize, numberOfPages);\n //calculate range, keep current in middle if necessary\n let start = Math.max(0, Math.ceil(this.getPage() - visiblePages / 2)), end = Math.min(numberOfPages - 1, start + visiblePages - 1);\n //check when approaching to last page\n var delta = this.pageLinkSize - (end - start + 1);\n start = Math.max(0, start - delta);\n return [start, end];\n }\n updatePageLinks() {\n this.pageLinks = [];\n let boundaries = this.calculatePageLinkBoundaries(), start = boundaries[0], end = boundaries[1];\n for (let i = start; i <= end; i++) {\n this.pageLinks.push(i + 1);\n }\n if (this.showJumpToPageDropdown) {\n this.pageItems = [];\n for (let i = 0; i < this.getPageCount(); i++) {\n this.pageItems.push({ label: String(i + 1), value: i });\n }\n }\n }\n changePage(p) {\n var pc = this.getPageCount();\n if (p >= 0 && p < pc) {\n this._first = this.rows * p;\n var state = {\n page: p,\n first: this.first,\n rows: this.rows,\n pageCount: pc\n };\n this.updatePageLinks();\n this.onPageChange.emit(state);\n this.updatePaginatorState();\n }\n }\n updateFirst() {\n const page = this.getPage();\n if (page > 0 && this.totalRecords && this.first >= this.totalRecords) {\n Promise.resolve(null).then(() => this.changePage(page - 1));\n }\n }\n getPage() {\n return Math.floor(this.first / this.rows);\n }\n changePageToFirst(event) {\n if (!this.isFirstPage()) {\n this.changePage(0);\n }\n event.preventDefault();\n }\n changePageToPrev(event) {\n this.changePage(this.getPage() - 1);\n event.preventDefault();\n }\n changePageToNext(event) {\n this.changePage(this.getPage() + 1);\n event.preventDefault();\n }\n changePageToLast(event) {\n if (!this.isLastPage()) {\n this.changePage(this.getPageCount() - 1);\n }\n event.preventDefault();\n }\n onPageLinkClick(event, page) {\n this.changePage(page);\n event.preventDefault();\n }\n onRppChange(event) {\n this.changePage(this.getPage());\n }\n onPageDropdownChange(event) {\n this.changePage(event.value);\n }\n updatePaginatorState() {\n this.paginatorState = {\n page: this.getPage(),\n pageCount: this.getPageCount(),\n rows: this.rows,\n first: this.first,\n totalRecords: this.totalRecords\n };\n }\n empty() {\n return this.getPageCount() === 0;\n }\n currentPage() {\n return this.getPageCount() > 0 ? this.getPage() + 1 : 0;\n }\n get currentPageReport() {\n return this.currentPageReportTemplate\n .replace('{currentPage}', String(this.currentPage()))\n .replace('{totalPages}', String(this.getPageCount()))\n .replace('{first}', String(this.totalRecords > 0 ? this._first + 1 : 0))\n .replace('{last}', String(Math.min(this._first + this.rows, this.totalRecords)))\n .replace('{rows}', String(this.rows))\n .replace('{totalRecords}', String(this.totalRecords));\n }\n}\nPaginator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Paginator, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nPaginator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Paginator, selector: \"p-paginator\", inputs: { pageLinkSize: \"pageLinkSize\", style: \"style\", styleClass: \"styleClass\", alwaysShow: \"alwaysShow\", templateLeft: \"templateLeft\", templateRight: \"templateRight\", dropdownAppendTo: \"dropdownAppendTo\", dropdownScrollHeight: \"dropdownScrollHeight\", currentPageReportTemplate: \"currentPageReportTemplate\", showCurrentPageReport: \"showCurrentPageReport\", showFirstLastIcon: \"showFirstLastIcon\", totalRecords: \"totalRecords\", rows: \"rows\", rowsPerPageOptions: \"rowsPerPageOptions\", showJumpToPageDropdown: \"showJumpToPageDropdown\", showJumpToPageInput: \"showJumpToPageInput\", showPageLinks: \"showPageLinks\", dropdownItemTemplate: \"dropdownItemTemplate\", first: \"first\" }, outputs: { onPageChange: \"onPageChange\" }, host: { classAttribute: \"p-element\" }, usesOnChanges: true, ngImport: i0, template: `\n
1\">\n
\n \n
\n {{ currentPageReport }}\n \n \n \n \n \n \n {{ currentPageReport }}\n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n
\n `, isInline: true, styles: [\".p-paginator{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.p-paginator-left-content{margin-right:auto}.p-paginator-right-content{margin-left:auto}.p-paginator-page,.p-paginator-next,.p-paginator-last,.p-paginator-first,.p-paginator-prev,.p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}.p-paginator-element:focus{z-index:1;position:relative}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i2.Dropdown, selector: \"p-dropdown\", inputs: [\"scrollHeight\", \"filter\", \"name\", \"style\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"readonly\", \"required\", \"editable\", \"appendTo\", \"tabindex\", \"placeholder\", \"filterPlaceholder\", \"filterLocale\", \"inputId\", \"selectId\", \"dataKey\", \"filterBy\", \"autofocus\", \"resetFilterOnHide\", \"dropdownIcon\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"autoDisplayFirst\", \"group\", \"showClear\", \"emptyFilterMessage\", \"emptyMessage\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"overlayOptions\", \"ariaFilterLabel\", \"ariaLabel\", \"ariaLabelledBy\", \"filterMatchMode\", \"maxlength\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"autofocusFilter\", \"overlayDirection\", \"disabled\", \"itemSize\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"options\", \"filterValue\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onShow\", \"onHide\", \"onClear\", \"onLazyLoad\"] }, { kind: \"directive\", type: i3.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"component\", type: i4.InputNumber, selector: \"p-inputNumber\", inputs: [\"showButtons\", \"format\", \"buttonLayout\", \"inputId\", \"styleClass\", \"style\", \"placeholder\", \"size\", \"maxlength\", \"tabindex\", \"title\", \"ariaLabel\", \"ariaRequired\", \"name\", \"required\", \"autocomplete\", \"min\", \"max\", \"incrementButtonClass\", \"decrementButtonClass\", \"incrementButtonIcon\", \"decrementButtonIcon\", \"readonly\", \"step\", \"allowEmpty\", \"locale\", \"localeMatcher\", \"mode\", \"currency\", \"currencyDisplay\", \"useGrouping\", \"minFractionDigits\", \"maxFractionDigits\", \"prefix\", \"suffix\", \"inputStyle\", \"inputStyleClass\", \"showClear\", \"disabled\"], outputs: [\"onInput\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onClear\"] }, { kind: \"directive\", type: i5.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i5.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: i6.Ripple, selector: \"[pRipple]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Paginator, decorators: [{\n type: Component,\n args: [{ selector: 'p-paginator', template: `\n
1\">\n
\n \n
\n {{ currentPageReport }}\n \n \n \n \n \n \n {{ currentPageReport }}\n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n
\n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-paginator{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.p-paginator-left-content{margin-right:auto}.p-paginator-right-content{margin-left:auto}.p-paginator-page,.p-paginator-next,.p-paginator-last,.p-paginator-first,.p-paginator-prev,.p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}.p-paginator-element:focus{z-index:1;position:relative}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pageLinkSize: [{\n type: Input\n }], onPageChange: [{\n type: Output\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], alwaysShow: [{\n type: Input\n }], templateLeft: [{\n type: Input\n }], templateRight: [{\n type: Input\n }], dropdownAppendTo: [{\n type: Input\n }], dropdownScrollHeight: [{\n type: Input\n }], currentPageReportTemplate: [{\n type: Input\n }], showCurrentPageReport: [{\n type: Input\n }], showFirstLastIcon: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], rows: [{\n type: Input\n }], rowsPerPageOptions: [{\n type: Input\n }], showJumpToPageDropdown: [{\n type: Input\n }], showJumpToPageInput: [{\n type: Input\n }], showPageLinks: [{\n type: Input\n }], dropdownItemTemplate: [{\n type: Input\n }], first: [{\n type: Input\n }] } });\nclass PaginatorModule {\n}\nPaginatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: PaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPaginatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: PaginatorModule, declarations: [Paginator], imports: [CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule], exports: [Paginator, DropdownModule, InputNumberModule, FormsModule, SharedModule] });\nPaginatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: PaginatorModule, imports: [CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule, DropdownModule, InputNumberModule, FormsModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: PaginatorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule],\n exports: [Paginator, DropdownModule, InputNumberModule, FormsModule, SharedModule],\n declarations: [Paginator]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Paginator, PaginatorModule };\n//# sourceMappingURL=primeng-paginator.mjs.map\n//# sourceMappingURL=primeng-paginator.mjs.map\n","import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\nclass ProgressSpinner {\n constructor() {\n this.strokeWidth = '2';\n this.fill = 'none';\n this.animationDuration = '2s';\n }\n}\nProgressSpinner.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ProgressSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });\nProgressSpinner.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: ProgressSpinner, selector: \"p-progressSpinner\", inputs: { style: \"style\", styleClass: \"styleClass\", strokeWidth: \"strokeWidth\", fill: \"fill\", animationDuration: \"animationDuration\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n
\n \n \n \n
\n `, isInline: true, styles: [\".p-progress-spinner{position:relative;margin:0 auto;width:100px;height:100px;display:inline-block}.p-progress-spinner:before{content:\\\"\\\";display:block;padding-top:100%}.p-progress-spinner-svg{animation:p-progress-spinner-rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;inset:0;margin:auto}.p-progress-spinner-circle{stroke-dasharray:89,200;stroke-dashoffset:0;stroke:#d62d20;animation:p-progress-spinner-dash 1.5s ease-in-out infinite,p-progress-spinner-color 6s ease-in-out infinite;stroke-linecap:round}@keyframes p-progress-spinner-rotate{to{transform:rotate(360deg)}}@keyframes p-progress-spinner-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes p-progress-spinner-color{to,0%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ProgressSpinner, decorators: [{\n type: Component,\n args: [{ selector: 'p-progressSpinner', template: `\n
\n \n \n \n
\n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-progress-spinner{position:relative;margin:0 auto;width:100px;height:100px;display:inline-block}.p-progress-spinner:before{content:\\\"\\\";display:block;padding-top:100%}.p-progress-spinner-svg{animation:p-progress-spinner-rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;inset:0;margin:auto}.p-progress-spinner-circle{stroke-dasharray:89,200;stroke-dashoffset:0;stroke:#d62d20;animation:p-progress-spinner-dash 1.5s ease-in-out infinite,p-progress-spinner-color 6s ease-in-out infinite;stroke-linecap:round}@keyframes p-progress-spinner-rotate{to{transform:rotate(360deg)}}@keyframes p-progress-spinner-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes p-progress-spinner-color{to,0%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}\\n\"] }]\n }], propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], fill: [{\n type: Input\n }], animationDuration: [{\n type: Input\n }] } });\nclass ProgressSpinnerModule {\n}\nProgressSpinnerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ProgressSpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nProgressSpinnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: ProgressSpinnerModule, declarations: [ProgressSpinner], imports: [CommonModule], exports: [ProgressSpinner] });\nProgressSpinnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ProgressSpinnerModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ProgressSpinnerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [ProgressSpinner],\n declarations: [ProgressSpinner]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ProgressSpinner, ProgressSpinnerModule };\n//# sourceMappingURL=primeng-progressspinner.mjs.map\n//# sourceMappingURL=primeng-progressspinner.mjs.map\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Directive, Inject, Optional, NgModule } from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport * as i1 from 'primeng/api';\n\nclass Ripple {\n constructor(document, platformId, renderer, el, zone, config) {\n this.document = document;\n this.platformId = platformId;\n this.renderer = renderer;\n this.el = el;\n this.zone = zone;\n this.config = config;\n }\n ngAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.config && this.config.ripple) {\n this.zone.runOutsideAngular(() => {\n this.create();\n this.mouseDownListener = this.renderer.listen(this.el.nativeElement, 'mousedown', this.onMouseDown.bind(this));\n });\n }\n }\n }\n onMouseDown(event) {\n let ink = this.getInk();\n if (!ink || this.document.defaultView.getComputedStyle(ink, null).display === 'none') {\n return;\n }\n DomHandler.removeClass(ink, 'p-ink-active');\n if (!DomHandler.getHeight(ink) && !DomHandler.getWidth(ink)) {\n let d = Math.max(DomHandler.getOuterWidth(this.el.nativeElement), DomHandler.getOuterHeight(this.el.nativeElement));\n ink.style.height = d + 'px';\n ink.style.width = d + 'px';\n }\n let offset = DomHandler.getOffset(this.el.nativeElement);\n let x = event.pageX - offset.left + this.document.body.scrollTop - DomHandler.getWidth(ink) / 2;\n let y = event.pageY - offset.top + this.document.body.scrollLeft - DomHandler.getHeight(ink) / 2;\n this.renderer.setStyle(ink, 'top', y + 'px');\n this.renderer.setStyle(ink, 'left', x + 'px');\n DomHandler.addClass(ink, 'p-ink-active');\n this.timeout = setTimeout(() => {\n let ink = this.getInk();\n if (ink) {\n DomHandler.removeClass(ink, 'p-ink-active');\n }\n }, 401);\n }\n getInk() {\n const children = this.el.nativeElement.children;\n for (let i = 0; i < children.length; i++) {\n if (typeof children[i].className === 'string' && children[i].className.indexOf('p-ink') !== -1) {\n return children[i];\n }\n }\n return null;\n }\n resetInk() {\n let ink = this.getInk();\n if (ink) {\n DomHandler.removeClass(ink, 'p-ink-active');\n }\n }\n onAnimationEnd(event) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n DomHandler.removeClass(event.currentTarget, 'p-ink-active');\n }\n create() {\n let ink = this.renderer.createElement('span');\n this.renderer.addClass(ink, 'p-ink');\n this.renderer.appendChild(this.el.nativeElement, ink);\n if (!this.animationListener) {\n this.animationListener = this.renderer.listen(ink, 'animationend', this.onAnimationEnd.bind(this));\n }\n }\n remove() {\n let ink = this.getInk();\n if (ink) {\n this.mouseDownListener();\n this.animationListener();\n this.mouseDownListener = null;\n this.animationListener = null;\n DomHandler.removeElement(ink);\n }\n }\n ngOnDestroy() {\n if (this.config && this.config.ripple) {\n this.remove();\n }\n }\n}\nRipple.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Ripple, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nRipple.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Ripple, selector: \"[pRipple]\", host: { classAttribute: \"p-ripple p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Ripple, decorators: [{\n type: Directive,\n args: [{\n selector: '[pRipple]',\n host: {\n class: 'p-ripple p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig, decorators: [{\n type: Optional\n }] }]; } });\nclass RippleModule {\n}\nRippleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: RippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRippleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: RippleModule, declarations: [Ripple], imports: [CommonModule], exports: [Ripple] });\nRippleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: RippleModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: RippleModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [Ripple],\n declarations: [Ripple]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Ripple, RippleModule };\n//# sourceMappingURL=primeng-ripple.mjs.map\n//# sourceMappingURL=primeng-ripple.mjs.map\n","import * as i1 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, ViewChild, ContentChildren, Output, NgModule } from '@angular/core';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\n\nclass Scroller {\n constructor(document, platformId, renderer, cd, zone) {\n this.document = document;\n this.platformId = platformId;\n this.renderer = renderer;\n this.cd = cd;\n this.zone = zone;\n this.onLazyLoad = new EventEmitter();\n this.onScroll = new EventEmitter();\n this.onScrollIndexChange = new EventEmitter();\n this._tabindex = 0;\n this._itemSize = 0;\n this._orientation = 'vertical';\n this._step = 0;\n this._delay = 0;\n this._resizeDelay = 10;\n this._appendOnly = false;\n this._inline = false;\n this._lazy = false;\n this._disabled = false;\n this._loaderDisabled = false;\n this._showSpacer = true;\n this._showLoader = false;\n this._autoSize = false;\n this.d_loading = false;\n this.first = 0;\n this.last = 0;\n this.page = 0;\n this.isRangeChanged = false;\n this.numItemsInViewport = 0;\n this.lastScrollPos = 0;\n this.lazyLoadState = {};\n this.loaderArr = [];\n this.spacerStyle = {};\n this.contentStyle = {};\n this.initialized = false;\n }\n get id() {\n return this._id;\n }\n set id(val) {\n this._id = val;\n }\n get style() {\n return this._style;\n }\n set style(val) {\n this._style = val;\n }\n get styleClass() {\n return this._styleClass;\n }\n set styleClass(val) {\n this._styleClass = val;\n }\n get tabindex() {\n return this._tabindex;\n }\n set tabindex(val) {\n this._tabindex = val;\n }\n get items() {\n return this._items;\n }\n set items(val) {\n this._items = val;\n }\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(val) {\n this._itemSize = val;\n }\n get scrollHeight() {\n return this._scrollHeight;\n }\n set scrollHeight(val) {\n this._scrollHeight = val;\n }\n get scrollWidth() {\n return this._scrollWidth;\n }\n set scrollWidth(val) {\n this._scrollWidth = val;\n }\n get orientation() {\n return this._orientation;\n }\n set orientation(val) {\n this._orientation = val;\n }\n get step() {\n return this._step;\n }\n set step(val) {\n this._step = val;\n }\n get delay() {\n return this._delay;\n }\n set delay(val) {\n this._delay = val;\n }\n get resizeDelay() {\n return this._resizeDelay;\n }\n set resizeDelay(val) {\n this._resizeDelay = val;\n }\n get appendOnly() {\n return this._appendOnly;\n }\n set appendOnly(val) {\n this._appendOnly = val;\n }\n get inline() {\n return this._inline;\n }\n set inline(val) {\n this._inline = val;\n }\n get lazy() {\n return this._lazy;\n }\n set lazy(val) {\n this._lazy = val;\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(val) {\n this._disabled = val;\n }\n get loaderDisabled() {\n return this._loaderDisabled;\n }\n set loaderDisabled(val) {\n this._loaderDisabled = val;\n }\n get columns() {\n return this._columns;\n }\n set columns(val) {\n this._columns = val;\n }\n get showSpacer() {\n return this._showSpacer;\n }\n set showSpacer(val) {\n this._showSpacer = val;\n }\n get showLoader() {\n return this._showLoader;\n }\n set showLoader(val) {\n this._showLoader = val;\n }\n get numToleratedItems() {\n return this._numToleratedItems;\n }\n set numToleratedItems(val) {\n this._numToleratedItems = val;\n }\n get loading() {\n return this._loading;\n }\n set loading(val) {\n this._loading = val;\n }\n get autoSize() {\n return this._autoSize;\n }\n set autoSize(val) {\n this._autoSize = val;\n }\n get trackBy() {\n return this._trackBy;\n }\n set trackBy(val) {\n this._trackBy = val;\n }\n get options() {\n return this._options;\n }\n set options(val) {\n this._options = val;\n if (val && typeof val === 'object') {\n Object.entries(val).forEach(([k, v]) => this[`_${k}`] !== v && (this[`_${k}`] = v));\n }\n }\n get vertical() {\n return this._orientation === 'vertical';\n }\n get horizontal() {\n return this._orientation === 'horizontal';\n }\n get both() {\n return this._orientation === 'both';\n }\n get loadedItems() {\n if (this._items && !this.d_loading) {\n if (this.both)\n return this._items.slice(this._appendOnly ? 0 : this.first.rows, this.last.rows).map((item) => (this._columns ? item : item.slice(this._appendOnly ? 0 : this.first.cols, this.last.cols)));\n else if (this.horizontal && this._columns)\n return this._items;\n else\n return this._items.slice(this._appendOnly ? 0 : this.first, this.last);\n }\n return [];\n }\n get loadedRows() {\n return this.d_loading ? (this._loaderDisabled ? this.loaderArr : []) : this.loadedItems;\n }\n get loadedColumns() {\n if (this._columns && (this.both || this.horizontal)) {\n return this.d_loading && this._loaderDisabled ? (this.both ? this.loaderArr[0] : this.loaderArr) : this._columns.slice(this.both ? this.first.cols : this.first, this.both ? this.last.cols : this.last);\n }\n return this._columns;\n }\n get isPageChanged() {\n return this._step ? this.page !== this.getPageByFirst() : true;\n }\n ngOnInit() {\n this.setInitialState();\n }\n ngOnChanges(simpleChanges) {\n let isLoadingChanged = false;\n if (simpleChanges.loading) {\n const { previousValue, currentValue } = simpleChanges.loading;\n if (this.lazy && previousValue !== currentValue && currentValue !== this.d_loading) {\n this.d_loading = currentValue;\n isLoadingChanged = true;\n }\n }\n if (simpleChanges.orientation) {\n this.lastScrollPos = this.both ? { top: 0, left: 0 } : 0;\n }\n if (simpleChanges.numToleratedItems) {\n const { previousValue, currentValue } = simpleChanges.numToleratedItems;\n if (previousValue !== currentValue && currentValue !== this.d_numToleratedItems) {\n this.d_numToleratedItems = currentValue;\n }\n }\n if (simpleChanges.options) {\n const { previousValue, currentValue } = simpleChanges.options;\n if (this.lazy && previousValue?.loading !== currentValue?.loading && currentValue?.loading !== this.d_loading) {\n this.d_loading = currentValue.loading;\n isLoadingChanged = true;\n }\n if (previousValue?.numToleratedItems !== currentValue?.numToleratedItems && currentValue?.numToleratedItems !== this.d_numToleratedItems) {\n this.d_numToleratedItems = currentValue.numToleratedItems;\n }\n }\n if (this.initialized) {\n const isChanged = !isLoadingChanged && (simpleChanges.items?.previousValue?.length !== simpleChanges.items?.currentValue?.length || simpleChanges.itemSize || simpleChanges.scrollHeight || simpleChanges.scrollWidth);\n if (isChanged) {\n this.init();\n this.calculateAutoSize();\n }\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n case 'item':\n this.itemTemplate = item.template;\n break;\n case 'loader':\n this.loaderTemplate = item.template;\n break;\n case 'loadericon':\n this.loaderIconTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n ngAfterViewInit() {\n Promise.resolve().then(() => {\n this.viewInit();\n });\n }\n ngAfterViewChecked() {\n if (!this.initialized) {\n this.viewInit();\n }\n }\n ngOnDestroy() {\n this.unbindResizeListener();\n this.contentEl = null;\n this.initialized = false;\n }\n viewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (DomHandler.isVisible(this.elementViewChild?.nativeElement)) {\n this.setInitialState();\n this.setContentEl(this.contentEl);\n this.init();\n this.defaultWidth = DomHandler.getWidth(this.elementViewChild.nativeElement);\n this.defaultHeight = DomHandler.getHeight(this.elementViewChild.nativeElement);\n this.defaultContentWidth = DomHandler.getWidth(this.contentEl);\n this.defaultContentHeight = DomHandler.getHeight(this.contentEl);\n this.initialized = true;\n }\n }\n }\n init() {\n if (!this._disabled) {\n this.setSize();\n this.calculateOptions();\n this.setSpacerSize();\n this.bindResizeListener();\n this.cd.detectChanges();\n }\n }\n setContentEl(el) {\n this.contentEl = el || this.contentViewChild?.nativeElement || DomHandler.findSingle(this.elementViewChild?.nativeElement, '.p-scroller-content');\n }\n setInitialState() {\n this.first = this.both ? { rows: 0, cols: 0 } : 0;\n this.last = this.both ? { rows: 0, cols: 0 } : 0;\n this.numItemsInViewport = this.both ? { rows: 0, cols: 0 } : 0;\n this.lastScrollPos = this.both ? { top: 0, left: 0 } : 0;\n this.d_loading = this._loading || false;\n this.d_numToleratedItems = this._numToleratedItems;\n this.loaderArr = [];\n this.spacerStyle = {};\n this.contentStyle = {};\n }\n getElementRef() {\n return this.elementViewChild;\n }\n getPageByFirst() {\n return Math.floor((this.first + this.d_numToleratedItems * 4) / (this._step || 1));\n }\n scrollTo(options) {\n this.lastScrollPos = this.both ? { top: 0, left: 0 } : 0;\n this.elementViewChild?.nativeElement?.scrollTo(options);\n }\n scrollToIndex(index, behavior = 'auto') {\n const { numToleratedItems } = this.calculateNumItems();\n const contentPos = this.getContentPosition();\n const calculateFirst = (_index = 0, _numT) => (_index <= _numT ? 0 : _index);\n const calculateCoord = (_first, _size, _cpos) => _first * _size + _cpos;\n const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });\n let newFirst = 0;\n if (this.both) {\n newFirst = { rows: calculateFirst(index[0], numToleratedItems[0]), cols: calculateFirst(index[1], numToleratedItems[1]) };\n scrollTo(calculateCoord(newFirst.cols, this._itemSize[1], contentPos.left), calculateCoord(newFirst.rows, this._itemSize[0], contentPos.top));\n }\n else {\n newFirst = calculateFirst(index, numToleratedItems);\n this.horizontal ? scrollTo(calculateCoord(newFirst, this._itemSize, contentPos.left), 0) : scrollTo(0, calculateCoord(newFirst, this._itemSize, contentPos.top));\n }\n this.isRangeChanged = this.first !== newFirst;\n this.first = newFirst;\n }\n scrollInView(index, to, behavior = 'auto') {\n if (to) {\n const { first, viewport } = this.getRenderedRange();\n const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });\n const isToStart = to === 'to-start';\n const isToEnd = to === 'to-end';\n if (isToStart) {\n if (this.both) {\n if (viewport.first.rows - first.rows > index[0]) {\n scrollTo(viewport.first.cols * this._itemSize[1], (viewport.first.rows - 1) * this._itemSize[0]);\n }\n else if (viewport.first.cols - first.cols > index[1]) {\n scrollTo((viewport.first.cols - 1) * this._itemSize[1], viewport.first.rows * this._itemSize[0]);\n }\n }\n else {\n if (viewport.first - first > index) {\n const pos = (viewport.first - 1) * this._itemSize;\n this.horizontal ? scrollTo(pos, 0) : scrollTo(0, pos);\n }\n }\n }\n else if (isToEnd) {\n if (this.both) {\n if (viewport.last.rows - first.rows <= index[0] + 1) {\n scrollTo(viewport.first.cols * this._itemSize[1], (viewport.first.rows + 1) * this._itemSize[0]);\n }\n else if (viewport.last.cols - first.cols <= index[1] + 1) {\n scrollTo((viewport.first.cols + 1) * this._itemSize[1], viewport.first.rows * this._itemSize[0]);\n }\n }\n else {\n if (viewport.last - first <= index + 1) {\n const pos = (viewport.first + 1) * this._itemSize;\n this.horizontal ? scrollTo(pos, 0) : scrollTo(0, pos);\n }\n }\n }\n }\n else {\n this.scrollToIndex(index, behavior);\n }\n }\n getRenderedRange() {\n const calculateFirstInViewport = (_pos, _size) => Math.floor(_pos / (_size || _pos));\n let firstInViewport = this.first;\n let lastInViewport = 0;\n if (this.elementViewChild?.nativeElement) {\n const { scrollTop, scrollLeft } = this.elementViewChild.nativeElement;\n if (this.both) {\n firstInViewport = { rows: calculateFirstInViewport(scrollTop, this._itemSize[0]), cols: calculateFirstInViewport(scrollLeft, this._itemSize[1]) };\n lastInViewport = { rows: firstInViewport.rows + this.numItemsInViewport.rows, cols: firstInViewport.cols + this.numItemsInViewport.cols };\n }\n else {\n const scrollPos = this.horizontal ? scrollLeft : scrollTop;\n firstInViewport = calculateFirstInViewport(scrollPos, this._itemSize);\n lastInViewport = firstInViewport + this.numItemsInViewport;\n }\n }\n return {\n first: this.first,\n last: this.last,\n viewport: {\n first: firstInViewport,\n last: lastInViewport\n }\n };\n }\n calculateNumItems() {\n const contentPos = this.getContentPosition();\n const contentWidth = this.elementViewChild?.nativeElement ? this.elementViewChild.nativeElement.offsetWidth - contentPos.left : 0;\n const contentHeight = this.elementViewChild?.nativeElement ? this.elementViewChild.nativeElement.offsetHeight - contentPos.top : 0;\n const calculateNumItemsInViewport = (_contentSize, _itemSize) => Math.ceil(_contentSize / (_itemSize || _contentSize));\n const calculateNumToleratedItems = (_numItems) => Math.ceil(_numItems / 2);\n const numItemsInViewport = this.both\n ? { rows: calculateNumItemsInViewport(contentHeight, this._itemSize[0]), cols: calculateNumItemsInViewport(contentWidth, this._itemSize[1]) }\n : calculateNumItemsInViewport(this.horizontal ? contentWidth : contentHeight, this._itemSize);\n const numToleratedItems = this.d_numToleratedItems || (this.both ? [calculateNumToleratedItems(numItemsInViewport.rows), calculateNumToleratedItems(numItemsInViewport.cols)] : calculateNumToleratedItems(numItemsInViewport));\n return { numItemsInViewport, numToleratedItems };\n }\n calculateOptions() {\n const { numItemsInViewport, numToleratedItems } = this.calculateNumItems();\n const calculateLast = (_first, _num, _numT, _isCols = false) => this.getLast(_first + _num + (_first < _numT ? 2 : 3) * _numT, _isCols);\n const first = this.first;\n const last = this.both\n ? { rows: calculateLast(this.first.rows, numItemsInViewport.rows, numToleratedItems[0]), cols: calculateLast(this.first.cols, numItemsInViewport.cols, numToleratedItems[1], true) }\n : calculateLast(this.first, numItemsInViewport, numToleratedItems);\n this.last = last;\n this.numItemsInViewport = numItemsInViewport;\n this.d_numToleratedItems = numToleratedItems;\n if (this.showLoader) {\n this.loaderArr = this.both ? Array.from({ length: numItemsInViewport.rows }).map(() => Array.from({ length: numItemsInViewport.cols })) : Array.from({ length: numItemsInViewport });\n }\n if (this._lazy) {\n Promise.resolve().then(() => {\n this.lazyLoadState = {\n first: this._step ? (this.both ? { rows: 0, cols: first.cols } : 0) : first,\n last: Math.min(this._step ? this._step : this.last, this.items.length)\n };\n this.handleEvents('onLazyLoad', this.lazyLoadState);\n });\n }\n }\n calculateAutoSize() {\n if (this._autoSize && !this.d_loading) {\n Promise.resolve().then(() => {\n if (this.contentEl) {\n this.contentEl.style.minHeight = this.contentEl.style.minWidth = 'auto';\n this.contentEl.style.position = 'relative';\n this.elementViewChild.nativeElement.style.contain = 'none';\n const [contentWidth, contentHeight] = [DomHandler.getWidth(this.contentEl), DomHandler.getHeight(this.contentEl)];\n contentWidth !== this.defaultContentWidth && (this.elementViewChild.nativeElement.style.width = '');\n contentHeight !== this.defaultContentHeight && (this.elementViewChild.nativeElement.style.height = '');\n const [width, height] = [DomHandler.getWidth(this.elementViewChild.nativeElement), DomHandler.getHeight(this.elementViewChild.nativeElement)];\n (this.both || this.horizontal) && (this.elementViewChild.nativeElement.style.width = width < this.defaultWidth ? width + 'px' : this._scrollWidth || this.defaultWidth + 'px');\n (this.both || this.vertical) && (this.elementViewChild.nativeElement.style.height = height < this.defaultHeight ? height + 'px' : this._scrollHeight || this.defaultHeight + 'px');\n this.contentEl.style.minHeight = this.contentEl.style.minWidth = '';\n this.contentEl.style.position = '';\n this.elementViewChild.nativeElement.style.contain = '';\n }\n });\n }\n }\n getLast(last = 0, isCols = false) {\n return this._items ? Math.min(isCols ? (this._columns || this._items[0]).length : this._items.length, last) : 0;\n }\n getContentPosition() {\n if (this.contentEl) {\n const style = getComputedStyle(this.contentEl);\n const left = parseFloat(style.paddingLeft) + Math.max(parseFloat(style.left) || 0, 0);\n const right = parseFloat(style.paddingRight) + Math.max(parseFloat(style.right) || 0, 0);\n const top = parseFloat(style.paddingTop) + Math.max(parseFloat(style.top) || 0, 0);\n const bottom = parseFloat(style.paddingBottom) + Math.max(parseFloat(style.bottom) || 0, 0);\n return { left, right, top, bottom, x: left + right, y: top + bottom };\n }\n return { left: 0, right: 0, top: 0, bottom: 0, x: 0, y: 0 };\n }\n setSize() {\n if (this.elementViewChild?.nativeElement) {\n const parentElement = this.elementViewChild.nativeElement.parentElement.parentElement;\n const width = this._scrollWidth || `${this.elementViewChild.nativeElement.offsetWidth || parentElement.offsetWidth}px`;\n const height = this._scrollHeight || `${this.elementViewChild.nativeElement.offsetHeight || parentElement.offsetHeight}px`;\n const setProp = (_name, _value) => (this.elementViewChild.nativeElement.style[_name] = _value);\n if (this.both || this.horizontal) {\n setProp('height', height);\n setProp('width', width);\n }\n else {\n setProp('height', height);\n }\n }\n }\n setSpacerSize() {\n if (this._items) {\n const contentPos = this.getContentPosition();\n const setProp = (_name, _value, _size, _cpos = 0) => (this.spacerStyle = { ...this.spacerStyle, ...{ [`${_name}`]: (_value || []).length * _size + _cpos + 'px' } });\n if (this.both) {\n setProp('height', this._items, this._itemSize[0], contentPos.y);\n setProp('width', this._columns || this._items[1], this._itemSize[1], contentPos.x);\n }\n else {\n this.horizontal ? setProp('width', this._columns || this._items, this._itemSize, contentPos.x) : setProp('height', this._items, this._itemSize, contentPos.y);\n }\n }\n }\n setContentPosition(pos) {\n if (this.contentEl && !this._appendOnly) {\n const first = pos ? pos.first : this.first;\n const calculateTranslateVal = (_first, _size) => _first * _size;\n const setTransform = (_x = 0, _y = 0) => (this.contentStyle = { ...this.contentStyle, ...{ transform: `translate3d(${_x}px, ${_y}px, 0)` } });\n if (this.both) {\n setTransform(calculateTranslateVal(first.cols, this._itemSize[1]), calculateTranslateVal(first.rows, this._itemSize[0]));\n }\n else {\n const translateVal = calculateTranslateVal(first, this._itemSize);\n this.horizontal ? setTransform(translateVal, 0) : setTransform(0, translateVal);\n }\n }\n }\n onScrollPositionChange(event) {\n const target = event.target;\n const contentPos = this.getContentPosition();\n const calculateScrollPos = (_pos, _cpos) => (_pos ? (_pos > _cpos ? _pos - _cpos : _pos) : 0);\n const calculateCurrentIndex = (_pos, _size) => Math.floor(_pos / (_size || _pos));\n const calculateTriggerIndex = (_currentIndex, _first, _last, _num, _numT, _isScrollDownOrRight) => {\n return _currentIndex <= _numT ? _numT : _isScrollDownOrRight ? _last - _num - _numT : _first + _numT - 1;\n };\n const calculateFirst = (_currentIndex, _triggerIndex, _first, _last, _num, _numT, _isScrollDownOrRight) => {\n if (_currentIndex <= _numT)\n return 0;\n else\n return Math.max(0, _isScrollDownOrRight ? (_currentIndex < _triggerIndex ? _first : _currentIndex - _numT) : _currentIndex > _triggerIndex ? _first : _currentIndex - 2 * _numT);\n };\n const calculateLast = (_currentIndex, _first, _last, _num, _numT, _isCols = false) => {\n let lastValue = _first + _num + 2 * _numT;\n if (_currentIndex >= _numT) {\n lastValue += _numT + 1;\n }\n return this.getLast(lastValue, _isCols);\n };\n const scrollTop = calculateScrollPos(target.scrollTop, contentPos.top);\n const scrollLeft = calculateScrollPos(target.scrollLeft, contentPos.left);\n let newFirst = this.both ? { rows: 0, cols: 0 } : 0;\n let newLast = this.last;\n let isRangeChanged = false;\n let newScrollPos = this.lastScrollPos;\n if (this.both) {\n const isScrollDown = this.lastScrollPos.top <= scrollTop;\n const isScrollRight = this.lastScrollPos.left <= scrollLeft;\n if (!this._appendOnly || (this._appendOnly && (isScrollDown || isScrollRight))) {\n const currentIndex = { rows: calculateCurrentIndex(scrollTop, this._itemSize[0]), cols: calculateCurrentIndex(scrollLeft, this._itemSize[1]) };\n const triggerIndex = {\n rows: calculateTriggerIndex(currentIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),\n cols: calculateTriggerIndex(currentIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight)\n };\n newFirst = {\n rows: calculateFirst(currentIndex.rows, triggerIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),\n cols: calculateFirst(currentIndex.cols, triggerIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight)\n };\n newLast = {\n rows: calculateLast(currentIndex.rows, newFirst.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0]),\n cols: calculateLast(currentIndex.cols, newFirst.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], true)\n };\n isRangeChanged = newFirst.rows !== this.first.rows || newLast.rows !== this.last.rows || newFirst.cols !== this.first.cols || newLast.cols !== this.last.cols || this.isRangeChanged;\n newScrollPos = { top: scrollTop, left: scrollLeft };\n }\n }\n else {\n const scrollPos = this.horizontal ? scrollLeft : scrollTop;\n const isScrollDownOrRight = this.lastScrollPos <= scrollPos;\n if (!this._appendOnly || (this._appendOnly && isScrollDownOrRight)) {\n const currentIndex = calculateCurrentIndex(scrollPos, this._itemSize);\n const triggerIndex = calculateTriggerIndex(currentIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);\n newFirst = calculateFirst(currentIndex, triggerIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);\n newLast = calculateLast(currentIndex, newFirst, this.last, this.numItemsInViewport, this.d_numToleratedItems);\n isRangeChanged = newFirst !== this.first || newLast !== this.last || this.isRangeChanged;\n newScrollPos = scrollPos;\n }\n }\n return {\n first: newFirst,\n last: newLast,\n isRangeChanged,\n scrollPos: newScrollPos\n };\n }\n onScrollChange(event) {\n const { first, last, isRangeChanged, scrollPos } = this.onScrollPositionChange(event);\n if (isRangeChanged) {\n const newState = { first, last };\n this.setContentPosition(newState);\n this.first = first;\n this.last = last;\n this.lastScrollPos = scrollPos;\n this.handleEvents('onScrollIndexChange', newState);\n if (this._lazy && this.isPageChanged) {\n const lazyLoadState = {\n first: this._step ? Math.min(this.getPageByFirst() * this._step, this.items.length - this._step) : first,\n last: Math.min(this._step ? (this.getPageByFirst() + 1) * this._step : last, this.items.length)\n };\n const isLazyStateChanged = this.lazyLoadState.first !== lazyLoadState.first || this.lazyLoadState.last !== lazyLoadState.last;\n isLazyStateChanged && this.handleEvents('onLazyLoad', lazyLoadState);\n this.lazyLoadState = lazyLoadState;\n }\n }\n }\n onContainerScroll(event) {\n this.handleEvents('onScroll', { originalEvent: event });\n if (this._delay && this.isPageChanged) {\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n }\n if (!this.d_loading && this.showLoader) {\n const { isRangeChanged } = this.onScrollPositionChange(event);\n const changed = isRangeChanged || (this._step ? this.isPageChanged : false);\n if (changed) {\n this.d_loading = true;\n this.cd.detectChanges();\n }\n }\n this.scrollTimeout = setTimeout(() => {\n this.onScrollChange(event);\n if (this.d_loading && this.showLoader && (!this._lazy || this._loading === undefined)) {\n this.d_loading = false;\n this.page = this.getPageByFirst();\n this.cd.detectChanges();\n }\n }, this._delay);\n }\n else {\n !this.d_loading && this.onScrollChange(event);\n }\n }\n bindResizeListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.windowResizeListener) {\n this.zone.runOutsideAngular(() => {\n const window = this.document.defaultView;\n const event = DomHandler.isTouchDevice() ? 'orientationchange' : 'resize';\n this.windowResizeListener = this.renderer.listen(window, event, this.onWindowResize.bind(this));\n });\n }\n }\n }\n unbindResizeListener() {\n if (this.windowResizeListener) {\n this.windowResizeListener();\n this.windowResizeListener = null;\n }\n }\n onWindowResize() {\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n }\n this.resizeTimeout = setTimeout(() => {\n if (DomHandler.isVisible(this.elementViewChild?.nativeElement)) {\n const [width, height] = [DomHandler.getWidth(this.elementViewChild.nativeElement), DomHandler.getHeight(this.elementViewChild.nativeElement)];\n const [isDiffWidth, isDiffHeight] = [width !== this.defaultWidth, height !== this.defaultHeight];\n const reinit = this.both ? isDiffWidth || isDiffHeight : this.horizontal ? isDiffWidth : this.vertical ? isDiffHeight : false;\n reinit &&\n this.zone.run(() => {\n this.d_numToleratedItems = this._numToleratedItems;\n this.defaultWidth = width;\n this.defaultHeight = height;\n this.defaultContentWidth = DomHandler.getWidth(this.contentEl);\n this.defaultContentHeight = DomHandler.getHeight(this.contentEl);\n this.init();\n });\n }\n }, this._resizeDelay);\n }\n handleEvents(name, params) {\n return this.options && this.options[name] ? this.options[name](params) : this[name].emit(params);\n }\n getContentOptions() {\n return {\n contentStyleClass: `p-scroller-content ${this.d_loading ? 'p-scroller-loading' : ''}`,\n items: this.loadedItems,\n getItemOptions: (index) => this.getOptions(index),\n loading: this.d_loading,\n getLoaderOptions: (index, options) => this.getLoaderOptions(index, options),\n itemSize: this._itemSize,\n rows: this.loadedRows,\n columns: this.loadedColumns,\n spacerStyle: this.spacerStyle,\n contentStyle: this.contentStyle,\n vertical: this.vertical,\n horizontal: this.horizontal,\n both: this.both\n };\n }\n getOptions(renderedIndex) {\n const count = (this._items || []).length;\n const index = this.both ? this.first.rows + renderedIndex : this.first + renderedIndex;\n return {\n index,\n count,\n first: index === 0,\n last: index === count - 1,\n even: index % 2 === 0,\n odd: index % 2 !== 0\n };\n }\n getLoaderOptions(index, extOptions) {\n const count = this.loaderArr.length;\n return {\n index,\n count,\n first: index === 0,\n last: index === count - 1,\n even: index % 2 === 0,\n odd: index % 2 !== 0,\n ...extOptions\n };\n }\n}\nScroller.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Scroller, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nScroller.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: Scroller, selector: \"p-scroller\", inputs: { id: \"id\", style: \"style\", styleClass: \"styleClass\", tabindex: \"tabindex\", items: \"items\", itemSize: \"itemSize\", scrollHeight: \"scrollHeight\", scrollWidth: \"scrollWidth\", orientation: \"orientation\", step: \"step\", delay: \"delay\", resizeDelay: \"resizeDelay\", appendOnly: \"appendOnly\", inline: \"inline\", lazy: \"lazy\", disabled: \"disabled\", loaderDisabled: \"loaderDisabled\", columns: \"columns\", showSpacer: \"showSpacer\", showLoader: \"showLoader\", numToleratedItems: \"numToleratedItems\", loading: \"loading\", autoSize: \"autoSize\", trackBy: \"trackBy\", options: \"options\" }, outputs: { onLazyLoad: \"onLazyLoad\", onScroll: \"onScroll\", onScrollIndexChange: \"onScrollIndexChange\" }, host: { classAttribute: \"p-scroller-viewport p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"elementViewChild\", first: true, predicate: [\"element\"], descendants: true }, { propertyName: \"contentViewChild\", first: true, predicate: [\"content\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n
\n \n \n \n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n `, isInline: true, styles: [\"p-scroller{flex:1;outline:0 none}.p-scroller{position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;outline:0 none}.p-scroller-content{position:absolute;top:0;left:0;min-height:100%;min-width:100%;will-change:transform}.p-scroller-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0;pointer-events:none}.p-scroller-loader{position:sticky;top:0;left:0;width:100%;height:100%}.p-scroller-loader.p-component-overlay{display:flex;align-items:center;justify-content:center}.p-scroller-loading-icon{font-size:2rem}.p-scroller-inline .p-scroller-content{position:static}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: Scroller, decorators: [{\n type: Component,\n args: [{ selector: 'p-scroller', template: `\n \n \n \n \n \n \n
\n \n \n \n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-scroller-viewport p-element'\n }, styles: [\"p-scroller{flex:1;outline:0 none}.p-scroller{position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;outline:0 none}.p-scroller-content{position:absolute;top:0;left:0;min-height:100%;min-width:100%;will-change:transform}.p-scroller-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0;pointer-events:none}.p-scroller-loader{position:sticky;top:0;left:0;width:100%;height:100%}.p-scroller-loader.p-component-overlay{display:flex;align-items:center;justify-content:center}.p-scroller-loading-icon{font-size:2rem}.p-scroller-inline .p-scroller-content{position:static}\\n\"] }]\n }], ctorParameters: function () { return [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { id: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], items: [{\n type: Input\n }], itemSize: [{\n type: Input\n }], scrollHeight: [{\n type: Input\n }], scrollWidth: [{\n type: Input\n }], orientation: [{\n type: Input\n }], step: [{\n type: Input\n }], delay: [{\n type: Input\n }], resizeDelay: [{\n type: Input\n }], appendOnly: [{\n type: Input\n }], inline: [{\n type: Input\n }], lazy: [{\n type: Input\n }], disabled: [{\n type: Input\n }], loaderDisabled: [{\n type: Input\n }], columns: [{\n type: Input\n }], showSpacer: [{\n type: Input\n }], showLoader: [{\n type: Input\n }], numToleratedItems: [{\n type: Input\n }], loading: [{\n type: Input\n }], autoSize: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], options: [{\n type: Input\n }], elementViewChild: [{\n type: ViewChild,\n args: ['element']\n }], contentViewChild: [{\n type: ViewChild,\n args: ['content']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], onLazyLoad: [{\n type: Output\n }], onScroll: [{\n type: Output\n }], onScrollIndexChange: [{\n type: Output\n }] } });\nclass ScrollerModule {\n}\nScrollerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ScrollerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nScrollerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: ScrollerModule, declarations: [Scroller], imports: [CommonModule, SharedModule], exports: [Scroller, SharedModule] });\nScrollerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ScrollerModule, imports: [CommonModule, SharedModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: ScrollerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule],\n exports: [Scroller, SharedModule],\n declarations: [Scroller]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Scroller, ScrollerModule };\n//# sourceMappingURL=primeng-scroller.mjs.map\n//# sourceMappingURL=primeng-scroller.mjs.map\n","import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { ObjectUtils } from 'primeng/utils';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nconst SELECTBUTTON_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectButton),\n multi: true\n};\nclass SelectButton {\n constructor(cd) {\n this.cd = cd;\n this.tabindex = 0;\n this.onOptionClick = new EventEmitter();\n this.onChange = new EventEmitter();\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n }\n getOptionLabel(option) {\n return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option.label != undefined ? option.label : option;\n }\n getOptionValue(option) {\n return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : this.optionLabel || option.value === undefined ? option : option.value;\n }\n isOptionDisabled(option) {\n return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : option.disabled !== undefined ? option.disabled : false;\n }\n writeValue(value) {\n this.value = value;\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n onItemClick(event, option, index) {\n if (this.disabled || this.isOptionDisabled(option)) {\n return;\n }\n if (this.multiple) {\n if (this.isSelected(option))\n this.removeOption(option);\n else\n this.value = [...(this.value || []), this.getOptionValue(option)];\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n else {\n let value = this.getOptionValue(option);\n if (this.value !== value) {\n this.value = this.getOptionValue(option);\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n }\n this.onOptionClick.emit({\n originalEvent: event,\n option: option,\n index: index\n });\n }\n onBlur() {\n this.onModelTouched();\n }\n removeOption(option) {\n this.value = this.value.filter((val) => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));\n }\n isSelected(option) {\n let selected = false;\n let optionValue = this.getOptionValue(option);\n if (this.multiple) {\n if (this.value && Array.isArray(this.value)) {\n for (let val of this.value) {\n if (ObjectUtils.equals(val, optionValue, this.dataKey)) {\n selected = true;\n break;\n }\n }\n }\n }\n else {\n selected = ObjectUtils.equals(this.getOptionValue(option), this.value, this.dataKey);\n }\n return selected;\n }\n}\nSelectButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: SelectButton, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nSelectButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.4\", type: SelectButton, selector: \"p-selectButton\", inputs: { options: \"options\", optionLabel: \"optionLabel\", optionValue: \"optionValue\", optionDisabled: \"optionDisabled\", tabindex: \"tabindex\", multiple: \"multiple\", style: \"style\", styleClass: \"styleClass\", ariaLabelledBy: \"ariaLabelledBy\", disabled: \"disabled\", dataKey: \"dataKey\" }, outputs: { onOptionClick: \"onOptionClick\", onChange: \"onChange\" }, host: { classAttribute: \"p-element\" }, providers: [SELECTBUTTON_VALUE_ACCESSOR], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: `\n
\n \n \n \n {{ getOptionLabel(option) }}\n \n \n \n \n
\n \n `, isInline: true, styles: [\".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\\\"p\\\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i2.Ripple, selector: \"[pRipple]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: SelectButton, decorators: [{\n type: Component,\n args: [{ selector: 'p-selectButton', template: `\n
\n \n \n \n {{ getOptionLabel(option) }}\n \n \n \n \n
\n \n `, providers: [SELECTBUTTON_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\\\"p\\\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{\n type: Input\n }], optionLabel: [{\n type: Input\n }], optionValue: [{\n type: Input\n }], optionDisabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], multiple: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], disabled: [{\n type: Input\n }], dataKey: [{\n type: Input\n }], onOptionClick: [{\n type: Output\n }], onChange: [{\n type: Output\n }], itemTemplate: [{\n type: ContentChild,\n args: [TemplateRef]\n }] } });\nclass SelectButtonModule {\n}\nSelectButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: SelectButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSelectButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.4\", ngImport: i0, type: SelectButtonModule, declarations: [SelectButton], imports: [CommonModule, RippleModule], exports: [SelectButton] });\nSelectButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: SelectButtonModule, imports: [CommonModule, RippleModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.4\", ngImport: i0, type: SelectButtonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RippleModule],\n exports: [SelectButton],\n declarations: [SelectButton]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SELECTBUTTON_VALUE_ACCESSOR, SelectButton, SelectButtonModule };\n//# sourceMappingURL=primeng-selectbutton.mjs.map\n//# sourceMappingURL=primeng-selectbutton.mjs.map\n"],"names":["angular","io","module","trim","value","isString","headersGetter","headers","headersObj","isObject","undefined","name","key","val","i","parsed","forEach","split","line","indexOf","lowercase","substr","parseHeaders","sails","autoConnect","provider","this","httpVerbs","eventNames","url","urlPrefix","config","transports","useCORSRouteToGetCookie","debug","interceptorFactories","interceptors","$get","$q","$injector","$rootScope","$log","$timeout","usingExistingSocket","Boolean","window","$sails","socket","connect","reversedInterceptors","serverRequest","obj","defer","timeoutRequest","serverResponse","result","jwr","body","statusCode","status","error","data","method","warn","reject","info","resolve","timeout","isFunction","then","toLowerCase","promise","interceptorFactory","unshift","get","invoke","opts","_opts","isConnected","extend","multiplex","_connect","once","event","cb","_raw","$evalAsync","bind","methodName","chain","when","toUpperCase","interceptor","request","requestError","response","responseError","push","length","thenFn","shift","rejectFn","success","fn","eventName","wrapEventFn","$modelUpdater","models","update","message","verb","id","previous","splice","legacy_on","legacy_off","$inject","getNodeName","element","nodeName","getWindow","node","toString","ownerDocument","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","enabled","phase","_ref","state","Object","keys","elements","style","styles","attributes","assign","removeAttribute","setAttribute","effect","_ref2","initialStyles","popper","position","options","strategy","left","top","margin","arrow","reference","hasOwnProperty","reduce","property","attribute","requires","Math","max","min","round","getUAString","uaData","navigator","userAgentData","brands","map","item","brand","version","join","userAgent","isLayoutViewport","test","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","offsetHeight","height","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","right","bottom","getWindowScroll","win","scrollLeft","pageXOffset","scrollTop","pageYOffset","getDocumentElement","document","documentElement","getWindowScrollBarX","getComputedStyle","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","rect","isElementScaled","scroll","offsets","clientLeft","clientTop","getLayoutRect","abs","getParentNode","assignedSlot","parentNode","host","getScrollParent","listScrollParents","list","_element$ownerDocumen","scrollParent","isBody","target","concat","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","filter","getContainingBlock","auto","basePlacements","start","end","viewport","variationPlacements","acc","placement","modifierPhases","order","modifiers","Map","visited","Set","sort","modifier","add","requiresIfExists","dep","has","depModifier","set","format","str","_len","arguments","args","Array","_key","p","c","replace","INVALID_MODIFIER_ERROR","VALID_PROPERTIES","getBasePlacement","INVALID_ELEMENT_ERROR","DEFAULT_OPTIONS","areValidElements","some","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","modifiersData","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","merged","orderModifiers","current","existing","m","index","self","console","String","isArray","s","requirement","find","mod","validateModifiers","arr","identifiers","identifier","marginTop","marginRight","marginBottom","marginLeft","parseFloat","_ref3","_ref3$options","cleanupFn","forceUpdate","_state$elements","rects","reset","__debug_loops__","_state$orderedModifie","_state$orderedModifie2","_options","Promise","destroy","onFirstUpdate","passive","_options$scroll","_options$resize","resize","addEventListener","removeEventListener","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","len","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","transitionProperty","popperOffsets","_options$offset","offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","hash","getOppositePlacement","matched","getOppositeVariationPlacement","contains","parent","child","rootNode","getRootNode","next","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","html","clientWidth","clientHeight","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","clippingClientRect","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","a","b","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","slice","within","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","v","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","querySelector","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","eventListeners","applyStyles","context","definition","builtInProp","cycle","scheduling_queue","ToString","prototype","timer","setImmediate","setTimeout","defineProperty","writable","configurable","err","schedule","drain","isThenable","o","_then","o_type","notify","notifyIsolated","failure","ret","msg","call","TypeError","triggered","def","def_wrapper","MakeDefWrapper","apply","iteratePromises","Constructor","resolver","rejecter","idx","MakeDef","executor","__NPO__","constructor","first","last","Item","f","PromisePrototype","msgs","count","g","exports","factory","__WEBPACK_EXTERNAL_MODULE_0__","object","ngTableCoreModule","NgTableDefaultGetDataProvider","ngTableDefaultGetGroups","ngTableDefaults","service","NgTableEventsChannel","NgTableSettings","run","NgTableParams","init","IDefaults","ISettings","NgTableController","NgTableFilterConfigProvider","NgTableFilterConfig","ngTableBrowserModule","directive","ngTable","NgTableColumn","ngTableColumnsBinding","controller","ngTableDynamic","ngTableFilterRow","NgTableFilterRowController","ngTableGroupRow","NgTableGroupRowController","ngTablePagination","ngTableSelectFilterDs","ngTableSorterRow","NgTableSorterRowController","params","settings","ng1","events","addTableParamsEvent","fnName","charAt","substring","createEventSubscriptionFn","createPublishEventFn","$broadcast","handler","eventSelectorOrScope","eventSelector","actualEvtSelector","scope","$new","createEventSelectorFn","$on","isNullInstance","fnArgs","eventArgs","publisher","isNumber","n","isNaN","isFinite","baseParameters","baseSettings","currentPages","defaultSettings","ngTableSettings","createDefaults","isCommittedDataset","initialEvents","_params","page","sorting","group","_settings","reloadPages","oldPages","newPages","generatePagesArray","total","equals","ngTableEventsChannel","publishPagesChanged","parameters","publishAfterCreated","significantFilter","filterValue","currentPage","totalItems","pageSize","maxBlocks","maxPage","maxPivotPages","minPage","numPages","pages","ceil","type","number","active","paginationMaxBlocks","paginationMinBlocks","sortDirection","newParameters","isGroupingFun","hasErrorState","errParamsMemento","createComparableParams","hasFilter","hasFilterChanges","previousFilter","prevParamsMemento","hasGlobalSearchFieldChanges","hasGroup","isDataReloadRequired","isSortBy","field","orderBy","convertSortToOrderBy","parseParamsFromUrl","reverse","lastKey","parseGroup","log","reload","pData","$loading","copy","runInterceptorPipeline","getGroups","getData","oldData","publishAfterReloadData","catch","reason","newSettings","isDefined","merge","dataset","fireEvent","publishDatasetChanged","asString","pairs","encodeURIComponent","subkey","isSignificantValue","pname","collectValue","groupSortDirection","currentVal","previousVal","debugMode","defaultSort","groupOptions","fetchedData","ngTableDefaultGetData","defaults","counts","filterOptions","filterComparator","filterDelay","filterDelayThreshold","filterFilterName","filterFn","filterLayout","isExpanded","sortingIndicator","results","optimizeFilterDelay","column","$parse","restrict","priority","compile","dataRow","groupRow","columns","rows","tr","hasClass","el","attr","getAttrValue","parsedAttribute","expr","localValue","getter","$scope","parsedExpr","$parent","titleExpr","title","titleAlt","headerTitle","sortable","groupable","headerTemplateURL","filterData","show","attrs","$columns","buildColumns","setupBindingsToInternalScope","loadFilterData","compileDirectiveTemplates","isScopeLike","buildColumn","defaultScope","extendedCol","create","prop","getterSetter","getterFn","$column","createGetterSetter","noop","initialValue","newValue","link","$element","$attrs","setter","$watch","newColumns","shallowClone","$compile","$document","ngTableColumn","$filterRow","disabled","delayFilter","callback","ms","cancel","newParams","oldParams","subscribeToTableEvents","onDataReloadStatusChange","newStatus","currentParams","applyFilter","templates","header","templateHeader","pagination","templatePagination","addClass","headerTemplate","children","e","tagName","prepend","paginationTemplate","after","col","parseNgTableDynamicExpr","parts","tableParams","Error","tableParamsExpr","setupFilterRowBindingsToInternalScope","setupGroupRowBindingsToInternalScope","showFilter","show_filter","hasVisibleFilterColumn","disableFilter","$groupRow","showGroup","getVisibleColumns","onAfterReloadData","newDatapage","visibleColumns","$groups","visibleColumnCount","$data","onPagesChanged","array","predicate","found","tElement","row","$watchCollection","newCols","defaultConfig","defaultBaseUrl","defaultExt","aliasUrls","instantiate","resetConfigs","setConfig","customConfig","mergeConfig","getUrlForAlias","aliasName","filterKey","getTemplateUrl","filterDef","filterName","templateUrl","controllerAs","ngTableFilterConfig","getFilterPlaceholderValue","getFilterCellCss","layout","size","parseInt","placeholder","groupFns","newGrouping","setGroup","getGroupables","groupableCols","getGroupTitle","isGroupingFunc","groupBy","isSelectedGroup","changeSortDirection","$selGroup","toggleDetail","newDirection","findGroupColumn","groupKey","grouping","existingGroupCol","$selGroupTitle","groupedColumn","pubParams","template","append","NgTableSelectFilterDsController","bindDataSource","getSelectListData","hasEmptyOption","$selectData","isMatch","dataInput","sortBy","parsedSortable","inverseSort","sortingParams","ctrlKey","metaKey","sortingFilterName","$filter","defaultDataOptions","applySort","applyPaging","getFilterFn","getOrderByFn","pagedData","dataOptions","fData","parsedFilter","publishAfterDataFiltered","orderedData","orderByFn","publishAfterDataSorted","groupFn","getPath","originalDataOptions","groups","groupName","$hideRows","finally","ks","path","put","ngTableModule","main","maxSize","itemsPerPage","boundaryLinks","directionLinks","firstText","previousText","nextText","lastText","pageBtnClass","rotate","pager","align","Injectable","PAGER_CONTROL_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","PagerComponent","multi","elementRef","paginationConfig","changeDetection","EventEmitter","pageChanged","onChange","Function","onTouched","inited","_page","configureOptions","_itemsPerPage","totalPages","calculateTotalPages","_totalItems","_totalPages","emit","selectPage","_previous","markForCheck","ngOnInit","classMap","nativeElement","getAttribute","getPages","writeValue","getText","noPrevious","noNext","registerOnChange","registerOnTouched","preventDefault","blur","makePage","num","text","startPage","endPage","isMaxSized","floor","previousPageSet","nextPageSet","Component","ChangeDetectorRef","Input","Output","PAGINATION_CONTROL_VALUE_ACCESSOR","PaginationComponent","forRoot","ngModule","PaginationModule","providers","PaginationConfig","NgModule","CommonModule","hasProp","ge","gm","lcH","lcU","mt","twoPi","_Class","map1","j","k","ref","_this","projHelper","ProjHelper","initMarkerArrays","listeners","addListener","addListenerOnce","mapZoomChangeListener","google","maps","MapTypeId","PI","HYBRID","SATELLITE","TERRAIN","ROADMAP","markers","markerListenerRefs","marker","listenerRefs","spiderListener","markerChangeListener","isNudgingActive","requestNudge","nudgeTimeout","clearTimeout","nudgeAllMarkers","getZoom","spiderfied","positionChanged","leg","getVisible","spiderfying","unspiderfying","countsPerLevel","levelsByCount","getCountPerNudgeLevel","level","pow","getNudgeLevel","markerIndex","bucketSize","changeX","changeY","changesX","changesY","getHash","needsNudge","originalPos","pos","posHash","positions","ref1","ref2","ref3","ref4","ref5","ringLevel","llToPt","usualPosition","sin","cos","nudged","setPosition","ptToLl","resetNudgedMarkers","listenerRef","arrIndexOf","removeListener","l","len1","func","base","trigger","generatePtsCircle","centerPt","angle","angleStep","legLength","Point","generatePtsSpiral","pt","mPt","markerPt","markerSpiderfied","nDist","nearbyMarkerData","nonNearbyMarkers","pxSq","getStreetView","getMapTypeId","ptDistanceSq","spiderfy","firstOnly","getProjection","i1","i2","len2","m1","m1Data","m2","m2Data","mData","willSpiderfy","makeHighlightListenerFuncs","highlight","icon","strokeColor","mapTypeId","zIndex","shadow","getIcon","fillOpacity","unhighlight","markerData","bodyPt","centerLl","footLl","footPt","footPts","highlightListenerFuncs","lineOrigin","md","nearestMarkerDatum","numFeet","spiderfiedMarkers","ptAverage","minExtract","Polyline","strokeWeight","Marker","clickable","SymbolPath","CIRCLE","fillColor","scale","hightlightListeners","setZIndex","markerNotToMove","unspiderfiedMarkers","setMap","pt1","pt2","dx","dy","pts","numPts","sumX","sumY","ll","fromLatLngToDivPixel","fromDivPixelToLatLng","bestIndex","bestVal","OverlayView","encode","decode","qs","qry","pair","decodeURIComponent","re","src","exec","uri","source","authority","ipv6uri","WINDOW","InjectionToken","providedIn","ClipboardService","ngZone","copySubject","Subject","copyResponse$","asObservable","configure","content","isSupported","pushCopyResponse","isSuccess","copyResult","copyFromContent","queryCommandSupported","isTargetValid","HTMLInputElement","HTMLTextAreaElement","hasAttribute","copyFromInputElement","targetElm","isFocus","selectTarget","copyText","clearSelection","isCopySuccessInIE11","clipboardData","container","tempTextArea","parentElement","createTempTextArea","appendChild","toReturn","cleanUpAfterCopy","removeChild","inputElement","select","setSelectionRange","execCommand","focus","getSelection","removeAllRanges","doc","isRTL","ta","createElement","fontSize","border","yPosition","observers","pushCopyReponse","minVersion","ngImport","deps","token","DOCUMENT","optional","decorators","ctorParameters","Inject","Optional","ClipboardDirective","renderer","clipboardSrv","cbOnSuccess","cbOnError","onClick","handleResult","cbContent","runOutsideAngular","clickListener","listen","ngOnDestroy","succeeded","copiedContent","successMessage","cbSuccessMsg","observed","selector","inputs","outputs","Directive","propDecorators","ClipboardIfSupportedDirective","_clipboardService","_viewContainerRef","_templateRef","createEmbeddedView","ClipboardModule","declarations","imports","NgxSmartModalConfig","NgxSmartModalComponent","_renderer","_changeDetectorRef","_document","_platformId","closable","escapable","dismissable","customClass","visible","backdrop","force","hideDelay","autostart","ariaLabel","ariaLabelledBy","ariaDescribedBy","refocus","visibleChange","onClose","onCloseFinished","onDismiss","onDismissFinished","onAnyCloseEvent","onAnyCloseEventFinished","onOpen","onOpenFinished","onEscape","onDataAdded","onDataRemoved","layerPosition","overlayVisible","openedClass","createFrom","_sendEvent","ngAfterViewInit","contentComponent","componentRef","createComponent","createDynamicContent","dynamicContentContainer","open","close","dismiss","classList","toggle","addCustomClass","className","removeCustomClass","isVisible","hasData","_data","setData","assignModalDataToComponentData","_componentRef","assignComponentDataToModalData","removeData","addBodyClass","removeBodyClass","removeClass","detectChanges","targetPlacement","isBrowser","nsmDialog","nsmContent","nsmOverlay","targetElement","targetElementRect","bodyRect","nsmContentRect","nsmDialogRect","setStyle","extraData","modal","CustomEvent","detail","dispatchEvent","isPlatformBrowser","viewContainerRef","clear","PLATFORM_ID","viewQueries","propertyName","descendants","read","ViewContainerRef","isInline","dependencies","kind","Document","ViewChildren","ViewChild","HostListener","NgxSmartModalStackService","_modalStack","addModal","modalInstance","findIndex","getModal","getModalStack","getOpenedModals","getTopOpenedModal","highest","getHigherIndex","getModalStackCount","removeModal","NgxSmartModalService","_appRef","_injector","applicationRef","_escapeKeyboardEvent","closeLatestModal","_trapFocusModal","activeElement","stopPropagation","_addEvents","_openModal","_closeModal","closeAll","_toggleModal","_destroyModal","setModalData","getModalData","resetModalData","removed","vcr","ngContent","_resolveNgContent","injector","projectableNodes","Type","attachView","hostView","domElem","rootNodes","_initModal","_deleteModal","_dismissModal","lastElementFocused","createTextNode","TemplateRef","viewRef","NgxSmartModalModule","static","AccordionTab","accordion","changeDetector","cache","selectedChange","transitionOptions","iconPos","selected","_selected","loaded","iconClass","ngAfterContentInit","getType","contentTemplate","findTabIndex","originalEvent","multiple","tabs","updateActiveIndex","hasHeaderFacet","headerFacet","onKeydown","which","Accordion","headerStyle","tabStyle","contentStyle","tabStyleClass","headerStyleClass","contentStyleClass","classAttribute","queries","animations","encapsulation","ChangeDetectionStrategy","ViewEncapsulation","class","ContentChildren","expandIcon","collapseIcon","activeIndexChange","initTabs","tabListSubscription","tabList","changes","subscribe","_","toArray","updateSelectionState","getBlockableElement","activeIndex","_activeIndex","preventActiveIndexPropagation","includes","tab","unsubscribe","styleClass","AccordionModule","ConfirmEventType","ConfirmationService","requireConfirmationSource","acceptConfirmationSource","requireConfirmation$","accept","confirm","confirmation","onAccept","ContextMenuService","activeItemKeyChange","activeItemKeyChange$","changeKey","activeItemKey","FilterMatchMode","STARTS_WITH","CONTAINS","NOT_CONTAINS","ENDS_WITH","EQUALS","NOT_EQUALS","IN","LESS_THAN","LESS_THAN_OR_EQUAL_TO","GREATER_THAN","GREATER_THAN_OR_EQUAL_TO","BETWEEN","IS","IS_NOT","BEFORE","AFTER","DATE_IS","DATE_IS_NOT","DATE_BEFORE","DATE_AFTER","FilterOperator","AND","OR","FilterService","filters","startsWith","filterLocale","toLocaleLowerCase","notContains","endsWith","stringValue","getTime","notEquals","in","between","lt","lte","gt","gte","is","isNot","before","dateIs","toDateString","dateIsNot","dateBefore","dateAfter","fields","filterMatchMode","filteredItems","fieldValue","register","rule","MessageService","messageSource","clearSource","messageObserver","clearObserver","addAll","messages","OverlayService","clickSource","clickObservable","PrimeIcons","ALIGN_CENTER","ALIGN_JUSTIFY","ALIGN_LEFT","ALIGN_RIGHT","AMAZON","ANDROID","ANGLE_DOUBLE_DOWN","ANGLE_DOUBLE_LEFT","ANGLE_DOUBLE_RIGHT","ANGLE_DOUBLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_UP","APPLE","ARROWS_ALT","ARROW_CIRCLE_DOWN","ARROW_CIRCLE_LEFT","ARROW_CIRCLE_RIGHT","ARROW_CIRCLE_UP","ARROW_DOWN","ARROW_DOWN_LEFT","ARROW_DOWN_RIGHT","ARROW_LEFT","ARROW_RIGHT_ARROW_LEFT","ARROW_RIGHT","ARROW_UP","ARROW_UP_LEFT","ARROW_UP_RIGHT","ARROW_H","ARROW_V","AT","BACKWARD","BAN","BARS","BELL","BITCOIN","BOLT","BOOK","BOOKMARK","BOOKMARK_FILL","BOX","BRIEFCASE","BUILDING","CALCULATOR","CALENDAR","CALENDAR_MINUS","CALENDAR_PLUS","CALENDAR_TIMES","CAMERA","CAR","CARET_DOWN","CARET_LEFT","CARET_RIGHT","CARET_UP","CART_PLUS","CHART_BAR","CHART_LINE","CHART_PIE","CHECK","CHECK_CIRCLE","CHECK_SQUARE","CHEVRON_CIRCLE_DOWN","CHEVRON_CIRCLE_LEFT","CHEVRON_CIRCLE_RIGHT","CHEVRON_CIRCLE_UP","CHEVRON_DOWN","CHEVRON_LEFT","CHEVRON_RIGHT","CHEVRON_UP","CIRCLE_FILL","CLOCK","CLONE","CLOUD","CLOUD_DOWNLOAD","CLOUD_UPLOAD","CODE","COG","COMMENT","COMMENTS","COMPASS","COPY","CREDIT_CARD","DATABASE","DESKTOP","DELETE_LEFT","DIRECTIONS","DIRECTIONS_ALT","DISCORD","DOLLAR","DOWNLOAD","EJECT","ELLIPSIS_H","ELLIPSIS_V","ENVELOPE","ERASER","EURO","EXCLAMATION_CIRCLE","EXCLAMATION_TRIANGLE","EXTERNAL_LINK","EYE","EYE_SLASH","FACEBOOK","FAST_BACKWARD","FAST_FORWARD","FILE","FILE_EDIT","FILE_IMPORT","FILE_PDF","FILE_EXCEL","FILE_EXPORT","FILE_WORD","FILTER","FILTER_FILL","FILTER_SLASH","FLAG","FLAG_FILL","FOLDER","FOLDER_OPEN","FORWARD","GIFT","GITHUB","GLOBE","GOOGLE","HASHTAG","HEART","HEART_FILL","HISTORY","HOME","HOURGLASS","ID_CARD","IMAGE","IMAGES","INBOX","INFO","INFO_CIRCLE","INSTAGRAM","KEY","LANGUAGE","LINK","LINKEDIN","LIST","LOCK","LOCK_OPEN","MAP","MAP_MARKER","MEGAPHONE","MICROPHONE","MICROSOFT","MINUS","MINUS_CIRCLE","MOBILE","MONEY_BILL","MOON","PALETTE","PAPERCLIP","PAUSE","PAYPAL","PENCIL","PERCENTAGE","PHONE","PLAY","PLUS","PLUS_CIRCLE","POUND","POWER_OFF","PRIME","PRINT","QRCODE","QUESTION","QUESTION_CIRCLE","REDDIT","REFRESH","REPLAY","REPLY","SAVE","SEARCH","SEARCH_MINUS","SEARCH_PLUS","SEND","SERVER","SHARE_ALT","SHIELD","SHOPPING_BAG","SHOPPING_CART","SIGN_IN","SIGN_OUT","SITEMAP","SLACK","SLIDERS_H","SLIDERS_V","SORT","SORT_ALPHA_DOWN","SORT_ALPHA_ALT_DOWN","SORT_ALPHA_UP","SORT_ALPHA_ALT_UP","SORT_ALT","SORT_ALT_SLASH","SORT_AMOUNT_DOWN","SORT_AMOUNT_DOWN_ALT","SORT_AMOUNT_UP","SORT_AMOUNT_UP_ALT","SORT_DOWN","SORT_NUMERIC_DOWN","SORT_NUMERIC_ALT_DOWN","SORT_NUMERIC_UP","SORT_NUMERIC_ALT_UP","SORT_UP","SPINNER","STAR","STAR_FILL","STEP_BACKWARD","STEP_BACKWARD_ALT","STEP_FORWARD","STEP_FORWARD_ALT","STOP","STOP_CIRCLE","STOPWATCH","SUN","SYNC","TABLE","TABLET","TAG","TAGS","TELEGRAM","TH_LARGE","THUMBS_DOWN","THUMBS_DOWN_FILL","THUMBS_UP","THUMBS_UP_FILL","TICKET","TIMES","TIMES_CIRCLE","TRASH","TRUCK","TWITTER","UNDO","UNLOCK","UPLOAD","USER","USER_EDIT","USER_MINUS","USER_PLUS","USERS","VERIFIED","VIDEO","VIMEO","VOLUME_DOWN","VOLUME_OFF","VOLUME_UP","WALLET","WHATSAPP","WIFI","WINDOW_MAXIMIZE","WINDOW_MINIMIZE","WRENCH","YOUTUBE","PrimeNGConfig","ripple","overlayOptions","filterMatchModeOptions","numeric","date","translation","noFilter","matchAll","matchAny","addRule","removeRule","choose","upload","dayNames","dayNamesShort","dayNamesMin","monthNames","monthNamesShort","dateFormat","firstDayOfWeek","today","weekHeader","weak","medium","strong","passwordPrompt","emptyMessage","emptyFilterMessage","overlay","menu","tooltip","translationSource","translationObserver","getTranslation","setTranslation","Header","Footer","PrimeTemplate","SharedModule","TranslationKeys","NO_FILTER","LT","LTE","GT","GTE","CLEAR","APPLY","MATCH_ALL","MATCH_ANY","ADD_RULE","REMOVE_RULE","ACCEPT","REJECT","CHOOSE","CANCEL","DAY_NAMES","DAY_NAMES_SHORT","DAY_NAMES_MIN","MONTH_NAMES","MONTH_NAMES_SHORT","FIRST_DAY_OF_WEEK","TODAY","WEEK_HEADER","WEAK","MEDIUM","STRONG","PASSWORD_PROMPT","EMPTY_MESSAGE","EMPTY_FILTER_MESSAGE","TreeDragDropService","dragStartSource","dragStopSource","dragStart$","dragStop$","startDrag","stopDrag","INTERNAL_BUTTON_CLASSES","button","component","iconOnly","loading","labelOnly","ButtonDirective","loadingIcon","_loading","_internalClasses","values","label","_label","initialized","updateLabel","updateIcon","setStyleClass","_icon","htmlElement","getStyleClass","createIcon","createLabel","textContent","remove","labelElement","iconElement","iconPosClass","getIconClass","insertBefore","firstChild","Button","onFocus","onBlur","badgeStyleClass","badge","badgeClass","ButtonModule","CALENDAR_VALUE_ACCESSOR","Calendar","cd","zone","overlayService","multipleSeparator","rangeSeparator","inline","showOtherMonths","shortYearCutoff","hourFormat","stepHour","stepMinute","stepSecond","showSeconds","showOnFocus","showWeek","showClear","dataType","selectionMode","todayButtonStyleClass","clearButtonStyleClass","autoZIndex","baseZIndex","keepInvalid","hideOnDateTimeSelect","timeSeparator","focusTrap","showTransitionOptions","hideTransitionOptions","onSelect","onClear","onInput","onTodayClick","onClearClick","onMonthChange","onYearChange","onClickOutside","onShow","onModelChange","onModelTouched","inputFieldValue","navigationState","_numberOfMonths","_view","convertTo24Hour","hours","pm","contentViewChild","isMonthNavigate","updateFocus","initFocusableCell","view","currentView","defaultDate","_defaultDate","Date","currentMonth","getMonth","currentYear","getFullYear","initTime","createMonths","minDate","_minDate","maxDate","_maxDate","disabledDates","_disabledDates","disabledDays","_disabledDays","yearRange","_yearRange","years","yearStart","yearEnd","populateYearOptions","showTime","_showTime","currentHour","updateInputfield","locale","_locale","responsiveOptions","_responsiveOptions","destroyResponsiveStyleElement","createResponsiveStyle","numberOfMonths","_firstDayOfWeek","createWeekDays","newLocale","attributeSelector","ticksTo1970","translationSubscription","dateTemplate","decadeTemplate","disabledDateTemplate","footerTemplate","containerViewChild","option","yearOptions","weekDays","dayIndex","getFirstDateOfWeek","dayLabels","monthPickerValues","yearPickerValues","month","year","months","createMonth","getWeekNumber","checkDate","setDate","getDate","getDay","time","setMonth","dates","firstDay","getFirstDayOfMonthIndex","daysLength","getDaysCountInMonth","prevMonthDaysLength","getDaysCountInPrevMonth","dayNo","weekNumbers","monthRows","week","prev","getPreviousMonthAndYear","day","otherMonth","isToday","selectable","isSelectable","remainingDaysLength","getNextMonthAndYear","getHours","currentMinute","getMinutes","currentSecond","getSeconds","setCurrentHourPM","timeOnly","navBackward","decrementYear","decrementDecade","navForward","incrementYear","incrementDecade","yearNavigator","difference","switchToMonthView","setCurrentView","switchToYearView","onDateSelect","dateMeta","isMultipleSelection","isSelected","isDateEquals","updateModel","shouldSelectDate","selectDate","isSingleSelection","hideOverlay","mask","disableModality","maxDateCount","onMonthSelect","onYearSelect","formattedValue","formatDateTime","isRangeSelection","startDate","endDate","updateFilledState","inputfieldViewChild","isValidDate","formatTime","formatDate","getDateFormat","alignOverlay","setHours","setMinutes","setSeconds","stringArrValue","setFullYear","getSundayIndex","daylightSavingAdjust","isDateBetween","isComparable","isMonthSelected","isMonthDisabled","isYearSelected","validMin","validMax","validDate","validDay","selectOtherMonths","isDateDisabled","isDayDisabled","disabledDate","weekdayNumber","onInputFocus","showOverlay","onInputClick","onInputBlur","onButtonClick","inputfield","onOverlayClick","getMonthName","getYear","switchViewButtonDisabled","onPrevButtonClick","backward","onNextButtonClick","onContainerButtonKeydown","trapFocus","onInputKeydown","isKeydown","keyCode","tabIndex","onDateCellKeydown","groupIndex","cellContent","currentTarget","cell","cellIndex","nextRow","nextElementSibling","focusCell","prevRow","previousElementSibling","prevCell","navigateToMonth","nextCell","onMonthCellKeydown","cells","onYearCellKeydown","prevMonthContainer","nextMonthContainer","contentEl","selectedCell","todayCell","preventFocus","focusableElements","focusedIndex","shiftKey","onMonthDropdownChange","onYearDropdownChange","validateTime","hour","minute","second","convertedHour","valueDateString","incrementHour","prevHour","newHour","newPM","onTimePickerElementMouseDown","repeat","onTimePickerElementMouseUp","clearTimePickerTimer","updateTime","onTimePickerElementMouseLeave","timePickerTimer","interval","decrementHour","incrementMinute","decrementMinute","incrementSecond","decrementSecond","newMinute","newSecond","toggleAMPM","onUserInput","parseValueFromString","isValidSelection","updateUI","filled","isValid","parseDateTime","tokens","populateTime","ampm","pop","timeString","parseDate","parseTime","propValue","touchUI","onOverlayAnimationStart","toState","appendOverlay","onOverlayHide","onOverlayAnimationDone","bindDocumentClickListener","bindDocumentResizeListener","bindScrollListener","appendTo","restoreOverlayAppend","enableModality","minWidth","maskStyleClass","maskClickListener","animationEndListener","destroyMask","hasBlockerMasks","bodyChildren","bodyChild","unbindAnimationEndListener","unbindMaskClickListener","setDisabledState","iFormat","lookAhead","match","matches","formatNumber","formatName","shortNames","longNames","output","literal","minutes","seconds","validTokenLength","h","dim","extra","iValue","doy","getNumber","isDoubled","digits","RegExp","getName","names","checkLiteral","onTodayButtonClick","onClearButtonClick","responsiveStyleElement","innerHTML","breakpoint","numMonths","o1","o2","localeCompare","documentClickListener","documentTarget","isOutsideClicked","unbindDocumentClickListener","documentResizeListener","onWindowResize","unbindDocumentResizeListener","scrollHandler","unbindScrollListener","isNavIconClicked","inputStyle","inputId","inputStyleClass","iconAriaLabel","showIcon","readonlyInput","monthNavigator","required","showButtonBar","panelStyleClass","panelStyle","tabindex","properties","opacity","CalendarModule","ConfirmPopup","confirmationService","defaultFocus","subscription","acceptEvent","rejectEvent","hide","_visible","onAnimationStart","bindListeners","getElementToFocus","onAnimationEnd","onContainerDestroy","containerOffset","targetOffset","arrowLeft","setProperty","unbindListeners","documentEvent","unsubscribeConfirmationSubscriptions","restoreAppend","acceptButtonLabel","acceptLabel","rejectButtonLabel","rejectLabel","ConfirmPopupModule","ContextMenuSub","contextMenu","leafClick","activeItemKeyChangeSubscription","contextMenuService","pipe","ngDestroy$","isActive","parentItemKey","sublistViewChild","positionSubmenu","onItemMouseEnter","hideTimeout","items","childSublist","onItemMouseLeave","toElement","removeActiveFromSubLists","root","onItemClick","menuitem","routerLink","command","onLeafClick","getKey","ContextMenu","exportAs","menuitemViewChild","triggerEvent","onHide","preventDocumentDefault","global","triggerEventListener","clearActiveItem","moveOnTop","display","bindGlobalListeners","unbindGlobalListeners","pageX","pageY","scrollingElement","sublist","parentMenuItem","sublistWidth","sublistHeight","itemOuterWidth","itemOuterHeight","removeProperty","isItemMatched","findNextItem","isRepeated","nextMenuitem","firstItem","findPrevItem","prevMenuitem","lastItem","getActiveItem","sublists","removeActiveFromSublist","documentTriggerListener","windowResizeListener","documentKeydownListener","activeItem","handleItemClick","findModelItemFromKey","model","currentIndex","complete","ContextMenuModule","DomHandler","from","querySelectorAll","childNodes","nodeType","attributeName","calculateMinWidth","getOuterWidth","relativePosition","absolutePosition","getClosestRelativeElement","getPropertyValue","elementDimensions","getHiddenElementDimensions","targetHeight","windowScrollTop","getWindowScrollTop","windowScrollLeft","getWindowScrollLeft","getViewport","relativeElementOffset","transformOrigin","elementOuterHeight","elementOuterWidth","targetOuterHeight","targetOuterWidth","parents","getParents","scrollableParents","overflowRegex","overflowCheck","styleDeclaration","scrollSelectors","selectors","findSingle","visibility","elementHeight","elementWidth","dimensions","borderTopValue","borderTop","paddingTopValue","paddingTop","containerRect","itemHeight","getOuterHeight","duration","tick","requestAnimationFrame","gap","fading","setInterval","clearInterval","webkitMatchesSelector","paddingLeft","paddingRight","paddingBottom","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","d","getElementsByTagName","innerWidth","innerHeight","replacementElement","replaceChild","isClient","ua","maxTouchPoints","calculatedScrollbarWidth","scrollDiv","scrollbarWidth","calculatedScrollbarHeight","scrollbarHeight","empty","rangeCount","getRangeAt","getClientRects","browser","resolveUserAgent","Number","isInteger","visibleFocusableElements","focusableElement","getFocusableElements","zindex","createRange","isExist","ConnectedOverlayScrollHandler","listener","getScrollableParents","AutoFocus","focused","ngAfterViewChecked","autofocus","AutoFocusModule","DROPDOWN_VALUE_ACCESSOR","Dropdown","DropdownItem","onOptionClick","itemSize","filterService","resetFilterOnHide","dropdownIcon","optionGroupChildren","autoDisplayFirst","lazy","tooltipPosition","tooltipPositionStyle","autofocusFilter","overlayDirection","onFilter","onLazyLoad","_disabled","destroyed","_itemSize","_autoZIndex","_baseZIndex","_showTransitionOptions","_hideTransitionOptions","itemTemplate","selectedItemTemplate","filterTemplate","emptyFilterTemplate","emptyTemplate","groupTemplate","loaderTemplate","optionsToDisplay","updateSelectedOption","labelId","listId","filterBy","onFilterInputChange","resetFilter","selectedOption","findOption","editable","optionsChanged","_filterValue","activateFilter","updateEditableLabel","getOptionLabel","emptyMessageLabel","emptyFilterMessageLabel","isVisibleClearIcon","editableInputViewChild","optionLabel","getOptionValue","optionValue","isOptionDisabled","optionDisabled","getOptionGroupLabel","optionGroup","optionGroupLabel","getOptionGroupChildren","selectItem","accessibleViewChild","preventScroll","overlayViewChild","selectedOptionUpdated","itemsWrapper","selectedItem","filterViewChild","onMouseclick","readonly","isInputClick","isEmpty","onEditableInputFocus","onEditableInputChange","virtualScroll","scroller","setContentEl","itemsViewChild","selectedIndex","findOptionIndex","scrollToIndex","selectedListItem","scrollIntoView","block","preventModelTouched","findPrevEnabledOption","prevEnabledOption","findNextEnabledOption","nextEnabledOption","search","altKey","selectedItemIndex","findOptionGroupIndex","nextItemIndex","itemIndex","prevItemIndex","prevGroup","searchTimeout","char","newOption","previousSearchChar","currentSearchChar","searchValue","searchIndex","searchOptionWithinGroup","searchOption","searchOptionInRange","opt","dataKey","inGroup","optgroup","inputValue","searchFields","filteredGroups","filteredSubOptions","applyFocus","filterPlaceholder","selectId","virtualScrollItemSize","virtualScrollOptions","ariaFilterLabel","maxlength","tooltipStyleClass","DropdownModule","ProgressBar","showValue","unit","mode","color","ProgressBarModule","FileUpload","platformId","sanitizer","http","invalidFileSizeMessageSummary","invalidFileSizeMessageDetail","invalidFileTypeMessageSummary","invalidFileTypeMessageDetail","invalidFileLimitMessageDetail","invalidFileLimitMessageSummary","previewWidth","chooseIcon","uploadIcon","cancelIcon","showUploadButton","showCancelButton","onBeforeUpload","onSend","onUpload","onError","onRemove","onProgress","uploadHandler","onImageError","_files","progress","uploadedFileCount","files","file","validate","isImage","objectURL","bypassSecurityTrustUrl","URL","createObjectURL","basicButtonLabel","hasFiles","chooseLabel","uploadLabel","fileTemplate","toolbarTemplate","dragOverListener","onDragOver","advancedFileInput","click","onFileSelect","isIE11","duplicateIEEvent","dataTransfer","isFileSelected","currentFiles","fileLimit","checkFileLimit","isFileLimitExceeded","clearIEInput","clearInputElement","sFile","isFileTypeValid","severity","summary","maxFileSize","formatSize","acceptableTypes","isWildcard","getTypeClass","getFileExtension","fileType","onImageLoad","img","revokeObjectURL","customUpload","uploading","formData","FormData","reportProgress","observe","withCredentials","isChooseDisabled","basicFileInput","onDragEnter","dragHighlight","onDragLeave","onDrop","bytes","toFixed","onBasicUploaderClick","onBasicKeydown","code","imageError","chooseButtonLabel","uploadButtonLabel","cancelButtonLabel","cancelLabel","uploadStyleClass","cancelStyleClass","removeStyleClass","chooseStyleClass","FileUploadModule","Galleria","fullScreen","numVisible","showItemNavigators","showThumbnailNavigators","showItemNavigatorsOnHover","changeItemOnIndicatorHover","circular","autoPlay","transitionInterval","showThumbnails","thumbnailsPosition","verticalThumbnailViewPortHeight","showIndicators","showIndicatorsOnItem","indicatorsPosition","maskVisible","footerFacet","indicatorFacet","captionFacet","ngOnChanges","simpleChanges","currentValue","onMaskHide","onActiveItemChange","maskClass","containerClass","containerStyle","usesOnChanges","GalleriaContent","galleria","differs","maskHide","activeItemChange","slideShowActive","differ","ngDoCheck","diff","forEachItem","galleriaClass","thumbnailsPosClass","getPositionClass","indicatorPosClass","startSlideShow","onActiveIndexChange","stopSlideShow","preClassName","GalleriaItemSlot","GalleriaItem","GalleriaThumbnails","_item","$implicit","stopTheSlideShow","cancelable","onIndicatorClick","onIndicatorMouseEnter","onIndicatorKeyDown","isNavForwardDisabled","isNavBackwardDisabled","isIndicatorItemActive","contentHeight","startPos","thumbnailsStyle","sortedResponsiveOptions","totalShiftedItems","_numVisible","d_numVisible","_oldNumVisible","_oldactiveIndex","createStyle","bindDocumentListeners","ngAfterContentChecked","itemsContainer","getMedianItemIndex","transition","calculatePosition","containerId","data1","data2","value1","value2","res","windowWidth","matchedResponsiveData","getTabIndex","isItemActive","getTotalPageNumber","step","dir","changePageOnTouch","onTransitionEnd","onTouchEnd","touchobj","changedTouches","onTouchMove","onTouchStart","firstItemAciveIndex","lastItemActiveIndex","unbindDocumentListeners","GalleriaModule","GMap","onMapClick","onOverlayDblClick","onOverlayDragStart","onOverlayDrag","onOverlayDragEnd","onMapReady","onMapDragEnd","onZoomChanged","initialize","overlays","bindOverlayEvents","getDraggable","bindDragEvents","forEachRemovedItem","record","clearInstanceListeners","forEachAddedItem","getMap","GMapModule","INPUTNUMBER_VALUE_ACCESSOR","InputNumber","showButtons","buttonLayout","incrementButtonIcon","decrementButtonIcon","allowEmpty","useGrouping","onKeyDown","groupChar","prefixChar","suffixChar","clearTimer","simpleChange","updateConstructParser","constructParser","getOptions","localeMatcher","currency","currencyDisplay","minimumFractionDigits","minFractionDigits","maximumFractionDigits","maxFractionDigits","numberFormat","Intl","NumberFormat","numerals","_numeral","_group","getGroupingExpression","_minusSign","getMinusSignExpression","_currency","getCurrencyExpression","_decimal","getDecimalExpression","_suffix","getSuffixExpression","_prefix","getPrefixExpression","_index","escapeRegExp","formatter","prefix","suffix","formatValue","parseValue","filteredText","parsedValue","spin","input","validateValue","updateInput","handleOnInput","onUpButtonMouseDown","onUpButtonMouseUp","onUpButtonMouseLeave","onUpButtonKeyDown","onUpButtonKeyUp","onDownButtonMouseDown","onDownButtonMouseUp","onDownButtonMouseLeave","onDownButtonKeyUp","onDownButtonKeyDown","isSpecialChar","lastValue","onInputKeyDown","selectionStart","selectionEnd","newValueStr","isNumeralChar","deleteChar","decimalCharIndex","decimalCharIndexWithoutPrefix","getDecimalCharIndexes","decimalLength","getDecimalLength","lastIndex","insertedText","isDecimalMode","updateValue","deleteRange","onInputKeyPress","fromCharCode","isDecimalSign","isMinusSign","insert","onPaste","filteredData","allowMinusSign","getCharIndexes","minusCharIndex","suffixCharIndex","currencyCharIndex","sign","minusCharIndexOnText","insertText","resolvedOptions","operation","charIndex","initCursor","valueLength","prefixLength","resetRegex","valueStr","insertedValueStr","isValueChanged","currentLength","concatValues","newLength","startValue","startExpr","sRegex","tExpr","tRegex","prevChar","nextChar","isGroupChar","val1","val2","valueSplit","getFormatter","ariaRequired","autocomplete","incrementButtonClass","decrementButtonClass","InputNumberModule","INPUTSWITCH_VALUE_ACCESSOR","InputSwitch","trueValue","falseValue","modelValue","onInputChange","inputChecked","checked","InputSwitchModule","InputText","ngModel","InputTextModule","LISTBOX_VALUE_ACCESSOR","Listbox","checkbox","metaKeySelection","showToggleAll","onDblClick","onOptionClickCheckbox","onOptionClickMultiple","onOptionClickSingle","optionTouched","onOptionTouchEnd","onOptionDoubleClick","valueChanged","removeOption","allChecked","optionsToRender","selectedDisabledItemsLength","unselectedDisabledItemsLength","selectedEnabledItemsLength","visibleOptionsLength","_filteredOptions","toggleAllDisabled","toggleAll","uncheckAll","checkAll","subOptions","onOptionKeyDown","nextItem","prevItem","onHeaderCheckboxFocus","headerCheckboxFocus","onHeaderCheckboxBlur","listStyle","listStyleClass","filterPlaceHolder","headerCheckboxViewChild","ContentChild","ListboxModule","Messages","messageService","enableService","escape","valueChange","timerSubscriptions","startMessageLifes","messageSubscription","filteredMessages","clearSubscription","hasMessages","parentEl","removeMessage","life","startMessageLife","timerSubsctiption","msgEl","timerEl","MessagesModule","MULTISELECT_VALUE_ACCESSOR","MultiSelect","MultiSelectItem","onOptionKeydown","displaySelectedLabel","maxSelectedLabels","selectedItemsLabel","showHeader","onPanelShow","onPanelHide","defaultLabel","_defaultLabel","_placeholder","selectedItemsTemplate","filtered","maxSelectionLimitReached","checkSelectionLimit","selectionLimit","selectionIndex","findSelectionIndex","itemValue","filterInputChild","removeChip","chip","itemLabel","findLabelByValue","valuesAsString","pattern","searchLabelByValue","MultiSelectModule","OVERLAY_VALUE_ACCESSOR","Overlay","showOverlayContentAnimation","hideOverlayContentAnimation","onBeforeShow","onBeforeHide","onAnimationDone","modalVisible","isOverlayClicked","isOverlayContentClicked","transformOptions","default","_mode","_style","overlayResponsiveOptions","_styleClass","_contentStyle","_contentStyleClass","_target","_appendTo","_listener","responsive","_responsive","matchMedia","media","overlayMode","overlayResponsiveDirection","overlayEl","targetEl","onVisibleChange","handleEvents","onOverlayContentClick","onOverlayContentAnimationStart","onOverlayContentAnimationDone","bindDocumentKeyboardListener","unbindDocumentKeyboardListener","valid","documentKeyboardListener","hideOnEscape","OverlayModule","Paginator","pageLinkSize","onPageChange","alwaysShow","dropdownScrollHeight","currentPageReportTemplate","showFirstLastIcon","totalRecords","showPageLinks","_first","updatePaginatorState","updatePageLinks","updateFirst","updateRowsPerPageOptions","rowsPerPageOptions","rowsPerPageItems","isFirstPage","getPage","isLastPage","getPageCount","calculatePageLinkBoundaries","numberOfPages","visiblePages","delta","pageLinks","boundaries","showJumpToPageDropdown","pageItems","changePage","pc","pageCount","changePageToFirst","changePageToPrev","changePageToNext","changePageToLast","onPageLinkClick","onRppChange","onPageDropdownChange","paginatorState","currentPageReport","templateLeft","templateRight","dropdownAppendTo","showCurrentPageReport","showJumpToPageInput","dropdownItemTemplate","PaginatorModule","FormsModule","ProgressSpinner","strokeWidth","fill","animationDuration","ProgressSpinnerModule","Ripple","mouseDownListener","onMouseDown","ink","getInk","resetInk","animationListener","RippleModule","Scroller","onScroll","onScrollIndexChange","_tabindex","_orientation","_step","_delay","_resizeDelay","_appendOnly","_inline","_lazy","_loaderDisabled","_showSpacer","_showLoader","_autoSize","d_loading","isRangeChanged","numItemsInViewport","lastScrollPos","lazyLoadState","loaderArr","spacerStyle","_id","_items","_scrollHeight","_scrollWidth","orientation","delay","resizeDelay","appendOnly","loaderDisabled","_columns","showSpacer","showLoader","numToleratedItems","_numToleratedItems","autoSize","trackBy","_trackBy","entries","vertical","horizontal","both","loadedItems","cols","loadedRows","loadedColumns","isPageChanged","getPageByFirst","setInitialState","isLoadingChanged","previousValue","d_numToleratedItems","calculateAutoSize","loaderIconTemplate","viewInit","unbindResizeListener","elementViewChild","defaultWidth","defaultHeight","defaultContentWidth","defaultContentHeight","setSize","calculateOptions","setSpacerSize","bindResizeListener","getElementRef","scrollTo","behavior","calculateNumItems","contentPos","getContentPosition","calculateFirst","_numT","calculateCoord","_size","_cpos","newFirst","scrollInView","to","getRenderedRange","isToEnd","calculateFirstInViewport","_pos","firstInViewport","lastInViewport","contentWidth","calculateNumItemsInViewport","_contentSize","calculateNumToleratedItems","_numItems","calculateLast","_num","_isCols","getLast","minHeight","isCols","setProp","_name","_value","setContentPosition","calculateTranslateVal","setTransform","_x","_y","translateVal","onScrollPositionChange","calculateScrollPos","calculateCurrentIndex","calculateTriggerIndex","_currentIndex","_last","_isScrollDownOrRight","_triggerIndex","newLast","newScrollPos","isScrollDown","isScrollRight","triggerIndex","scrollPos","isScrollDownOrRight","onScrollChange","newState","onContainerScroll","scrollTimeout","resizeTimeout","isDiffWidth","isDiffHeight","getContentOptions","getItemOptions","getLoaderOptions","renderedIndex","even","odd","extOptions","ScrollerModule","SELECTBUTTON_VALUE_ACCESSOR","SelectButton","SelectButtonModule"],"sourceRoot":""}