{"remainingRequest":"/Users/jaslan/Development/nifi-fds/node_modules/istanbul-instrumenter-loader/dist/cjs.js??ref--5-1!/Users/jaslan/Development/nifi-fds/angular-url-loader.js!/Users/jaslan/Development/nifi-fds/node_modules/babel-loader/lib/index.js??ref--5-3!/Users/jaslan/Development/nifi-fds/platform/core/snackbars/services/snackbar.service.js","dependencies":[{"path":"/Users/jaslan/Development/nifi-fds/platform/core/snackbars/services/snackbar.service.js","mtime":1562689731046},{"path":"/Users/jaslan/Development/nifi-fds/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/Users/jaslan/Development/nifi-fds/node_modules/istanbul-instrumenter-loader/dist/cjs.js","mtime":1522257694000},{"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":["var cov_2o0wpqzfqf=function(){var path='/Users/jaslan/Development/nifi-fds/platform/core/snackbars/services/snackbar.service.js',hash='55fea6746b0130826d6929bbd7ce68e04d1856a8',Function=function(){}.constructor,global=new Function('return this')(),gcv='__coverage__',coverageData={path:'/Users/jaslan/Development/nifi-fds/platform/core/snackbars/services/snackbar.service.js',statementMap:{'0':{start:{line:21,column:2},end:{line:21,column:18}},'1':{start:{line:22,column:2},end:{line:22,column:20}},'2':{start:{line:23,column:2},end:{line:23,column:31}},'3':{start:{line:24,column:2},end:{line:24,column:36}},'4':{start:{line:26,column:0},end:{line:28,column:2}},'5':{start:{line:29,column:0},end:{line:29,column:45}},'6':{start:{line:31,column:2},end:{line:31,column:17}},'7':{start:{line:32,column:2},end:{line:32,column:18}},'8':{start:{line:34,column:0},end:{line:36,column:2}},'9':{start:{line:37,column:0},end:{line:37,column:42}},'10':{start:{line:46,column:2},end:{line:46,column:37}},'11':{start:{line:48,column:0},end:{line:126,column:2}},'12':{start:{line:61,column:4},end:{line:61,column:62}},'13':{start:{line:74,column:4},end:{line:74,column:69}},'14':{start:{line:82,column:4},end:{line:82,column:35}},'15':{start:{line:100,column:25},end:{line:100,column:45}},'16':{start:{line:101,column:4},end:{line:101,column:62}},'17':{start:{line:102,column:4},end:{line:102,column:66}},'18':{start:{line:103,column:4},end:{line:103,column:46}},'19':{start:{line:104,column:22},end:{line:104,column:97}},'20':{start:{line:105,column:27},end:{line:105,column:47}},'21':{start:{line:106,column:4},end:{line:106,column:47}},'22':{start:{line:108,column:4},end:{line:110,column:5}},'23':{start:{line:109,column:6},end:{line:109,column:44}},'24':{start:{line:112,column:4},end:{line:114,column:5}},'25':{start:{line:113,column:6},end:{line:113,column:48}},'26':{start:{line:116,column:4},end:{line:118,column:5}},'27':{start:{line:117,column:6},end:{line:117,column:42}},'28':{start:{line:120,column:4},end:{line:122,column:5}},'29':{start:{line:121,column:6},end:{line:121,column:44}},'30':{start:{line:124,column:4},end:{line:124,column:23}},'31':{start:{line:127,column:0},end:{line:127,column:46}}},fnMap:{'0':{name:'ISnackBarConfig',decl:{start:{line:20,column:16},end:{line:20,column:31}},loc:{start:{line:20,column:34},end:{line:25,column:1}},line:20},'1':{name:'ICoasterConfig',decl:{start:{line:30,column:16},end:{line:30,column:30}},loc:{start:{line:30,column:33},end:{line:33,column:1}},line:30},'2':{name:'FdsSnackBarService',decl:{start:{line:45,column:16},end:{line:45,column:34}},loc:{start:{line:45,column:48},end:{line:47,column:1}},line:45},'3':{name:'open',decl:{start:{line:60,column:17},end:{line:60,column:21}},loc:{start:{line:60,column:47},end:{line:62,column:3}},line:60},'4':{name:'openFromComponent',decl:{start:{line:73,column:30},end:{line:73,column:47}},loc:{start:{line:73,column:67},end:{line:75,column:3}},line:73},'5':{name:'dismiss',decl:{start:{line:81,column:20},end:{line:81,column:27}},loc:{start:{line:81,column:30},end:{line:83,column:3}},line:81},'6':{name:'openCoaster',decl:{start:{line:99,column:24},end:{line:99,column:35}},loc:{start:{line:99,column:44},end:{line:125,column:3}},line:99}},branchMap:{'0':{loc:{start:{line:108,column:4},end:{line:110,column:5}},type:'if',locations:[{start:{line:108,column:4},end:{line:110,column:5}},{start:{line:108,column:4},end:{line:110,column:5}}],line:108},'1':{loc:{start:{line:112,column:4},end:{line:114,column:5}},type:'if',locations:[{start:{line:112,column:4},end:{line:114,column:5}},{start:{line:112,column:4},end:{line:114,column:5}}],line:112},'2':{loc:{start:{line:116,column:4},end:{line:118,column:5}},type:'if',locations:[{start:{line:116,column:4},end:{line:118,column:5}},{start:{line:116,column:4},end:{line:118,column:5}}],line:116},'3':{loc:{start:{line:120,column:4},end:{line:122,column:5}},type:'if',locations:[{start:{line:120,column:4},end:{line:122,column:5}},{start:{line:120,column:4},end:{line:122,column:5}}],line:120}},s:{'0':0,'1':0,'2':0,'3':0,'4':0,'5':0,'6':0,'7':0,'8':0,'9':0,'10':0,'11':0,'12':0,'13':0,'14':0,'15':0,'16':0,'17':0,'18':0,'19':0,'20':0,'21':0,'22':0,'23':0,'24':0,'25':0,'26':0,'27':0,'28':0,'29':0,'30':0,'31':0},f:{'0':0,'1':0,'2':0,'3':0,'4':0,'5':0,'6':0},b:{'0':[0,0],'1':[0,0],'2':[0,0],'3':[0,0]},_coverageSchema:'332fd63041d2c1bcb487cc26dd0d5f7d97098a6c'},coverage=global[gcv]||(global[gcv]={});if(coverage[path]&&coverage[path].hash===hash){return coverage[path];}coverageData.hash=hash;return coverage[path]=coverageData;}();import{MatSnackBarConfig,MatSnackBar}from'@angular/material';import $ from'jquery';import{FdsCoasterComponent}from'../coaster/coaster.component';export function ISnackBarConfig(){cov_2o0wpqzfqf.f[0]++;cov_2o0wpqzfqf.s[0]++;this.title='';cov_2o0wpqzfqf.s[1]++;this.message='';cov_2o0wpqzfqf.s[2]++;this.snackBarRef=undefined;cov_2o0wpqzfqf.s[3]++;this.viewContainerRef=undefined;}cov_2o0wpqzfqf.s[4]++;ISnackBarConfig.prototype={contstructor:ISnackBarConfig};cov_2o0wpqzfqf.s[5]++;$.extend(ISnackBarConfig,MatSnackBarConfig);export function ICoasterConfig(){cov_2o0wpqzfqf.f[1]++;cov_2o0wpqzfqf.s[6]++;this.icon='';cov_2o0wpqzfqf.s[7]++;this.color='';}cov_2o0wpqzfqf.s[8]++;ICoasterConfig.prototype={contstructor:ICoasterConfig};cov_2o0wpqzfqf.s[9]++;$.extend(ICoasterConfig,ISnackBarConfig);export function FdsSnackBarService(MatSnackBar){cov_2o0wpqzfqf.f[2]++;cov_2o0wpqzfqf.s[10]++;this.snackBarService=MatSnackBar;}cov_2o0wpqzfqf.s[11]++;FdsSnackBarService.prototype={contstructor:FdsSnackBarService,open:function open(message,action,config){cov_2o0wpqzfqf.f[3]++;cov_2o0wpqzfqf.s[12]++;return this.snackBarService.open(message,action,config);},openFromComponent:function openFromComponent(component,config){cov_2o0wpqzfqf.f[4]++;cov_2o0wpqzfqf.s[13]++;return this.snackBarService.openFromComponent(component,config);},dismiss:function dismiss(){cov_2o0wpqzfqf.f[5]++;cov_2o0wpqzfqf.s[14]++;this.snackBarService.dismiss();},openCoaster:function openCoaster(config){cov_2o0wpqzfqf.f[6]++;var snackBarConfig=(cov_2o0wpqzfqf.s[15]++,new ICoasterConfig());cov_2o0wpqzfqf.s[16]++;snackBarConfig.verticalPosition=config.verticalPosition;cov_2o0wpqzfqf.s[17]++;snackBarConfig.horizontalPosition=config.horizontalPosition;cov_2o0wpqzfqf.s[18]++;snackBarConfig.duration=config.duration;var snackBarRef=(cov_2o0wpqzfqf.s[19]++,this.snackBarService.openFromComponent(FdsCoasterComponent,snackBarConfig));var coasterComponent=(cov_2o0wpqzfqf.s[20]++,snackBarRef.instance);cov_2o0wpqzfqf.s[21]++;coasterComponent.snackBarRef=snackBarRef;cov_2o0wpqzfqf.s[22]++;if(config.title){cov_2o0wpqzfqf.b[0][0]++;cov_2o0wpqzfqf.s[23]++;coasterComponent.title=config.title;}else{cov_2o0wpqzfqf.b[0][1]++;}cov_2o0wpqzfqf.s[24]++;if(config.message){cov_2o0wpqzfqf.b[1][0]++;cov_2o0wpqzfqf.s[25]++;coasterComponent.message=config.message;}else{cov_2o0wpqzfqf.b[1][1]++;}cov_2o0wpqzfqf.s[26]++;if(config.icon){cov_2o0wpqzfqf.b[2][0]++;cov_2o0wpqzfqf.s[27]++;coasterComponent.icon=config.icon;}else{cov_2o0wpqzfqf.b[2][1]++;}cov_2o0wpqzfqf.s[28]++;if(config.color){cov_2o0wpqzfqf.b[3][0]++;cov_2o0wpqzfqf.s[29]++;coasterComponent.color=config.color;}else{cov_2o0wpqzfqf.b[3][1]++;}cov_2o0wpqzfqf.s[30]++;return snackBarRef;}};cov_2o0wpqzfqf.s[31]++;FdsSnackBarService.parameters=[MatSnackBar];",{"version":3,"sources":["/Users/jaslan/Development/nifi-fds/platform/core/snackbars/services/snackbar.service.js"],"names":["MatSnackBarConfig","MatSnackBar","$","FdsCoasterComponent","ISnackBarConfig","title","message","snackBarRef","undefined","viewContainerRef","prototype","contstructor","extend","ICoasterConfig","icon","color","FdsSnackBarService","snackBarService","open","action","config","openFromComponent","component","dismiss","openCoaster","snackBarConfig","verticalPosition","horizontalPosition","duration","coasterComponent","instance","parameters"],"mappings":"g+IAgBA,OAASA,iBAAT,CAA4BC,WAA5B,KAA+C,mBAA/C,CACA,MAAOC,EAAP,KAAc,QAAd,CACA,OAASC,mBAAT,KAAoC,8BAApC,CACA,MAAO,SAASC,gBAAT,EAA2B,6CAChC,KAAKC,KAAL,CAAa,EAAb,CADgC,sBAEhC,KAAKC,OAAL,CAAe,EAAf,CAFgC,sBAGhC,KAAKC,WAAL,CAAmBC,SAAnB,CAHgC,sBAIhC,KAAKC,gBAAL,CAAwBD,SAAxB,CACD,C,sBACDJ,gBAAgBM,SAAhB,CAA4B,CAC1BC,aAAcP,eADY,CAA5B,C,sBAGAF,EAAEU,MAAF,CAASR,eAAT,CAA0BJ,iBAA1B,EACA,MAAO,SAASa,eAAT,EAA0B,6CAC/B,KAAKC,IAAL,CAAY,EAAZ,CAD+B,sBAE/B,KAAKC,KAAL,CAAa,EAAb,CACD,C,sBACDF,eAAeH,SAAf,CAA2B,CACzBC,aAAcE,cADW,CAA3B,C,sBAGAX,EAAEU,MAAF,CAASC,cAAT,CAAyBT,eAAzB,EAQA,MAAO,SAASY,mBAAT,CAA4Bf,WAA5B,CAAyC,8CAC9C,KAAKgB,eAAL,CAAuBhB,WAAvB,CACD,C,uBACDe,mBAAmBN,SAAnB,CAA+B,CAC7BC,aAAcK,kBADe,CAY7BE,KAAM,QAASA,KAAT,CAAcZ,OAAd,CAAuBa,MAAvB,CAA+BC,MAA/B,CAAuC,8CAC3C,MAAO,MAAKH,eAAL,CAAqBC,IAArB,CAA0BZ,OAA1B,CAAmCa,MAAnC,CAA2CC,MAA3C,CAAP,CACD,CAd4B,CAyB7BC,kBAAmB,QAASA,kBAAT,CAA2BC,SAA3B,CAAsCF,MAAtC,CAA8C,8CAC/D,MAAO,MAAKH,eAAL,CAAqBI,iBAArB,CAAuCC,SAAvC,CAAkDF,MAAlD,CAAP,CACD,CA3B4B,CAiC7BG,QAAS,QAASA,QAAT,EAAmB,8CAC1B,KAAKN,eAAL,CAAqBM,OAArB,GACD,CAnC4B,CAmD7BC,YAAa,QAASA,YAAT,CAAqBJ,MAArB,CAA6B,uBACxC,GAAIK,wCAAiB,GAAIZ,eAAJ,EAAjB,CAAJ,CADwC,uBAExCY,eAAeC,gBAAf,CAAkCN,OAAOM,gBAAzC,CAFwC,uBAGxCD,eAAeE,kBAAf,CAAoCP,OAAOO,kBAA3C,CAHwC,uBAIxCF,eAAeG,QAAf,CAA0BR,OAAOQ,QAAjC,CACA,GAAIrB,qCAAc,KAAKU,eAAL,CAAqBI,iBAArB,CAAuClB,mBAAvC,CAA4DsB,cAA5D,CAAd,CAAJ,CACA,GAAII,0CAAmBtB,YAAYuB,QAA/B,CAAJ,CANwC,uBAOxCD,iBAAiBtB,WAAjB,CAA+BA,WAA/B,CAPwC,uBASxC,GAAIa,OAAOf,KAAX,CAAkB,iDAChBwB,iBAAiBxB,KAAjB,CAAyBe,OAAOf,KAAhC,CACD,CAFD,+BATwC,uBAaxC,GAAIe,OAAOd,OAAX,CAAoB,iDAClBuB,iBAAiBvB,OAAjB,CAA2Bc,OAAOd,OAAlC,CACD,CAFD,+BAbwC,uBAiBxC,GAAIc,OAAON,IAAX,CAAiB,iDACfe,iBAAiBf,IAAjB,CAAwBM,OAAON,IAA/B,CACD,CAFD,+BAjBwC,uBAqBxC,GAAIM,OAAOL,KAAX,CAAkB,iDAChBc,iBAAiBd,KAAjB,CAAyBK,OAAOL,KAAhC,CACD,CAFD,+BArBwC,uBAyBxC,MAAOR,YAAP,CACD,CA7E4B,CAA/B,C,uBA+EAS,mBAAmBe,UAAnB,CAAgC,CAAC9B,WAAD,CAAhC","sourcesContent":["/*\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 { MatSnackBarConfig, MatSnackBar } from '@angular/material';\nimport $ from 'jquery';\nimport { FdsCoasterComponent } from '../coaster/coaster.component';\nexport function ISnackBarConfig() {\n  this.title = '';\n  this.message = '';\n  this.snackBarRef = undefined;\n  this.viewContainerRef = undefined;\n}\nISnackBarConfig.prototype = {\n  contstructor: ISnackBarConfig\n};\n$.extend(ISnackBarConfig, MatSnackBarConfig);\nexport function ICoasterConfig() {\n  this.icon = '';\n  this.color = '';\n}\nICoasterConfig.prototype = {\n  contstructor: ICoasterConfig\n};\n$.extend(ICoasterConfig, ISnackBarConfig);\n/**\n * FdsSnackBarService constructor.\n *\n * @param MatSnackBar      The angular material MatSnackBar.\n * @constructor\n */\n\nexport function FdsSnackBarService(MatSnackBar) {\n  this.snackBarService = MatSnackBar;\n}\nFdsSnackBarService.prototype = {\n  contstructor: FdsSnackBarService,\n\n  /**\n   * Wrapper function over the open() method in MatSnackBar.\n   *\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   * @returns {MatSnackBarRef}    The reference to the snackbar.\n   */\n  open: function open(message, action, config) {\n    return this.snackBarService.open(message, action, config);\n  },\n\n  /**\n   * Wrapper function over the openFromComponent() method in MatSnackBar.\n   * Opens a snackbar containing the given component.\n   *\n   * @param component     The angular ComponentType<T>.\n   * @param config        The angular material MatSnackBarConfig.\n   *\n   * @returns {MatSnackBarRef}    The reference to the snackbar.\n   */\n  openFromComponent: function openFromComponent(component, config) {\n    return this.snackBarService.openFromComponent(component, config);\n  },\n\n  /**\n   * Wrapper function over the dismiss() method in MatSnackBar.\n   * Dismisses the currently-open snackbar.\n   */\n  dismiss: function dismiss() {\n    this.snackBarService.dismiss();\n  },\n\n  /**\n   * Opens a coaster snackbar with the provided config.\n   *\n   * @param config     ICoasterConfig {\n   *                                      message?: string;\n   *                                      title?: string;\n   *                                      snackBarRef?: MatSnackBarRef;\n   *                                      viewContainerRef?: ViewContainerRef;\n   *                                      icon?: string;\n   *                                      color?: string;\n   *                                   }\n   *\n   * @returns {MatSnackBarRef}    The reference to the snackbar.\n   */\n  openCoaster: function openCoaster(config) {\n    var snackBarConfig = new ICoasterConfig();\n    snackBarConfig.verticalPosition = config.verticalPosition;\n    snackBarConfig.horizontalPosition = config.horizontalPosition;\n    snackBarConfig.duration = config.duration;\n    var snackBarRef = this.snackBarService.openFromComponent(FdsCoasterComponent, snackBarConfig);\n    var coasterComponent = snackBarRef.instance;\n    coasterComponent.snackBarRef = snackBarRef;\n\n    if (config.title) {\n      coasterComponent.title = config.title;\n    }\n\n    if (config.message) {\n      coasterComponent.message = config.message;\n    }\n\n    if (config.icon) {\n      coasterComponent.icon = config.icon;\n    }\n\n    if (config.color) {\n      coasterComponent.color = config.color;\n    }\n\n    return snackBarRef;\n  }\n};\nFdsSnackBarService.parameters = [MatSnackBar];"]}]}