@bitblit/ngx-acute-common 5.0.514-alpha → 5.0.516-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/lib/esm2022/index.d.ts +18 -0
  2. package/lib/esm2022/ngx-acute-common.mjs +514 -0
  3. package/lib/esm2022/ngx-acute-common.mjs.map +1 -0
  4. package/package.json +5 -10
  5. package/lib/index.d.ts +0 -2
  6. package/lib/my-angular-library.cjs.js +0 -7
  7. package/lib/my-angular-library.cjs.js.map +0 -1
  8. package/lib/my-angular-library.esm.js +0 -7
  9. package/lib/my-angular-library.esm.js.map +0 -1
  10. package/lib/my-angular-library.umd.js +0 -7
  11. package/lib/my-angular-library.umd.js.map +0 -1
  12. /package/lib/{build → esm2022/build}/ngx-acute-common-info.d.ts +0 -0
  13. /package/lib/{components → esm2022/components}/dialogs/alert/alert.component.d.ts +0 -0
  14. /package/lib/{components → esm2022/components}/dialogs/block-ui/block-ui.component.d.ts +0 -0
  15. /package/lib/{model → esm2022/model}/google-analytics-config.d.ts +0 -0
  16. /package/lib/{pipes → esm2022/pipes}/capitalize.pipe.d.ts +0 -0
  17. /package/lib/{pipes → esm2022/pipes}/dollar-formatted.pipe.d.ts +0 -0
  18. /package/lib/{pipes → esm2022/pipes}/map-values.pipe.d.ts +0 -0
  19. /package/lib/{pipes → esm2022/pipes}/number-with-commas.pipe.d.ts +0 -0
  20. /package/lib/{pipes → esm2022/pipes}/order-by.pipe.d.ts +0 -0
  21. /package/lib/{pipes → esm2022/pipes}/percent-formatted.pipe.d.ts +0 -0
  22. /package/lib/{pipes → esm2022/pipes}/plural.pipe.d.ts +0 -0
  23. /package/lib/{pipes → esm2022/pipes}/round.pipe.d.ts +0 -0
  24. /package/lib/{pipes → esm2022/pipes}/time-ago-formatted.pipe.d.ts +0 -0
  25. /package/lib/{pipes → esm2022/pipes}/timing.pipe.d.ts +0 -0
  26. /package/lib/{services → esm2022/services}/google-analytics.service.d.ts +0 -0
  27. /package/lib/{services → esm2022/services}/graphql-query.service.d.ts +0 -0
  28. /package/lib/{services → esm2022/services}/local-storage.service.d.ts +0 -0
  29. /package/lib/{services → esm2022/services}/window-ref.service.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"my-angular-library.umd.js","sources":["../../../node_modules/@angular/animations/fesm2022/animations.mjs","../../../node_modules/primeng/fesm2022/primeng-dom.mjs","../../../node_modules/primeng/fesm2022/primeng-utils.mjs","../../../node_modules/primeng/fesm2022/primeng-api.mjs","../../../node_modules/primeng/fesm2022/primeng-focustrap.mjs","../../../node_modules/primeng/fesm2022/primeng-baseicon.mjs","../../../node_modules/primeng/fesm2022/primeng-icons-times.mjs","../../../node_modules/primeng/fesm2022/primeng-icons-windowmaximize.mjs","../../../node_modules/primeng/fesm2022/primeng-icons-windowminimize.mjs","../../../node_modules/primeng/fesm2022/primeng-dynamicdialog.mjs","../../common/lib/logger/logger-level-name.js","../../common/lib/logger/logger-ring-buffer.js","../../common/lib/logger/logger-output-function.js","../../common/lib/logger/logger-util.js","../../common/lib/logger/log-message-format-type.js","../../common/lib/lang/require-ratchet.js","../../common/lib/lang/string-ratchet.js","../../common/lib/logger/classic-single-line-log-message-formatter.js","../../common/lib/logger/none-log-message-formatter.js","../../common/lib/logger/structured-json-log-message-formatter.js","../../common/lib/logger/logger-instance.js","../../common/lib/logger/logger.js","../src/components/dialogs/alert/alert.component.ts","../src/build/ngx-acute-common-info.ts"],"sourcesContent":["/**\n * @license Angular v18.2.8\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, Injectable, ANIMATION_MODULE_TYPE, ViewEncapsulation, ɵRuntimeError, Inject } from '@angular/core';\n\n/**\n * @description Constants for the categories of parameters that can be defined for animations.\n *\n * A corresponding function defines a set of parameters for each category, and\n * collects them into a corresponding `AnimationMetadata` object.\n *\n * @publicApi\n */\nvar AnimationMetadataType;\n(function (AnimationMetadataType) {\n /**\n * Associates a named animation state with a set of CSS styles.\n * See [`state()`](api/animations/state)\n */\n AnimationMetadataType[AnimationMetadataType[\"State\"] = 0] = \"State\";\n /**\n * Data for a transition from one animation state to another.\n * See `transition()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Transition\"] = 1] = \"Transition\";\n /**\n * Contains a set of animation steps.\n * See `sequence()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Sequence\"] = 2] = \"Sequence\";\n /**\n * Contains a set of animation steps.\n * See `{@link animations/group group()}`\n */\n AnimationMetadataType[AnimationMetadataType[\"Group\"] = 3] = \"Group\";\n /**\n * Contains an animation step.\n * See `animate()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Animate\"] = 4] = \"Animate\";\n /**\n * Contains a set of animation steps.\n * See `keyframes()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Keyframes\"] = 5] = \"Keyframes\";\n /**\n * Contains a set of CSS property-value pairs into a named style.\n * See `style()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Style\"] = 6] = \"Style\";\n /**\n * Associates an animation with an entry trigger that can be attached to an element.\n * See `trigger()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Trigger\"] = 7] = \"Trigger\";\n /**\n * Contains a re-usable animation.\n * See `animation()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Reference\"] = 8] = \"Reference\";\n /**\n * Contains data to use in executing child animations returned by a query.\n * See `animateChild()`\n */\n AnimationMetadataType[AnimationMetadataType[\"AnimateChild\"] = 9] = \"AnimateChild\";\n /**\n * Contains animation parameters for a re-usable animation.\n * See `useAnimation()`\n */\n AnimationMetadataType[AnimationMetadataType[\"AnimateRef\"] = 10] = \"AnimateRef\";\n /**\n * Contains child-animation query data.\n * See `query()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Query\"] = 11] = \"Query\";\n /**\n * Contains data for staggering an animation sequence.\n * See `stagger()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Stagger\"] = 12] = \"Stagger\";\n})(AnimationMetadataType || (AnimationMetadataType = {}));\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of [`state()`](api/animations/state)\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of\n * [`state()`](api/animations/state) and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * <!-- somewhere inside of my-component-tpl.html -->\n * <div [@myAnimationTrigger]=\"myStatusExp\">...</div>\n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n * <div [@.disabled]=\"isDisabled\">\n * <div [@childAnimation]=\"exp\"></div>\n * </div>\n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return { type: AnimationMetadataType.Trigger, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return { type: AnimationMetadataType.Animate, styles, timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return { type: AnimationMetadataType.Group, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return { type: AnimationMetadataType.Sequence, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation [`state`](api/animations/state), within an animation\n *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow an element to animate from\n * a height of 0 up to its full height:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return { type: AnimationMetadataType.Style, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return { type: AnimationMetadataType.State, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return { type: AnimationMetadataType.Keyframes, steps };\n}\n/**\n * Declares an animation transition which is played when a certain specified condition is met.\n *\n * @param stateChangeExpr A string with a specific format or a function that specifies when the\n * animation transition should occur (see [State Change Expression](#state-change-expression)).\n *\n * @param steps One or more animation objects that represent the animation's instructions.\n *\n * @param options An options object that can be used to specify a delay for the animation or provide\n * custom parameters for it.\n *\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n *\n * ### State Change Expression\n *\n * The State Change Expression instructs Angular when to run the transition's animations, it can\n *either be\n * - a string with a specific syntax\n * - or a function that compares the previous and current state (value of the expression bound to\n * the element's trigger) and returns `true` if the transition should occur or `false` otherwise\n *\n * The string format can be:\n * - `fromState => toState`, which indicates that the transition's animations should occur then the\n * expression bound to the trigger's element goes from `fromState` to `toState`\n *\n * _Example:_\n * ```typescript\n * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))\n * ```\n *\n * - `fromState <=> toState`, which indicates that the transition's animations should occur then\n * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa\n *\n * _Example:_\n * ```typescript\n * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))\n * ```\n *\n * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the\n * element enters or exists the DOM\n *\n * _Example:_\n * ```typescript\n * transition(':enter', [\n * style({ opacity: 0 }),\n * animate('500ms', style({ opacity: 1 }))\n * ])\n * ```\n *\n * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when\n * the numerical expression bound to the trigger's element has increased in value or decreased\n *\n * _Example:_\n * ```typescript\n * transition(':increment', query('@counter', animateChild()))\n * ```\n *\n * - a sequence of any of the above divided by commas, which indicates that transition's animations\n * should occur whenever one of the state change expressions matches\n *\n * _Example:_\n * ```typescript\n * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([\n * style({ transform: 'scale(1)', offset: 0}),\n * style({ transform: 'scale(1.1)', offset: 0.7}),\n * style({ transform: 'scale(1)', offset: 1})\n * ]))),\n * ```\n *\n * Also note that in such context:\n * - `void` can be used to indicate the absence of the element\n * - asterisks can be used as wildcards that match any state\n * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is\n * equivalent to `:leave`)\n * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match\n * _truthy_ and _falsy_ values)\n *\n * <div class=\"alert is-helpful\">\n *\n * Be careful about entering end leaving elements as their transitions present a common\n * pitfall for developers.\n *\n * Note that when an element with a trigger enters the DOM its `:enter` transition always\n * gets executed, but its `:leave` transition will not be executed if the element is removed\n * alongside its parent (as it will be removed \"without warning\" before its transition has\n * a chance to be executed, the only way that such transition can occur is if the element\n * is exiting the DOM on its own).\n *\n *\n * </div>\n *\n * ### Animating to a Final State\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no `style` data, that step is automatically considered the final animation arc,\n * for the element to reach the final state, in such case Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n *\n * ### Usage Examples\n *\n * - Transition animations applied based on\n * the trigger's expression value\n *\n * ```html\n * <div [@myAnimationTrigger]=\"myStatusExp\">\n * ...\n * </div>\n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\"on => off, open => closed\", animate(500)),\n * transition(\"* <=> error\", query('.indicator', animateChild()))\n * ])\n * ```\n *\n * - Transition animations applied based on custom logic dependent\n * on the trigger's expression value and provided parameters\n *\n * ```html\n * <div [@myAnimationTrigger]=\"{\n * value: stepName,\n * params: { target: currentTarget }\n * }\">\n * ...\n * </div>\n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\n * (fromState, toState, _element, params) =>\n * ['firststep', 'laststep'].includes(fromState.toLowerCase())\n * && toState === params?.['target'],\n * animate('1s')\n * )\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: AnimationMetadataType.Transition, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return { type: AnimationMetadataType.Reference, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return { type: AnimationMetadataType.AnimateChild, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return { type: AnimationMetadataType.AnimateRef, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not\n * all elements can be queried via these tokens, see\n * [Entering and Leaving Elements](#entering-and-leaving-elements))\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n *\n * ### Multiple Tokens\n *\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Entering and Leaving Elements\n *\n * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones\n * that can are those that Angular assumes can enter/leave based on their own logic\n * (if their insertion/removal is simply a consequence of that of their parent they\n * should be queried via a different token in their parent's `:enter`/`:leave` transitions).\n *\n * The only elements Angular assumes can enter/leave based on their own logic (thus the only\n * ones that can be queried via the `:enter` and `:leave` tokens) are:\n * - Those inserted dynamically (via `ViewContainerRef`)\n * - Those that have a structural directive (which, under the hood, are a subset of the above ones)\n *\n * <div class=\"alert is-helpful\">\n *\n * Note that elements will be successfully queried via `:enter`/`:leave` even if their\n * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural\n * directive (e.g. they enter/exit alongside their parent).\n *\n * </div>\n *\n * <div class=\"alert is-important\">\n *\n * There is an exception to what previously mentioned, besides elements entering/leaving based on\n * their own logic, elements with an animation trigger can always be queried via `:leave` when\n * their parent is also leaving.\n *\n * </div>\n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n * <div [@queryAnimation]=\"exp\">\n * <h1>Title</h1>\n * <div class=\"content\">\n * Blah blah blah\n * </div>\n * </div>\n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return { type: AnimationMetadataType.Query, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * <!-- list.component.html -->\n * <button (click)=\"toggle()\">Show / Hide Items</button>\n * <hr />\n * <div [@listAnimation]=\"items.length\">\n * <div *ngFor=\"let item of items\">\n * {{ item }}\n * </div>\n * </div>\n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return { type: AnimationMetadataType.Stagger, timings, animation };\n}\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code> method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.8\", ngImport: i0, type: AnimationBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.8\", ngImport: i0, type: AnimationBuilder, providedIn: 'root', useFactory: () => inject(BrowserAnimationBuilder) }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.8\", ngImport: i0, type: AnimationBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: () => inject(BrowserAnimationBuilder) }]\n }] });\n/**\n * A factory object returned from the\n * <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {\n}\nclass BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this.animationModuleType = inject(ANIMATION_MODULE_TYPE, { optional: true });\n this._nextAnimationId = 0;\n const typeData = {\n id: '0',\n encapsulation: ViewEncapsulation.None,\n styles: [],\n data: { animation: [] },\n };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n if (this.animationModuleType === null && !isAnimationRenderer(this._renderer)) {\n // We only support AnimationRenderer & DynamicDelegationRenderer for this AnimationBuilder\n throw new ɵRuntimeError(3600 /* RuntimeErrorCode.BROWSER_ANIMATION_BUILDER_INJECTED_WITHOUT_ANIMATIONS */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'Angular detected that the `AnimationBuilder` was injected, but animation support was not enabled. ' +\n 'Please make sure that you enable animations in your application by calling `provideAnimations()` or `provideAnimationsAsync()` function.');\n }\n }\n build(animation) {\n const id = this._nextAnimationId;\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.8\", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.8\", ngImport: i0, type: BrowserAnimationBuilder, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.8\", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i0.RendererFactory2 }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n return unwrapAnimationRenderer(this._renderer)?.engine?.players[this.id]?.getPosition() ?? 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n/**\n * The following 2 methods cannot reference their correct types (AnimationRenderer &\n * DynamicDelegationRenderer) since this would introduce a import cycle.\n */\nfunction unwrapAnimationRenderer(renderer) {\n const type = renderer.ɵtype;\n if (type === 0 /* AnimationRendererType.Regular */) {\n return renderer;\n }\n else if (type === 1 /* AnimationRendererType.Delegated */) {\n return renderer.animationRenderer;\n }\n return null;\n}\nfunction isAnimationRenderer(renderer) {\n const type = renderer.ɵtype;\n return type === 0 /* AnimationRendererType.Regular */ || type === 1 /* AnimationRendererType.Delegated */;\n}\n\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see {@link animate}\n * @see {@link AnimationPlayer}\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach((fn) => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() { }\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n queueMicrotask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach((fn) => fn());\n this._onStartFns = [];\n }\n pause() { }\n restart() { }\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach((fn) => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n this._finished = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach((fn) => fn());\n methods.length = 0;\n }\n}\n\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see {@link AnimationPlayer}\n * @see {@link animations/group group}\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n queueMicrotask(() => this._onFinish());\n }\n else {\n this.players.forEach((player) => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach((fn) => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach((player) => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach((fn) => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach((player) => player.play());\n }\n pause() {\n this.players.forEach((player) => player.pause());\n }\n restart() {\n this.players.forEach((player) => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach((player) => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach((player) => player.destroy());\n this._onDestroyFns.forEach((fn) => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach((player) => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach((player) => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach((player) => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach((fn) => fn());\n methods.length = 0;\n }\n}\n\nconst ɵPRE_STYLE = '!';\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, AnimationMetadataType, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, ɵPRE_STYLE };\n//# sourceMappingURL=animations.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 zindex = 1000;\n static calculatedScrollbarWidth = null;\n static calculatedScrollbarHeight = null;\n static browser;\n static addClass(element, className) {\n if (element && className) {\n if (element.classList)\n element.classList.add(className);\n else\n element.className += ' ' + className;\n }\n }\n static addMultipleClasses(element, className) {\n if (element && className) {\n if (element.classList) {\n let styles = className.trim().split(' ');\n for (let i = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n }\n else {\n let styles = className.split(' ');\n for (let i = 0; i < styles.length; i++) {\n element.className += ' ' + styles[i];\n }\n }\n }\n }\n static removeClass(element, className) {\n if (element && className) {\n if (element.classList)\n element.classList.remove(className);\n else\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n static removeMultipleClasses(element, classNames) {\n if (element && classNames) {\n [classNames]\n .flat()\n .filter(Boolean)\n .forEach((cNames) => cNames.split(' ').forEach((className) => this.removeClass(element, className)));\n }\n }\n static hasClass(element, className) {\n if (element && className) {\n if (element.classList)\n return element.classList.contains(className);\n else\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n return false;\n }\n static siblings(element) {\n return Array.prototype.filter.call(element.parentNode.children, function (child) {\n return child !== element;\n });\n }\n static find(element, selector) {\n return Array.from(element.querySelectorAll(selector));\n }\n static findSingle(element, selector) {\n return this.isElement(element) ? element.querySelector(selector) : null;\n }\n static index(element) {\n let children = element.parentNode.childNodes;\n let num = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i] == element)\n return num;\n if (children[i].nodeType == 1)\n num++;\n }\n return -1;\n }\n static indexWithinGroup(element, attributeName) {\n let children = element.parentNode ? element.parentNode.childNodes : [];\n let num = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i] == element)\n return num;\n if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1)\n num++;\n }\n return -1;\n }\n static appendOverlay(overlay, target, appendTo = 'self') {\n if (appendTo !== 'self' && overlay && target) {\n this.appendChild(overlay, target);\n }\n }\n static alignOverlay(overlay, target, appendTo = 'self', calculateMinWidth = true) {\n if (overlay && target) {\n if (calculateMinWidth) {\n overlay.style.minWidth = `${DomHandler.getOuterWidth(target)}px`;\n }\n if (appendTo === 'self') {\n this.relativePosition(overlay, target);\n }\n else {\n this.absolutePosition(overlay, target);\n }\n }\n }\n static relativePosition(element, target, gutter = true) {\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 ?? target.getBoundingClientRect().height;\n const targetOffset = target.getBoundingClientRect();\n const windowScrollTop = this.getWindowScrollTop();\n const windowScrollLeft = this.getWindowScrollLeft();\n const viewport = this.getViewport();\n const relativeElement = getClosestRelativeElement(element);\n const relativeElementOffset = relativeElement?.getBoundingClientRect() || { top: -1 * windowScrollTop, left: -1 * windowScrollLeft };\n let top, left;\n if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {\n top = targetOffset.top - relativeElementOffset.top - elementDimensions.height;\n element.style.transformOrigin = 'bottom';\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n }\n else {\n top = targetHeight + targetOffset.top - relativeElementOffset.top;\n element.style.transformOrigin = 'top';\n }\n const horizontalOverflow = targetOffset.left + elementDimensions.width - viewport.width;\n const targetLeftOffsetInSpaceOfRelativeElement = targetOffset.left - relativeElementOffset.left;\n if (elementDimensions.width > viewport.width) {\n // element wider then viewport and cannot fit on screen (align at left side of viewport)\n left = (targetOffset.left - relativeElementOffset.left) * -1;\n }\n else if (horizontalOverflow > 0) {\n // element wider then viewport but can be fit on screen (align at right side of viewport)\n left = targetLeftOffsetInSpaceOfRelativeElement - horizontalOverflow;\n }\n else {\n // element fits on screen (align with target)\n left = targetOffset.left - relativeElementOffset.left;\n }\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n gutter && (element.style.marginTop = origin === 'bottom' ? 'calc(var(--p-anchor-gutter) * -1)' : 'calc(var(--p-anchor-gutter))');\n }\n static absolutePosition(element, target, gutter = true) {\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 ?? target.getBoundingClientRect().height;\n const targetOuterWidth = target.offsetWidth ?? target.getBoundingClientRect().width;\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 gutter && (element.style.marginTop = origin === 'bottom' ? 'calc(var(--p-anchor-gutter) * -1)' : 'calc(var(--p-anchor-gutter))');\n }\n static getParents(element, parents = []) {\n return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n static getScrollableParents(element) {\n let scrollableParents = [];\n if (element) {\n let parents = this.getParents(element);\n const overflowRegex = /(auto|scroll)/;\n const overflowCheck = (node) => {\n let styleDeclaration = window['getComputedStyle'](node, null);\n return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\n };\n for (let parent of parents) {\n let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n if (scrollSelectors) {\n let selectors = scrollSelectors.split(',');\n for (let selector of selectors) {\n let el = this.findSingle(parent, selector);\n if (el && overflowCheck(el)) {\n scrollableParents.push(el);\n }\n }\n }\n if (parent.nodeType !== 9 && overflowCheck(parent)) {\n scrollableParents.push(parent);\n }\n }\n }\n return scrollableParents;\n }\n static getHiddenElementOuterHeight(element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n let elementHeight = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementHeight;\n }\n static getHiddenElementOuterWidth(element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n let elementWidth = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementWidth;\n }\n static getHiddenElementDimensions(element) {\n let dimensions = {};\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return dimensions;\n }\n static scrollInView(container, item) {\n let borderTopValue = getComputedStyle(container).getPropertyValue('borderTopWidth');\n let borderTop = borderTopValue ? parseFloat(borderTopValue) : 0;\n let paddingTopValue = getComputedStyle(container).getPropertyValue('paddingTop');\n let paddingTop = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n let containerRect = container.getBoundingClientRect();\n let itemRect = item.getBoundingClientRect();\n let offset = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n let scroll = container.scrollTop;\n let elementHeight = container.clientHeight;\n let itemHeight = this.getOuterHeight(item);\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n }\n else if (offset + itemHeight > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n static fadeIn(element, duration) {\n element.style.opacity = 0;\n let last = +new Date();\n let opacity = 0;\n let tick = function () {\n opacity = +element.style.opacity.replace(',', '.') + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n if (+opacity < 1) {\n (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);\n }\n };\n tick();\n }\n static fadeOut(element, ms) {\n var opacity = 1, interval = 50, duration = ms, gap = interval / duration;\n let fading = setInterval(() => {\n opacity = opacity - gap;\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n element.style.opacity = opacity;\n }, interval);\n }\n static getWindowScrollTop() {\n let doc = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n static getWindowScrollLeft() {\n let doc = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n static matches(element, selector) {\n var p = Element.prototype;\n var f = p['matches'] ||\n p.webkitMatchesSelector ||\n p['mozMatchesSelector'] ||\n p['msMatchesSelector'] ||\n function (s) {\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n return f.call(element, selector);\n }\n static getOuterWidth(el, margin) {\n let width = el.offsetWidth;\n if (margin) {\n let style = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n return width;\n }\n static getHorizontalPadding(el) {\n let style = getComputedStyle(el);\n return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n }\n static getHorizontalMargin(el) {\n let style = getComputedStyle(el);\n return parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n static innerWidth(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n static width(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n static getInnerHeight(el) {\n let height = el.offsetHeight;\n let style = getComputedStyle(el);\n height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n return height;\n }\n static getOuterHeight(el, margin) {\n let height = el.offsetHeight;\n if (margin) {\n let style = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n return height;\n }\n static getHeight(el) {\n let height = el.offsetHeight;\n let style = getComputedStyle(el);\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n return height;\n }\n static getWidth(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n return width;\n }\n static getViewport() {\n let win = window, d = document, e = d.documentElement, g = d.getElementsByTagName('body')[0], w = win.innerWidth || e.clientWidth || g.clientWidth, h = win.innerHeight || e.clientHeight || g.clientHeight;\n return { width: w, height: h };\n }\n static getOffset(el) {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)\n };\n }\n static replaceElementWith(element, replacementElement) {\n let parentNode = element.parentNode;\n if (!parentNode)\n throw `Can't replace element`;\n return parentNode.replaceChild(replacementElement, element);\n }\n static getUserAgent() {\n if (navigator && this.isClient()) {\n return navigator.userAgent;\n }\n }\n static isIE() {\n var ua = window.navigator.userAgent;\n var msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return true;\n }\n var trident = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return true;\n }\n var edge = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return true;\n }\n // other browser\n return false;\n }\n static isIOS() {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n }\n static isAndroid() {\n return /(android)/i.test(navigator.userAgent);\n }\n static isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n static appendChild(element, target) {\n if (this.isElement(target))\n target.appendChild(element);\n else if (target && target.el && target.el.nativeElement)\n target.el.nativeElement.appendChild(element);\n else\n throw 'Cannot append ' + target + ' to ' + element;\n }\n static removeChild(element, target) {\n if (this.isElement(target))\n target.removeChild(element);\n else if (target.el && target.el.nativeElement)\n target.el.nativeElement.removeChild(element);\n else\n throw 'Cannot remove ' + element + ' from ' + target;\n }\n static removeElement(element) {\n if (!('remove' in Element.prototype))\n element.parentNode.removeChild(element);\n else\n element.remove();\n }\n static isElement(obj) {\n return typeof HTMLElement === 'object' ? obj instanceof HTMLElement : obj && typeof obj === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string';\n }\n static calculateScrollbarWidth(el) {\n if (el) {\n let style = getComputedStyle(el);\n return el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth);\n }\n else {\n if (this.calculatedScrollbarWidth !== null)\n return this.calculatedScrollbarWidth;\n let scrollDiv = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n this.calculatedScrollbarWidth = scrollbarWidth;\n return scrollbarWidth;\n }\n }\n static calculateScrollbarHeight() {\n if (this.calculatedScrollbarHeight !== null)\n return this.calculatedScrollbarHeight;\n let scrollDiv = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n let scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n document.body.removeChild(scrollDiv);\n this.calculatedScrollbarWidth = scrollbarHeight;\n return scrollbarHeight;\n }\n static invokeElementMethod(element, methodName, args) {\n element[methodName].apply(element, args);\n }\n static clearSelection() {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n }\n else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n }\n else if (document['selection'] && document['selection'].empty) {\n try {\n document['selection'].empty();\n }\n catch (error) {\n //ignore IE bug\n }\n }\n }\n static getBrowser() {\n if (!this.browser) {\n let matched = this.resolveUserAgent();\n this.browser = {};\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser['version'] = matched.version;\n }\n if (this.browser['chrome']) {\n this.browser['webkit'] = true;\n }\n else if (this.browser['webkit']) {\n this.browser['safari'] = true;\n }\n }\n return this.browser;\n }\n static resolveUserAgent() {\n let ua = navigator.userAgent.toLowerCase();\n let match = /(chrome)[ \\/]([\\w.]+)/.exec(ua) || /(webkit)[ \\/]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || (ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua)) || [];\n return {\n browser: match[1] || '',\n version: match[2] || '0'\n };\n }\n static isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n else {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n }\n }\n static isHidden(element) {\n return !element || element.offsetParent === null;\n }\n static isVisible(element) {\n return element && element.offsetParent != null;\n }\n static isExist(element) {\n return element !== null && typeof element !== 'undefined' && element.nodeName && element.parentNode;\n }\n static focus(element, options) {\n element && document.activeElement !== element && element.focus(options);\n }\n static getFocusableSelectorString(selector = '') {\n return `button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n [href][clientHeight][clientWidth]:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n input:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n select:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n textarea:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n [tabIndex]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n [contenteditable]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n .p-inputtext:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n .p-button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector}`;\n }\n static getFocusableElements(element, selector = '') {\n let focusableElements = this.find(element, this.getFocusableSelectorString(selector));\n let visibleFocusableElements = [];\n for (let focusableElement of focusableElements) {\n const computedStyle = getComputedStyle(focusableElement);\n if (this.isVisible(focusableElement) && computedStyle.display != 'none' && computedStyle.visibility != 'hidden')\n visibleFocusableElements.push(focusableElement);\n }\n return visibleFocusableElements;\n }\n static getFocusableElement(element, selector = '') {\n let focusableElement = this.findSingle(element, this.getFocusableSelectorString(selector));\n if (focusableElement) {\n const computedStyle = getComputedStyle(focusableElement);\n if (this.isVisible(focusableElement) && computedStyle.display != 'none' && computedStyle.visibility != 'hidden')\n return focusableElement;\n }\n return null;\n }\n static getFirstFocusableElement(element, selector = '') {\n const focusableElements = this.getFocusableElements(element, selector);\n return focusableElements.length > 0 ? focusableElements[0] : null;\n }\n static getLastFocusableElement(element, selector) {\n const focusableElements = this.getFocusableElements(element, selector);\n return focusableElements.length > 0 ? focusableElements[focusableElements.length - 1] : null;\n }\n static getNextFocusableElement(element, reverse = false) {\n const focusableElements = DomHandler.getFocusableElements(element);\n let index = 0;\n if (focusableElements && focusableElements.length > 0) {\n const focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n if (reverse) {\n if (focusedIndex == -1 || focusedIndex === 0) {\n index = focusableElements.length - 1;\n }\n else {\n index = focusedIndex - 1;\n }\n }\n else if (focusedIndex != -1 && focusedIndex !== focusableElements.length - 1) {\n index = focusedIndex + 1;\n }\n }\n return focusableElements[index];\n }\n static generateZIndex() {\n this.zindex = this.zindex || 999;\n return ++this.zindex;\n }\n static getSelection() {\n if (window.getSelection)\n return window.getSelection().toString();\n else if (document.getSelection)\n return document.getSelection().toString();\n else if (document['selection'])\n return document['selection'].createRange().text;\n return null;\n }\n static getTargetElement(target, el) {\n if (!target)\n return null;\n switch (target) {\n case 'document':\n return document;\n case 'window':\n return window;\n case '@next':\n return el?.nextElementSibling;\n case '@prev':\n return el?.previousElementSibling;\n case '@parent':\n return el?.parentElement;\n case '@grandparent':\n return el?.parentElement.parentElement;\n default:\n const type = typeof target;\n if (type === 'string') {\n return document.querySelector(target);\n }\n else if (type === 'object' && target.hasOwnProperty('nativeElement')) {\n return this.isExist(target.nativeElement) ? target.nativeElement : undefined;\n }\n const isFunction = (obj) => !!(obj && obj.constructor && obj.call && obj.apply);\n const element = isFunction(target) ? target() : target;\n return (element && element.nodeType === 9) || this.isExist(element) ? element : null;\n }\n }\n static isClient() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n }\n static getAttribute(element, name) {\n if (element) {\n const value = element.getAttribute(name);\n if (!isNaN(value)) {\n return +value;\n }\n if (value === 'true' || value === 'false') {\n return value === 'true';\n }\n return value;\n }\n return undefined;\n }\n static calculateBodyScrollbarWidth() {\n return window.innerWidth - document.documentElement.offsetWidth;\n }\n static blockBodyScroll(className = 'p-overflow-hidden') {\n document.body.style.setProperty('--scrollbar-width', this.calculateBodyScrollbarWidth() + 'px');\n this.addClass(document.body, className);\n }\n static unblockBodyScroll(className = 'p-overflow-hidden') {\n document.body.style.removeProperty('--scrollbar-width');\n this.removeClass(document.body, className);\n }\n static createElement(type, attributes = {}, ...children) {\n if (type) {\n const element = document.createElement(type);\n this.setAttributes(element, attributes);\n element.append(...children);\n return element;\n }\n return undefined;\n }\n static setAttribute(element, attribute = '', value) {\n if (this.isElement(element) && value !== null && value !== undefined) {\n element.setAttribute(attribute, value);\n }\n }\n static setAttributes(element, attributes = {}) {\n if (this.isElement(element)) {\n const computedStyles = (rule, value) => {\n const styles = element?.$attrs?.[rule] ? [element?.$attrs?.[rule]] : [];\n return [value].flat().reduce((cv, v) => {\n if (v !== null && v !== undefined) {\n const type = typeof v;\n if (type === 'string' || type === 'number') {\n cv.push(v);\n }\n else if (type === 'object') {\n const _cv = Array.isArray(v)\n ? computedStyles(rule, v)\n : Object.entries(v).map(([_k, _v]) => (rule === 'style' && (!!_v || _v === 0) ? `${_k.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()}:${_v}` : !!_v ? _k : undefined));\n cv = _cv.length ? cv.concat(_cv.filter((c) => !!c)) : cv;\n }\n }\n return cv;\n }, styles);\n };\n Object.entries(attributes).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n const matchedEvent = key.match(/^on(.+)/);\n if (matchedEvent) {\n element.addEventListener(matchedEvent[1].toLowerCase(), value);\n }\n else if (key === 'pBind') {\n this.setAttributes(element, value);\n }\n else {\n value = key === 'class' ? [...new Set(computedStyles('class', value))].join(' ').trim() : key === 'style' ? computedStyles('style', value).join(';').trim() : value;\n (element.$attrs = element.$attrs || {}) && (element.$attrs[key] = value);\n element.setAttribute(key, value);\n }\n }\n });\n }\n }\n static isFocusableElement(element, selector = '') {\n return this.isElement(element)\n ? element.matches(`button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n [href][clientHeight][clientWidth]:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n input:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n select:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n textarea:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n [tabIndex]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector},\n [contenteditable]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])${selector}`)\n : false;\n }\n}\n\nclass ConnectedOverlayScrollHandler {\n element;\n listener;\n scrollableParents;\n constructor(element, listener = () => { }) {\n this.element = element;\n this.listener = listener;\n }\n bindScrollListener() {\n this.scrollableParents = DomHandler.getScrollableParents(this.element);\n for (let i = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].addEventListener('scroll', this.listener);\n }\n }\n unbindScrollListener() {\n if (this.scrollableParents) {\n for (let i = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].removeEventListener('scroll', this.listener);\n }\n }\n }\n destroy() {\n this.unbindScrollListener();\n this.element = null;\n this.listener = null;\n this.scrollableParents = null;\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ConnectedOverlayScrollHandler, DomHandler };\n//# sourceMappingURL=primeng-dom.mjs.map\n","class ObjectUtils {\n static isArray(value, empty = true) {\n return Array.isArray(value) && (empty || value.length !== 0);\n }\n static isObject(value, empty = true) {\n return typeof value === 'object' && !Array.isArray(value) && value != null && (empty || Object.keys(value).length !== 0);\n }\n static equals(obj1, obj2, field) {\n if (field)\n return this.resolveFieldData(obj1, field) === this.resolveFieldData(obj2, field);\n else\n return this.equalsByValue(obj1, obj2);\n }\n static equalsByValue(obj1, obj2) {\n if (obj1 === obj2)\n return true;\n if (obj1 && obj2 && typeof obj1 == 'object' && typeof obj2 == 'object') {\n var arrA = Array.isArray(obj1), arrB = Array.isArray(obj2), i, length, key;\n if (arrA && arrB) {\n length = obj1.length;\n if (length != obj2.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!this.equalsByValue(obj1[i], obj2[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var dateA = this.isDate(obj1), dateB = this.isDate(obj2);\n if (dateA != dateB)\n return false;\n if (dateA && dateB)\n return obj1.getTime() == obj2.getTime();\n var regexpA = obj1 instanceof RegExp, regexpB = obj2 instanceof RegExp;\n if (regexpA != regexpB)\n return false;\n if (regexpA && regexpB)\n return obj1.toString() == obj2.toString();\n var keys = Object.keys(obj1);\n length = keys.length;\n if (length !== Object.keys(obj2).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(obj2, keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!this.equalsByValue(obj1[key], obj2[key]))\n return false;\n }\n return true;\n }\n return obj1 !== obj1 && obj2 !== obj2;\n }\n static resolveFieldData(data, field) {\n if (data && field) {\n if (this.isFunction(field)) {\n return field(data);\n }\n else if (field.indexOf('.') == -1) {\n return data[field];\n }\n else {\n let fields = field.split('.');\n let value = data;\n for (let i = 0, len = fields.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[fields[i]];\n }\n return value;\n }\n }\n else {\n return null;\n }\n }\n static isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n }\n static reorderArray(value, from, to) {\n let target;\n if (value && from !== to) {\n if (to >= value.length) {\n to %= value.length;\n from %= value.length;\n }\n value.splice(to, 0, value.splice(from, 1)[0]);\n }\n }\n static insertIntoOrderedArray(item, index, arr, sourceArr) {\n if (arr.length > 0) {\n let injected = false;\n for (let i = 0; i < arr.length; i++) {\n let currentItemIndex = this.findIndexInList(arr[i], sourceArr);\n if (currentItemIndex > index) {\n arr.splice(i, 0, item);\n injected = true;\n break;\n }\n }\n if (!injected) {\n arr.push(item);\n }\n }\n else {\n arr.push(item);\n }\n }\n static findIndexInList(item, list) {\n let index = -1;\n if (list) {\n for (let i = 0; i < list.length; i++) {\n if (list[i] == item) {\n index = i;\n break;\n }\n }\n }\n return index;\n }\n static contains(value, list) {\n if (value != null && list && list.length) {\n for (let val of list) {\n if (this.equals(value, val))\n return true;\n }\n }\n return false;\n }\n static removeAccents(str) {\n if (str) {\n str = str.normalize('NFKD').replace(/\\p{Diacritic}/gu, '');\n }\n return str;\n }\n static isDate(input) {\n return Object.prototype.toString.call(input) === '[object Date]';\n }\n static isEmpty(value) {\n return value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0) || (!this.isDate(value) && typeof value === 'object' && Object.keys(value).length === 0);\n }\n static isNotEmpty(value) {\n return !this.isEmpty(value);\n }\n static compare(value1, value2, locale, order = 1) {\n let result = -1;\n const emptyValue1 = this.isEmpty(value1);\n const emptyValue2 = this.isEmpty(value2);\n if (emptyValue1 && emptyValue2)\n result = 0;\n else if (emptyValue1)\n result = order;\n else if (emptyValue2)\n result = -order;\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2, locale, { numeric: true });\n else\n result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n return result;\n }\n static sort(value1, value2, order = 1, locale, nullSortOrder = 1) {\n const result = ObjectUtils.compare(value1, value2, locale, order);\n let finalSortOrder = order;\n // nullSortOrder == 1 means Excel like sort nulls at bottom\n if (ObjectUtils.isEmpty(value1) || ObjectUtils.isEmpty(value2)) {\n finalSortOrder = nullSortOrder === 1 ? order : nullSortOrder;\n }\n return finalSortOrder * result;\n }\n static merge(obj1, obj2) {\n if (obj1 == undefined && obj2 == undefined) {\n return undefined;\n }\n else if ((obj1 == undefined || typeof obj1 === 'object') && (obj2 == undefined || typeof obj2 === 'object')) {\n return { ...(obj1 || {}), ...(obj2 || {}) };\n }\n else if ((obj1 == undefined || typeof obj1 === 'string') && (obj2 == undefined || typeof obj2 === 'string')) {\n return [obj1 || '', obj2 || ''].join(' ');\n }\n return obj2 || obj1;\n }\n static isPrintableCharacter(char = '') {\n return this.isNotEmpty(char) && char.length === 1 && char.match(/\\S| /);\n }\n static getItemValue(obj, ...params) {\n return this.isFunction(obj) ? obj(...params) : obj;\n }\n static findLastIndex(arr, callback) {\n let index = -1;\n if (this.isNotEmpty(arr)) {\n try {\n index = arr.findLastIndex(callback);\n }\n catch {\n index = arr.lastIndexOf([...arr].reverse().find(callback));\n }\n }\n return index;\n }\n static findLast(arr, callback) {\n let item;\n if (this.isNotEmpty(arr)) {\n try {\n item = arr.findLast(callback);\n }\n catch {\n item = [...arr].reverse().find(callback);\n }\n }\n return item;\n }\n static deepEquals(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!this.deepEquals(a[i], b[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var dateA = a instanceof Date, dateB = b instanceof Date;\n if (dateA != dateB)\n return false;\n if (dateA && dateB)\n return a.getTime() == b.getTime();\n var regexpA = a instanceof RegExp, regexpB = b instanceof RegExp;\n if (regexpA != regexpB)\n return false;\n if (regexpA && regexpB)\n return a.toString() == b.toString();\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!this.deepEquals(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a !== a && b !== b;\n }\n}\n\nvar lastId = 0;\nfunction UniqueComponentId(prefix = 'pn_id_') {\n lastId++;\n return `${prefix}${lastId}`;\n}\n\nfunction ZIndexUtils() {\n let zIndexes = [];\n const generateZIndex = (key, baseZIndex) => {\n let lastZIndex = zIndexes.length > 0 ? zIndexes[zIndexes.length - 1] : { key, value: baseZIndex };\n let newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 2;\n zIndexes.push({ key, value: newZIndex });\n return newZIndex;\n };\n const revertZIndex = (zIndex) => {\n zIndexes = zIndexes.filter((obj) => obj.value !== zIndex);\n };\n const getCurrentZIndex = () => {\n return zIndexes.length > 0 ? zIndexes[zIndexes.length - 1].value : 0;\n };\n const getZIndex = (el) => {\n return el ? parseInt(el.style.zIndex, 10) || 0 : 0;\n };\n return {\n get: getZIndex,\n set: (key, el, baseZIndex) => {\n if (el) {\n el.style.zIndex = String(generateZIndex(key, baseZIndex));\n }\n },\n clear: (el) => {\n if (el) {\n revertZIndex(getZIndex(el));\n el.style.zIndex = '';\n }\n },\n getCurrent: () => getCurrentZIndex()\n };\n}\nvar zindexutils = ZIndexUtils();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ObjectUtils, UniqueComponentId, zindexutils as ZIndexUtils };\n//# sourceMappingURL=primeng-utils.mjs.map\n","import * as i0 from '@angular/core';\nimport { Injectable, signal, Component, Directive, Input, NgModule } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ObjectUtils } from 'primeng/utils';\n\n/**\n * Type of the confirm event.\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\n/**\n * Methods used in confirmation service.\n * @group Service\n */\nclass ConfirmationService {\n requireConfirmationSource = new Subject();\n acceptConfirmationSource = new Subject();\n requireConfirmation$ = this.requireConfirmationSource.asObservable();\n accept = this.acceptConfirmationSource.asObservable();\n /**\n * Callback to invoke on confirm.\n * @param {Confirmation} confirmation - Represents a confirmation dialog configuration.\n * @group Method\n */\n confirm(confirmation) {\n this.requireConfirmationSource.next(confirmation);\n return this;\n }\n /**\n * Closes the dialog.\n * @group Method\n */\n close() {\n this.requireConfirmationSource.next(null);\n return this;\n }\n /**\n * Accepts the dialog.\n * @group Method\n */\n onAccept() {\n this.acceptConfirmationSource.next(null);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: ConfirmationService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: ConfirmationService, decorators: [{\n type: Injectable\n }] });\n\nclass ContextMenuService {\n activeItemKeyChange = new Subject();\n activeItemKeyChange$ = this.activeItemKeyChange.asObservable();\n activeItemKey;\n changeKey(key) {\n this.activeItemKey = key;\n this.activeItemKeyChange.next(this.activeItemKey);\n }\n reset() {\n this.activeItemKey = null;\n this.activeItemKeyChange.next(this.activeItemKey);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: ContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: ContextMenuService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: ContextMenuService, decorators: [{\n type: Injectable\n }] });\n\nclass FilterMatchMode {\n static STARTS_WITH = 'startsWith';\n static CONTAINS = 'contains';\n static NOT_CONTAINS = 'notContains';\n static ENDS_WITH = 'endsWith';\n static EQUALS = 'equals';\n static NOT_EQUALS = 'notEquals';\n static IN = 'in';\n static LESS_THAN = 'lt';\n static LESS_THAN_OR_EQUAL_TO = 'lte';\n static GREATER_THAN = 'gt';\n static GREATER_THAN_OR_EQUAL_TO = 'gte';\n static BETWEEN = 'between';\n static IS = 'is';\n static IS_NOT = 'isNot';\n static BEFORE = 'before';\n static AFTER = 'after';\n static DATE_IS = 'dateIs';\n static DATE_IS_NOT = 'dateIsNot';\n static DATE_BEFORE = 'dateBefore';\n static DATE_AFTER = 'dateAfter';\n}\n\nclass FilterOperator {\n static AND = 'and';\n static OR = 'or';\n}\n\nclass FilterService {\n filter(value, fields, filterValue, filterMatchMode, filterLocale) {\n let filteredItems = [];\n if (value) {\n for (let item of value) {\n for (let field of fields) {\n let fieldValue = ObjectUtils.resolveFieldData(item, field);\n if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {\n filteredItems.push(item);\n break;\n }\n }\n }\n }\n return filteredItems;\n }\n filters = {\n startsWith: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.slice(0, filterValue.length) === filterValue;\n },\n contains: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.indexOf(filterValue) !== -1;\n },\n notContains: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.indexOf(filterValue) === -1;\n },\n endsWith: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;\n },\n equals: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime)\n return value.getTime() === filter.getTime();\n else if (value == filter)\n return true;\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 if (value == filter)\n return false;\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 const valueCopy = new Date(value);\n valueCopy.setHours(0, 0, 0, 0);\n return valueCopy.getTime() > filter.getTime();\n }\n };\n register(rule, fn) {\n this.filters[rule] = fn;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: FilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: FilterService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: FilterService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * Message service used in messages and toast components.\n * @group Service\n */\nclass MessageService {\n messageSource = new Subject();\n clearSource = new Subject();\n messageObserver = this.messageSource.asObservable();\n clearObserver = this.clearSource.asObservable();\n /**\n * Inserts single message.\n * @param {Message} message - Message to be added.\n * @group Method\n */\n add(message) {\n if (message) {\n this.messageSource.next(message);\n }\n }\n /**\n * Inserts new messages.\n * @param {Message[]} messages - Messages to be added.\n * @group Method\n */\n addAll(messages) {\n if (messages && messages.length) {\n this.messageSource.next(messages);\n }\n }\n /**\n * Clears the message with the given key.\n * @param {string} key - Key of the message to be cleared.\n * @group Method\n */\n clear(key) {\n this.clearSource.next(key || null);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: MessageService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: MessageService, decorators: [{\n type: Injectable\n }] });\n\nclass OverlayService {\n clickSource = new Subject();\n clickObservable = this.clickSource.asObservable();\n add(event) {\n if (event) {\n this.clickSource.next(event);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: OverlayService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: OverlayService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass PrimeIcons {\n static ADDRESS_BOOK = 'pi pi-address-book';\n static ALIGN_CENTER = 'pi pi-align-center';\n static ALIGN_JUSTIFY = 'pi pi-align-justify';\n static ALIGN_LEFT = 'pi pi-align-left';\n static ALIGN_RIGHT = 'pi pi-align-right';\n static AMAZON = 'pi pi-amazon';\n static ANDROID = 'pi pi-android';\n static ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';\n static ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';\n static ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';\n static ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';\n static ANGLE_DOWN = 'pi pi-angle-down';\n static ANGLE_LEFT = 'pi pi-angle-left';\n static ANGLE_RIGHT = 'pi pi-angle-right';\n static ANGLE_UP = 'pi pi-angle-up';\n static APPLE = 'pi pi-apple';\n static ARROWS_ALT = 'pi pi-arrows-alt';\n static ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';\n static ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';\n static ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';\n static ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';\n static ARROW_DOWN = 'pi pi-arrow-down';\n static ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';\n static ARROW_DOWN_LEFT_AND_ARROW_UP_RIGHT_TO_CENTER = 'pi pi-arrow-down-left-and-arrow-up-right-to-center';\n static ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';\n static ARROW_LEFT = 'pi pi-arrow-left';\n static ARROW_RIGHT_ARROW_LEFT = 'pi pi-arrow-right-arrow-left';\n static ARROW_RIGHT = 'pi pi-arrow-right';\n static ARROW_UP = 'pi pi-arrow-up';\n static ARROW_UP_LEFT = 'pi pi-arrow-up-left';\n static ARROW_UP_RIGHT = 'pi pi-arrow-up-right';\n static ARROW_UP_RIGHT_AND_ARROW_DOWN_LEFT_FROM_CENTER = 'pi pi-arrow-up-right-and-arrow-down-left-from-center';\n static ARROW_H = 'pi pi-arrows-h';\n static ARROW_V = 'pi pi-arrows-v';\n static ASTERIKS = 'pi pi-asteriks';\n static AT = 'pi pi-at';\n static BACKWARD = 'pi pi-backward';\n static BAN = 'pi pi-ban';\n static BARCODE = 'pi pi-barcode';\n static BARS = 'pi pi-bars';\n static BELL = 'pi pi-bell';\n static BELL_SLASH = 'pi pi-bell-slash';\n static BITCOIN = 'pi pi-bitcoin';\n static BOLT = 'pi pi-bolt';\n static BOOK = 'pi pi-book';\n static BOOKMARK = 'pi pi-bookmark';\n static BOOKMARK_FILL = 'pi pi-bookmark-fill';\n static BOX = 'pi pi-box';\n static BRIEFCASE = 'pi pi-briefcase';\n static BUILDING = 'pi pi-building';\n static BUILDING_COLUMNS = 'pi pi-building-columns';\n static BULLSEYE = 'pi pi-bullseye';\n static CALCULATOR = 'pi pi-calculator';\n static CALENDAR = 'pi pi-calendar';\n static CALENDAR_CLOCK = 'pi pi-calendar-clock';\n static CALENDAR_MINUS = 'pi pi-calendar-minus';\n static CALENDAR_PLUS = 'pi pi-calendar-plus';\n static CALENDAR_TIMES = 'pi pi-calendar-times';\n static CAMERA = 'pi pi-camera';\n static CAR = 'pi pi-car';\n static CARET_DOWN = 'pi pi-caret-down';\n static CARET_LEFT = 'pi pi-caret-left';\n static CARET_RIGHT = 'pi pi-caret-right';\n static CARET_UP = 'pi pi-caret-up';\n static CART_ARROW_DOWN = 'pi pi-cart-arrow-down';\n static CART_MINUS = 'pi pi-cart-minus';\n static CART_PLUS = 'pi pi-cart-plus';\n static CHART_BAR = 'pi pi-chart-bar';\n static CHART_LINE = 'pi pi-chart-line';\n static CHART_PIE = 'pi pi-chart-pie';\n static CHART_SCATTER = 'pi pi-chart-scatter';\n static CHECK = 'pi pi-check';\n static CHECK_CIRCLE = 'pi pi-check-circle';\n static CHECK_SQUARE = 'pi pi-check-square';\n static CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';\n static CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';\n static CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';\n static CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';\n static CHEVRON_DOWN = 'pi pi-chevron-down';\n static CHEVRON_LEFT = 'pi pi-chevron-left';\n static CHEVRON_RIGHT = 'pi pi-chevron-right';\n static CHEVRON_UP = 'pi pi-chevron-up';\n static CIRCLE = 'pi pi-circle';\n static CIRCLE_FILL = 'pi pi-circle-fill';\n static CLIPBOARD = 'pi pi-clipboard';\n static CLOCK = 'pi pi-clock';\n static CLONE = 'pi pi-clone';\n static CLOUD = 'pi pi-cloud';\n static CLOUD_DOWNLOAD = 'pi pi-cloud-download';\n static CLOUD_UPLOAD = 'pi pi-cloud-upload';\n static CODE = 'pi pi-code';\n static COG = 'pi pi-cog';\n static COMMENT = 'pi pi-comment';\n static COMMENTS = 'pi pi-comments';\n static COMPASS = 'pi pi-compass';\n static COPY = 'pi pi-copy';\n static CREDIT_CARD = 'pi pi-credit-card';\n static CROWN = 'pi pi-crown';\n static DATABASE = 'pi pi-database';\n static DESKTOP = 'pi pi-desktop';\n static DELETE_LEFT = 'pi pi-delete-left';\n static DIRECTIONS = 'pi pi-directions';\n static DIRECTIONS_ALT = 'pi pi-directions-alt';\n static DISCORD = 'pi pi-discord';\n static DOLLAR = 'pi pi-dollar';\n static DOWNLOAD = 'pi pi-download';\n static EJECT = 'pi pi-eject';\n static ELLIPSIS_H = 'pi pi-ellipsis-h';\n static ELLIPSIS_V = 'pi pi-ellipsis-v';\n static ENVELOPE = 'pi pi-envelope';\n static EQUALS = 'pi pi-equals';\n static ERASER = 'pi pi-eraser';\n static ETHEREUM = 'pi pi-ethereum';\n static EURO = 'pi pi-euro';\n static EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';\n static EXCLAMATION_TRIANGLE = 'pi pi-exclamation-triangle';\n static EXPAND = 'pi pi-expand';\n static EXTERNAL_LINK = 'pi pi-external-link';\n static EYE = 'pi pi-eye';\n static EYE_SLASH = 'pi pi-eye-slash';\n static FACE_SMILE = 'pi pi-face-smile';\n static FACEBOOK = 'pi pi-facebook';\n static FAST_BACKWARD = 'pi pi-fast-backward';\n static FAST_FORWARD = 'pi pi-fast-forward';\n static FILE = 'pi pi-file';\n static FILE_ARROW_UP = 'pi pi-file-arrow-up';\n static FILE_CHECK = 'pi pi-file-check';\n static FILE_EDIT = 'pi pi-file-edit';\n static FILE_IMPORT = 'pi pi-file-import';\n static FILE_PDF = 'pi pi-file-pdf';\n static FILE_PLUS = 'pi pi-file-plus';\n static FILE_EXCEL = 'pi pi-file-excel';\n static FILE_EXPORT = 'pi pi-file-export';\n static FILE_WORD = 'pi pi-file-word';\n static FILTER = 'pi pi-filter';\n static FILTER_FILL = 'pi pi-filter-fill';\n static FILTER_SLASH = 'pi pi-filter-slash';\n static FLAG = 'pi pi-flag';\n static FLAG_FILL = 'pi pi-flag-fill';\n static FOLDER = 'pi pi-folder';\n static FOLDER_OPEN = 'pi pi-folder-open';\n static FOLDER_PLUS = 'pi pi-folder-plus';\n static FORWARD = 'pi pi-forward';\n static GAUGE = 'pi pi-gauge';\n static GIFT = 'pi pi-gift';\n static GITHUB = 'pi pi-github';\n static GLOBE = 'pi pi-globe';\n static GOOGLE = 'pi pi-google';\n static GRADUATION_CAP = 'pi pi-graduation-cap';\n static HAMMER = 'pi pi-hammer';\n static HASHTAG = 'pi pi-hashtag';\n static HEADPHONES = 'pi pi-headphones';\n static HEART = 'pi pi-heart';\n static HEART_FILL = 'pi pi-heart-fill';\n static HISTORY = 'pi pi-history';\n static HOME = 'pi pi-home';\n static HOURGLASS = 'pi pi-hourglass';\n static ID_CARD = 'pi pi-id-card';\n static IMAGE = 'pi pi-image';\n static IMAGES = 'pi pi-images';\n static INBOX = 'pi pi-inbox';\n static INDIAN_RUPEE = 'pi pi-indian-rupee';\n static INFO = 'pi pi-info';\n static INFO_CIRCLE = 'pi pi-info-circle';\n static INSTAGRAM = 'pi pi-instagram';\n static KEY = 'pi pi-key';\n static LANGUAGE = 'pi pi-language';\n static LIGHTBULB = 'pi pi-lightbulb';\n static LINK = 'pi pi-link';\n static LINKEDIN = 'pi pi-linkedin';\n static LIST = 'pi pi-list';\n static LIST_CHECK = 'pi pi-list-check';\n static LOCK = 'pi pi-lock';\n static LOCK_OPEN = 'pi pi-lock-open';\n static MAP = 'pi pi-map';\n static MAP_MARKER = 'pi pi-map-marker';\n static MARS = 'pi pi-mars';\n static MEGAPHONE = 'pi pi-megaphone';\n static MICROCHIP = 'pi pi-microchip';\n static MICROCHIP_AI = 'pi pi-microchip-ai';\n static MICROPHONE = 'pi pi-microphone';\n static MICROSOFT = 'pi pi-microsoft';\n static MINUS = 'pi pi-minus';\n static MINUS_CIRCLE = 'pi pi-minus-circle';\n static MOBILE = 'pi pi-mobile';\n static MONEY_BILL = 'pi pi-money-bill';\n static MOON = 'pi pi-moon';\n static OBJECTS_COLUMN = 'pi pi-objects-column';\n static PALETTE = 'pi pi-palette';\n static PAPERCLIP = 'pi pi-paperclip';\n static PAUSE = 'pi pi-pause';\n static PAUSE_CIRCLE = 'pi pi-pause-circle';\n static PAYPAL = 'pi pi-paypal';\n static PEN_TO_SQUARE = 'pi pi-pen-to-square';\n static PENCIL = 'pi pi-pencil';\n static PERCENTAGE = 'pi pi-percentage';\n static PHONE = 'pi pi-phone';\n static PINTEREST = 'pi pi-pinterest';\n static PLAY = 'pi pi-play';\n static PLAY_CIRCLE = 'pi pi-play-circle';\n static PLUS = 'pi pi-plus';\n static PLUS_CIRCLE = 'pi pi-plus-circle';\n static POUND = 'pi pi-pound';\n static POWER_OFF = 'pi pi-power-off';\n static PRIME = 'pi pi-prime';\n static PRINT = 'pi pi-print';\n static QRCODE = 'pi pi-qrcode';\n static QUESTION = 'pi pi-question';\n static QUESTION_CIRCLE = 'pi pi-question-circle';\n static RECEIPT = 'pi pi-receipt';\n static REDDIT = 'pi pi-reddit';\n static REFRESH = 'pi pi-refresh';\n static REPLAY = 'pi pi-replay';\n static REPLY = 'pi pi-reply';\n static SAVE = 'pi pi-save';\n static SEARCH = 'pi pi-search';\n static SEARCH_MINUS = 'pi pi-search-minus';\n static SEARCH_PLUS = 'pi pi-search-plus';\n static SEND = 'pi pi-send';\n static SERVER = 'pi pi-server';\n static SHARE_ALT = 'pi pi-share-alt';\n static SHIELD = 'pi pi-shield';\n static SHOP = 'pi pi-shop';\n static SHOPPING_BAG = 'pi pi-shopping-bag';\n static SHOPPING_CART = 'pi pi-shopping-cart';\n static SIGN_IN = 'pi pi-sign-in';\n static SIGN_OUT = 'pi pi-sign-out';\n static SITEMAP = 'pi pi-sitemap';\n static SLACK = 'pi pi-slack';\n static SLIDERS_H = 'pi pi-sliders-h';\n static SLIDERS_V = 'pi pi-sliders-v';\n static SORT = 'pi pi-sort';\n static SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';\n static SORT_ALPHA_DOWN_ALT = 'pi pi-sort-alpha-down-alt';\n static SORT_ALPHA_UP = 'pi pi-sort-alpha-up';\n static SORT_ALPHA_UP_ALT = 'pi pi-sort-alpha-up-alt';\n static SORT_ALT = 'pi pi-sort-alt';\n static SORT_ALT_SLASH = 'pi pi-sort-alt-slash';\n static SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';\n static SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';\n static SORT_AMOUNT_UP = 'pi pi-sort-amount-up';\n static SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';\n static SORT_DOWN = 'pi pi-sort-down';\n static SORT_DOWN_FILL = 'pi pi-sort-down-fill';\n static SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';\n static SORT_NUMERIC_DOWN_ALT = 'pi pi-sort-numeric-down-alt';\n static SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';\n static SORT_NUMERIC_UP_ALT = 'pi pi-sort-numeric-up-alt';\n static SORT_UP = 'pi pi-sort-up';\n static SORT_UP_FILL = 'pi pi-sort-up-fill';\n static SPARKLES = 'pi pi-sparkles';\n static SPINNER = 'pi pi-spinner';\n static SPINNER_DOTTED = 'pi pi-spinner-dotted';\n static STAR = 'pi pi-star';\n static STAR_FILL = 'pi pi-star-fill';\n static STAR_HALF = 'pi pi-star-half';\n static STAR_HALF_FILL = 'pi pi-star-half-fill';\n static STEP_BACKWARD = 'pi pi-step-backward';\n static STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';\n static STEP_FORWARD = 'pi pi-step-forward';\n static STEP_FORWARD_ALT = 'pi pi-step-forward-alt';\n static STOP = 'pi pi-stop';\n static STOP_CIRCLE = 'pi pi-stop-circle';\n static STOPWATCH = 'pi pi-stopwatch';\n static SUN = 'pi pi-sun';\n static SYNC = 'pi pi-sync';\n static TABLE = 'pi pi-table';\n static TABLET = 'pi pi-tablet';\n static TAG = 'pi pi-tag';\n static TAGS = 'pi pi-tags';\n static TELEGRAM = 'pi pi-telegram';\n static TH_LARGE = 'pi pi-th-large';\n static THUMBS_DOWN = 'pi pi-thumbs-down';\n static THUMBS_DOWN_FILL = 'pi pi-thumbs-down-fill';\n static THUMBS_UP = 'pi pi-thumbs-up';\n static THUMBS_UP_FILL = 'pi pi-thumbs-up-fill';\n static THUMBTACK = 'pi pi-thumbtack';\n static TICKET = 'pi pi-ticket';\n static TIKTOK = 'pi pi-tiktok';\n static TIMES = 'pi pi-times';\n static TIMES_CIRCLE = 'pi pi-times-circle';\n static TRASH = 'pi pi-trash';\n static TROPHY = 'pi pi-trophy';\n static TRUCK = 'pi pi-truck';\n static TURKISH_LIRA = 'pi pi-turkish-lira';\n static TWITCH = 'pi pi-twitch';\n static TWITTER = 'pi pi-twitter';\n static UNDO = 'pi pi-undo';\n static UNLOCK = 'pi pi-unlock';\n static UPLOAD = 'pi pi-upload';\n static USER = 'pi pi-user';\n static USER_EDIT = 'pi pi-user-edit';\n static USER_MINUS = 'pi pi-user-minus';\n static USER_PLUS = 'pi pi-user-plus';\n static USERS = 'pi pi-users';\n static VENUS = 'pi pi-venus';\n static VERIFIED = 'pi pi-verified';\n static VIDEO = 'pi pi-video';\n static VIMEO = 'pi pi-vimeo';\n static VOLUME_DOWN = 'pi pi-volume-down';\n static VOLUME_OFF = 'pi pi-volume-off';\n static VOLUME_UP = 'pi pi-volume-up';\n static WALLET = 'pi pi-wallet';\n static WAREHOUSE = 'pi pi-warehouse';\n static WAVE_PULSE = 'pi pi-wave-pulse';\n static WHATSAPP = 'pi pi-whatsapp';\n static WIFI = 'pi pi-wifi';\n static WINDOW_MAXIMIZE = 'pi pi-window-maximize';\n static WINDOW_MINIMIZE = 'pi pi-window-minimize';\n static WRENCH = 'pi pi-wrench';\n static YOUTUBE = 'pi pi-youtube';\n}\n\nclass PrimeNGConfig {\n ripple = false;\n inputStyle = signal('outlined');\n overlayOptions = {};\n csp = signal({ nonce: undefined });\n filterMatchModeOptions = {\n text: [FilterMatchMode.STARTS_WITH, FilterMatchMode.CONTAINS, FilterMatchMode.NOT_CONTAINS, FilterMatchMode.ENDS_WITH, FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS],\n numeric: [FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS, FilterMatchMode.LESS_THAN, FilterMatchMode.LESS_THAN_OR_EQUAL_TO, FilterMatchMode.GREATER_THAN, FilterMatchMode.GREATER_THAN_OR_EQUAL_TO],\n date: [FilterMatchMode.DATE_IS, FilterMatchMode.DATE_IS_NOT, FilterMatchMode.DATE_BEFORE, FilterMatchMode.DATE_AFTER]\n };\n translation = {\n startsWith: 'Starts with',\n contains: 'Contains',\n notContains: 'Not contains',\n endsWith: 'Ends with',\n equals: 'Equals',\n notEquals: 'Not equals',\n noFilter: 'No Filter',\n lt: 'Less than',\n lte: 'Less than or equal to',\n gt: 'Greater than',\n gte: 'Greater than or equal to',\n is: 'Is',\n isNot: 'Is not',\n before: 'Before',\n after: 'After',\n dateIs: 'Date is',\n dateIsNot: 'Date is not',\n dateBefore: 'Date is before',\n dateAfter: 'Date is after',\n clear: 'Clear',\n apply: 'Apply',\n matchAll: 'Match All',\n matchAny: 'Match Any',\n addRule: 'Add Rule',\n removeRule: 'Remove Rule',\n accept: 'Yes',\n reject: 'No',\n choose: 'Choose',\n upload: 'Upload',\n cancel: 'Cancel',\n pending: 'Pending',\n fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n chooseYear: 'Choose Year',\n chooseMonth: 'Choose Month',\n chooseDate: 'Choose Date',\n prevDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n prevYear: 'Previous Year',\n nextYear: 'Next Year',\n prevMonth: 'Previous Month',\n nextMonth: 'Next Month',\n prevHour: 'Previous Hour',\n nextHour: 'Next Hour',\n prevMinute: 'Previous Minute',\n nextMinute: 'Next Minute',\n prevSecond: 'Previous Second',\n nextSecond: 'Next Second',\n am: 'am',\n pm: 'pm',\n dateFormat: 'mm/dd/yy',\n firstDayOfWeek: 0,\n today: 'Today',\n weekHeader: 'Wk',\n weak: 'Weak',\n medium: 'Medium',\n strong: 'Strong',\n passwordPrompt: 'Enter a password',\n emptyMessage: 'No results found',\n searchMessage: '{0} results are available',\n selectionMessage: '{0} items selected',\n emptySelectionMessage: 'No selected item',\n emptySearchMessage: 'No results found',\n emptyFilterMessage: 'No results found',\n aria: {\n trueLabel: 'True',\n falseLabel: 'False',\n nullLabel: 'Not Selected',\n star: '1 star',\n stars: '{star} stars',\n selectAll: 'All items selected',\n unselectAll: 'All items unselected',\n close: 'Close',\n previous: 'Previous',\n next: 'Next',\n navigation: 'Navigation',\n scrollTop: 'Scroll Top',\n moveTop: 'Move Top',\n moveUp: 'Move Up',\n moveDown: 'Move Down',\n moveBottom: 'Move Bottom',\n moveToTarget: 'Move to Target',\n moveToSource: 'Move to Source',\n moveAllToTarget: 'Move All to Target',\n moveAllToSource: 'Move All to Source',\n pageLabel: '{page}',\n firstPageLabel: 'First Page',\n lastPageLabel: 'Last Page',\n nextPageLabel: 'Next Page',\n prevPageLabel: 'Previous Page',\n rowsPerPageLabel: 'Rows per page',\n previousPageLabel: 'Previous Page',\n jumpToPageDropdownLabel: 'Jump to Page Dropdown',\n jumpToPageInputLabel: 'Jump to Page Input',\n selectRow: 'Row Selected',\n unselectRow: 'Row Unselected',\n expandRow: 'Row Expanded',\n collapseRow: 'Row Collapsed',\n showFilterMenu: 'Show Filter Menu',\n hideFilterMenu: 'Hide Filter Menu',\n filterOperator: 'Filter Operator',\n filterConstraint: 'Filter Constraint',\n editRow: 'Row Edit',\n saveEdit: 'Save Edit',\n cancelEdit: 'Cancel Edit',\n listView: 'List View',\n gridView: 'Grid View',\n slide: 'Slide',\n slideNumber: '{slideNumber}',\n zoomImage: 'Zoom Image',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out',\n rotateRight: 'Rotate Right',\n rotateLeft: 'Rotate Left',\n listLabel: 'Option List',\n selectColor: 'Select a color',\n removeLabel: 'Remove',\n browseFiles: 'Browse Files',\n maximizeLabel: 'Maximize'\n }\n };\n zIndex = {\n modal: 1100,\n overlay: 1000,\n menu: 1000,\n tooltip: 1100\n };\n translationSource = new Subject();\n translationObserver = this.translationSource.asObservable();\n getTranslation(key) {\n return this.translation[key];\n }\n setTranslation(value) {\n this.translation = { ...this.translation, ...value };\n this.translationSource.next(this.translation);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: PrimeNGConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: PrimeNGConfig, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: PrimeNGConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass Header {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: Header, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.0.1\", type: Header, isStandalone: true, selector: \"p-header\", ngImport: i0, template: '<ng-content></ng-content>', isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: Header, decorators: [{\n type: Component,\n args: [{\n selector: 'p-header',\n standalone: true,\n template: '<ng-content></ng-content>'\n }]\n }] });\nclass Footer {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: Footer, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.0.1\", type: Footer, isStandalone: true, selector: \"p-footer\", ngImport: i0, template: '<ng-content></ng-content>', isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: Footer, decorators: [{\n type: Component,\n args: [{\n selector: 'p-footer',\n standalone: true,\n template: '<ng-content></ng-content>'\n }]\n }] });\nclass PrimeTemplate {\n template;\n type;\n name;\n constructor(template) {\n this.template = template;\n }\n getType() {\n return this.name;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: PrimeTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.0.1\", type: PrimeTemplate, isStandalone: true, selector: \"[pTemplate]\", inputs: { type: \"type\", name: [\"pTemplate\", \"name\"] }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: PrimeTemplate, decorators: [{\n type: Directive,\n args: [{\n selector: '[pTemplate]',\n standalone: true,\n host: {}\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { type: [{\n type: Input\n }], name: [{\n type: Input,\n args: ['pTemplate']\n }] } });\nclass SharedModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.0.1\", ngImport: i0, type: SharedModule, imports: [Header, Footer, PrimeTemplate], exports: [Header, Footer, PrimeTemplate] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: SharedModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [Header, Footer, PrimeTemplate],\n exports: [Header, Footer, PrimeTemplate]\n }]\n }] });\n\nclass TranslationKeys {\n static STARTS_WITH = 'startsWith';\n static CONTAINS = 'contains';\n static NOT_CONTAINS = 'notContains';\n static ENDS_WITH = 'endsWith';\n static EQUALS = 'equals';\n static NOT_EQUALS = 'notEquals';\n static NO_FILTER = 'noFilter';\n static LT = 'lt';\n static LTE = 'lte';\n static GT = 'gt';\n static GTE = 'gte';\n static IS = 'is';\n static IS_NOT = 'isNot';\n static BEFORE = 'before';\n static AFTER = 'after';\n static CLEAR = 'clear';\n static APPLY = 'apply';\n static MATCH_ALL = 'matchAll';\n static MATCH_ANY = 'matchAny';\n static ADD_RULE = 'addRule';\n static REMOVE_RULE = 'removeRule';\n static ACCEPT = 'accept';\n static REJECT = 'reject';\n static CHOOSE = 'choose';\n static UPLOAD = 'upload';\n static CANCEL = 'cancel';\n static PENDING = 'pending';\n static FILE_SIZE_TYPES = 'fileSizeTypes';\n static DAY_NAMES = 'dayNames';\n static DAY_NAMES_SHORT = 'dayNamesShort';\n static DAY_NAMES_MIN = 'dayNamesMin';\n static MONTH_NAMES = 'monthNames';\n static MONTH_NAMES_SHORT = 'monthNamesShort';\n static FIRST_DAY_OF_WEEK = 'firstDayOfWeek';\n static TODAY = 'today';\n static WEEK_HEADER = 'weekHeader';\n static WEAK = 'weak';\n static MEDIUM = 'medium';\n static STRONG = 'strong';\n static PASSWORD_PROMPT = 'passwordPrompt';\n static EMPTY_MESSAGE = 'emptyMessage';\n static EMPTY_FILTER_MESSAGE = 'emptyFilterMessage';\n static SHOW_FILTER_MENU = 'showFilterMenu';\n static HIDE_FILTER_MENU = 'hideFilterMenu';\n static SELECTION_MESSAGE = 'selectionMessage';\n static ARIA = 'aria';\n static SELECT_COLOR = 'selectColor';\n static BROWSE_FILES = 'browseFiles';\n}\n\nclass TreeDragDropService {\n dragStartSource = new Subject();\n dragStopSource = new Subject();\n dragStart$ = this.dragStartSource.asObservable();\n dragStop$ = this.dragStopSource.asObservable();\n startDrag(event) {\n this.dragStartSource.next(event);\n }\n stopDrag(event) {\n this.dragStopSource.next(event);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: TreeDragDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: TreeDragDropService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", 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","import { DomHandler } from 'primeng/dom';\nimport { DOCUMENT, isPlatformBrowser, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, PLATFORM_ID, ElementRef, booleanAttribute, Directive, Input, NgModule } from '@angular/core';\n\n/**\n * Focus Trap keeps focus within a certain DOM element while tabbing.\n * @group Components\n */\nclass FocusTrap {\n /**\n * When set as true, focus wouldn't be managed.\n * @group Props\n */\n pFocusTrapDisabled = false;\n platformId = inject(PLATFORM_ID);\n host = inject(ElementRef);\n document = inject(DOCUMENT);\n firstHiddenFocusableElement;\n lastHiddenFocusableElement;\n ngOnInit() {\n if (isPlatformBrowser(this.platformId) && !this.pFocusTrapDisabled) {\n !this.firstHiddenFocusableElement && !this.lastHiddenFocusableElement && this.createHiddenFocusableElements();\n }\n }\n ngOnChanges(changes) {\n if (changes.pFocusTrapDisabled && isPlatformBrowser(this.platformId)) {\n if (changes.pFocusTrapDisabled.currentValue) {\n this.removeHiddenFocusableElements();\n }\n else {\n this.createHiddenFocusableElements();\n }\n }\n }\n removeHiddenFocusableElements() {\n if (this.firstHiddenFocusableElement && this.firstHiddenFocusableElement.parentNode) {\n this.firstHiddenFocusableElement.parentNode.removeChild(this.firstHiddenFocusableElement);\n }\n if (this.lastHiddenFocusableElement && this.lastHiddenFocusableElement.parentNode) {\n this.lastHiddenFocusableElement.parentNode.removeChild(this.lastHiddenFocusableElement);\n }\n }\n getComputedSelector(selector) {\n return `:not(.p-hidden-focusable):not([data-p-hidden-focusable=\"true\"])${selector ?? ''}`;\n }\n createHiddenFocusableElements() {\n const tabindex = '0';\n const createFocusableElement = (onFocus) => {\n return DomHandler.createElement('span', {\n class: 'p-hidden-accessible p-hidden-focusable',\n tabindex,\n role: 'presentation',\n 'data-p-hidden-accessible': true,\n 'data-p-hidden-focusable': true,\n onFocus: onFocus?.bind(this)\n });\n };\n this.firstHiddenFocusableElement = createFocusableElement(this.onFirstHiddenElementFocus);\n this.lastHiddenFocusableElement = createFocusableElement(this.onLastHiddenElementFocus);\n this.firstHiddenFocusableElement.setAttribute('data-pc-section', 'firstfocusableelement');\n this.lastHiddenFocusableElement.setAttribute('data-pc-section', 'lastfocusableelement');\n this.host.nativeElement.prepend(this.firstHiddenFocusableElement);\n this.host.nativeElement.append(this.lastHiddenFocusableElement);\n }\n onFirstHiddenElementFocus(event) {\n const { currentTarget, relatedTarget } = event;\n const focusableElement = relatedTarget === this.lastHiddenFocusableElement || !this.host.nativeElement?.contains(relatedTarget) ? DomHandler.getFirstFocusableElement(currentTarget.parentElement, ':not(.p-hidden-focusable)') : this.lastHiddenFocusableElement;\n DomHandler.focus(focusableElement);\n }\n onLastHiddenElementFocus(event) {\n const { currentTarget, relatedTarget } = event;\n const focusableElement = relatedTarget === this.firstHiddenFocusableElement || !this.host.nativeElement?.contains(relatedTarget) ? DomHandler.getLastFocusableElement(currentTarget.parentElement, ':not(.p-hidden-focusable)') : this.firstHiddenFocusableElement;\n DomHandler.focus(focusableElement);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: FocusTrap, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.0.1\", type: FocusTrap, selector: \"[pFocusTrap]\", inputs: { pFocusTrapDisabled: [\"pFocusTrapDisabled\", \"pFocusTrapDisabled\", booleanAttribute] }, host: { classAttribute: \"p-element\" }, usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: FocusTrap, decorators: [{\n type: Directive,\n args: [{\n selector: '[pFocusTrap]',\n host: {\n class: 'p-element'\n }\n }]\n }], propDecorators: { pFocusTrapDisabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\nclass FocusTrapModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: FocusTrapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.0.1\", ngImport: i0, type: FocusTrapModule, declarations: [FocusTrap], imports: [CommonModule], exports: [FocusTrap] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: FocusTrapModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: FocusTrapModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [FocusTrap],\n declarations: [FocusTrap]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FocusTrap, FocusTrapModule };\n//# sourceMappingURL=primeng-focustrap.mjs.map\n","import * as i0 from '@angular/core';\nimport { booleanAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\nimport { ObjectUtils } from 'primeng/utils';\n\nclass BaseIcon {\n label;\n spin = false;\n styleClass;\n role;\n ariaLabel;\n ariaHidden;\n ngOnInit() {\n this.getAttributes();\n }\n getAttributes() {\n const isLabelEmpty = ObjectUtils.isEmpty(this.label);\n this.role = !isLabelEmpty ? 'img' : undefined;\n this.ariaLabel = !isLabelEmpty ? this.label : undefined;\n this.ariaHidden = isLabelEmpty;\n }\n getClassNames() {\n return `p-icon ${this.styleClass ? this.styleClass + ' ' : ''}${this.spin ? 'p-icon-spin' : ''}`;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: BaseIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"16.1.0\", version: \"18.0.1\", type: BaseIcon, isStandalone: true, selector: \"ng-component\", inputs: { label: \"label\", spin: [\"spin\", \"spin\", booleanAttribute], styleClass: \"styleClass\" }, host: { classAttribute: \"p-element p-icon-wrapper\" }, ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: BaseIcon, decorators: [{\n type: Component,\n args: [{\n template: ` <ng-content></ng-content> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element p-icon-wrapper'\n }\n }]\n }], propDecorators: { label: [{\n type: Input\n }], spin: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], styleClass: [{\n type: Input\n }] } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BaseIcon };\n//# sourceMappingURL=primeng-baseicon.mjs.map\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\n\nclass TimesIcon extends BaseIcon {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: TimesIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.0.1\", type: TimesIcon, isStandalone: true, selector: \"TimesIcon\", usesInheritance: true, ngImport: i0, template: `\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [attr.aria-label]=\"ariaLabel\" [attr.aria-hidden]=\"ariaHidden\" [attr.role]=\"role\" [class]=\"getClassNames()\">\n <path\n d=\"M8.01186 7.00933L12.27 2.75116C12.341 2.68501 12.398 2.60524 12.4375 2.51661C12.4769 2.42798 12.4982 2.3323 12.4999 2.23529C12.5016 2.13827 12.4838 2.0419 12.4474 1.95194C12.4111 1.86197 12.357 1.78024 12.2884 1.71163C12.2198 1.64302 12.138 1.58893 12.0481 1.55259C11.9581 1.51625 11.8617 1.4984 11.7647 1.50011C11.6677 1.50182 11.572 1.52306 11.4834 1.56255C11.3948 1.60204 11.315 1.65898 11.2488 1.72997L6.99067 5.98814L2.7325 1.72997C2.59553 1.60234 2.41437 1.53286 2.22718 1.53616C2.03999 1.53946 1.8614 1.61529 1.72901 1.74767C1.59663 1.88006 1.5208 2.05865 1.5175 2.24584C1.5142 2.43303 1.58368 2.61419 1.71131 2.75116L5.96948 7.00933L1.71131 11.2675C1.576 11.403 1.5 11.5866 1.5 11.7781C1.5 11.9696 1.576 12.1532 1.71131 12.2887C1.84679 12.424 2.03043 12.5 2.2219 12.5C2.41338 12.5 2.59702 12.424 2.7325 12.2887L6.99067 8.03052L11.2488 12.2887C11.3843 12.424 11.568 12.5 11.7594 12.5C11.9509 12.5 12.1346 12.424 12.27 12.2887C12.4053 12.1532 12.4813 11.9696 12.4813 11.7781C12.4813 11.5866 12.4053 11.403 12.27 11.2675L8.01186 7.00933Z\"\n fill=\"currentColor\"\n />\n </svg>\n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: TimesIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'TimesIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [attr.aria-label]=\"ariaLabel\" [attr.aria-hidden]=\"ariaHidden\" [attr.role]=\"role\" [class]=\"getClassNames()\">\n <path\n d=\"M8.01186 7.00933L12.27 2.75116C12.341 2.68501 12.398 2.60524 12.4375 2.51661C12.4769 2.42798 12.4982 2.3323 12.4999 2.23529C12.5016 2.13827 12.4838 2.0419 12.4474 1.95194C12.4111 1.86197 12.357 1.78024 12.2884 1.71163C12.2198 1.64302 12.138 1.58893 12.0481 1.55259C11.9581 1.51625 11.8617 1.4984 11.7647 1.50011C11.6677 1.50182 11.572 1.52306 11.4834 1.56255C11.3948 1.60204 11.315 1.65898 11.2488 1.72997L6.99067 5.98814L2.7325 1.72997C2.59553 1.60234 2.41437 1.53286 2.22718 1.53616C2.03999 1.53946 1.8614 1.61529 1.72901 1.74767C1.59663 1.88006 1.5208 2.05865 1.5175 2.24584C1.5142 2.43303 1.58368 2.61419 1.71131 2.75116L5.96948 7.00933L1.71131 11.2675C1.576 11.403 1.5 11.5866 1.5 11.7781C1.5 11.9696 1.576 12.1532 1.71131 12.2887C1.84679 12.424 2.03043 12.5 2.2219 12.5C2.41338 12.5 2.59702 12.424 2.7325 12.2887L6.99067 8.03052L11.2488 12.2887C11.3843 12.424 11.568 12.5 11.7594 12.5C11.9509 12.5 12.1346 12.424 12.27 12.2887C12.4053 12.1532 12.4813 11.9696 12.4813 11.7781C12.4813 11.5866 12.4053 11.403 12.27 11.2675L8.01186 7.00933Z\"\n fill=\"currentColor\"\n />\n </svg>\n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TimesIcon };\n//# sourceMappingURL=primeng-icons-times.mjs.map\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass WindowMaximizeIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: WindowMaximizeIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.0.1\", type: WindowMaximizeIcon, isStandalone: true, selector: \"WindowMaximizeIcon\", usesInheritance: true, ngImport: i0, template: `\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [attr.aria-label]=\"ariaLabel\" [attr.aria-hidden]=\"ariaHidden\" [attr.role]=\"role\" [class]=\"getClassNames()\">\n <g [attr.clip-path]=\"pathId\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7 14H11.8C12.3835 14 12.9431 13.7682 13.3556 13.3556C13.7682 12.9431 14 12.3835 14 11.8V2.2C14 1.61652 13.7682 1.05694 13.3556 0.644365C12.9431 0.231785 12.3835 0 11.8 0H2.2C1.61652 0 1.05694 0.231785 0.644365 0.644365C0.231785 1.05694 0 1.61652 0 2.2V7C0 7.15913 0.063214 7.31174 0.175736 7.42426C0.288258 7.53679 0.44087 7.6 0.6 7.6C0.75913 7.6 0.911742 7.53679 1.02426 7.42426C1.13679 7.31174 1.2 7.15913 1.2 7V2.2C1.2 1.93478 1.30536 1.68043 1.49289 1.49289C1.68043 1.30536 1.93478 1.2 2.2 1.2H11.8C12.0652 1.2 12.3196 1.30536 12.5071 1.49289C12.6946 1.68043 12.8 1.93478 12.8 2.2V11.8C12.8 12.0652 12.6946 12.3196 12.5071 12.5071C12.3196 12.6946 12.0652 12.8 11.8 12.8H7C6.84087 12.8 6.68826 12.8632 6.57574 12.9757C6.46321 13.0883 6.4 13.2409 6.4 13.4C6.4 13.5591 6.46321 13.7117 6.57574 13.8243C6.68826 13.9368 6.84087 14 7 14ZM9.77805 7.42192C9.89013 7.534 10.0415 7.59788 10.2 7.59995C10.3585 7.59788 10.5099 7.534 10.622 7.42192C10.7341 7.30985 10.798 7.15844 10.8 6.99995V3.94242C10.8066 3.90505 10.8096 3.86689 10.8089 3.82843C10.8079 3.77159 10.7988 3.7157 10.7824 3.6623C10.756 3.55552 10.701 3.45698 10.622 3.37798C10.5099 3.2659 10.3585 3.20202 10.2 3.19995H7.00002C6.84089 3.19995 6.68828 3.26317 6.57576 3.37569C6.46324 3.48821 6.40002 3.64082 6.40002 3.79995C6.40002 3.95908 6.46324 4.11169 6.57576 4.22422C6.68828 4.33674 6.84089 4.39995 7.00002 4.39995H8.80006L6.19997 7.00005C6.10158 7.11005 6.04718 7.25246 6.04718 7.40005C6.04718 7.54763 6.10158 7.69004 6.19997 7.80005C6.30202 7.91645 6.44561 7.98824 6.59997 8.00005C6.75432 7.98824 6.89791 7.91645 6.99997 7.80005L9.60002 5.26841V6.99995C9.6021 7.15844 9.66598 7.30985 9.77805 7.42192ZM1.4 14H3.8C4.17066 13.9979 4.52553 13.8498 4.78763 13.5877C5.04973 13.3256 5.1979 12.9707 5.2 12.6V10.2C5.1979 9.82939 5.04973 9.47452 4.78763 9.21242C4.52553 8.95032 4.17066 8.80215 3.8 8.80005H1.4C1.02934 8.80215 0.674468 8.95032 0.412371 9.21242C0.150274 9.47452 0.00210008 9.82939 0 10.2V12.6C0.00210008 12.9707 0.150274 13.3256 0.412371 13.5877C0.674468 13.8498 1.02934 13.9979 1.4 14ZM1.25858 10.0586C1.29609 10.0211 1.34696 10 1.4 10H3.8C3.85304 10 3.90391 10.0211 3.94142 10.0586C3.97893 10.0961 4 10.147 4 10.2V12.6C4 12.6531 3.97893 12.704 3.94142 12.7415C3.90391 12.779 3.85304 12.8 3.8 12.8H1.4C1.34696 12.8 1.29609 12.779 1.25858 12.7415C1.22107 12.704 1.2 12.6531 1.2 12.6V10.2C1.2 10.147 1.22107 10.0961 1.25858 10.0586Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath [id]=\"pathId\">\n <rect width=\"14\" height=\"14\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: WindowMaximizeIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'WindowMaximizeIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [attr.aria-label]=\"ariaLabel\" [attr.aria-hidden]=\"ariaHidden\" [attr.role]=\"role\" [class]=\"getClassNames()\">\n <g [attr.clip-path]=\"pathId\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7 14H11.8C12.3835 14 12.9431 13.7682 13.3556 13.3556C13.7682 12.9431 14 12.3835 14 11.8V2.2C14 1.61652 13.7682 1.05694 13.3556 0.644365C12.9431 0.231785 12.3835 0 11.8 0H2.2C1.61652 0 1.05694 0.231785 0.644365 0.644365C0.231785 1.05694 0 1.61652 0 2.2V7C0 7.15913 0.063214 7.31174 0.175736 7.42426C0.288258 7.53679 0.44087 7.6 0.6 7.6C0.75913 7.6 0.911742 7.53679 1.02426 7.42426C1.13679 7.31174 1.2 7.15913 1.2 7V2.2C1.2 1.93478 1.30536 1.68043 1.49289 1.49289C1.68043 1.30536 1.93478 1.2 2.2 1.2H11.8C12.0652 1.2 12.3196 1.30536 12.5071 1.49289C12.6946 1.68043 12.8 1.93478 12.8 2.2V11.8C12.8 12.0652 12.6946 12.3196 12.5071 12.5071C12.3196 12.6946 12.0652 12.8 11.8 12.8H7C6.84087 12.8 6.68826 12.8632 6.57574 12.9757C6.46321 13.0883 6.4 13.2409 6.4 13.4C6.4 13.5591 6.46321 13.7117 6.57574 13.8243C6.68826 13.9368 6.84087 14 7 14ZM9.77805 7.42192C9.89013 7.534 10.0415 7.59788 10.2 7.59995C10.3585 7.59788 10.5099 7.534 10.622 7.42192C10.7341 7.30985 10.798 7.15844 10.8 6.99995V3.94242C10.8066 3.90505 10.8096 3.86689 10.8089 3.82843C10.8079 3.77159 10.7988 3.7157 10.7824 3.6623C10.756 3.55552 10.701 3.45698 10.622 3.37798C10.5099 3.2659 10.3585 3.20202 10.2 3.19995H7.00002C6.84089 3.19995 6.68828 3.26317 6.57576 3.37569C6.46324 3.48821 6.40002 3.64082 6.40002 3.79995C6.40002 3.95908 6.46324 4.11169 6.57576 4.22422C6.68828 4.33674 6.84089 4.39995 7.00002 4.39995H8.80006L6.19997 7.00005C6.10158 7.11005 6.04718 7.25246 6.04718 7.40005C6.04718 7.54763 6.10158 7.69004 6.19997 7.80005C6.30202 7.91645 6.44561 7.98824 6.59997 8.00005C6.75432 7.98824 6.89791 7.91645 6.99997 7.80005L9.60002 5.26841V6.99995C9.6021 7.15844 9.66598 7.30985 9.77805 7.42192ZM1.4 14H3.8C4.17066 13.9979 4.52553 13.8498 4.78763 13.5877C5.04973 13.3256 5.1979 12.9707 5.2 12.6V10.2C5.1979 9.82939 5.04973 9.47452 4.78763 9.21242C4.52553 8.95032 4.17066 8.80215 3.8 8.80005H1.4C1.02934 8.80215 0.674468 8.95032 0.412371 9.21242C0.150274 9.47452 0.00210008 9.82939 0 10.2V12.6C0.00210008 12.9707 0.150274 13.3256 0.412371 13.5877C0.674468 13.8498 1.02934 13.9979 1.4 14ZM1.25858 10.0586C1.29609 10.0211 1.34696 10 1.4 10H3.8C3.85304 10 3.90391 10.0211 3.94142 10.0586C3.97893 10.0961 4 10.147 4 10.2V12.6C4 12.6531 3.97893 12.704 3.94142 12.7415C3.90391 12.779 3.85304 12.8 3.8 12.8H1.4C1.34696 12.8 1.29609 12.779 1.25858 12.7415C1.22107 12.704 1.2 12.6531 1.2 12.6V10.2C1.2 10.147 1.22107 10.0961 1.25858 10.0586Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath [id]=\"pathId\">\n <rect width=\"14\" height=\"14\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { WindowMaximizeIcon };\n//# sourceMappingURL=primeng-icons-windowmaximize.mjs.map\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass WindowMinimizeIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: WindowMinimizeIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.0.1\", type: WindowMinimizeIcon, isStandalone: true, selector: \"WindowMinimizeIcon\", usesInheritance: true, ngImport: i0, template: `\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [attr.aria-label]=\"ariaLabel\" [attr.aria-hidden]=\"ariaHidden\" [attr.role]=\"role\" [class]=\"getClassNames()\">\n <g [attr.clip-path]=\"pathId\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.8 0H2.2C1.61652 0 1.05694 0.231785 0.644365 0.644365C0.231785 1.05694 0 1.61652 0 2.2V7C0 7.15913 0.063214 7.31174 0.175736 7.42426C0.288258 7.53679 0.44087 7.6 0.6 7.6C0.75913 7.6 0.911742 7.53679 1.02426 7.42426C1.13679 7.31174 1.2 7.15913 1.2 7V2.2C1.2 1.93478 1.30536 1.68043 1.49289 1.49289C1.68043 1.30536 1.93478 1.2 2.2 1.2H11.8C12.0652 1.2 12.3196 1.30536 12.5071 1.49289C12.6946 1.68043 12.8 1.93478 12.8 2.2V11.8C12.8 12.0652 12.6946 12.3196 12.5071 12.5071C12.3196 12.6946 12.0652 12.8 11.8 12.8H7C6.84087 12.8 6.68826 12.8632 6.57574 12.9757C6.46321 13.0883 6.4 13.2409 6.4 13.4C6.4 13.5591 6.46321 13.7117 6.57574 13.8243C6.68826 13.9368 6.84087 14 7 14H11.8C12.3835 14 12.9431 13.7682 13.3556 13.3556C13.7682 12.9431 14 12.3835 14 11.8V2.2C14 1.61652 13.7682 1.05694 13.3556 0.644365C12.9431 0.231785 12.3835 0 11.8 0ZM6.368 7.952C6.44137 7.98326 6.52025 7.99958 6.6 8H9.8C9.95913 8 10.1117 7.93678 10.2243 7.82426C10.3368 7.71174 10.4 7.55913 10.4 7.4C10.4 7.24087 10.3368 7.08826 10.2243 6.97574C10.1117 6.86321 9.95913 6.8 9.8 6.8H8.048L10.624 4.224C10.73 4.11026 10.7877 3.95982 10.7849 3.80438C10.7822 3.64894 10.7192 3.50063 10.6093 3.3907C10.4994 3.28077 10.3511 3.2178 10.1956 3.21506C10.0402 3.21232 9.88974 3.27002 9.776 3.376L7.2 5.952V4.2C7.2 4.04087 7.13679 3.88826 7.02426 3.77574C6.91174 3.66321 6.75913 3.6 6.6 3.6C6.44087 3.6 6.28826 3.66321 6.17574 3.77574C6.06321 3.88826 6 4.04087 6 4.2V7.4C6.00042 7.47975 6.01674 7.55862 6.048 7.632C6.07656 7.70442 6.11971 7.7702 6.17475 7.82524C6.2298 7.88029 6.29558 7.92344 6.368 7.952ZM1.4 8.80005H3.8C4.17066 8.80215 4.52553 8.95032 4.78763 9.21242C5.04973 9.47452 5.1979 9.82939 5.2 10.2V12.6C5.1979 12.9707 5.04973 13.3256 4.78763 13.5877C4.52553 13.8498 4.17066 13.9979 3.8 14H1.4C1.02934 13.9979 0.674468 13.8498 0.412371 13.5877C0.150274 13.3256 0.00210008 12.9707 0 12.6V10.2C0.00210008 9.82939 0.150274 9.47452 0.412371 9.21242C0.674468 8.95032 1.02934 8.80215 1.4 8.80005ZM3.94142 12.7415C3.97893 12.704 4 12.6531 4 12.6V10.2C4 10.147 3.97893 10.0961 3.94142 10.0586C3.90391 10.0211 3.85304 10 3.8 10H1.4C1.34696 10 1.29609 10.0211 1.25858 10.0586C1.22107 10.0961 1.2 10.147 1.2 10.2V12.6C1.2 12.6531 1.22107 12.704 1.25858 12.7415C1.29609 12.779 1.34696 12.8 1.4 12.8H3.8C3.85304 12.8 3.90391 12.779 3.94142 12.7415Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath [id]=\"pathId\">\n <rect width=\"14\" height=\"14\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: WindowMinimizeIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'WindowMinimizeIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [attr.aria-label]=\"ariaLabel\" [attr.aria-hidden]=\"ariaHidden\" [attr.role]=\"role\" [class]=\"getClassNames()\">\n <g [attr.clip-path]=\"pathId\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.8 0H2.2C1.61652 0 1.05694 0.231785 0.644365 0.644365C0.231785 1.05694 0 1.61652 0 2.2V7C0 7.15913 0.063214 7.31174 0.175736 7.42426C0.288258 7.53679 0.44087 7.6 0.6 7.6C0.75913 7.6 0.911742 7.53679 1.02426 7.42426C1.13679 7.31174 1.2 7.15913 1.2 7V2.2C1.2 1.93478 1.30536 1.68043 1.49289 1.49289C1.68043 1.30536 1.93478 1.2 2.2 1.2H11.8C12.0652 1.2 12.3196 1.30536 12.5071 1.49289C12.6946 1.68043 12.8 1.93478 12.8 2.2V11.8C12.8 12.0652 12.6946 12.3196 12.5071 12.5071C12.3196 12.6946 12.0652 12.8 11.8 12.8H7C6.84087 12.8 6.68826 12.8632 6.57574 12.9757C6.46321 13.0883 6.4 13.2409 6.4 13.4C6.4 13.5591 6.46321 13.7117 6.57574 13.8243C6.68826 13.9368 6.84087 14 7 14H11.8C12.3835 14 12.9431 13.7682 13.3556 13.3556C13.7682 12.9431 14 12.3835 14 11.8V2.2C14 1.61652 13.7682 1.05694 13.3556 0.644365C12.9431 0.231785 12.3835 0 11.8 0ZM6.368 7.952C6.44137 7.98326 6.52025 7.99958 6.6 8H9.8C9.95913 8 10.1117 7.93678 10.2243 7.82426C10.3368 7.71174 10.4 7.55913 10.4 7.4C10.4 7.24087 10.3368 7.08826 10.2243 6.97574C10.1117 6.86321 9.95913 6.8 9.8 6.8H8.048L10.624 4.224C10.73 4.11026 10.7877 3.95982 10.7849 3.80438C10.7822 3.64894 10.7192 3.50063 10.6093 3.3907C10.4994 3.28077 10.3511 3.2178 10.1956 3.21506C10.0402 3.21232 9.88974 3.27002 9.776 3.376L7.2 5.952V4.2C7.2 4.04087 7.13679 3.88826 7.02426 3.77574C6.91174 3.66321 6.75913 3.6 6.6 3.6C6.44087 3.6 6.28826 3.66321 6.17574 3.77574C6.06321 3.88826 6 4.04087 6 4.2V7.4C6.00042 7.47975 6.01674 7.55862 6.048 7.632C6.07656 7.70442 6.11971 7.7702 6.17475 7.82524C6.2298 7.88029 6.29558 7.92344 6.368 7.952ZM1.4 8.80005H3.8C4.17066 8.80215 4.52553 8.95032 4.78763 9.21242C5.04973 9.47452 5.1979 9.82939 5.2 10.2V12.6C5.1979 12.9707 5.04973 13.3256 4.78763 13.5877C4.52553 13.8498 4.17066 13.9979 3.8 14H1.4C1.02934 13.9979 0.674468 13.8498 0.412371 13.5877C0.150274 13.3256 0.00210008 12.9707 0 12.6V10.2C0.00210008 9.82939 0.150274 9.47452 0.412371 9.21242C0.674468 8.95032 1.02934 8.80215 1.4 8.80005ZM3.94142 12.7415C3.97893 12.704 4 12.6531 4 12.6V10.2C4 10.147 3.97893 10.0961 3.94142 10.0586C3.90391 10.0211 3.85304 10 3.8 10H1.4C1.34696 10 1.29609 10.0211 1.25858 10.0586C1.22107 10.0961 1.2 10.147 1.2 10.2V12.6C1.2 12.6531 1.22107 12.704 1.25858 12.7415C1.29609 12.779 1.34696 12.8 1.4 12.8H3.8C3.85304 12.8 3.90391 12.779 3.94142 12.7415Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath [id]=\"pathId\">\n <rect width=\"14\" height=\"14\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { WindowMinimizeIcon };\n//# sourceMappingURL=primeng-icons-windowminimize.mjs.map\n","import * as i0 from '@angular/core';\nimport { Directive, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, SkipSelf, Optional, ViewChild, NgModule, createComponent, Injectable } from '@angular/core';\nimport { DomHandler } from 'primeng/dom';\nimport { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';\nimport * as i4 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/api';\nimport { TranslationKeys, SharedModule } from 'primeng/api';\nimport * as i5 from 'primeng/focustrap';\nimport { FocusTrapModule } from 'primeng/focustrap';\nimport { TimesIcon } from 'primeng/icons/times';\nimport { WindowMaximizeIcon } from 'primeng/icons/windowmaximize';\nimport { WindowMinimizeIcon } from 'primeng/icons/windowminimize';\nimport { UniqueComponentId, ZIndexUtils } from 'primeng/utils';\nimport { Subject } from 'rxjs';\n\nclass DynamicDialogContent {\n viewContainerRef;\n constructor(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: DynamicDialogContent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.0.1\", type: DynamicDialogContent, selector: \"[pDynamicDialogContent]\", host: { classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: DynamicDialogContent, decorators: [{\n type: Directive,\n args: [{\n selector: '[pDynamicDialogContent]',\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }] });\n\n/**\n * Dialogs can be created dynamically with any component as the content using a DialogService.\n * @group Components\n */\nclass DynamicDialogConfig {\n /**\n * An object to pass to the component loaded inside the Dialog.\n * @group Props\n */\n data;\n /**\n * Header text of the dialog.\n * @group Props\n */\n header;\n /**\n * Identifies the element (or elements) that labels the element it is applied to.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Footer text of the dialog.\n * @group Props\n */\n footer;\n /**\n * Width of the dialog.\n * @group Props\n */\n width;\n /**\n * Height of the dialog.\n * @group Props\n */\n height;\n /**\n * Specifies if pressing escape key should hide the dialog.\n * @group Props\n */\n closeOnEscape;\n /**\n * Specifies if autofocus should happen on show.\n * @group Props\n */\n focusOnShow = true;\n /**\n * Specifies if autofocus should happen on close.\n * @group Props\n */\n focusOnClose = true;\n /**\n * When enabled, can only focus on elements inside the dialog.\n * @group Props\n */\n focusTrap = true;\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex;\n /**\n * Whether to automatically manage layering.\n * @group Props\n */\n autoZIndex;\n /**\n * Specifies if clicking the modal background should hide the dialog.\n * @group Props\n */\n dismissableMask;\n /**\n * Inline style of the component.\n * @group Props\n */\n rtl;\n /**\n * Inline style of the comopnent.\n * @group Props\n */\n style;\n /**\n * Inline style of the content.\n * @group Props\n */\n contentStyle;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Transition options of the animation.\n * @group Props\n */\n transitionOptions;\n /**\n * Adds a close icon to the header to hide the dialog.\n * @group Props\n */\n closable;\n /**\n * Whether to show the header or not.\n * @group Props\n */\n showHeader;\n /**\n * Defines if background should be blocked when dialog is displayed.\n * @group Props\n */\n modal;\n /**\n * Style class of the mask.\n * @group Props\n */\n maskStyleClass;\n /**\n * Enables resizing of the content.\n * @group Props\n */\n resizable;\n /**\n * Enables dragging to change the position using header.\n * @group Props\n */\n draggable;\n /**\n * Keeps dialog in the viewport.\n * @group Props\n */\n keepInViewport;\n /**\n * Minimum value for the left coordinate of dialog in dragging.\n * @group Props\n */\n minX;\n /**\n * Minimum value for the top coordinate of dialog in dragging.\n * @group Props\n */\n minY;\n /**\n * Whether the dialog can be displayed full screen.\n * @group Props\n */\n maximizable;\n /**\n * Name of the maximize icon.\n * @group Props\n */\n maximizeIcon;\n /**\n * Name of the minimize icon.\n * @group Props\n */\n minimizeIcon;\n /**\n * Position of the dialog, options are \"center\", \"top\", \"bottom\", \"left\", \"right\", \"top-left\", \"top-right\", \"bottom-left\" or \"bottom-right\".\n * @group Props\n */\n position;\n /**\n * Defines a string that labels the close button for accessibility.\n * @group Props\n */\n closeAriaLabel;\n /**\n * Target element to attach the overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n appendTo;\n /**\n * A boolean to determine if it can be duplicate.\n * @group Props\n */\n duplicate;\n /**\n * Object literal to define widths per screen size.\n * @group Props\n */\n breakpoints;\n /**\n * Dialog templates.\n * @group Props\n */\n templates;\n}\n\n/**\n * Dynamic Dialog instance.\n * @group Components\n */\nclass DynamicDialogRef {\n constructor() { }\n /**\n * Closes dialog.\n * @group Method\n */\n close(result) {\n this._onClose.next(result);\n setTimeout(() => {\n this._onClose.complete();\n }, 1000);\n }\n /**\n * Destroys the dialog instance.\n * @group Method\n */\n destroy() {\n this._onDestroy.next(null);\n }\n /**\n * Callback to invoke on drag start.\n * @param {MouseEvent} event - Mouse event.\n * @group Method\n */\n dragStart(event) {\n this._onDragStart.next(event);\n }\n /**\n * Callback to invoke on drag end.\n * @param {MouseEvent} event - Mouse event.\n * @group Method\n */\n dragEnd(event) {\n this._onDragEnd.next(event);\n }\n /**\n * Callback to invoke on resize start.\n * @param {MouseEvent} event - Mouse event.\n * @group Method\n */\n resizeInit(event) {\n this._onResizeInit.next(event);\n }\n /**\n * Callback to invoke on resize start.\n * @param {MouseEvent} event - Mouse event.\n * @group Method\n */\n resizeEnd(event) {\n this._onResizeEnd.next(event);\n }\n /**\n * Callback to invoke on dialog is maximized.\n * @param {*} value - Size value.\n * @group Method\n */\n maximize(value) {\n this._onMaximize.next(value);\n }\n _onClose = new Subject();\n /**\n * Event triggered on dialog is closed.\n * @group Events\n */\n onClose = this._onClose.asObservable();\n _onDestroy = new Subject();\n /**\n * Event triggered on dialog instance is destroyed.\n * @group Events\n */\n onDestroy = this._onDestroy.asObservable();\n _onDragStart = new Subject();\n /**\n * Event triggered on drag start.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onDragStart = this._onDragStart.asObservable();\n _onDragEnd = new Subject();\n /**\n * Event triggered on drag end.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onDragEnd = this._onDragEnd.asObservable();\n _onResizeInit = new Subject();\n /**\n * Event triggered on resize start.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onResizeInit = this._onResizeInit.asObservable();\n _onResizeEnd = new Subject();\n /**\n * Event triggered on resize end.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onResizeEnd = this._onResizeEnd.asObservable();\n _onMaximize = new Subject();\n /**\n * Event triggered on dialog is maximized.\n * @param {*} value - Size value.\n * @group Events\n */\n onMaximize = this._onMaximize.asObservable();\n /**\n * Event triggered on child component load.\n * @param {*} value - Chi.\n * @group Events\n */\n onChildComponentLoaded = new Subject();\n}\n\nconst showAnimation = animation([style({ transform: '{{transform}}', opacity: 0 }), animate('{{transition}}', style({ transform: 'none', opacity: 1 }))]);\nconst hideAnimation = animation([animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))]);\nclass DynamicDialogComponent {\n document;\n platformId;\n cd;\n renderer;\n config;\n dialogRef;\n zone;\n primeNGConfig;\n parentDialog;\n visible = true;\n componentRef;\n mask;\n resizing;\n dragging;\n maximized;\n _style = {};\n originalStyle;\n lastPageX;\n lastPageY;\n ariaLabelledBy;\n id = UniqueComponentId();\n styleElement;\n insertionPoint;\n maskViewChild;\n contentViewChild;\n footerViewChild;\n headerViewChild;\n childComponentType;\n container;\n wrapper;\n documentKeydownListener;\n documentEscapeListener;\n maskClickListener;\n transformOptions = 'scale(0.7)';\n documentResizeListener;\n documentResizeEndListener;\n documentDragListener;\n documentDragEndListener;\n get minX() {\n return this.config.minX ? this.config.minX : 0;\n }\n get minY() {\n return this.config.minY ? this.config.minY : 0;\n }\n get keepInViewport() {\n return this.config.keepInViewport;\n }\n get maximizable() {\n return this.config.maximizable;\n }\n get maximizeIcon() {\n return this.config.maximizeIcon;\n }\n get minimizeIcon() {\n return this.config.minimizeIcon;\n }\n get style() {\n return this._style;\n }\n get position() {\n return this.config.position;\n }\n get closeAriaLabel() {\n return this.primeNGConfig.getTranslation(TranslationKeys.ARIA)['close'];\n }\n set style(value) {\n if (value) {\n this._style = { ...value };\n this.originalStyle = value;\n }\n }\n get parent() {\n const domElements = Array.from(this.document.getElementsByClassName('p-dialog'));\n if (domElements.length > 1) {\n return domElements.pop();\n }\n }\n get parentContent() {\n const domElements = Array.from(this.document.getElementsByClassName('p-dialog'));\n if (domElements.length > 0) {\n const contentElements = domElements[domElements.length - 1].querySelector('.p-dialog-content');\n if (contentElements)\n return Array.isArray(contentElements) ? contentElements[0] : contentElements;\n }\n }\n get header() {\n return this.config.header;\n }\n get data() {\n return this.config.data;\n }\n get breakpoints() {\n return this.config.breakpoints;\n }\n get footerTemplate() {\n return this.config?.templates?.footer;\n }\n get headerTemplate() {\n return this.config?.templates?.header;\n }\n get contentTemplate() {\n return this.config?.templates?.content;\n }\n get minimizeIconTemplate() {\n return this.config?.templates?.minimizeicon;\n }\n get maximizeIconTemplate() {\n return this.config?.templates?.maximizeicon;\n }\n get closeIconTemplate() {\n return this.config?.templates?.closeicon;\n }\n get dynamicDialogCount() {\n const dynamicDialogs = this.document.querySelectorAll('p-dynamicdialog');\n const dynamicDialogCount = dynamicDialogs?.length;\n return dynamicDialogCount;\n }\n get containerStyle() {\n return {\n ...this.config.style,\n width: this.config.width,\n height: this.config.height\n };\n }\n constructor(document, platformId, cd, renderer, config, dialogRef, zone, primeNGConfig, parentDialog) {\n this.document = document;\n this.platformId = platformId;\n this.cd = cd;\n this.renderer = renderer;\n this.config = config;\n this.dialogRef = dialogRef;\n this.zone = zone;\n this.primeNGConfig = primeNGConfig;\n this.parentDialog = parentDialog;\n }\n ngOnInit() {\n if (this.breakpoints) {\n this.createStyle();\n }\n }\n createStyle() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.styleElement) {\n this.styleElement = this.renderer.createElement('style');\n this.styleElement.type = 'text/css';\n DomHandler.setAttribute(this.styleElement, 'nonce', this.primeNGConfig?.csp()?.nonce);\n this.renderer.appendChild(this.document.head, this.styleElement);\n let innerHTML = '';\n for (let breakpoint in this.breakpoints) {\n innerHTML += `\n @media screen and (max-width: ${breakpoint}) {\n .p-dialog[${this.id}]:not(.p-dialog-maximized) {\n width: ${this.breakpoints[breakpoint]} !important;\n }\n }\n `;\n }\n this.renderer.setProperty(this.styleElement, 'innerHTML', innerHTML);\n }\n }\n }\n destroyStyle() {\n if (this.styleElement) {\n this.renderer.removeChild(this.document.head, this.styleElement);\n this.styleElement = null;\n }\n }\n ngAfterViewInit() {\n this.loadChildComponent(this.childComponentType);\n this.ariaLabelledBy = this.getAriaLabelledBy();\n this.cd.detectChanges();\n }\n getAriaLabelledBy() {\n return this.header !== null ? UniqueComponentId() + '_header' : null;\n }\n loadChildComponent(componentType) {\n let viewContainerRef = this.insertionPoint?.viewContainerRef;\n viewContainerRef?.clear();\n this.componentRef = viewContainerRef?.createComponent(componentType);\n this.dialogRef.onChildComponentLoaded.next(this.componentRef.instance);\n }\n moveOnTop() {\n if (this.config.autoZIndex !== false) {\n ZIndexUtils.set('modal', this.container, (this.config.baseZIndex || 0) + this.primeNGConfig.zIndex.modal);\n this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);\n }\n }\n onAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.container = event.element;\n this.wrapper = this.container.parentElement;\n this.moveOnTop();\n if (this.parent) {\n this.unbindGlobalListeners();\n }\n this.bindGlobalListeners();\n this.container?.setAttribute(this.id, '');\n if (this.config.modal !== false) {\n this.enableModality();\n }\n if (this.config.focusOnShow !== false) {\n this.focus();\n }\n break;\n case 'void':\n if (this.wrapper && this.config.modal !== false) {\n DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');\n }\n break;\n }\n }\n onAnimationEnd(event) {\n if (event.toState === 'void') {\n if (this.parentContent && this.config.focusOnClose !== false) {\n this.focus(this.parentContent);\n }\n this.onContainerDestroy();\n this.dialogRef.destroy();\n }\n }\n onContainerDestroy() {\n this.unbindGlobalListeners();\n if (this.container && this.config.autoZIndex !== false) {\n ZIndexUtils.clear(this.container);\n }\n if (this.config.modal !== false) {\n this.disableModality();\n }\n this.container = null;\n }\n close() {\n this.visible = false;\n this.cd.markForCheck();\n }\n hide() {\n if (this.dialogRef) {\n this.dialogRef.close();\n }\n }\n enableModality() {\n if (this.config.dismissableMask) {\n this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event) => {\n if (this.wrapper && this.wrapper.isSameNode(event.target)) {\n this.hide();\n }\n });\n }\n if (this.dynamicDialogCount === 1) {\n DomHandler.addClass(this.document.body, 'p-overflow-hidden');\n }\n }\n disableModality() {\n if (this.wrapper) {\n if (this.config.dismissableMask) {\n this.unbindMaskClickListener();\n }\n if (this.dynamicDialogCount === 1) {\n DomHandler.removeClass(this.document.body, 'p-overflow-hidden');\n }\n if (!this.cd.destroyed) {\n this.cd.detectChanges();\n }\n }\n }\n focus(focusParentElement = this.contentViewChild.nativeElement) {\n const focusableElements = DomHandler.getFocusableElements(focusParentElement);\n if (!focusableElements.length) {\n return;\n }\n let focusable = DomHandler.getFocusableElement(focusParentElement, '[autofocus]');\n if (focusable) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => focusable.focus(), 5);\n });\n return;\n }\n const focusableElement = DomHandler.getFocusableElement(focusParentElement);\n if (focusableElement) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => focusableElement.focus(), 5);\n });\n }\n else if (this.footerViewChild) {\n // If the content section is empty try to focus on footer\n this.focus(this.footerViewChild.nativeElement);\n }\n else if (!focusableElement && this.headerViewChild) {\n this.focus(this.headerViewChild.nativeElement);\n }\n }\n maximize() {\n this.maximized = !this.maximized;\n if (this.maximized) {\n DomHandler.addClass(this.document.body, 'p-overflow-hidden');\n }\n else {\n DomHandler.removeClass(this.document.body, 'p-overflow-hidden');\n }\n this.dialogRef.maximize({ maximized: this.maximized });\n }\n initResize(event) {\n if (this.config.resizable) {\n if (!this.documentResizeListener) {\n this.bindDocumentResizeListeners();\n }\n this.resizing = true;\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n DomHandler.addClass(this.document.body, 'p-unselectable-text');\n this.dialogRef.resizeInit(event);\n }\n }\n onResize(event) {\n if (this.resizing) {\n let deltaX = event.pageX - this.lastPageX;\n let deltaY = event.pageY - this.lastPageY;\n let containerWidth = DomHandler.getOuterWidth(this.container);\n let containerHeight = DomHandler.getOuterHeight(this.container);\n let contentHeight = DomHandler.getOuterHeight(this.contentViewChild.nativeElement);\n let newWidth = containerWidth + deltaX;\n let newHeight = containerHeight + deltaY;\n let minWidth = this.container.style.minWidth;\n let minHeight = this.container.style.minHeight;\n let offset = this.container.getBoundingClientRect();\n let viewport = DomHandler.getViewport();\n let hasBeenDragged = !parseInt(this.container.style.top) || !parseInt(this.container.style.left);\n if (hasBeenDragged) {\n newWidth += deltaX;\n newHeight += deltaY;\n }\n if ((!minWidth || newWidth > parseInt(minWidth)) && offset.left + newWidth < viewport.width) {\n this._style.width = newWidth + 'px';\n this.container.style.width = this._style.width;\n }\n if ((!minHeight || newHeight > parseInt(minHeight)) && offset.top + newHeight < viewport.height) {\n this.contentViewChild.nativeElement.style.height = contentHeight + newHeight - containerHeight + 'px';\n if (this._style.height) {\n this._style.height = newHeight + 'px';\n this.container.style.height = this._style.height;\n }\n }\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n }\n }\n resizeEnd(event) {\n if (this.resizing) {\n this.resizing = false;\n DomHandler.removeClass(this.document.body, 'p-unselectable-text');\n this.dialogRef.resizeEnd(event);\n }\n }\n initDrag(event) {\n if (DomHandler.hasClass(event.target, 'p-dialog-header-icon') || DomHandler.hasClass(event.target.parentElement, 'p-dialog-header-icon')) {\n return;\n }\n if (this.config.draggable) {\n this.dragging = true;\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n this.container.style.margin = '0';\n DomHandler.addClass(this.document.body, 'p-unselectable-text');\n this.dialogRef.dragStart(event);\n }\n }\n onDrag(event) {\n if (this.dragging) {\n let containerWidth = DomHandler.getOuterWidth(this.container);\n let containerHeight = DomHandler.getOuterHeight(this.container);\n let deltaX = event.pageX - this.lastPageX;\n let deltaY = event.pageY - this.lastPageY;\n let offset = this.container.getBoundingClientRect();\n let leftPos = offset.left + deltaX;\n let topPos = offset.top + deltaY;\n let viewport = DomHandler.getViewport();\n this.container.style.position = 'fixed';\n if (this.keepInViewport) {\n if (leftPos >= this.minX && leftPos + containerWidth < viewport.width) {\n this._style.left = leftPos + 'px';\n this.lastPageX = event.pageX;\n this.container.style.left = leftPos + 'px';\n }\n if (topPos >= this.minY && topPos + containerHeight < viewport.height) {\n this._style.top = topPos + 'px';\n this.lastPageY = event.pageY;\n this.container.style.top = topPos + 'px';\n }\n }\n else {\n this.lastPageX = event.pageX;\n this.container.style.left = leftPos + 'px';\n this.lastPageY = event.pageY;\n this.container.style.top = topPos + 'px';\n }\n }\n }\n endDrag(event) {\n if (this.dragging) {\n this.dragging = false;\n DomHandler.removeClass(this.document.body, 'p-unselectable-text');\n this.dialogRef.dragEnd(event);\n this.cd.detectChanges();\n }\n }\n resetPosition() {\n this.container.style.position = '';\n this.container.style.left = '';\n this.container.style.top = '';\n this.container.style.margin = '';\n }\n bindDocumentDragListener() {\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.documentDragListener = this.renderer.listen(this.document, 'mousemove', this.onDrag.bind(this));\n });\n }\n }\n bindDocumentDragEndListener() {\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.documentDragEndListener = this.renderer.listen(this.document, 'mouseup', this.endDrag.bind(this));\n });\n }\n }\n unbindDocumentDragEndListener() {\n if (this.documentDragEndListener) {\n this.documentDragEndListener();\n this.documentDragListener = null;\n }\n }\n unbindDocumentDragListener() {\n if (this.documentDragListener) {\n this.documentDragListener();\n this.documentDragListener = null;\n }\n }\n bindDocumentResizeListeners() {\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.documentResizeListener = this.renderer.listen(this.document, 'mousemove', this.onResize.bind(this));\n this.documentResizeEndListener = this.renderer.listen(this.document, 'mouseup', this.resizeEnd.bind(this));\n });\n }\n }\n unbindDocumentResizeListeners() {\n if (this.documentResizeListener && this.documentResizeEndListener) {\n this.documentResizeListener();\n this.documentResizeEndListener();\n this.documentResizeListener = null;\n this.documentResizeEndListener = null;\n }\n }\n bindGlobalListeners() {\n if (this.config.closeOnEscape !== false) {\n this.bindDocumentEscapeListener();\n }\n if (this.config.resizable) {\n this.bindDocumentResizeListeners();\n }\n if (this.config.draggable) {\n this.bindDocumentDragListener();\n this.bindDocumentDragEndListener();\n }\n }\n unbindGlobalListeners() {\n this.unbindDocumentEscapeListener();\n this.unbindDocumentResizeListeners();\n this.unbindDocumentDragListener();\n this.unbindDocumentDragEndListener();\n }\n bindDocumentEscapeListener() {\n const documentTarget = this.maskViewChild ? this.maskViewChild.nativeElement.ownerDocument : 'document';\n this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n if (event.which == 27) {\n if (parseInt(this.container.style.zIndex) == ZIndexUtils.getCurrent()) {\n this.hide();\n }\n }\n });\n }\n unbindDocumentEscapeListener() {\n if (this.documentEscapeListener) {\n this.documentEscapeListener();\n this.documentEscapeListener = null;\n }\n }\n unbindMaskClickListener() {\n if (this.maskClickListener) {\n this.maskClickListener();\n this.maskClickListener = null;\n }\n }\n ngOnDestroy() {\n this.onContainerDestroy();\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n this.destroyStyle();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: DynamicDialogComponent, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: DynamicDialogConfig }, { token: DynamicDialogRef }, { token: i0.NgZone }, { token: i3.PrimeNGConfig }, { token: DynamicDialogComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.0.1\", type: DynamicDialogComponent, selector: \"p-dynamicDialog\", host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"insertionPoint\", first: true, predicate: DynamicDialogContent, descendants: true }, { propertyName: \"maskViewChild\", first: true, predicate: [\"mask\"], descendants: true }, { propertyName: \"contentViewChild\", first: true, predicate: [\"content\"], descendants: true }, { propertyName: \"footerViewChild\", first: true, predicate: [\"footer\"], descendants: true }, { propertyName: \"headerViewChild\", first: true, predicate: [\"titlebar\"], descendants: true }], ngImport: i0, template: `\n <div\n #mask\n [ngClass]=\"{\n 'p-dialog-mask': true,\n 'p-component-overlay p-component-overlay-enter p-dialog-mask-scrollblocker': config.modal !== false,\n 'p-dialog-left': position === 'left',\n 'p-dialog-right': position === 'right',\n 'p-dialog-top': position === 'top',\n 'p-dialog-bottom': position === 'bottom',\n 'p-dialog-top-left': position === 'topleft' || position === 'top-left',\n 'p-dialog-top-right': position === 'topright' || position === 'top-right',\n 'p-dialog-bottom-left': position === 'bottomleft' || position === 'bottom-left',\n 'p-dialog-bottom-right': position === 'bottomright' || position === 'bottom-right'\n }\"\n [class]=\"config.maskStyleClass\"\n >\n <div\n #container\n [ngClass]=\"{ 'p-dialog p-dynamic-dialog p-component': true, 'p-dialog-rtl': config.rtl, 'p-dialog-resizable': config.resizable, 'p-dialog-draggable': config.draggable, 'p-dialog-maximized': maximized }\"\n [ngStyle]=\"containerStyle\"\n [class]=\"config.styleClass\"\n [@animation]=\"{ value: 'visible', params: { transform: transformOptions, transition: config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)' } }\"\n (@animation.start)=\"onAnimationStart($event)\"\n (@animation.done)=\"onAnimationEnd($event)\"\n role=\"dialog\"\n *ngIf=\"visible\"\n pFocusTrap\n [pFocusTrapDisabled]=\"config.focusTrap === false\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-modal]=\"true\"\n >\n <div *ngIf=\"config.resizable\" class=\"p-resizable-handle\" (mousedown)=\"initResize($event)\"></div>\n <div #titlebar class=\"p-dialog-header\" (mousedown)=\"initDrag($event)\" *ngIf=\"config.showHeader === false ? false : true\">\n <ng-container *ngComponentOutlet=\"headerTemplate\"></ng-container>\n <ng-container *ngIf=\"!headerTemplate\">\n <span class=\"p-dialog-title\" [id]=\"ariaLabelledBy\">{{ config.header }}</span>\n <div class=\"p-dialog-header-icons\">\n <button *ngIf=\"config.maximizable\" type=\"button\" [ngClass]=\"{ 'p-dialog-header-icon p-dialog-header-maximize p-link': true }\" (click)=\"maximize()\" (keydown.enter)=\"maximize()\" tabindex=\"-1\" pRipple>\n <span class=\"p-dialog-header-maximize-icon\" *ngIf=\"!maximizeIconTemplate || !minimizeIconTemplate\" [ngClass]=\"maximized ? minimizeIcon : maximizeIcon\"></span>\n <WindowMaximizeIcon *ngIf=\"!maximized && !maximizeIcon && !maximizeIconTemplate\" [styleClass]=\"'p-dialog-header-maximize-icon'\" />\n <WindowMinimizeIcon *ngIf=\"maximized && !minimizeIcon && !minimizeIconTemplate\" [styleClass]=\"'p-dialog-header-maximize-icon'\" />\n <ng-container *ngComponentOutlet=\"maximizeIconTemplate\"></ng-container>\n <ng-container *ngComponentOutlet=\"minimizeIconTemplate\"></ng-container>\n </button>\n <button [ngClass]=\"'p-dialog-header-icon p-dialog-header-maximize p-link'\" type=\"button\" role=\"button\" (click)=\"hide()\" (keydown.enter)=\"hide()\" *ngIf=\"config.closable !== false\" [attr.aria-label]=\"closeAriaLabel\">\n <TimesIcon [styleClass]=\"'p-dialog-header-close-icon'\" *ngIf=\"!closeIconTemplate\" />\n <ng-container *ngComponentOutlet=\"closeIconTemplate\"></ng-container>\n </button>\n </div>\n </ng-container>\n </div>\n <div #content class=\"p-dialog-content\" [ngStyle]=\"config.contentStyle\">\n <ng-template pDynamicDialogContent *ngIf=\"!contentTemplate\"></ng-template>\n <ng-container *ngComponentOutlet=\"contentTemplate\"></ng-container>\n </div>\n <div #footer class=\"p-dialog-footer\" *ngIf=\"config.footer || footerTemplate\">\n <ng-container *ngIf=\"!footerTemplate\">\n {{ config.footer }}\n </ng-container>\n <ng-container *ngComponentOutlet=\"footerTemplate\"></ng-container>\n </div>\n </div>\n </div>\n `, isInline: true, styles: [\"@layer primeng{.p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-draggable .p-dialog-header{cursor:move}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translateZ(0)}.p-dialog-maximized{-webkit-transition:none;transition:none;transform:none;width:100vw!important;height:100vh!important;top:0!important;left:0!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i4.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i4.NgComponentOutlet), selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"] }, { kind: \"directive\", type: i0.forwardRef(() => i4.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i4.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => WindowMaximizeIcon), selector: \"WindowMaximizeIcon\" }, { kind: \"component\", type: i0.forwardRef(() => WindowMinimizeIcon), selector: \"WindowMinimizeIcon\" }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }, { kind: \"directive\", type: i0.forwardRef(() => i5.FocusTrap), selector: \"[pFocusTrap]\", inputs: [\"pFocusTrapDisabled\"] }, { kind: \"directive\", type: i0.forwardRef(() => DynamicDialogContent), selector: \"[pDynamicDialogContent]\" }], animations: [trigger('animation', [transition('void => visible', [useAnimation(showAnimation)]), transition('visible => void', [useAnimation(hideAnimation)])])], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: DynamicDialogComponent, decorators: [{\n type: Component,\n args: [{ selector: 'p-dynamicDialog', template: `\n <div\n #mask\n [ngClass]=\"{\n 'p-dialog-mask': true,\n 'p-component-overlay p-component-overlay-enter p-dialog-mask-scrollblocker': config.modal !== false,\n 'p-dialog-left': position === 'left',\n 'p-dialog-right': position === 'right',\n 'p-dialog-top': position === 'top',\n 'p-dialog-bottom': position === 'bottom',\n 'p-dialog-top-left': position === 'topleft' || position === 'top-left',\n 'p-dialog-top-right': position === 'topright' || position === 'top-right',\n 'p-dialog-bottom-left': position === 'bottomleft' || position === 'bottom-left',\n 'p-dialog-bottom-right': position === 'bottomright' || position === 'bottom-right'\n }\"\n [class]=\"config.maskStyleClass\"\n >\n <div\n #container\n [ngClass]=\"{ 'p-dialog p-dynamic-dialog p-component': true, 'p-dialog-rtl': config.rtl, 'p-dialog-resizable': config.resizable, 'p-dialog-draggable': config.draggable, 'p-dialog-maximized': maximized }\"\n [ngStyle]=\"containerStyle\"\n [class]=\"config.styleClass\"\n [@animation]=\"{ value: 'visible', params: { transform: transformOptions, transition: config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)' } }\"\n (@animation.start)=\"onAnimationStart($event)\"\n (@animation.done)=\"onAnimationEnd($event)\"\n role=\"dialog\"\n *ngIf=\"visible\"\n pFocusTrap\n [pFocusTrapDisabled]=\"config.focusTrap === false\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-modal]=\"true\"\n >\n <div *ngIf=\"config.resizable\" class=\"p-resizable-handle\" (mousedown)=\"initResize($event)\"></div>\n <div #titlebar class=\"p-dialog-header\" (mousedown)=\"initDrag($event)\" *ngIf=\"config.showHeader === false ? false : true\">\n <ng-container *ngComponentOutlet=\"headerTemplate\"></ng-container>\n <ng-container *ngIf=\"!headerTemplate\">\n <span class=\"p-dialog-title\" [id]=\"ariaLabelledBy\">{{ config.header }}</span>\n <div class=\"p-dialog-header-icons\">\n <button *ngIf=\"config.maximizable\" type=\"button\" [ngClass]=\"{ 'p-dialog-header-icon p-dialog-header-maximize p-link': true }\" (click)=\"maximize()\" (keydown.enter)=\"maximize()\" tabindex=\"-1\" pRipple>\n <span class=\"p-dialog-header-maximize-icon\" *ngIf=\"!maximizeIconTemplate || !minimizeIconTemplate\" [ngClass]=\"maximized ? minimizeIcon : maximizeIcon\"></span>\n <WindowMaximizeIcon *ngIf=\"!maximized && !maximizeIcon && !maximizeIconTemplate\" [styleClass]=\"'p-dialog-header-maximize-icon'\" />\n <WindowMinimizeIcon *ngIf=\"maximized && !minimizeIcon && !minimizeIconTemplate\" [styleClass]=\"'p-dialog-header-maximize-icon'\" />\n <ng-container *ngComponentOutlet=\"maximizeIconTemplate\"></ng-container>\n <ng-container *ngComponentOutlet=\"minimizeIconTemplate\"></ng-container>\n </button>\n <button [ngClass]=\"'p-dialog-header-icon p-dialog-header-maximize p-link'\" type=\"button\" role=\"button\" (click)=\"hide()\" (keydown.enter)=\"hide()\" *ngIf=\"config.closable !== false\" [attr.aria-label]=\"closeAriaLabel\">\n <TimesIcon [styleClass]=\"'p-dialog-header-close-icon'\" *ngIf=\"!closeIconTemplate\" />\n <ng-container *ngComponentOutlet=\"closeIconTemplate\"></ng-container>\n </button>\n </div>\n </ng-container>\n </div>\n <div #content class=\"p-dialog-content\" [ngStyle]=\"config.contentStyle\">\n <ng-template pDynamicDialogContent *ngIf=\"!contentTemplate\"></ng-template>\n <ng-container *ngComponentOutlet=\"contentTemplate\"></ng-container>\n </div>\n <div #footer class=\"p-dialog-footer\" *ngIf=\"config.footer || footerTemplate\">\n <ng-container *ngIf=\"!footerTemplate\">\n {{ config.footer }}\n </ng-container>\n <ng-container *ngComponentOutlet=\"footerTemplate\"></ng-container>\n </div>\n </div>\n </div>\n `, animations: [trigger('animation', [transition('void => visible', [useAnimation(showAnimation)]), transition('visible => void', [useAnimation(hideAnimation)])])], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-draggable .p-dialog-header{cursor:move}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translateZ(0)}.p-dialog-maximized{-webkit-transition:none;transition:none;transform:none;width:100vw!important;height:100vh!important;top:0!important;left:0!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: DynamicDialogConfig }, { type: DynamicDialogRef }, { type: i0.NgZone }, { type: i3.PrimeNGConfig }, { type: DynamicDialogComponent, decorators: [{\n type: SkipSelf\n }, {\n type: Optional\n }] }], propDecorators: { insertionPoint: [{\n type: ViewChild,\n args: [DynamicDialogContent]\n }], maskViewChild: [{\n type: ViewChild,\n args: ['mask']\n }], contentViewChild: [{\n type: ViewChild,\n args: ['content']\n }], footerViewChild: [{\n type: ViewChild,\n args: ['footer']\n }], headerViewChild: [{\n type: ViewChild,\n args: ['titlebar']\n }] } });\nclass DynamicDialogModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: DynamicDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.0.1\", ngImport: i0, type: DynamicDialogModule, declarations: [DynamicDialogComponent, DynamicDialogContent], imports: [CommonModule, WindowMaximizeIcon, WindowMinimizeIcon, TimesIcon, SharedModule, FocusTrapModule], exports: [SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: DynamicDialogModule, imports: [CommonModule, WindowMaximizeIcon, WindowMinimizeIcon, TimesIcon, SharedModule, FocusTrapModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: DynamicDialogModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, WindowMaximizeIcon, WindowMinimizeIcon, TimesIcon, SharedModule, FocusTrapModule],\n declarations: [DynamicDialogComponent, DynamicDialogContent],\n exports: [SharedModule]\n }]\n }] });\n\nclass DynamicDialogInjector {\n _parentInjector;\n _additionalTokens;\n constructor(_parentInjector, _additionalTokens) {\n this._parentInjector = _parentInjector;\n this._additionalTokens = _additionalTokens;\n }\n get(token, notFoundValue, options) {\n const value = this._additionalTokens.get(token);\n if (value)\n return value;\n return this._parentInjector.get(token, notFoundValue);\n }\n}\n\n/**\n * Dynamic Dialog component methods.\n * @group Service\n */\nclass DialogService {\n appRef;\n injector;\n document;\n dialogComponentRefMap = new Map();\n constructor(appRef, injector, document) {\n this.appRef = appRef;\n this.injector = injector;\n this.document = document;\n }\n /**\n * Displays the dialog using the dynamic dialog object options.\n * @param {*} componentType - Dynamic component for content template.\n * @param {DynamicDialogConfig} config - DynamicDialog object.\n * @returns {DynamicDialogRef} DynamicDialog instance.\n * @group Method\n */\n open(componentType, config) {\n if (!this.duplicationPermission(componentType, config)) {\n return null;\n }\n const dialogRef = this.appendDialogComponentToBody(config, componentType);\n this.dialogComponentRefMap.get(dialogRef).instance.childComponentType = componentType;\n return dialogRef;\n }\n /**\n * Returns the dynamic dialog component instance.\n * @param {ref} DynamicDialogRef - DynamicDialog instance.\n * @group Method\n */\n getInstance(ref) {\n return this.dialogComponentRefMap.get(ref).instance;\n }\n appendDialogComponentToBody(config, componentType) {\n const map = new WeakMap();\n map.set(DynamicDialogConfig, config);\n const dialogRef = new DynamicDialogRef();\n map.set(DynamicDialogRef, dialogRef);\n const sub = dialogRef.onClose.subscribe(() => {\n this.dialogComponentRefMap.get(dialogRef).instance.close();\n });\n const destroySub = dialogRef.onDestroy.subscribe(() => {\n this.removeDialogComponentFromBody(dialogRef);\n destroySub.unsubscribe();\n sub.unsubscribe();\n });\n const componentRef = createComponent(DynamicDialogComponent, { environmentInjector: this.appRef.injector, elementInjector: new DynamicDialogInjector(this.injector, map) });\n this.appRef.attachView(componentRef.hostView);\n const domElem = componentRef.hostView.rootNodes[0];\n if (!config.appendTo || config.appendTo === 'body') {\n this.document.body.appendChild(domElem);\n }\n else {\n DomHandler.appendChild(domElem, config.appendTo);\n }\n this.dialogComponentRefMap.set(dialogRef, componentRef);\n return dialogRef;\n }\n removeDialogComponentFromBody(dialogRef) {\n if (!dialogRef || !this.dialogComponentRefMap.has(dialogRef)) {\n return;\n }\n const dialogComponentRef = this.dialogComponentRefMap.get(dialogRef);\n this.appRef.detachView(dialogComponentRef.hostView);\n dialogComponentRef.destroy();\n this.dialogComponentRefMap.delete(dialogRef);\n }\n duplicationPermission(componentType, config) {\n if (config.duplicate) {\n return true;\n }\n let permission = true;\n for (const [key, value] of this.dialogComponentRefMap) {\n if (value.instance.childComponentType === componentType) {\n permission = false;\n break;\n }\n }\n return permission;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: DialogService, deps: [{ token: i0.ApplicationRef }, { token: i0.Injector }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: DialogService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.1\", ngImport: i0, type: DialogService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.Injector }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DialogService, DynamicDialogComponent, DynamicDialogConfig, DynamicDialogInjector, DynamicDialogModule, DynamicDialogRef };\n//# sourceMappingURL=primeng-dynamicdialog.mjs.map\n","export const LoggerLevelName = {\n error: 'error',\n warn: 'warn',\n info: 'info',\n verbose: 'verbose',\n debug: 'debug',\n silly: 'silly',\n};\n//# sourceMappingURL=logger-level-name.js.map","import { LoggerLevelName } from './logger-level-name.js';\nexport class LoggerRingBuffer {\n _lastLogMessage = { messageSource: 'No message yet', timestamp: new Date().getTime(), lvl: LoggerLevelName.info };\n _buffer = [];\n _bufferIdx = 0;\n _lastSnapshotIdx = 0;\n _bufferSize;\n constructor(size) {\n if (!size) {\n throw new Error('Cannot create ring buffer of size 0');\n }\n this._bufferSize = size;\n }\n get currentIndex() {\n return this._bufferIdx;\n }\n get lastSnapshotIdx() {\n return this._lastSnapshotIdx;\n }\n set bufferSize(newSize) {\n if (!newSize) {\n throw new Error('Cannot create ring buffer of size 0');\n }\n this._bufferSize = newSize;\n this.clearRingBuffer();\n }\n getMessages(inStartFrom = null, clear = false, reverseSort = false) {\n let rval = null;\n if (this._bufferIdx < this._bufferSize) {\n const start = inStartFrom == null ? 0 : inStartFrom;\n rval = this._buffer.slice(start, this._bufferIdx);\n }\n else {\n rval = [];\n const firstIdx = this._bufferIdx - this._bufferSize;\n const startFrom = inStartFrom ? Math.max(inStartFrom, firstIdx) : firstIdx;\n for (let i = startFrom; i < this._bufferIdx; i++) {\n rval.push(this._buffer[i % this._bufferSize]);\n }\n }\n if (clear) {\n this.clearRingBuffer();\n }\n if (reverseSort) {\n rval = rval.reverse();\n }\n return rval;\n }\n takeSnapshot() {\n const trailingEdge = Math.max(0, this._bufferIdx - this._bufferSize);\n const rval = {\n messages: this.getMessages(this._lastSnapshotIdx),\n logMessagesTruncated: Math.max(0, trailingEdge - this._lastSnapshotIdx),\n };\n this._lastSnapshotIdx = this._bufferIdx;\n return rval;\n }\n getLastLogMessage() {\n return Object.assign({}, this._lastLogMessage);\n }\n clearRingBuffer() {\n this._buffer = [];\n this._bufferIdx = 0;\n this._lastSnapshotIdx = 0;\n }\n addToRingBuffer(newMsg) {\n this._lastLogMessage = newMsg;\n this._buffer[this._bufferIdx % this._bufferSize] = newMsg;\n this._bufferIdx++;\n }\n}\n//# sourceMappingURL=logger-ring-buffer.js.map","export const LoggerOutputFunction = {\n Console: 'Console',\n ConsoleNoDebug: 'ConsoleNoDebug',\n StdOut: 'StdOut',\n};\n//# sourceMappingURL=logger-output-function.js.map","import { LoggerLevelName } from './logger-level-name.js';\nimport { LoggerOutputFunction } from './logger-output-function.js';\nexport class LoggerUtil {\n static LOG_LEVELS_IN_ORDER = [\n LoggerLevelName.error,\n LoggerLevelName.warn,\n LoggerLevelName.info,\n LoggerLevelName.verbose,\n LoggerLevelName.debug,\n LoggerLevelName.silly,\n ];\n static handlerFunctionMap(outputFn = LoggerOutputFunction.Console) {\n const output = new Map();\n if (outputFn === LoggerOutputFunction.StdOut) {\n if (!process?.stdout?.write) {\n throw new Error('Cannot use standard out - process.stdout.write not found');\n }\n const myStdOut = (chunk, cb) => process.stdout.write(chunk, 'utf-8', cb);\n output.set(LoggerLevelName.error, myStdOut);\n output.set(LoggerLevelName.warn, myStdOut);\n output.set(LoggerLevelName.info, myStdOut);\n output.set(LoggerLevelName.verbose, myStdOut);\n output.set(LoggerLevelName.debug, myStdOut);\n output.set(LoggerLevelName.silly, myStdOut);\n }\n else {\n output.set(LoggerLevelName.error, console.error);\n output.set(LoggerLevelName.warn, console.warn);\n output.set(LoggerLevelName.info, console.info);\n output.set(LoggerLevelName.verbose, outputFn === LoggerOutputFunction.ConsoleNoDebug ? console.log : console.debug);\n output.set(LoggerLevelName.debug, outputFn === LoggerOutputFunction.ConsoleNoDebug ? console.log : console.debug);\n output.set(LoggerLevelName.silly, outputFn === LoggerOutputFunction.ConsoleNoDebug ? console.log : console.debug);\n }\n return output;\n }\n static defaultHandlerFunction() {\n return console.info;\n }\n static levelIsEnabled(targetLevel, currentEnabled) {\n const idxTarget = LoggerUtil.LOG_LEVELS_IN_ORDER.indexOf(targetLevel);\n const lvl = LoggerUtil.LOG_LEVELS_IN_ORDER.indexOf(currentEnabled);\n return idxTarget > -1 && lvl > -1 && lvl >= idxTarget;\n }\n}\n//# sourceMappingURL=logger-util.js.map","export const LogMessageFormatType = {\n ClassicSingleLine: 'ClassicSingleLine',\n StructuredJson: 'StructuredJson',\n None: 'None',\n};\n//# sourceMappingURL=log-message-format-type.js.map","export class RequireRatchet {\n static isNullOrUndefined(ob) {\n return Object.is(ob, null) || Object.is(ob, undefined);\n }\n static notNullOrUndefined(ob, name = 'object') {\n if (RequireRatchet.isNullOrUndefined(ob)) {\n throw new Error(name + ' may not be null or undefined');\n }\n }\n static notNullUndefinedOrOnlyWhitespaceString(ob, name = 'string') {\n if (RequireRatchet.isNullOrUndefined(ob) || ob.trim() === '') {\n throw new Error(name + ' may not be null or undefined or only whitespace string');\n }\n }\n static notNullUndefinedOrEmptyArray(ob, name = 'string') {\n if (RequireRatchet.isNullOrUndefined(ob) || ob.length === 0) {\n throw new Error(name + ' may not be null or undefined or an empty array');\n }\n }\n static equal(ob1, ob2, message = 'Values must be equal') {\n if (ob1 !== ob2) {\n throw new Error(message);\n }\n }\n static true(ob, message = 'Value must be true') {\n RequireRatchet.equal(ob, true, message);\n }\n static noNullOrUndefinedValuesInArray(arr, expectedLength = null, customMsg = null) {\n RequireRatchet.notNullOrUndefined(arr, 'Source array may not be null');\n if (expectedLength !== null && arr.length !== expectedLength) {\n throw new Error(`Expected array of length ${expectedLength} but was ${arr.length} ${customMsg}`);\n }\n for (let i = 0; i < arr.length; i++) {\n if (RequireRatchet.isNullOrUndefined(arr[i])) {\n throw new Error(`Array index ${i} was null or undefined ${customMsg}`);\n }\n }\n }\n static noNullOrUndefinedValuesInRestArgs(expectedLength, ...restArgs) {\n RequireRatchet.notNullOrUndefined(restArgs, 'Source array may not be null');\n if (expectedLength !== null && restArgs.length !== expectedLength) {\n throw new Error(`Expected array of length ${expectedLength} but was ${restArgs.length}`);\n }\n for (let i = 0; i < restArgs.length; i++) {\n if (RequireRatchet.isNullOrUndefined(restArgs[i])) {\n throw new Error(`Array index ${i} was null or undefined`);\n }\n }\n }\n static constructorArgumentsMatchLengthAndAreNonNull() {\n const args = Array.from(arguments);\n const len = this.constructor.length;\n return RequireRatchet.noNullOrUndefinedValuesInArray(args, len);\n }\n}\n//# sourceMappingURL=require-ratchet.js.map","import { RequireRatchet } from './require-ratchet.js';\nexport class StringRatchet {\n static RFC_3986_RESERVED = [\n '!',\n '*',\n \"'\",\n '(',\n ')',\n ';',\n ':',\n '@',\n '&',\n '=',\n '+',\n '$',\n ',',\n '/',\n '?',\n '#',\n '[',\n ']',\n '%',\n ];\n static WHITESPACE = ' \\n\\t';\n static DIGITS = '0123456789';\n static HEXITS = StringRatchet.DIGITS + 'ABCDEF';\n static UPPER_CASE_LATIN = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n static LOWER_CASE_LATIN = 'abcdefghijklmnopqrstuvwxyz';\n static CASE_INSENSITIVE_LATIN = StringRatchet.UPPER_CASE_LATIN + StringRatchet.LOWER_CASE_LATIN;\n static stringIsInGivenAlphabet(input, alphabet) {\n let rval = false;\n if (input && alphabet) {\n for (let i = 0; i < input.length && !rval; i++) {\n rval = alphabet.includes(input.charAt(i));\n }\n }\n return rval;\n }\n static stringToUint8Array(val) {\n return val ? new TextEncoder().encode(val) : null;\n }\n static uint8ArrayToString(val) {\n return val ? new TextDecoder().decode(val) : null;\n }\n static attemptJsonParse(val) {\n let rval = null;\n if (StringRatchet.trimToNull(val)) {\n try {\n rval = JSON.parse(val);\n }\n catch {\n rval = null;\n }\n }\n return rval;\n }\n static canParseAsJson(val) {\n return !!StringRatchet.attemptJsonParse(val);\n }\n static allUnique(input) {\n let rval = true;\n if (input) {\n const check = new Set();\n for (let i = 0; i < input.length && rval; i++) {\n const test = input.charAt(i);\n rval = !check.has(test);\n check.add(test);\n }\n }\n return rval;\n }\n static allPermutationsOfLength(len, alphabet) {\n const rval = [];\n if (len > 0 && alphabet && alphabet.length > 0) {\n RequireRatchet.true(StringRatchet.allUnique(alphabet), 'Alphabet must be unique');\n const step = len === 1 ? [''] : StringRatchet.allPermutationsOfLength(len - 1, alphabet);\n for (let i = 0; i < alphabet.length; i++) {\n step.forEach((s) => rval.push(alphabet.charAt(i) + s));\n }\n }\n return rval;\n }\n static breakIntoBlocks(input, blockSize, separator) {\n let out = '';\n while (input.length > blockSize) {\n out = separator + input.substring(input.length - blockSize) + out;\n input = input.substring(0, input.length - blockSize);\n }\n if (input.length > 0) {\n out = input + out;\n }\n else {\n out = out.substring(1);\n }\n return out;\n }\n static createShortUid(blockSize = 0, uniquesPerSecond = 1000, radix = 36) {\n const currentEpoch = Math.floor(Date.now() / 1000);\n const asDecimal = parseInt(String(Math.floor(Math.random() * uniquesPerSecond)) + String(currentEpoch));\n const asHex = asDecimal.toString(radix);\n const out = blockSize > 0 ? StringRatchet.breakIntoBlocks(asHex, blockSize, '-') : asHex;\n return out;\n }\n static createType4Guid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n static createRandomHexString(len = 10) {\n let r = '';\n for (let i = 0; i < len; i++) {\n r += Math.floor(Math.random() * 16).toString(16);\n }\n return r;\n }\n static canonicalize(value) {\n let rval = value ? value.toLowerCase() : '';\n rval = rval.replace(' ', '-');\n StringRatchet.RFC_3986_RESERVED.forEach((s) => {\n rval = rval.replace(s, '');\n });\n return rval;\n }\n static formatBytes(bytes, decimals = 2) {\n if (bytes == 0)\n return '0 Bytes';\n const k = 1024, dm = decimals || 2, sizes = ['Bytes', '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 static safeString(input) {\n let rval = null;\n if (input != null) {\n const type = typeof input;\n if (type == 'string') {\n rval = input;\n }\n else {\n rval = String(input);\n }\n }\n return rval;\n }\n static stringContainsOnlyWhitespace(input) {\n return StringRatchet.stringContainsOnly(input, StringRatchet.WHITESPACE);\n }\n static stringContainsOnlyNumbers(input) {\n const rval = /^[0-9]+$/.test(input);\n return rval;\n }\n static stringContainsOnlyAlphanumeric(input) {\n const rval = /^[0-9a-zA-Z]+$/.test(input);\n return rval;\n }\n static stringContainsOnlyHex(input) {\n const rval = /^[0-9a-fA-F]+$/.test(input);\n return rval;\n }\n static stringContainsOnly(inVal, validCharsIn) {\n const input = !inVal ? '' : inVal;\n const validChars = !validCharsIn ? '' : validCharsIn;\n let rval = true;\n for (let i = 0; i < input.length && rval; i++) {\n rval = validChars.indexOf(input.charAt(i)) >= 0;\n }\n return rval;\n }\n static obscure(input, prefixLength = 2, suffixLength = 2) {\n if (!input) {\n return input;\n }\n const len = input.length;\n let pl = prefixLength;\n let sl = suffixLength;\n while (len > 0 && len < pl + sl + 1) {\n pl = Math.max(0, pl - 1);\n sl = Math.max(0, sl - 1);\n }\n const rem = len - (pl + sl);\n let rval = '';\n rval += input.substring(0, pl);\n for (let i = 0; i < rem; i++) {\n rval += '*';\n }\n rval += input.substring(len - sl);\n return rval;\n }\n static leadingZeros(inVal, size) {\n const pad = '00000000000000000000000000000000000000000000000000';\n let negative = false;\n let sVal = String(inVal);\n if (sVal.startsWith('-')) {\n negative = true;\n sVal = sVal.substring(1);\n }\n if (size > pad.length) {\n throw new Error('Cannot format number that large');\n }\n let rval = (pad + sVal).slice(-1 * size);\n if (negative) {\n rval = '-' + rval;\n }\n return rval;\n }\n static trimToEmpty(input) {\n const t = input ? StringRatchet.safeString(input) : '';\n return t.trim();\n }\n static trimToNull(input) {\n const x = StringRatchet.trimToEmpty(input);\n return x.length > 0 ? x : null;\n }\n static trimAllStringPropertiesToNullInPlace(input) {\n return StringRatchet.trimAllStringPropertiesInPlace(input, false);\n }\n static trimAllStringPropertiesToEmptyInPlace(input) {\n return StringRatchet.trimAllStringPropertiesInPlace(input, true);\n }\n static trimAllStringPropertiesInPlace(input, toEmpty) {\n const dealKeys = Object.keys(input);\n dealKeys.forEach((key) => {\n const val = input[key];\n if (val != null && typeof val === 'string') {\n input[key] = toEmpty ? StringRatchet.trimToEmpty(input[key]) : StringRatchet.trimToNull(input[key]);\n }\n });\n return input;\n }\n static stripNonNumeric(input) {\n let rval = input;\n if (input != null && !StringRatchet.stringContainsOnlyNumbers(input)) {\n rval = '';\n for (let i = 0; i < input.length; i++) {\n const c = input.charAt(i);\n if (StringRatchet.stringContainsOnlyNumbers(c) || (i === 0 && c === '-')) {\n rval += c;\n }\n }\n }\n return rval;\n }\n static csvSafe(input) {\n let rval = StringRatchet.trimToEmpty(StringRatchet.safeString(input));\n rval.split('\"').join('\\\\\"');\n if (rval.indexOf(',') !== -1 || rval.indexOf('\"') !== -1 || rval.indexOf(\"'\") !== -1) {\n rval = '\"' + rval + '\"';\n }\n return rval;\n }\n static stripNonAscii(value) {\n const reduced = [...value].reduce((previousValue, currentValue) => {\n const charCode = currentValue.charCodeAt(0);\n if (charCode > 127) {\n return previousValue;\n }\n return previousValue + currentValue;\n });\n return reduced;\n }\n static replaceAll(value, src, dst) {\n let rval = value;\n if (rval?.length && src?.length && dst?.length) {\n rval = rval.split(src).join(dst);\n }\n return rval;\n }\n static simpleTemplateFill(template, fillers, errorOnMissingFiller = false, opener = '${', closer = '}') {\n let rval = template;\n if (rval && fillers) {\n Object.keys(fillers).forEach((key) => {\n rval = rval.split(opener + key + closer).join(fillers[key]);\n });\n }\n if (errorOnMissingFiller && rval?.indexOf(opener) >= 0) {\n throw new Error('Template has unfilled variables:' + rval);\n }\n return rval;\n }\n static circSafeJsonStringify(input) {\n let rval = null;\n try {\n rval = JSON.stringify(input);\n }\n catch (err) {\n if (err instanceof TypeError) {\n let lines = err.message.split('\\n').map(s => StringRatchet.trimToNull(s)).filter(s => !!s);\n lines = lines.filter(s => s.startsWith('-->') || s.startsWith('---'));\n rval = 'Cannot stringify - object contains circular reference : ' + lines.join(', ');\n }\n else {\n throw err;\n }\n }\n return rval;\n }\n static format(fmt, ...args) {\n const re = /(%?)(%([ojds]))/g;\n if (args.length) {\n fmt = fmt.replace(re, function (match, escaped, ptn, flag) {\n let arg = args.shift();\n switch (flag) {\n case 'o':\n if (Array.isArray(arg)) {\n arg = StringRatchet.circSafeJsonStringify(arg);\n break;\n }\n else {\n throw new Error('Cannot use o placeholder for argument of type ' + typeof arg);\n }\n case 's':\n arg = '' + arg;\n break;\n case 'd':\n arg = Number(arg);\n break;\n case 'j':\n arg = StringRatchet.circSafeJsonStringify(arg);\n break;\n }\n if (!escaped) {\n return arg;\n }\n args.unshift(arg);\n return match;\n });\n }\n if (args.length) {\n fmt += ' ' + args.join(' ');\n }\n fmt = fmt.replace(/%{2,2}/g, '%');\n return '' + fmt;\n }\n}\n//# sourceMappingURL=string-ratchet.js.map","import { StringRatchet } from \"../lang/string-ratchet.js\";\nexport class ClassicSingleLineLogMessageFormatter {\n formatMessage(msg, meta) {\n let tmp = null;\n if (msg) {\n tmp = '';\n tmp += meta.options.trace ? meta.options.trace + ' ' : '';\n tmp += '[' + msg.lvl + '] ';\n tmp += StringRatchet.format(msg.messageSource, ...msg.subsVars);\n }\n return tmp;\n }\n}\n//# sourceMappingURL=classic-single-line-log-message-formatter.js.map","export class NoneLogMessageFormatter {\n formatMessage(_msg, _meta) {\n return null;\n }\n}\n//# sourceMappingURL=none-log-message-formatter.js.map","import { StringRatchet } from \"../lang/string-ratchet.js\";\nexport class StructuredJsonLogMessageFormatter {\n formatMessage(msg, meta) {\n let rval = null;\n if (msg) {\n const tmp = Object.assign({}, meta.options.globalVars || {}, msg.params || {});\n tmp['msg'] = StringRatchet.format(msg.messageSource, ...msg.subsVars);\n tmp['utcDateTime'] = new Date(msg.timestamp).toISOString();\n tmp['logLevel'] = msg.lvl;\n if (meta.options.trace) {\n tmp['trace'] = meta.options.trace;\n }\n tmp['logName'] = meta.loggerInstanceName;\n tmp['logId'] = meta.loggerInstanceId;\n rval = JSON.stringify(tmp) + '\\n';\n }\n return rval;\n }\n}\n//# sourceMappingURL=structured-json-log-message-formatter.js.map","import { LoggerRingBuffer } from './logger-ring-buffer.js';\nimport { LoggerLevelName } from './logger-level-name.js';\nimport { LoggerUtil } from './logger-util.js';\nimport { LogMessageFormatType } from './log-message-format-type.js';\nimport { ClassicSingleLineLogMessageFormatter } from './classic-single-line-log-message-formatter.js';\nimport { NoneLogMessageFormatter } from './none-log-message-formatter.js';\nimport { StructuredJsonLogMessageFormatter } from './structured-json-log-message-formatter.js';\nimport { StringRatchet } from '../lang/string-ratchet.js';\nexport class LoggerInstance {\n loggerInstanceName;\n _guid = Math.floor(Math.random() * 1_000_000);\n _loggerMeta;\n _ringBuffer;\n _formatter;\n _level;\n _handlerFunctionMap;\n _options;\n constructor(loggerInstanceName = 'default', inOptions) {\n this.loggerInstanceName = loggerInstanceName;\n this.options = inOptions;\n }\n levelIsEnabled(level) {\n return LoggerUtil.levelIsEnabled(level, this._level);\n }\n addPreProcessor(proc) {\n if (proc) {\n this._options.preProcessors = this._options.preProcessors || [];\n this._options.preProcessors.push(proc);\n }\n return Object.assign([], this._options.preProcessors);\n }\n get ringBuffer() {\n return this._ringBuffer;\n }\n dumpConfigurationIntoLog() {\n this.error('ERROR enabled');\n this.warn('WARN enabled');\n this.info('INFO enabled');\n this.verbose('VERBOSE enabled');\n this.debug('DEBUG enabled');\n this.silly('SILLY enabled');\n }\n dumpOptionsIntoLog() {\n this.info('Guid: %s Options: %j', this._guid, this.options);\n if (this?.options?.preProcessors?.length) {\n const labels = this.options.preProcessors.map((p) => StringRatchet.trimToNull(p.label()) || 'Unlabelled');\n this.info('Preprocessors: %j', labels);\n }\n }\n get guid() {\n return this._guid;\n }\n changeRingBufferSize(newSize) {\n this._ringBuffer = null;\n if (newSize) {\n this._ringBuffer = new LoggerRingBuffer(newSize);\n this._options.ringBufferSize = newSize;\n }\n }\n updateTracePrefix(newValue) {\n this._options.trace = newValue;\n }\n get options() {\n return Object.assign({}, this._options);\n }\n set options(newOpts) {\n this._options = Object.assign({}, newOpts);\n if (this._options.ringBufferSize) {\n this._ringBuffer = new LoggerRingBuffer(this._options.ringBufferSize);\n }\n switch (this._options.formatType) {\n case LogMessageFormatType.None:\n this._formatter = new NoneLogMessageFormatter();\n break;\n case LogMessageFormatType.StructuredJson:\n this._formatter = new StructuredJsonLogMessageFormatter();\n break;\n default:\n this._formatter = new ClassicSingleLineLogMessageFormatter();\n break;\n }\n this._level = this._options.initialLevel;\n this._handlerFunctionMap = LoggerUtil.handlerFunctionMap(this._options.outputFunction);\n const oldId = this._loggerMeta ? this._loggerMeta.loggerInstanceId : null;\n this._loggerMeta = {\n options: this._options,\n loggerInstanceName: this.loggerInstanceName,\n loggerInstanceId: oldId || StringRatchet.createRandomHexString(8),\n };\n }\n get level() {\n return this._level;\n }\n set level(newLevel) {\n if (!newLevel) {\n throw new Error('Cannot set level to null/undefined');\n }\n this._level = newLevel;\n }\n consoleLogPassThru(level, ...input) {\n if (LoggerUtil.levelIsEnabled(level, this._level)) {\n let passThruPrefix = this._options.trace || '';\n passThruPrefix += '[' + level + '] ';\n input.unshift(passThruPrefix);\n const fn = this._handlerFunctionMap.get(level) || LoggerUtil.defaultHandlerFunction;\n fn(...input);\n }\n }\n createLogMessage(level, params, format, ...input) {\n const rval = {\n lvl: level,\n timestamp: Date.now(),\n messageSource: format,\n subsVars: input,\n params: params,\n };\n return rval;\n }\n formatMessage(msg) {\n const rval = msg ? this._formatter.formatMessage(msg, this._loggerMeta) : null;\n return rval;\n }\n formatMessages(msgs) {\n const rval = (msgs || []).map((m) => this.formatMessage(m)).filter((m) => !!m);\n return rval;\n }\n recordMessageBuilder(msgBuild) {\n return this.recordMessage(msgBuild.toMessage());\n }\n recordMessage(inMsg) {\n let rval = null;\n if (LoggerUtil.levelIsEnabled(inMsg.lvl, this._level)) {\n let msg = Object.assign({}, inMsg);\n if (this._options.preProcessors?.length) {\n for (const proc of this._options.preProcessors) {\n msg = proc.process(msg);\n }\n }\n rval = this.formatMessage(msg);\n if (rval) {\n const fn = this._handlerFunctionMap.get(msg.lvl) || LoggerUtil.defaultHandlerFunction;\n fn(rval);\n if (this._ringBuffer) {\n this._ringBuffer.addToRingBuffer(msg);\n }\n }\n }\n else {\n }\n return rval;\n }\n error(format, ...input) {\n const msg = this.createLogMessage(LoggerLevelName.error, {}, format, ...input);\n return this.recordMessage(msg);\n }\n errorP(...input) {\n this.consoleLogPassThru(LoggerLevelName.error, ...input);\n }\n warn(format, ...input) {\n const msg = this.createLogMessage(LoggerLevelName.warn, {}, format, ...input);\n return this.recordMessage(msg);\n }\n warnP(...input) {\n this.consoleLogPassThru(LoggerLevelName.warn, ...input);\n }\n info(format, ...input) {\n const msg = this.createLogMessage(LoggerLevelName.info, {}, format, ...input);\n return this.recordMessage(msg);\n }\n infoP(...input) {\n this.consoleLogPassThru(LoggerLevelName.info, ...input);\n }\n verbose(format, ...input) {\n const msg = this.createLogMessage(LoggerLevelName.verbose, {}, format, ...input);\n return this.recordMessage(msg);\n }\n verboseP(...input) {\n this.consoleLogPassThru(LoggerLevelName.verbose, ...input);\n }\n debug(format, ...input) {\n const msg = this.createLogMessage(LoggerLevelName.debug, {}, format, ...input);\n return this.recordMessage(msg);\n }\n debugP(...input) {\n this.consoleLogPassThru(LoggerLevelName.debug, ...input);\n }\n silly(format, ...input) {\n const msg = this.createLogMessage(LoggerLevelName.silly, {}, format, ...input);\n return this.recordMessage(msg);\n }\n sillyP(...input) {\n this.consoleLogPassThru(LoggerLevelName.silly, ...input);\n }\n logByLevel(level, format, ...input) {\n const msg = this.createLogMessage(level, {}, format, ...input);\n this.recordMessage(msg);\n }\n importMessages(msgs, prefixIn = '', addTimestamp = true) {\n const prefix = prefixIn || '';\n if (msgs && msgs.length > 0) {\n this.silly('Received import data : %d msgs', msgs.length);\n msgs.forEach((m) => {\n if (m.messageSource) {\n let mOut = prefix;\n if (addTimestamp) {\n const ts = String(new Date()).substring(15, 24);\n mOut += ' (' + ts + ') : ';\n mOut += m.messageSource;\n }\n this.logByLevel(m.lvl, mOut);\n }\n });\n }\n }\n}\n//# sourceMappingURL=logger-instance.js.map","import { LoggerInstance } from './logger-instance.js';\nimport { LogMessageFormatType } from './log-message-format-type.js';\nimport { LoggerLevelName } from './logger-level-name.js';\nimport { LoggerOutputFunction } from './logger-output-function.js';\nexport class Logger {\n static LOGGER_INSTANCE_MAP_GLOBAL_KEY = 'RATCHET_GLOBAL_LOGGER_MAP_V01';\n static GLOBAL_PROVIDER = process || global || window;\n static DEFAULT_OPTIONS = {\n initialLevel: LoggerLevelName.info,\n formatType: LogMessageFormatType.ClassicSingleLine,\n trace: null,\n globalVars: {},\n outputFunction: LoggerOutputFunction.Console,\n ringBufferSize: 0,\n preProcessors: [],\n };\n static applyDefaultsToOptions(input) {\n const rval = input || {};\n rval.initialLevel = rval.initialLevel ?? Logger.DEFAULT_OPTIONS.initialLevel;\n rval.formatType = rval.formatType ?? Logger.DEFAULT_OPTIONS.formatType;\n rval.trace = rval.trace ?? Logger.DEFAULT_OPTIONS.trace;\n rval.globalVars = rval.globalVars ?? Logger.DEFAULT_OPTIONS.globalVars;\n rval.outputFunction = rval.outputFunction ?? Logger.DEFAULT_OPTIONS.outputFunction;\n rval.ringBufferSize = rval.ringBufferSize ?? Logger.DEFAULT_OPTIONS.ringBufferSize;\n return rval;\n }\n static loggerInstances() {\n if (!Logger.GLOBAL_PROVIDER) {\n throw new Error('Cannot create logger - could not find a global provider');\n }\n let rval = Logger.GLOBAL_PROVIDER[Logger.LOGGER_INSTANCE_MAP_GLOBAL_KEY];\n if (!rval) {\n rval = new Map();\n Logger.GLOBAL_PROVIDER[Logger.LOGGER_INSTANCE_MAP_GLOBAL_KEY] = rval;\n }\n return rval;\n }\n static changeDefaultOptions(input, retroactive) {\n if (!input || !input.initialLevel || !input.formatType) {\n throw new Error('Default options must be non-null, and provide initial level and format type');\n }\n Logger.DEFAULT_OPTIONS = Object.assign({}, input);\n if (retroactive) {\n Array.from(Logger.loggerInstances().values()).forEach((li) => (li.options = input));\n }\n }\n static getLogger(loggerName = 'default', inOptions) {\n let inst = Logger.loggerInstances().get(loggerName);\n if (!inst) {\n const options = Logger.applyDefaultsToOptions(inOptions);\n inst = new LoggerInstance(loggerName, options);\n Logger.loggerInstances().set(loggerName, inst);\n }\n return inst;\n }\n static recordMessageBuilder(msgBuild) {\n return Logger.getLogger().recordMessageBuilder(msgBuild);\n }\n static levelIsEnabled(level) {\n return Logger.getLogger().levelIsEnabled(level);\n }\n static recordMessage(msg) {\n return Logger.getLogger().recordMessage(msg);\n }\n static formatMessages(msgs) {\n return Logger.getLogger().formatMessages(msgs);\n }\n static updateTracePrefix(newValue) {\n return Logger.getLogger().updateTracePrefix(newValue);\n }\n static changeRingBufferSize(newValue) {\n return Logger.getLogger().changeRingBufferSize(newValue);\n }\n static getRingBuffer() {\n return Logger.getLogger().ringBuffer;\n }\n static dumpConfigurationIntoLog() {\n return Logger.getLogger().dumpConfigurationIntoLog();\n }\n static dumpOptionsIntoLog() {\n return Logger.getLogger().dumpOptionsIntoLog();\n }\n static getLevel() {\n return Logger.getLogger().level;\n }\n static setLevel(newLevel) {\n Logger.getLogger().level = newLevel;\n }\n static getOptions() {\n return Logger.getLogger().options;\n }\n static getMessages(inStartFrom = null, clear = false, reverseSort = false) {\n const buf = Logger.getLogger().ringBuffer;\n return buf ? buf.getMessages(inStartFrom, clear, reverseSort) : null;\n }\n static consoleLogPassThru(level, ...input) {\n return Logger.getLogger().consoleLogPassThru(level, ...input);\n }\n static error(format, ...input) {\n return Logger.getLogger().error(format, ...input);\n }\n static errorP(...input) {\n return Logger.getLogger().errorP(...input);\n }\n static warn(format, ...input) {\n return Logger.getLogger().warn(format, ...input);\n }\n static warnP(...input) {\n return Logger.getLogger().warnP(...input);\n }\n static info(format, ...input) {\n return Logger.getLogger().info(format, ...input);\n }\n static infoP(...input) {\n return Logger.getLogger().infoP(...input);\n }\n static verbose(format, ...input) {\n return Logger.getLogger().verbose(format, ...input);\n }\n static verboseP(...input) {\n return Logger.getLogger().verboseP(...input);\n }\n static debug(format, ...input) {\n return Logger.getLogger().debug(format, ...input);\n }\n static debugP(...input) {\n return Logger.getLogger().debugP(...input);\n }\n static silly(format, ...input) {\n return Logger.getLogger().silly(format, ...input);\n }\n static sillyP(...input) {\n return Logger.getLogger().sillyP(...input);\n }\n static takeSnapshot() {\n const buf = Logger.getLogger().ringBuffer;\n return buf ? buf.takeSnapshot() : null;\n }\n static logByLevel(level, format, ...input) {\n return Logger.getLogger().logByLevel(level, format, ...input);\n }\n static importMessages(msgs, prefixIn = '', addTimestamp = true) {\n return Logger.getLogger().importMessages(msgs, prefixIn, addTimestamp);\n }\n static getLastLogMessage() {\n const buf = Logger.getLogger().ringBuffer;\n return buf ? buf.getLastLogMessage() : null;\n }\n}\n//# sourceMappingURL=logger.js.map","import {Component} from '@angular/core';\nimport {DialogService, DynamicDialogConfig, DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {Logger} from '@bitblit/ratchet-common/logger/logger';\nimport {BehaviorSubject} from 'rxjs';\nimport {AsyncPipe} from \"@angular/common\";\n\n@Component({\n selector: 'ngx-acute-common-alert',\n template: '<div><pre>{{cfg.data.message | async}}</pre></div>',\n standalone: true,\n imports: [AsyncPipe]\n})\nexport class AlertComponent {\n constructor(\n private dialogService: DialogService,\n public cfg: DynamicDialogConfig,\n protected ref: DynamicDialogRef,\n ) {\n Logger.info('Creating with %j', this.cfg);\n }\n\n public static showAlert(dialogSvc: DialogService, message: BehaviorSubject<string> | string, title: string = 'Alert'): DynamicDialogRef {\n const dlg: DynamicDialogRef = dialogSvc.open(AlertComponent, {\n //disableClose: true,\n //autoFocus: true,\n data: {\n message: message instanceof BehaviorSubject ? message : new BehaviorSubject<string>(message),\n },\n header: title,\n });\n return dlg;\n }\n}\n","import { BuildInformation } from '@bitblit/ratchet-common/build/build-information';\n\nexport class NgxAcuteCommonInfo {\n // Empty constructor prevents instantiation\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private constructor() {}\n\n public static buildInformation(): BuildInformation {\n const val: BuildInformation = {\n version: 'LOCAL-SNAPSHOT',\n hash: 'LOCAL-HASH',\n branch: 'LOCAL-BRANCH',\n tag: 'LOCAL-TAG',\n timeBuiltISO: 'LOCAL-TIME-ISO',\n notes: 'LOCAL-NOTES',\n };\n return val;\n }\n}\n"],"names":["AnimationMetadataType","DomHandler","static","addClass","element","className","classList","add","addMultipleClasses","styles","trim","split","i","length","removeClass","remove","replace","RegExp","join","removeMultipleClasses","classNames","flat","filter","Boolean","forEach","cNames","this","hasClass","contains","test","siblings","Array","prototype","call","parentNode","children","child","find","selector","from","querySelectorAll","findSingle","isElement","querySelector","index","childNodes","num","nodeType","indexWithinGroup","attributeName","attributes","appendOverlay","overlay","target","appendTo","appendChild","alignOverlay","calculateMinWidth","style","minWidth","getOuterWidth","relativePosition","absolutePosition","gutter","getClosestRelativeElement","el","getComputedStyle","getPropertyValue","parentElement","elementDimensions","offsetParent","width","offsetWidth","height","offsetHeight","getHiddenElementDimensions","targetHeight","getBoundingClientRect","targetOffset","windowScrollTop","getWindowScrollTop","windowScrollLeft","getWindowScrollLeft","viewport","getViewport","relativeElement","relativeElementOffset","top","left","transformOrigin","horizontalOverflow","targetLeftOffsetInSpaceOfRelativeElement","marginTop","origin","elementOuterHeight","elementOuterWidth","targetOuterHeight","targetOuterWidth","Math","max","getParents","parents","concat","getScrollableParents","scrollableParents","overflowRegex","overflowCheck","node","styleDeclaration","window","parent","scrollSelectors","dataset","selectors","push","getHiddenElementOuterHeight","visibility","display","elementHeight","getHiddenElementOuterWidth","elementWidth","dimensions","scrollInView","container","item","borderTopValue","borderTop","parseFloat","paddingTopValue","paddingTop","containerRect","offset","document","body","scrollTop","scroll","clientHeight","itemHeight","getOuterHeight","fadeIn","duration","opacity","last","Date","tick","getTime","requestAnimationFrame","setTimeout","fadeOut","ms","gap","fading","setInterval","clearInterval","doc","documentElement","pageYOffset","clientTop","pageXOffset","scrollLeft","clientLeft","matches","p","Element","webkitMatchesSelector","s","indexOf","margin","marginLeft","marginRight","getHorizontalPadding","paddingLeft","paddingRight","getHorizontalMargin","innerWidth","getInnerHeight","paddingBottom","marginBottom","getHeight","borderTopWidth","borderBottomWidth","getWidth","borderLeftWidth","borderRightWidth","win","d","e","g","getElementsByTagName","clientWidth","innerHeight","getOffset","rect","replaceElementWith","replacementElement","replaceChild","getUserAgent","navigator","isClient","userAgent","isIE","ua","isIOS","isAndroid","isTouchDevice","maxTouchPoints","nativeElement","removeChild","removeElement","obj","HTMLElement","nodeName","calculateScrollbarWidth","calculatedScrollbarWidth","scrollDiv","createElement","scrollbarWidth","calculateScrollbarHeight","calculatedScrollbarHeight","scrollbarHeight","invokeElementMethod","methodName","args","apply","clearSelection","getSelection","empty","removeAllRanges","rangeCount","getRangeAt","getClientRects","error","getBrowser","browser","matched","resolveUserAgent","version","toLowerCase","match","exec","isInteger","value","Number","isFinite","floor","isHidden","isVisible","isExist","focus","options","activeElement","getFocusableSelectorString","getFocusableElements","focusableElements","visibleFocusableElements","focusableElement","computedStyle","getFocusableElement","getFirstFocusableElement","getLastFocusableElement","getNextFocusableElement","reverse","focusedIndex","ownerDocument","generateZIndex","zindex","toString","createRange","text","getTargetElement","nextElementSibling","previousElementSibling","type","hasOwnProperty","undefined","constructor","isFunction","getAttribute","name","isNaN","calculateBodyScrollbarWidth","blockBodyScroll","setProperty","unblockBodyScroll","removeProperty","setAttributes","append","setAttribute","attribute","computedStyles","rule","$attrs","reduce","cv","v","_cv","isArray","Object","entries","map","_k","_v","c","key","matchedEvent","addEventListener","Set","isFocusableElement","trigger","definitions","Trigger","animate","timings","Animate","tokens","Style","transition","stateChangeExpr","steps","Transition","expr","animation","Reference","useAnimation","AnimateRef","AnimationBuilder","i0","minVersion","ngImport","deps","Injectable","providedIn","useFactory","inject","BrowserAnimationBuilder","i0__namespace","decorators","AnimationFactory","rootRenderer","super","animationModuleType","ANIMATION_MODULE_TYPE","optional","_nextAnimationId","typeData","id","encapsulation","ViewEncapsulation","None","data","_renderer","createRenderer","renderer","isAnimationRenderer","ɵRuntimeError","ngDevMode","build","entry","Sequence","sequence","issueAnimationCommand","BrowserAnimationFactory","token","RendererFactory2","DOCUMENT","ctorParameters","Document","Inject","_id","create","RendererAnimationPlayer","parentPlayer","_started","totalTime","_command","_listen","eventName","callback","listen","command","onDone","fn","onStart","onDestroy","init","hasStarted","play","pause","restart","finish","destroy","reset","setPosition","getPosition","animationRenderer","unwrapAnimationRenderer","engine","players","ObjectUtils","isObject","keys","equals","obj1","obj2","field","resolveFieldData","equalsByValue","arrA","arrB","dateA","isDate","dateB","regexpA","regexpB","fields","len","reorderArray","to","splice","insertIntoOrderedArray","arr","sourceArr","injected","findIndexInList","list","val","removeAccents","str","normalize","input","isEmpty","isNotEmpty","compare","value1","value2","locale","order","result","emptyValue1","emptyValue2","localeCompare","numeric","sort","nullSortOrder","finalSortOrder","merge","isPrintableCharacter","char","getItemValue","params","findLastIndex","lastIndexOf","findLast","deepEquals","a","b","lastId","UniqueComponentId","prefix","ConfirmEventType","zindexutils","zIndexes","getZIndex","parseInt","zIndex","get","set","baseZIndex","String","lastZIndex","newZIndex","clear","getCurrent","ZIndexUtils","ConfirmationService","requireConfirmationSource","Subject","acceptConfirmationSource","requireConfirmation$","asObservable","accept","confirm","confirmation","next","close","onAccept","ContextMenuService","activeItemKeyChange","activeItemKeyChange$","activeItemKey","changeKey","FilterMatchMode","FilterService","filterValue","filterMatchMode","filterLocale","filteredItems","fieldValue","filters","startsWith","toLocaleLowerCase","slice","notContains","endsWith","stringValue","notEquals","in","between","lt","lte","gt","gte","is","isNot","before","after","dateIs","toDateString","dateIsNot","dateBefore","dateAfter","valueCopy","setHours","register","MessageService","messageSource","clearSource","messageObserver","clearObserver","message","addAll","messages","OverlayService","clickSource","clickObservable","event","PrimeNGConfig","ripple","inputStyle","signal","overlayOptions","csp","nonce","filterMatchModeOptions","STARTS_WITH","CONTAINS","NOT_CONTAINS","ENDS_WITH","EQUALS","NOT_EQUALS","LESS_THAN","LESS_THAN_OR_EQUAL_TO","GREATER_THAN","GREATER_THAN_OR_EQUAL_TO","date","DATE_IS","DATE_IS_NOT","DATE_BEFORE","DATE_AFTER","translation","noFilter","matchAll","matchAny","addRule","removeRule","reject","choose","upload","cancel","pending","fileSizeTypes","dayNames","dayNamesShort","dayNamesMin","monthNames","monthNamesShort","chooseYear","chooseMonth","chooseDate","prevDecade","nextDecade","prevYear","nextYear","prevMonth","nextMonth","prevHour","nextHour","prevMinute","nextMinute","prevSecond","nextSecond","am","pm","dateFormat","firstDayOfWeek","today","weekHeader","weak","medium","strong","passwordPrompt","emptyMessage","searchMessage","selectionMessage","emptySelectionMessage","emptySearchMessage","emptyFilterMessage","aria","trueLabel","falseLabel","nullLabel","star","stars","selectAll","unselectAll","previous","navigation","moveTop","moveUp","moveDown","moveBottom","moveToTarget","moveToSource","moveAllToTarget","moveAllToSource","pageLabel","firstPageLabel","lastPageLabel","nextPageLabel","prevPageLabel","rowsPerPageLabel","previousPageLabel","jumpToPageDropdownLabel","jumpToPageInputLabel","selectRow","unselectRow","expandRow","collapseRow","showFilterMenu","hideFilterMenu","filterOperator","filterConstraint","editRow","saveEdit","cancelEdit","listView","gridView","slide","slideNumber","zoomImage","zoomIn","zoomOut","rotateRight","rotateLeft","listLabel","selectColor","removeLabel","browseFiles","maximizeLabel","modal","menu","tooltip","translationSource","translationObserver","getTranslation","setTranslation","Header","Component","isStandalone","template","isInline","standalone","Footer","PrimeTemplate","getType","TemplateRef","Directive","inputs","host","propDecorators","Input","SharedModule","NgModule","imports","exports","TranslationKeys","TreeDragDropService","dragStartSource","dragStopSource","dragStart$","dragStop$","startDrag","stopDrag","FocusTrap","pFocusTrapDisabled","platformId","PLATFORM_ID","ElementRef","firstHiddenFocusableElement","lastHiddenFocusableElement","ngOnInit","isPlatformBrowser","createHiddenFocusableElements","ngOnChanges","changes","currentValue","removeHiddenFocusableElements","getComputedSelector","createFocusableElement","onFocus","class","tabindex","role","bind","onFirstHiddenElementFocus","onLastHiddenElementFocus","prepend","currentTarget","relatedTarget","booleanAttribute","classAttribute","usesOnChanges","transform","FocusTrapModule","declarations","CommonModule","BaseIcon","label","spin","styleClass","ariaLabel","ariaHidden","getAttributes","isLabelEmpty","getClassNames","changeDetection","ChangeDetectionStrategy","OnPush","TimesIcon","usesInheritance","WindowMaximizeIcon","pathId","WindowMinimizeIcon","DynamicDialogContent","viewContainerRef","ViewContainerRef","DynamicDialogConfig","header","ariaLabelledBy","footer","closeOnEscape","focusOnShow","focusOnClose","focusTrap","autoZIndex","dismissableMask","rtl","contentStyle","transitionOptions","closable","showHeader","maskStyleClass","resizable","draggable","keepInViewport","minX","minY","maximizable","maximizeIcon","minimizeIcon","position","closeAriaLabel","duplicate","breakpoints","templates","DynamicDialogRef","_onClose","complete","_onDestroy","dragStart","_onDragStart","dragEnd","_onDragEnd","resizeInit","_onResizeInit","resizeEnd","_onResizeEnd","maximize","_onMaximize","onClose","onDragStart","onDragEnd","onResizeInit","onResizeEnd","onMaximize","onChildComponentLoaded","showAnimation","hideAnimation","DynamicDialogComponent","cd","config","dialogRef","zone","primeNGConfig","parentDialog","visible","componentRef","mask","resizing","dragging","maximized","_style","originalStyle","lastPageX","lastPageY","styleElement","insertionPoint","maskViewChild","contentViewChild","footerViewChild","headerViewChild","childComponentType","wrapper","documentKeydownListener","documentEscapeListener","maskClickListener","transformOptions","documentResizeListener","documentResizeEndListener","documentDragListener","documentDragEndListener","ARIA","domElements","getElementsByClassName","pop","parentContent","contentElements","footerTemplate","headerTemplate","contentTemplate","content","minimizeIconTemplate","minimizeicon","maximizeIconTemplate","maximizeicon","closeIconTemplate","closeicon","dynamicDialogCount","dynamicDialogs","containerStyle","createStyle","head","innerHTML","breakpoint","destroyStyle","ngAfterViewInit","loadChildComponent","getAriaLabelledBy","detectChanges","componentType","createComponent","instance","moveOnTop","onAnimationStart","toState","unbindGlobalListeners","bindGlobalListeners","enableModality","onAnimationEnd","onContainerDestroy","disableModality","markForCheck","hide","isSameNode","unbindMaskClickListener","destroyed","focusParentElement","focusable","runOutsideAngular","initResize","bindDocumentResizeListeners","pageX","pageY","onResize","deltaX","deltaY","containerWidth","containerHeight","contentHeight","newWidth","newHeight","minHeight","initDrag","onDrag","leftPos","topPos","endDrag","resetPosition","bindDocumentDragListener","bindDocumentDragEndListener","unbindDocumentDragEndListener","unbindDocumentDragListener","unbindDocumentResizeListeners","bindDocumentEscapeListener","unbindDocumentEscapeListener","documentTarget","which","ngOnDestroy","ChangeDetectorRef","Renderer2","NgZone","i3.PrimeNGConfig","skipSelf","viewQueries","propertyName","first","predicate","descendants","dependencies","kind","forwardRef","i4","NgClass","NgComponentOutlet","NgIf","NgStyle","i5.FocusTrap","animations","Default","SkipSelf","Optional","ViewChild","DynamicDialogModule","DynamicDialogInjector","_parentInjector","_additionalTokens","notFoundValue","DialogService","appRef","injector","dialogComponentRefMap","Map","open","duplicationPermission","appendDialogComponentToBody","getInstance","ref","WeakMap","sub","subscribe","destroySub","removeDialogComponentFromBody","unsubscribe","environmentInjector","elementInjector","attachView","hostView","domElem","rootNodes","has","dialogComponentRef","detachView","delete","permission","ApplicationRef","Injector","LoggerLevelName","LoggerRingBuffer","_lastLogMessage","timestamp","lvl","_buffer","_bufferIdx","_lastSnapshotIdx","_bufferSize","size","Error","currentIndex","lastSnapshotIdx","bufferSize","newSize","clearRingBuffer","getMessages","inStartFrom","reverseSort","rval","start","firstIdx","takeSnapshot","trailingEdge","logMessagesTruncated","getLastLogMessage","assign","addToRingBuffer","newMsg","LoggerOutputFunction","LoggerUtil","handlerFunctionMap","outputFn","output","process","stdout","write","myStdOut","chunk","cb","console","warn","info","log","debug","defaultHandlerFunction","levelIsEnabled","targetLevel","currentEnabled","idxTarget","LOG_LEVELS_IN_ORDER","LogMessageFormatType","RequireRatchet","isNullOrUndefined","ob","notNullOrUndefined","notNullUndefinedOrOnlyWhitespaceString","notNullUndefinedOrEmptyArray","equal","ob1","ob2","noNullOrUndefinedValuesInArray","expectedLength","customMsg","noNullOrUndefinedValuesInRestArgs","restArgs","constructorArgumentsMatchLengthAndAreNonNull","arguments","StringRatchet","DIGITS","UPPER_CASE_LATIN","LOWER_CASE_LATIN","stringIsInGivenAlphabet","alphabet","includes","charAt","stringToUint8Array","TextEncoder","encode","uint8ArrayToString","TextDecoder","decode","attemptJsonParse","trimToNull","JSON","parse","canParseAsJson","allUnique","check","allPermutationsOfLength","true","step","breakIntoBlocks","blockSize","separator","out","substring","createShortUid","uniquesPerSecond","radix","currentEpoch","now","asHex","random","createType4Guid","r","createRandomHexString","canonicalize","RFC_3986_RESERVED","formatBytes","bytes","decimals","dm","pow","toFixed","safeString","stringContainsOnlyWhitespace","stringContainsOnly","WHITESPACE","stringContainsOnlyNumbers","stringContainsOnlyAlphanumeric","stringContainsOnlyHex","inVal","validCharsIn","validChars","obscure","prefixLength","suffixLength","pl","sl","rem","leadingZeros","pad","negative","sVal","trimToEmpty","x","trimAllStringPropertiesToNullInPlace","trimAllStringPropertiesInPlace","trimAllStringPropertiesToEmptyInPlace","toEmpty","stripNonNumeric","csvSafe","stripNonAscii","previousValue","charCodeAt","replaceAll","src","dst","simpleTemplateFill","fillers","errorOnMissingFiller","opener","closer","circSafeJsonStringify","stringify","err","TypeError","lines","format","fmt","re","escaped","ptn","flag","arg","shift","unshift","ClassicSingleLineLogMessageFormatter","formatMessage","msg","meta","tmp","trace","subsVars","NoneLogMessageFormatter","_msg","_meta","StructuredJsonLogMessageFormatter","globalVars","toISOString","loggerInstanceName","loggerInstanceId","LoggerInstance","_guid","_loggerMeta","_ringBuffer","_formatter","_level","_handlerFunctionMap","_options","inOptions","level","addPreProcessor","proc","preProcessors","ringBuffer","dumpConfigurationIntoLog","verbose","silly","dumpOptionsIntoLog","labels","guid","changeRingBufferSize","ringBufferSize","updateTracePrefix","newValue","newOpts","formatType","initialLevel","outputFunction","oldId","newLevel","consoleLogPassThru","passThruPrefix","createLogMessage","formatMessages","msgs","m","recordMessageBuilder","msgBuild","recordMessage","toMessage","inMsg","errorP","warnP","infoP","verboseP","debugP","sillyP","logByLevel","importMessages","prefixIn","addTimestamp","mOut","Logger","global","applyDefaultsToOptions","DEFAULT_OPTIONS","loggerInstances","GLOBAL_PROVIDER","LOGGER_INSTANCE_MAP_GLOBAL_KEY","changeDefaultOptions","retroactive","values","li","getLogger","loggerName","inst","getRingBuffer","getLevel","setLevel","getOptions","buf","AlertComponent","AlertComponent_1","dialogService","cfg","showAlert","dialogSvc","title","BehaviorSubject","__decorate","AsyncPipe","buildInformation","hash","branch","tag","timeBuiltISO","notes"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}