{"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","libs/galaxy/snackbar-service/public_api.ts","libs/galaxy/snackbar-service/index.ts"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, inject, Component, ViewEncapsulation, ChangeDetectionStrategy, NgZone, ElementRef, ChangeDetectorRef, ViewChild, Injector, TemplateRef, Injectable, 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 { _IdGenerator, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Overlay, 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 _overlayRef;\n /** The instance of the component making up the content of the snack bar. */\n instance;\n /**\n * The instance of the component making up the content of the snack bar.\n * @docs-private\n */\n containerInstance;\n /** Subject for notifying the user that the snack bar has been dismissed. */\n _afterDismissed = /*#__PURE__*/new Subject();\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n _afterOpened = /*#__PURE__*/new Subject();\n /** Subject for notifying the user that the snack bar action was called. */\n _onAction = /*#__PURE__*/new Subject();\n /**\n * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\n * dismissed before the duration passes.\n */\n _durationTimeoutId;\n /** Whether the snack bar was dismissed using the action button. */\n _dismissedByAction = false;\n constructor(containerInstance, _overlayRef) {\n this._overlayRef = _overlayRef;\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 /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n 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 announcementMessage = '';\n /**\n * The view container that serves as the parent for the snackbar for the purposes of dependency\n * injection. Note: this does not affect where the snackbar is inserted in the DOM.\n */\n viewContainerRef;\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n duration = 0;\n /** Extra CSS classes to be added to the snack bar container. */\n panelClass;\n /** Text layout direction for the snack bar. */\n direction;\n /** Data being injected into the child component. */\n data = null;\n /** The horizontal position to place the snack bar. */\n horizontalPosition = 'center';\n /** The vertical position to place the snack bar. */\n verticalPosition = 'bottom';\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 ɵfac = function MatSnackBarLabel_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSnackBarLabel)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarLabel,\n selectors: [[\"\", \"matSnackBarLabel\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-label\", \"mdc-snackbar__label\"]\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 ɵfac = function MatSnackBarActions_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSnackBarActions)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarActions,\n selectors: [[\"\", \"matSnackBarActions\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-actions\", \"mdc-snackbar__actions\"]\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 ɵfac = function MatSnackBarAction_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSnackBarAction)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarAction,\n selectors: [[\"\", \"matSnackBarAction\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-action\", \"mdc-snackbar__action\"]\n });\n }\n return MatSnackBarAction;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SimpleSnackBar = /*#__PURE__*/(() => {\n class SimpleSnackBar {\n snackBarRef = inject(MatSnackBarRef);\n data = inject(MAT_SNACK_BAR_DATA);\n constructor() {}\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 ɵfac = function SimpleSnackBar_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SimpleSnackBar)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SimpleSnackBar,\n selectors: [[\"simple-snack-bar\"]],\n hostAttrs: [1, \"mat-mdc-simple-snack-bar\"],\n exportAs: [\"matSnackBar\"],\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(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 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};\n\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\nlet MatSnackBarContainer = /*#__PURE__*/(() => {\n class MatSnackBarContainer extends BasePortalOutlet {\n _ngZone = inject(NgZone);\n _elementRef = inject(ElementRef);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _platform = inject(Platform);\n snackBarConfig = inject(MatSnackBarConfig);\n _document = inject(DOCUMENT);\n _trackedModals = new Set();\n /** The number of milliseconds to wait before announcing the snack bar's content. */\n _announceDelay = 150;\n /** The timeout for announcing the snack bar's content. */\n _announceTimeoutId;\n /** Whether the component has been destroyed. */\n _destroyed = false;\n /** The portal outlet inside of this container into which the snack bar content will be loaded. */\n _portalOutlet;\n /** Subject for notifying that the snack bar has announced to screen readers. */\n _onAnnounce = new Subject();\n /** Subject for notifying that the snack bar has exited from view. */\n _onExit = new Subject();\n /** Subject for notifying that the snack bar has finished entering the view. */\n _onEnter = new Subject();\n /** The state of the snack bar animations. */\n _animationState = 'void';\n /** aria-live value for the live region. */\n _live;\n /**\n * Element that will have the `mdc-snackbar__label` class applied if the attached component\n * or template does not have it. This ensures that the appropriate structure, typography, and\n * color is applied to the attached view.\n */\n _label;\n /**\n * Role of the live region. This is only for Firefox as there is a known issue where Firefox +\n * JAWS does not read out aria-live message.\n */\n _role;\n /** Unique ID of the aria-live element. */\n _liveElementId = inject(_IdGenerator).getId('mat-snack-bar-container-live-');\n constructor() {\n super();\n const config = this.snackBarConfig;\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 (config.politeness === 'assertive' && !config.announcementMessage) {\n this._live = 'assertive';\n } else if (config.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 /**\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 attachDomPortal = portal => {\n this._assertNotAttached();\n const result = this._portalOutlet.attachDomPortal(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 ɵfac = function MatSnackBarContainer_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSnackBarContainer)();\n };\n static ɵ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\"],\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 features: [i0.ɵɵInheritDefinitionFeature],\n decls: 6,\n vars: 3,\n consts: [[\"label\", \"\"], [1, \"mdc-snackbar__surface\", \"mat-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: [\".mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-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);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}@media(forced-colors: active){.mat-mdc-snackbar-surface{outline:solid 1px}}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mdc-snackbar-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mdc-snackbar-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mdc-snackbar-container-color, var(--mat-sys-inverse-surface))}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mdc-snackbar-supporting-text-font, var(--mat-sys-body-medium-font));font-size:var(--mdc-snackbar-supporting-text-size, var(--mat-sys-body-medium-size));font-weight:var(--mdc-snackbar-supporting-text-weight, var(--mat-sys-body-medium-weight));line-height:var(--mdc-snackbar-supporting-text-line-height, var(--mat-sys-body-medium-line-height))}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled).mat-unthemed{color:var(--mat-snack-bar-button-color, var(--mat-sys-inverse-primary))}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){--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}\"],\n encapsulation: 2,\n data: {\n animation: [matSnackBarAnimations.snackBarState]\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 _overlay = inject(Overlay);\n _live = inject(LiveAnnouncer);\n _injector = inject(Injector);\n _breakpointObserver = inject(BreakpointObserver);\n _parentSnackBar = inject(MatSnackBar, {\n optional: true,\n skipSelf: true\n });\n _defaultConfig = inject(MAT_SNACK_BAR_DEFAULT_OPTIONS);\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 _snackBarRefAtThisLevel = null;\n /** The component that should be rendered as the snack bar's simple component. */\n simpleSnackBarComponent = SimpleSnackBar;\n /** The container component that attaches the provided template or component. */\n snackBarContainerComponent = MatSnackBarContainer;\n /** The CSS class to apply for handset mode. */\n handsetCssClass = 'mat-mdc-snack-bar-handset';\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() {}\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 ɵfac = function MatSnackBar_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSnackBar)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MatSnackBar,\n factory: MatSnackBar.ɵfac,\n providedIn: 'root'\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 ɵfac = function MatSnackBarModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSnackBarModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatSnackBarModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MatSnackBar],\n imports: [OverlayModule, PortalModule, MatButtonModule, MatCommonModule, SimpleSnackBar, MatCommonModule]\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(\n private snackbarService: MatSnackBar,\n private translateService: TranslateService,\n ) {}\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';\nimport { GalaxyI18NModule } from '@vendasta/galaxy/i18n';\n\n@NgModule({\n imports: [CommonModule, MatSnackBarModule, GalaxyI18NModule],\n providers: [SnackbarService],\n})\nexport class GalaxySnackbarModule {}\n","export { GalaxySnackbarModule } from './src/snackbar.module';\nexport { SnackbarService } from './src/snackbar.service';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\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","MatSnackBarContainer_ng_template_4_Template","MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY","MatSnackBarConfig","_c0","MAX_TIMEOUT","MatSnackBarRef","MAT_SNACK_BAR_DATA","MatSnackBarLabel","MatSnackBarActions","MatSnackBarAction","SimpleSnackBar","matSnackBarAnimations","MatSnackBarContainer","MAT_SNACK_BAR_DEFAULT_OPTIONS","MatSnackBar","MatSnackBarModule","init_snack_bar","__esmMin","init_core","init_button","init_esm","init_common","init_animations","init_portal","init_a11y","init_platform","init_layout","init_overlay","init_operators","Subject","containerInstance","_overlayRef","duration","InjectionToken","__ngFactoryType__","ɵɵdefineDirective","inject","ɵɵdefineComponent","ɵɵtemplate","ɵɵconditional","MatButton","trigger","state","style","transition","animate","BasePortalOutlet","NgZone","ElementRef","ChangeDetectorRef","Platform","DOCUMENT","_IdGenerator","config","portal","result","event","fromState","toState","onEnter","element","panelClasses","cssClass","label","labelClass","id","modals","i","modal","ariaOwns","newValue","inertElement","liveElement","focusedElement","ɵɵviewQuery","CdkPortalOutlet","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵsyntheticHostListener","$event","ɵɵsyntheticHostProperty","ɵɵInheritDefinitionFeature","ɵɵelement","ɵɵattribute","Overlay","LiveAnnouncer","Injector","BreakpointObserver","parent","value","component","template","message","action","_config","__spreadValues","overlayRef","userInjector","injector","containerPortal","ComponentPortal","containerRef","content","userConfig","container","snackBarRef","TemplateRef","TemplatePortal","contentRef","Breakpoints","takeUntil","overlayConfig","OverlayConfig","positionStrategy","isRtl","isLeft","isRight","ɵɵdefineInjectable","ɵɵdefineNgModule","ɵɵdefineInjector","OverlayModule","PortalModule","MatButtonModule","MatCommonModule","WORDS_PER_SECOND","MINIMUM_DURATION","MAXIMUM_DURATION","DEFAULT_ACTION_TEXT","SnackbarService","init_snackbar_service","__esmMin","init_snack_bar","init_operators","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","GalaxySnackbarModule","init_snackbar_module","__esmMin","init_common","init_snack_bar","init_snackbar_service","init_i18n","SnackbarService","imports","CommonModule","MatSnackBarModule","GalaxyI18NModule","init_public_api","__esmMin","init_snackbar_module","init_snackbar_service","init_snackbar_service","__esmMin","init_public_api"],"x_google_ignoreList":[0]}