{"remainingRequest":"/Users/jaslan/Development/nifi-fds/angular-url-loader.js!/Users/jaslan/Development/nifi-fds/node_modules/babel-loader/lib/index.js??ref--5-2!/Users/jaslan/Development/nifi-fds/platform/core/dialogs/services/dialog.service.js","dependencies":[{"path":"/Users/jaslan/Development/nifi-fds/platform/core/dialogs/services/dialog.service.js","mtime":1562689731043},{"path":"/Users/jaslan/Development/nifi-fds/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/Users/jaslan/Development/nifi-fds/angular-url-loader.js","mtime":1562689731025},{"path":"/Users/jaslan/Development/nifi-fds/node_modules/babel-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":["/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport $ from 'jquery';\nimport { MatDialogConfig, MatDialog } from '@angular/material';\nimport { FdsConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\n\nfunction IDialogConfig() {\n  this.title = '';\n  this.message = '';\n  this.dialogRef = undefined;\n  this.viewContainerRef = undefined;\n  this.disableClose = true;\n}\n\nIDialogConfig.prototype = {\n  contstructor: IDialogConfig\n};\n$.extend(IDialogConfig, MatDialogConfig);\n\nfunction IConfirmConfig() {\n  this.acceptButton = 'ACCEPT';\n  this.acceptButtonColor = 'fds-primary';\n  this.cancelButton = 'CANCEL';\n  this.cancelButtonColor = 'fds-secondary';\n}\n\nIConfirmConfig.prototype = {\n  contstructor: IConfirmConfig\n};\n$.extend(IConfirmConfig, IDialogConfig);\n\nfunction createConfig(config) {\n  var dialogConfig = new IConfirmConfig();\n  dialogConfig.viewContainerRef = config.viewContainerRef;\n  dialogConfig.disableClose = config.disableClose;\n  return dialogConfig;\n}\n/**\n * FdsDialogService constructor.\n *\n * @param MatDialog      The angular material MatDialog.\n * @constructor\n */\n\n\nfunction FdsDialogService(MatDialog) {\n  this.dialogService = MatDialog;\n}\n\nFdsDialogService.prototype = {\n  contstructor: FdsDialogService,\n\n  /**\n   * Wrapper function over the open() method in MatDialog.\n   * Opens a modal dialog containing the given component.\n   *\n   * @param component     The angular ComponentType<T>.\n   * @param config        The angular material MatDialogConfig.\n   *\n   * @returns {MatDialoRef}    The reference to the dialog.\n   */\n  open: function open(component, config) {\n    return this.dialogService.open(component, config);\n  },\n\n  /**\n   * Wrapper function over the closeAll() method in MatDialog.\n   * Closes all of the currently-open dialogs.\n   */\n  closeAll: function closeAll() {\n    this.dialogService.closeAll();\n  },\n\n  /**\n   * Opens a confirm dialog with the provided config.\n   *\n   * @param config     IConfirmConfig {\n   *                                      message?: string;\n   *                                      title?: string;\n   *                                      dialogRef?: MatDialoRef;\n   *                                      viewContainerRef?: ViewContainerRef;\n   *                                      disableClose?: boolean;\n   *                                      acceptButton?: string;\n   *                                      acceptButtonColor?: string;\n   *                                      cancelButton?: string;\n   *                                      cancelButtonColor?: string;\n   *                                   }\n   *\n   * @returns {MatDialoRef}    The reference to the dialog.\n   */\n  openConfirm: function openConfirm(config) {\n    var dialogConfig = createConfig(config);\n    var dialogRef = this.dialogService.open(FdsConfirmDialogComponent, dialogConfig);\n    var confirmDialogComponent = dialogRef.componentInstance;\n    confirmDialogComponent.dialogRef = dialogRef;\n\n    if (config.title) {\n      confirmDialogComponent.title = config.title;\n    }\n\n    if (config.message) {\n      confirmDialogComponent.message = config.message;\n    }\n\n    if (config.acceptButton) {\n      confirmDialogComponent.acceptButton = config.acceptButton;\n    }\n\n    if (config.acceptButtonColor) {\n      confirmDialogComponent.acceptButtonColor = config.acceptButtonColor;\n    }\n\n    if (config.cancelButton) {\n      confirmDialogComponent.cancelButton = config.cancelButton;\n    }\n\n    if (config.cancelButtonColor) {\n      confirmDialogComponent.cancelButtonColor = config.cancelButtonColor;\n    }\n\n    return dialogRef;\n  }\n};\nFdsDialogService.parameters = [MatDialog];\nexport { IDialogConfig, IConfirmConfig, FdsDialogService };"]}