{"version":3,"sources":["node_modules/@angular/material/fesm2022/snack-bar.mjs","libs/galaxy/snackbar-service/src/snackbar.service.ts","libs/galaxy/snackbar-service/src/snackbar.module.ts"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, inject, ViewChild, Injector, TemplateRef, Injectable, Optional, SkipSelf, NgModule } from '@angular/core';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\nimport { Subject } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport * as i1 from '@angular/cdk/platform';\nimport * as i2 from '@angular/cdk/a11y';\nimport * as i3 from '@angular/cdk/layout';\nimport { Breakpoints } from '@angular/cdk/layout';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { takeUntil } from 'rxjs/operators';\nimport { MatCommonModule } from '@angular/material/core';\n\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nfunction SimpleSnackBar_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 1)(1, \"button\", 2);\n i0.ɵɵlistener(\"click\", function SimpleSnackBar_Conditional_2_Template_button_click_1_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.action());\n });\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.data.action, \" \");\n }\n}\nconst _c0 = [\"label\"];\nfunction MatSnackBarContainer_ng_template_4_Template(rf, ctx) {}\nconst MAX_TIMEOUT = /*#__PURE__*/Math.pow(2, 31) - 1;\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nclass MatSnackBarRef {\n constructor(containerInstance, _overlayRef) {\n this._overlayRef = _overlayRef;\n /** Subject for notifying the user that the snack bar has been dismissed. */\n this._afterDismissed = new Subject();\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n this._afterOpened = new Subject();\n /** Subject for notifying the user that the snack bar action was called. */\n this._onAction = new Subject();\n /** Whether the snack bar was dismissed using the action button. */\n this._dismissedByAction = false;\n this.containerInstance = containerInstance;\n containerInstance._onExit.subscribe(() => this._finishDismiss());\n }\n /** Dismisses the snack bar. */\n dismiss() {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /** Marks the snackbar action clicked. */\n dismissWithAction() {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n this.dismiss();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n closeWithAction() {\n this.dismissWithAction();\n }\n /** Dismisses the snack bar after some duration */\n _dismissAfter(duration) {\n // Note that we need to cap the duration to the maximum value for setTimeout, because\n // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\n this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n /** Marks the snackbar as opened */\n _open() {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n /** Cleans up the DOM after closing. */\n _finishDismiss() {\n this._overlayRef.dispose();\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n this._afterDismissed.next({\n dismissedByAction: this._dismissedByAction\n });\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n }\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed() {\n return this._afterDismissed;\n }\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened() {\n return this.containerInstance._onEnter;\n }\n /** Gets an observable that is notified when the snack bar action is called. */\n onAction() {\n return this._onAction;\n }\n}\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nconst MAT_SNACK_BAR_DATA = /*#__PURE__*/new InjectionToken('MatSnackBarData');\n/**\n * Configuration used when opening a snack-bar.\n */\nclass MatSnackBarConfig {\n constructor() {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n this.politeness = 'assertive';\n /**\n * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n * component or template, the announcement message will default to the specified message.\n */\n this.announcementMessage = '';\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n this.duration = 0;\n /** Data being injected into the child component. */\n this.data = null;\n /** The horizontal position to place the snack bar. */\n this.horizontalPosition = 'center';\n /** The vertical position to place the snack bar. */\n this.verticalPosition = 'bottom';\n }\n}\n\n/** Directive that should be applied to the text element to be rendered in the snack bar. */\nlet MatSnackBarLabel = /*#__PURE__*/(() => {\n class MatSnackBarLabel {\n static {\n this.ɵfac = function MatSnackBarLabel_Factory(t) {\n return new (t || MatSnackBarLabel)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarLabel,\n selectors: [[\"\", \"matSnackBarLabel\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-label\", \"mdc-snackbar__label\"],\n standalone: true\n });\n }\n }\n return MatSnackBarLabel;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Directive that should be applied to the element containing the snack bar's action buttons. */\nlet MatSnackBarActions = /*#__PURE__*/(() => {\n class MatSnackBarActions {\n static {\n this.ɵfac = function MatSnackBarActions_Factory(t) {\n return new (t || MatSnackBarActions)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarActions,\n selectors: [[\"\", \"matSnackBarActions\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-actions\", \"mdc-snackbar__actions\"],\n standalone: true\n });\n }\n }\n return MatSnackBarActions;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Directive that should be applied to each of the snack bar's action buttons. */\nlet MatSnackBarAction = /*#__PURE__*/(() => {\n class MatSnackBarAction {\n static {\n this.ɵfac = function MatSnackBarAction_Factory(t) {\n return new (t || MatSnackBarAction)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarAction,\n selectors: [[\"\", \"matSnackBarAction\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-action\", \"mdc-snackbar__action\"],\n standalone: true\n });\n }\n }\n return MatSnackBarAction;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SimpleSnackBar = /*#__PURE__*/(() => {\n class SimpleSnackBar {\n constructor(snackBarRef, data) {\n this.snackBarRef = snackBarRef;\n this.data = data;\n }\n /** Performs the action on the snack bar. */\n action() {\n this.snackBarRef.dismissWithAction();\n }\n /** If the action button should be shown. */\n get hasAction() {\n return !!this.data.action;\n }\n static {\n this.ɵfac = function SimpleSnackBar_Factory(t) {\n return new (t || SimpleSnackBar)(i0.ɵɵdirectiveInject(MatSnackBarRef), i0.ɵɵdirectiveInject(MAT_SNACK_BAR_DATA));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SimpleSnackBar,\n selectors: [[\"simple-snack-bar\"]],\n hostAttrs: [1, \"mat-mdc-simple-snack-bar\"],\n exportAs: [\"matSnackBar\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 2,\n consts: [[\"matSnackBarLabel\", \"\"], [\"matSnackBarActions\", \"\"], [\"mat-button\", \"\", \"matSnackBarAction\", \"\", 3, \"click\"]],\n template: function SimpleSnackBar_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(2, SimpleSnackBar_Conditional_2_Template, 3, 1, \"div\", 1);\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx.data.message, \"\\n\");\n i0.ɵɵadvance();\n i0.ɵɵconditional(2, ctx.hasAction ? 2 : -1);\n }\n },\n dependencies: [MatButton, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction],\n styles: [\".mat-mdc-simple-snack-bar{display:flex}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return SimpleSnackBar;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Animations used by the Material snack bar.\n * @docs-private\n */\nconst matSnackBarAnimations = {\n /** Animation that shows and hides a snack bar. */\n snackBarState: /*#__PURE__*/trigger('state', [/*#__PURE__*/state('void, hidden', /*#__PURE__*/style({\n transform: 'scale(0.8)',\n opacity: 0\n })), /*#__PURE__*/state('visible', /*#__PURE__*/style({\n transform: 'scale(1)',\n opacity: 1\n })), /*#__PURE__*/transition('* => visible', /*#__PURE__*/animate('150ms cubic-bezier(0, 0, 0.2, 1)')), /*#__PURE__*/transition('* => void, * => hidden', /*#__PURE__*/animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', /*#__PURE__*/style({\n opacity: 0\n })))])\n};\nlet uniqueId = 0;\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\nlet MatSnackBarContainer = /*#__PURE__*/(() => {\n class MatSnackBarContainer extends BasePortalOutlet {\n constructor(_ngZone, _elementRef, _changeDetectorRef, _platform, /** The snack bar configuration. */\n snackBarConfig) {\n super();\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._platform = _platform;\n this.snackBarConfig = snackBarConfig;\n this._document = inject(DOCUMENT);\n this._trackedModals = new Set();\n /** The number of milliseconds to wait before announcing the snack bar's content. */\n this._announceDelay = 150;\n /** Whether the component has been destroyed. */\n this._destroyed = false;\n /** Subject for notifying that the snack bar has announced to screen readers. */\n this._onAnnounce = new Subject();\n /** Subject for notifying that the snack bar has exited from view. */\n this._onExit = new Subject();\n /** Subject for notifying that the snack bar has finished entering the view. */\n this._onEnter = new Subject();\n /** The state of the snack bar animations. */\n this._animationState = 'void';\n /** Unique ID of the aria-live element. */\n this._liveElementId = `mat-snack-bar-container-live-${uniqueId++}`;\n /**\n * Attaches a DOM portal to the snack bar container.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = portal => {\n this._assertNotAttached();\n const result = this._portalOutlet.attachDomPortal(portal);\n this._afterPortalAttached();\n return result;\n };\n // Use aria-live rather than a live role like 'alert' or 'status'\n // because NVDA and JAWS have show inconsistent behavior with live roles.\n if (snackBarConfig.politeness === 'assertive' && !snackBarConfig.announcementMessage) {\n this._live = 'assertive';\n } else if (snackBarConfig.politeness === 'off') {\n this._live = 'off';\n } else {\n this._live = 'polite';\n }\n // Only set role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\n // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\n if (this._platform.FIREFOX) {\n if (this._live === 'polite') {\n this._role = 'status';\n }\n if (this._live === 'assertive') {\n this._role = 'alert';\n }\n }\n }\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal(portal) {\n this._assertNotAttached();\n const result = this._portalOutlet.attachComponentPortal(portal);\n this._afterPortalAttached();\n return result;\n }\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal(portal) {\n this._assertNotAttached();\n const result = this._portalOutlet.attachTemplatePortal(portal);\n this._afterPortalAttached();\n return result;\n }\n /** Handle end of animations, updating the state of the snackbar. */\n onAnimationEnd(event) {\n const {\n fromState,\n toState\n } = event;\n if (toState === 'void' && fromState !== 'void' || toState === 'hidden') {\n this._completeExit();\n }\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this._onEnter;\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n /** Begin animation of snack bar entrance into view. */\n enter() {\n if (!this._destroyed) {\n this._animationState = 'visible';\n // _animationState lives in host bindings and `detectChanges` does not refresh host bindings\n // so we have to call `markForCheck` to ensure the host view is refreshed eventually.\n this._changeDetectorRef.markForCheck();\n this._changeDetectorRef.detectChanges();\n this._screenReaderAnnounce();\n }\n }\n /** Begin animation of the snack bar exiting from view. */\n exit() {\n // It's common for snack bars to be opened by random outside calls like HTTP requests or\n // errors. Run inside the NgZone to ensure that it functions correctly.\n this._ngZone.run(() => {\n // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n // `MatSnackBar.open`).\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n // Mark this element with an 'exit' attribute to indicate that the snackbar has\n // been dismissed and will soon be removed from the DOM. This is used by the snackbar\n // test harness.\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n // If the snack bar hasn't been announced by the time it exits it wouldn't have been open\n // long enough to visually read it either, so clear the timeout for announcing.\n clearTimeout(this._announceTimeoutId);\n });\n return this._onExit;\n }\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n ngOnDestroy() {\n this._destroyed = true;\n this._clearFromModals();\n this._completeExit();\n }\n /**\n * Removes the element in a microtask. Helps prevent errors where we end up\n * removing an element which is in the middle of an animation.\n */\n _completeExit() {\n queueMicrotask(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n }\n /**\n * Called after the portal contents have been attached. Can be\n * used to modify the DOM once it's guaranteed to be in place.\n */\n _afterPortalAttached() {\n const element = this._elementRef.nativeElement;\n const panelClasses = this.snackBarConfig.panelClass;\n if (panelClasses) {\n if (Array.isArray(panelClasses)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClasses.forEach(cssClass => element.classList.add(cssClass));\n } else {\n element.classList.add(panelClasses);\n }\n }\n this._exposeToModals();\n // Check to see if the attached component or template uses the MDC template structure,\n // specifically the MDC label. If not, the container should apply the MDC label class to this\n // component's label container, which will apply MDC's label styles to the attached view.\n const label = this._label.nativeElement;\n const labelClass = 'mdc-snackbar__label';\n label.classList.toggle(labelClass, !label.querySelector(`.${labelClass}`));\n }\n /**\n * Some browsers won't expose the accessibility node of the live element if there is an\n * `aria-modal` and the live element is outside of it. This method works around the issue by\n * pointing the `aria-owns` of all modals to the live element.\n */\n _exposeToModals() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with the\n // `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const id = this._liveElementId;\n const modals = this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal=\"true\"]');\n for (let i = 0; i < modals.length; i++) {\n const modal = modals[i];\n const ariaOwns = modal.getAttribute('aria-owns');\n this._trackedModals.add(modal);\n if (!ariaOwns) {\n modal.setAttribute('aria-owns', id);\n } else if (ariaOwns.indexOf(id) === -1) {\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n }\n }\n }\n /** Clears the references to the live element from any modals it was added to. */\n _clearFromModals() {\n this._trackedModals.forEach(modal => {\n const ariaOwns = modal.getAttribute('aria-owns');\n if (ariaOwns) {\n const newValue = ariaOwns.replace(this._liveElementId, '').trim();\n if (newValue.length > 0) {\n modal.setAttribute('aria-owns', newValue);\n } else {\n modal.removeAttribute('aria-owns');\n }\n }\n });\n this._trackedModals.clear();\n }\n /** Asserts that no content is already attached to the container. */\n _assertNotAttached() {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n }\n /**\n * Starts a timeout to move the snack bar content to the live region so screen readers will\n * announce it.\n */\n _screenReaderAnnounce() {\n if (!this._announceTimeoutId) {\n this._ngZone.runOutsideAngular(() => {\n this._announceTimeoutId = setTimeout(() => {\n const inertElement = this._elementRef.nativeElement.querySelector('[aria-hidden]');\n const liveElement = this._elementRef.nativeElement.querySelector('[aria-live]');\n if (inertElement && liveElement) {\n // If an element in the snack bar content is focused before being moved\n // track it and restore focus after moving to the live region.\n let focusedElement = null;\n if (this._platform.isBrowser && document.activeElement instanceof HTMLElement && inertElement.contains(document.activeElement)) {\n focusedElement = document.activeElement;\n }\n inertElement.removeAttribute('aria-hidden');\n liveElement.appendChild(inertElement);\n focusedElement?.focus();\n this._onAnnounce.next();\n this._onAnnounce.complete();\n }\n }, this._announceDelay);\n });\n }\n }\n static {\n this.ɵfac = function MatSnackBarContainer_Factory(t) {\n return new (t || MatSnackBarContainer)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(MatSnackBarConfig));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSnackBarContainer,\n selectors: [[\"mat-snack-bar-container\"]],\n viewQuery: function MatSnackBarContainer_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(CdkPortalOutlet, 7);\n i0.ɵɵviewQuery(_c0, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._portalOutlet = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._label = _t.first);\n }\n },\n hostAttrs: [1, \"mdc-snackbar\", \"mat-mdc-snack-bar-container\", \"mdc-snackbar--open\"],\n hostVars: 1,\n hostBindings: function MatSnackBarContainer_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵsyntheticHostListener(\"@state.done\", function MatSnackBarContainer_animation_state_done_HostBindingHandler($event) {\n return ctx.onAnimationEnd($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵsyntheticHostProperty(\"@state\", ctx._animationState);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 6,\n vars: 3,\n consts: [[\"label\", \"\"], [1, \"mdc-snackbar__surface\"], [1, \"mat-mdc-snack-bar-label\"], [\"aria-hidden\", \"true\"], [\"cdkPortalOutlet\", \"\"]],\n template: function MatSnackBarContainer_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 1)(1, \"div\", 2, 0)(3, \"div\", 3);\n i0.ɵɵtemplate(4, MatSnackBarContainer_ng_template_4_Template, 0, 0, \"ng-template\", 4);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(5, \"div\");\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance(5);\n i0.ɵɵattribute(\"aria-live\", ctx._live)(\"role\", ctx._role)(\"id\", ctx._liveElementId);\n }\n },\n dependencies: [CdkPortalOutlet],\n styles: [\".mdc-snackbar{display:none;position:fixed;right:0;bottom:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-snackbar--opening,.mdc-snackbar--open,.mdc-snackbar--closing{display:flex}.mdc-snackbar--open .mdc-snackbar__label,.mdc-snackbar--open .mdc-snackbar__actions{visibility:visible}.mdc-snackbar__surface{padding-left:0;padding-right:8px;display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;transform:scale(0.8);opacity:0}.mdc-snackbar__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}@media screen and (forced-colors: active){.mdc-snackbar__surface::before{border-color:CanvasText}}[dir=rtl] .mdc-snackbar__surface,.mdc-snackbar__surface[dir=rtl]{padding-left:8px;padding-right:0}.mdc-snackbar--open .mdc-snackbar__surface{transform:scale(1);opacity:1;pointer-events:auto}.mdc-snackbar--closing .mdc-snackbar__surface{transform:scale(1)}.mdc-snackbar__label{padding-left:16px;padding-right:8px;width:100%;flex-grow:1;box-sizing:border-box;margin:0;visibility:hidden;padding-top:14px;padding-bottom:14px}[dir=rtl] .mdc-snackbar__label,.mdc-snackbar__label[dir=rtl]{padding-left:8px;padding-right:16px}.mdc-snackbar__label::before{display:inline;content:attr(data-mdc-snackbar-label-text)}.mdc-snackbar__actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box;visibility:hidden}.mdc-snackbar__action+.mdc-snackbar__dismiss{margin-left:8px;margin-right:0}[dir=rtl] .mdc-snackbar__action+.mdc-snackbar__dismiss,.mdc-snackbar__action+.mdc-snackbar__dismiss[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-snack-bar-container{margin:8px;position:static}.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:344px}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:100%}}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container{width:100vw}}.mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:672px}.mat-mdc-snack-bar-container .mdc-snackbar__surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{background-color:var(--mdc-snackbar-container-color)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{border-radius:var(--mdc-snackbar-container-shape)}.mat-mdc-snack-bar-container .mdc-snackbar__label{color:var(--mdc-snackbar-supporting-text-color)}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-size:var(--mdc-snackbar-supporting-text-size);font-family:var(--mdc-snackbar-supporting-text-font);font-weight:var(--mdc-snackbar-supporting-text-weight);line-height:var(--mdc-snackbar-supporting-text-line-height)}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-snack-bar-button-color);--mat-text-button-state-layer-color:currentColor;--mat-text-button-ripple-color:currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}.mat-mdc-snack-bar-container .mdc-snackbar__label::before{display:none}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-handset .mdc-snackbar__surface{width:100%}\"],\n encapsulation: 2,\n data: {\n animation: [matSnackBarAnimations.snackBarState]\n }\n });\n }\n }\n return MatSnackBarContainer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** @docs-private */\nfunction MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY() {\n return new MatSnackBarConfig();\n}\n/** Injection token that can be used to specify default snack bar. */\nconst MAT_SNACK_BAR_DEFAULT_OPTIONS = /*#__PURE__*/new InjectionToken('mat-snack-bar-default-options', {\n providedIn: 'root',\n factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY\n});\n/**\n * Service to dispatch Material Design snack bar messages.\n */\nlet MatSnackBar = /*#__PURE__*/(() => {\n class MatSnackBar {\n /** Reference to the currently opened snackbar at *any* level. */\n get _openedSnackBarRef() {\n const parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n set _openedSnackBarRef(value) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n } else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n constructor(_overlay, _live, _injector, _breakpointObserver, _parentSnackBar, _defaultConfig) {\n this._overlay = _overlay;\n this._live = _live;\n this._injector = _injector;\n this._breakpointObserver = _breakpointObserver;\n this._parentSnackBar = _parentSnackBar;\n this._defaultConfig = _defaultConfig;\n /**\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n * If there is a parent snack-bar service, all operations should delegate to that parent\n * via `_openedSnackBarRef`.\n */\n this._snackBarRefAtThisLevel = null;\n /** The component that should be rendered as the snack bar's simple component. */\n this.simpleSnackBarComponent = SimpleSnackBar;\n /** The container component that attaches the provided template or component. */\n this.snackBarContainerComponent = MatSnackBarContainer;\n /** The CSS class to apply for handset mode. */\n this.handsetCssClass = 'mat-mdc-snack-bar-handset';\n }\n /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @param component Component to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromComponent(component, config) {\n return this._attach(component, config);\n }\n /**\n * Creates and dispatches a snack bar with a custom template for the content, removing any\n * currently opened snack bars.\n *\n * @param template Template to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromTemplate(template, config) {\n return this._attach(template, config);\n }\n /**\n * Opens a snackbar with a message and an optional action.\n * @param message The message to show in the snackbar.\n * @param action The label for the snackbar action.\n * @param config Additional configuration options for the snackbar.\n */\n open(message, action = '', config) {\n const _config = {\n ...this._defaultConfig,\n ...config\n };\n // Since the user doesn't have access to the component, we can\n // override the data to pass in our own message and action.\n _config.data = {\n message,\n action\n };\n // Since the snack bar has `role=\"alert\"`, we don't\n // want to announce the same message twice.\n if (_config.announcementMessage === message) {\n _config.announcementMessage = undefined;\n }\n return this.openFromComponent(this.simpleSnackBarComponent, _config);\n }\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss() {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n ngOnDestroy() {\n // Only dismiss the snack bar at the current level on destroy.\n if (this._snackBarRefAtThisLevel) {\n this._snackBarRefAtThisLevel.dismiss();\n }\n }\n /**\n * Attaches the snack bar container component to the overlay.\n */\n _attachSnackBarContainer(overlayRef, config) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{\n provide: MatSnackBarConfig,\n useValue: config\n }]\n });\n const containerPortal = new ComponentPortal(this.snackBarContainerComponent, config.viewContainerRef, injector);\n const containerRef = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n /**\n * Places a new component or a template as the content of the snack bar container.\n */\n _attach(content, userConfig) {\n const config = {\n ...new MatSnackBarConfig(),\n ...this._defaultConfig,\n ...userConfig\n };\n const overlayRef = this._createOverlay(config);\n const container = this._attachSnackBarContainer(overlayRef, config);\n const snackBarRef = new MatSnackBarRef(container, overlayRef);\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null, {\n $implicit: config.data,\n snackBarRef\n });\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal(portal);\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n }\n // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n // appropriate. This class is applied to the overlay element because the overlay must expand to\n // fill the width of the screen for full width snackbars.\n this._breakpointObserver.observe(Breakpoints.HandsetPortrait).pipe(takeUntil(overlayRef.detachments())).subscribe(state => {\n overlayRef.overlayElement.classList.toggle(this.handsetCssClass, state.matches);\n });\n if (config.announcementMessage) {\n // Wait until the snack bar contents have been announced then deliver this message.\n container._onAnnounce.subscribe(() => {\n this._live.announce(config.announcementMessage, config.politeness);\n });\n }\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n /** Animates the old snack bar out and the new one in. */\n _animateSnackBar(snackBarRef, config) {\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(() => {\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n if (this._openedSnackBarRef == snackBarRef) {\n this._openedSnackBarRef = null;\n }\n if (config.announcementMessage) {\n this._live.clear();\n }\n });\n if (this._openedSnackBarRef) {\n // If a snack bar is already in view, dismiss it and enter the\n // new snack bar after exit animation is complete.\n this._openedSnackBarRef.afterDismissed().subscribe(() => {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n } else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\n }\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n if (config.duration && config.duration > 0) {\n snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration));\n }\n }\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified snack bar config.\n */\n _createOverlay(config) {\n const overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n let positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n const isRtl = config.direction === 'rtl';\n const isLeft = config.horizontalPosition === 'left' || config.horizontalPosition === 'start' && !isRtl || config.horizontalPosition === 'end' && isRtl;\n const isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n } else if (isRight) {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n overlayConfig.positionStrategy = positionStrategy;\n return this._overlay.create(overlayConfig);\n }\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @param config Config that was used to create the snack bar.\n * @param snackBarRef Reference to the snack bar.\n */\n _createInjector(config, snackBarRef) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [{\n provide: MatSnackBarRef,\n useValue: snackBarRef\n }, {\n provide: MAT_SNACK_BAR_DATA,\n useValue: config.data\n }]\n });\n }\n static {\n this.ɵfac = function MatSnackBar_Factory(t) {\n return new (t || MatSnackBar)(i0.ɵɵinject(i1$1.Overlay), i0.ɵɵinject(i2.LiveAnnouncer), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i3.BreakpointObserver), i0.ɵɵinject(MatSnackBar, 12), i0.ɵɵinject(MAT_SNACK_BAR_DEFAULT_OPTIONS));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MatSnackBar,\n factory: MatSnackBar.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return MatSnackBar;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DIRECTIVES = [MatSnackBarContainer, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction];\nlet MatSnackBarModule = /*#__PURE__*/(() => {\n class MatSnackBarModule {\n static {\n this.ɵfac = function MatSnackBarModule_Factory(t) {\n return new (t || MatSnackBarModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatSnackBarModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MatSnackBar],\n imports: [OverlayModule, PortalModule, MatButtonModule, MatCommonModule, SimpleSnackBar, MatCommonModule]\n });\n }\n }\n return MatSnackBarModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SNACK_BAR_DATA, MAT_SNACK_BAR_DEFAULT_OPTIONS, MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY, MatSnackBar, MatSnackBarAction, MatSnackBarActions, MatSnackBarConfig, MatSnackBarContainer, MatSnackBarLabel, MatSnackBarModule, MatSnackBarRef, SimpleSnackBar, matSnackBarAnimations };\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar, MatSnackBarConfig, MatSnackBarRef, SimpleSnackBar } from '@angular/material/snack-bar';\nimport { TranslateService } from '@ngx-translate/core';\nimport { take } from 'rxjs/operators';\n\nconst WORDS_PER_SECOND = 3.3;\nconst MINIMUM_DURATION = 4;\nconst MAXIMUM_DURATION = 10;\n\nconst DEFAULT_ACTION_TEXT = 'GALAXY.SNACKBAR.ACTION_BUTTON.DISMISS';\n\n/* Additional options to customize a snackbar */\nexport interface SnackBarOptions {\n /* custom text or translation key for the action button */\n action?: string;\n /* custom duration snackbar stays open */\n duration?: number;\n /* action to be performed when user clicks action button */\n actionCallback?: () => void;\n /* parameters uses to interpolate values into translated strings */\n interpolateTranslateParams?: { [key: string]: string };\n /* additional classes to apply to snackbar */\n panelClass?: string[] | string;\n}\n\n/* Additional options to customize a notification snackbar */\nexport type SnackBarNotificationOptions = Pick<\n SnackBarOptions,\n 'action' | 'actionCallback' | 'duration' | 'interpolateTranslateParams'\n>;\n\n@Injectable({ providedIn: 'root' })\nexport class SnackbarService {\n constructor(private snackbarService: MatSnackBar, private translateService: TranslateService) {}\n\n /** @deprecated use {@link SnackbarService#openSuccessSnack} **/\n successSnack(\n messageText: string,\n actionText?: SnackBarNotificationOptions['action'],\n duration?: SnackBarNotificationOptions['duration'],\n callback?: SnackBarNotificationOptions['actionCallback'],\n interpolateTranslateParams?: SnackBarNotificationOptions['interpolateTranslateParams'],\n ): MatSnackBarRef {\n return this.openSuccessSnack(messageText, {\n action: actionText,\n actionCallback: callback,\n duration,\n interpolateTranslateParams,\n });\n }\n\n /** @deprecated use {@link SnackbarService#openErrorSnack} **/\n errorSnack(\n messageText: string,\n actionText?: SnackBarNotificationOptions['action'],\n duration?: SnackBarNotificationOptions['duration'],\n callback?: SnackBarNotificationOptions['actionCallback'],\n interpolateTranslateParams?: SnackBarNotificationOptions['interpolateTranslateParams'],\n ): MatSnackBarRef {\n return this.openErrorSnack(messageText, {\n action: actionText,\n actionCallback: callback,\n duration,\n interpolateTranslateParams,\n });\n }\n\n /** @deprecated use {@link SnackbarService#openWithOptions} **/\n openSnackBar(\n messageText: string,\n actionText?: SnackBarOptions['action'],\n duration?: SnackBarOptions['duration'],\n callback?: SnackBarOptions['actionCallback'],\n interpolateTranslateParams?: SnackBarOptions['interpolateTranslateParams'],\n panelClass?: string[],\n ): MatSnackBarRef {\n return this.openWithOptions(messageText, {\n duration,\n action: actionText,\n actionCallback: callback,\n panelClass,\n interpolateTranslateParams,\n });\n }\n\n /*\n Calculates the duration in milliseconds a snack-message should have, based on the length of the message.\n The docs say snacks go from 4 - 10 seconds:\n - https://material.io/components/snackbars#behavior\n These sites say humans read at around 200 - 500 words per minute:\n - https://secure.execuread.com/facts/\n - https://irisreading.com/what-is-the-average-reading-speed/\n */\n durationForText(message: string): number {\n const words = message.match(/(\\w+)/g);\n\n if (!words) {\n return MINIMUM_DURATION * 1000;\n }\n const numberOfWords = words.length;\n let duration = Math.ceil((numberOfWords / WORDS_PER_SECOND) * 2) / 2;\n duration = Math.max(MINIMUM_DURATION, Math.min(MAXIMUM_DURATION, duration));\n return duration * 1000;\n }\n\n openSuccessSnack(message: string, options?: SnackBarNotificationOptions): MatSnackBarRef {\n return this.openWithOptions(message, { ...options, panelClass: ['success-snackbar'] });\n }\n\n openErrorSnack(message: string, options?: SnackBarNotificationOptions): MatSnackBarRef {\n return this.openWithOptions(message, { ...options, panelClass: ['error-snackbar'] });\n }\n\n openWithOptions(\n message: string,\n { duration, action, actionCallback, panelClass, interpolateTranslateParams }: SnackBarOptions = {},\n ): MatSnackBarRef {\n const classes = typeof panelClass === 'string' ? [panelClass] : panelClass ?? [];\n const translatedMessage = this.translateService.instant(message, interpolateTranslateParams);\n const config = {\n ...new MatSnackBarConfig(),\n panelClass: ['regular-snackbar', ...classes],\n duration: duration || this.durationForText(translatedMessage),\n };\n\n const translatedAction = this.translateService.instant(action || DEFAULT_ACTION_TEXT, interpolateTranslateParams);\n const snackBarRef = this.snackbarService.open(translatedMessage, translatedAction, config);\n\n if (actionCallback) {\n snackBarRef\n .onAction()\n .pipe(take(1))\n .subscribe(() => actionCallback());\n }\n\n return snackBarRef;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { SnackbarService } from './snackbar.service';\n\n@NgModule({\n imports: [CommonModule, MatSnackBarModule],\n providers: [SnackbarService],\n})\nexport class GalaxySnackbarModule {}\n"],"mappings":"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","names":["SimpleSnackBar_Conditional_2_Template","rf","ctx","_r1","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","ctx_r1","ɵɵnextContext","ɵɵresetView","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","_c0","MatSnackBarContainer_ng_template_4_Template","MAX_TIMEOUT","MatSnackBarRef","containerInstance","_overlayRef","Subject","duration","MAT_SNACK_BAR_DATA","InjectionToken","MatSnackBarConfig","MatSnackBarLabel","_MatSnackBarLabel","ɵɵdefineDirective","MatSnackBarActions","_MatSnackBarActions","MatSnackBarAction","_MatSnackBarAction","SimpleSnackBar","_SimpleSnackBar","snackBarRef","data","ɵɵdirectiveInject","ɵɵdefineComponent","ɵɵStandaloneFeature","ɵɵtemplate","ɵɵconditional","MatButton","matSnackBarAnimations","trigger","state","style","transition","animate","uniqueId","MatSnackBarContainer","_MatSnackBarContainer","BasePortalOutlet","_ngZone","_elementRef","_changeDetectorRef","_platform","snackBarConfig","inject","DOCUMENT","portal","result","event","fromState","toState","onEnter","element","panelClasses","cssClass","label","labelClass","id","modals","modal","ariaOwns","newValue","inertElement","liveElement","focusedElement","NgZone","ElementRef","ChangeDetectorRef","Platform","ɵɵviewQuery","CdkPortalOutlet","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵsyntheticHostListener","$event","ɵɵsyntheticHostProperty","ɵɵInheritDefinitionFeature","ɵɵelement","ɵɵattribute","MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY","MAT_SNACK_BAR_DEFAULT_OPTIONS","MatSnackBar","_MatSnackBar","parent","value","_overlay","_live","_injector","_breakpointObserver","_parentSnackBar","_defaultConfig","component","config","template","message","action","_config","__spreadValues","overlayRef","userInjector","injector","Injector","containerPortal","ComponentPortal","containerRef","content","userConfig","container","TemplateRef","TemplatePortal","contentRef","Breakpoints","takeUntil","overlayConfig","OverlayConfig","positionStrategy","isRtl","isLeft","isRight","ɵɵinject","Overlay","LiveAnnouncer","BreakpointObserver","ɵɵdefineInjectable","MatSnackBarModule","_MatSnackBarModule","ɵɵdefineNgModule","ɵɵdefineInjector","MatSnackBar","OverlayModule","PortalModule","MatButtonModule","MatCommonModule","SimpleSnackBar","WORDS_PER_SECOND","MINIMUM_DURATION","MAXIMUM_DURATION","DEFAULT_ACTION_TEXT","SnackbarService","constructor","snackbarService","translateService","successSnack","messageText","actionText","duration","callback","interpolateTranslateParams","openSuccessSnack","action","actionCallback","errorSnack","openErrorSnack","openSnackBar","panelClass","openWithOptions","durationForText","message","words","match","numberOfWords","length","Math","ceil","max","min","options","__spreadProps","__spreadValues","classes","translatedMessage","instant","config","MatSnackBarConfig","translatedAction","snackBarRef","open","onAction","pipe","take","subscribe","ɵɵinject","MatSnackBar","TranslateService","factory","ɵfac","providedIn","_SnackbarService","GalaxySnackbarModule","SnackbarService","imports","CommonModule","MatSnackBarModule","_GalaxySnackbarModule"],"x_google_ignoreList":[0]}