-
Notifications
You must be signed in to change notification settings - Fork 1
/
default~code-code-example-module-ngfactory~code-code-tabs-module-ngfactory.9637b6e500434e7a8cf7.js.map
1 lines (1 loc) · 85.3 KB
/
default~code-code-example-module-ngfactory~code-code-tabs-module-ngfactory.9637b6e500434e7a8cf7.js.map
1
{"version":3,"sources":["webpack:///./src/app/shared/copier.service.ts","webpack:///./src/app/custom-elements/code/code.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/custom-elements/code/code.component.ts.CodeComponent.html","webpack:///./src/app/custom-elements/code/code.component.ts","webpack:///./src/app/custom-elements/code/code.component.ts.pre-build-optimizer.js","webpack:///./src/app/custom-elements/code/code.module.ts","webpack:///./node_modules/@angular/material/esm5/snack-bar.es5.js.pre-build-optimizer.js","webpack:///./src/app/custom-elements/code/pretty-printer.service.ts","webpack:///./node_modules/@angular/material/snack-bar/typings/index.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/snack-bar/typings/index.d.ts.MatSnackBarContainer.html","webpack:///./node_modules/@angular/material/snack-bar/typings/index.d.ts.SimpleSnackBar.html"],"names":["__webpack_require__","d","__webpack_exports__","CopierService","prototype","createFake","text","docElem","document","documentElement","isRTL","getAttribute","this","fakeElem","createElement","style","fontSize","border","padding","margin","position","yPosition","window","pageYOffset","scrollTop","top","setAttribute","value","body","appendChild","select","setSelectionRange","length","removeFake","removeChild","copyText","execCommand","err","RenderType_CodeComponent","View_CodeComponent_0","CodeComponentNgFactory","_angular_core__WEBPACK_IMPORTED_MODULE_0__","_angular_common__WEBPACK_IMPORTED_MODULE_1__","_code_component__WEBPACK_IMPORTED_MODULE_2__","_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_3__","_pretty_printer_service__WEBPACK_IMPORTED_MODULE_4__","_shared_copier_service__WEBPACK_IMPORTED_MODULE_5__","_shared_logger_service__WEBPACK_IMPORTED_MODULE_6__","encapsulation","styles","data","View_CodeComponent_1","_l","_v","en","$event","ad","component","doCopy","_ck","ariaLabel","codeContainer","ngIf","hideCopy","language","View_CodeComponent_Host_0","linenums","path","region","header","codeFormatted","CodeComponent","rxjs_operators__WEBPACK_IMPORTED_MODULE_1__","snackbar","pretty","copier","logger","Object","defineProperty","get","_code","set","code","trim","formatDisplayedCode","showMissingCodeMessage","enumerable","configurable","_header","ngOnChanges","indent","lines","_this","leftAlignedCode","Number","MAX_VALUE","split","forEach","line","lineIndent","search","Math","min","map","substr","join","setCodeHtml","codeText","getCodeText","formatCode","getLinenums","pipe","emit","subscribe","c","src","formattedCode","nativeElement","innerHTML","textContent","log","open","duration","error","Error","parseInt","isNaN","match","CodeModule","MatSnackBarModule","MatSnackBar","MatSnackBarContainer","MAT_SNACK_BAR_DATA","MatSnackBarConfig","MatSnackBarRef","SimpleSnackBar","rxjs__WEBPACK_IMPORTED_MODULE_0__","_angular_core__WEBPACK_IMPORTED_MODULE_1__","tslib__WEBPACK_IMPORTED_MODULE_3__","_angular_cdk_portal__WEBPACK_IMPORTED_MODULE_4__","rxjs_operators__WEBPACK_IMPORTED_MODULE_5__","rxjs_operators__WEBPACK_IMPORTED_MODULE_6__","_angular_cdk_overlay__WEBPACK_IMPORTED_MODULE_7__","_angular_cdk_a11y__WEBPACK_IMPORTED_MODULE_8__","_angular_cdk_layout__WEBPACK_IMPORTED_MODULE_9__","containerInstance","_overlayRef","_afterDismissed","_afterOpened","_onAction","_dismissedByAction","onAction","dismiss","_onExit","_finishDismiss","closed","exit","clearTimeout","_durationTimeoutId","dismissWithAction","next","complete","closeWithAction","_dismissAfter","setTimeout","_open","dispose","dismissedByAction","afterDismissed","asObservable","afterOpened","_onEnter","politeness","announcementMessage","horizontalPosition","verticalPosition","snackBarRef","action","_super","_ngZone","_elementRef","_changeDetectorRef","snackBarConfig","call","_destroyed","_animationState","attachComponentPortal","portal","_assertNotAttached","_applySnackBarClasses","_portalOutlet","attachTemplatePortal","onAnimationEnd","event","toState","fromState","_completeExit","onEnter_1","run","enter","detectChanges","ngOnDestroy","onMicrotaskEmpty","element","panelClasses","panelClass","Array","isArray","cssClass","classList","add","hasAttached","MAT_SNACK_BAR_DEFAULT_OPTIONS","providedIn","factory","_overlay","_live","_injector","_breakpointObserver","_parentSnackBar","_defaultConfig","_snackBarRefAtThisLevel","parent","_openedSnackBarRef","openFromComponent","config","_attach","openFromTemplate","template","message","_config","_attachSnackBarContainer","overlayRef","injector","viewContainerRef","WeakMap","containerPortal","containerRef","attach","instance","content","userConfig","_createOverlay","container","$implicit","_createInjector","contentRef","undefined","observe","Handset","detachments","state$$1","matches","overlayElement","remove","_animateSnackBar","announce","overlayConfig","direction","positionStrategy","global","isRtl","isLeft","isRight","left","right","centerHorizontally","bottom","create","ngInjectableDef","token","PrettyPrinter","rxjs_operators__WEBPACK_IMPORTED_MODULE_2__","rxjs_operators__WEBPACK_IMPORTED_MODULE_3__","prettyPrintOne","getPrettyPrintOne","ppo","Promise","resolve","e","then","t","bind","msg","console","MatSnackBarContainerNgFactory","SimpleSnackBarNgFactory","_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_1__","_angular_common__WEBPACK_IMPORTED_MODULE_3__","_angular_cdk_portal__WEBPACK_IMPORTED_MODULE_5__","_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_6__","_angular_material_button__WEBPACK_IMPORTED_MODULE_10__","_button_typings_index_ngfactory__WEBPACK_IMPORTED_MODULE_11__","_angular_cdk_a11y__WEBPACK_IMPORTED_MODULE_12__","_angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_13__","RenderType_MatSnackBarContainer","animation","type","name","definitions","transform","opacity","offset","options","expr","timings","View_MatSnackBarContainer_1","View_MatSnackBarContainer_0","View_MatSnackBarContainer_Host_0","RenderType_SimpleSnackBar","View_SimpleSnackBar_1","_co","disabled","_animationMode","View_SimpleSnackBar_0","hasAction","View_SimpleSnackBar_Host_0"],"mappings":"6FAAAA,EAAAC,EAAAC,EAAA,sBAAAC,IAUA,IAAAA,EAAA,oBAAAA,KAwDA,OAjDIA,EAAAC,UAAAC,WAAA,SAAWC,GACT,IAAMC,EAAUC,SAASC,gBACnBC,EAAwC,QAAhCH,EAAQI,aAAa,OAGnCC,KAAKC,SAAWL,SAASM,cAAc,YAGvCF,KAAKC,SAASE,MAAMC,SAAW,OAG/BJ,KAAKC,SAASE,MAAME,OAAS,IAC7BL,KAAKC,SAASE,MAAMG,QAAU,IAC9BN,KAAKC,SAASE,MAAMI,OAAS,IAG7BP,KAAKC,SAASE,MAAMK,SAAW,WAC/BR,KAAKC,SAASE,MAAOL,EAAQ,QAAU,QAAW,UAGlD,IAAMW,EAAYC,OAAOC,aAAehB,EAAQiB,UAChDZ,KAAKC,SAASE,MAAMU,IAAMJ,EAAY,KAEtCT,KAAKC,SAASa,aAAa,WAAY,IACvCd,KAAKC,SAASc,MAAQrB,EAEtBE,SAASoB,KAAKC,YAAYjB,KAAKC,UAE/BD,KAAKC,SAASiB,SACdlB,KAAKC,SAASkB,kBAAkB,EAAGnB,KAAKC,SAASc,MAAMK,SAGzD7B,EAAAC,UAAA6B,WAAA,WACMrB,KAAKC,WACPL,SAASoB,KAAKM,YAAYtB,KAAKC,UAC/BD,KAAKC,SAAW,OAIpBV,EAAAC,UAAA+B,SAAA,SAAS7B,GACP,IAEE,OADAM,KAAKP,WAAWC,GACTE,SAAS4B,YAAY,QAC5B,MAAOC,GACP,OAAO,UAEPzB,KAAKqB,eAGb9B,EAxDA,wCCVAH,EAAAC,EAAAC,EAAA,sBAAAoC,IAAAtC,EAAAC,EAAAC,EAAA,sBAAAqC,IAAAvC,EAAAC,EAAAC,EAAA,sBAAAsC,IAAA,IAAAC,EAAAzC,EAAA,QAAA0C,EAAA1C,EAAA,QAAA2C,EAAA3C,EAAA,QAAA4C,EAAA5C,EAAA,QAAA6C,EAAA7C,EAAA,QAAA8C,EAAA9C,EAAA,QAAA+C,EAAA/C,EAAA,QAcIsC,EAA2BG,EAAA,GAAQ,CAAEO,cAAe,EAAGC,OADhC,GAC8DC,KAAM,KAE/F,SAASC,EAAqBC,GAAM,OAAOX,EAAA,GAAQ,EAAG,ECfpCW,MAAAX,EAAA,2JAAAY,EAAAC,EAAAC,GAAA,IAAAC,GAAA,QACiI,UAAAF,IDgB3IE,GAD6B,IChBnBH,EACoJI,UDe9IC,UACFF,GCjBJA,GAAA,aACoJJ,MAAAX,EAAA,6BAASW,MAAAX,EAAA,+EAAyBW,MAAAX,EAAA,+BAAmBW,MAAAX,EAAA,2BAAO,cAAAkB,EAAAN,GADhNM,EAAAN,EAAA,IACgNA,EAAAI,UAAxFG,aDkBnI,SAASrB,EAAqBa,GAAM,OAAOX,EAAA,GAAQ,EAAG,CAACA,EAAA,GAAQ,UAAW,EAAG,CAAEoB,cAAe,KCpBhGT,MAAAX,EAAA,uEACMW,MAAAX,EAAA,yBAAOW,MAAAX,EAAA,6BAAAU,IAAAV,EAAA,kBAAAC,EAAA,GAAAD,EAAA,EAAAA,EAAA,IAAAqB,KAAA,mBACyNV,MAAAX,EAAA,2BAAOW,MAAAX,EAAA,2GAAoDW,MAAAX,EAAA,yBAAK,SAAAkB,EAAAN,GADzRM,EAAAN,EAAA,KACyRA,EAAAI,UAArRM,WAAA,SAAAJ,EAAAN,GAFjBM,EAAAN,EAAA,IAAKZ,EAAA,yBAEYY,EAAAI,UAFZO,SAAA,ODqBH,SAASC,EAA0Bb,GAAM,OAAOX,EAAA,GAAQ,EAAG,EAAEW,MAAQX,EAAA,GAAQ,EAAG,EAAG,KAAM,KAAM,EAAG,WAAY,GAAI,KAAM,KAAM,KAAMF,EAAsBD,IAA4BG,EAAA,GAAQ,EAAG,OAAQ,KAAM,EAAGE,EAAA,EAAkB,CAACC,EAAA,EAAgBC,EAAA,EAAkBC,EAAA,EAAkBC,EAAA,GAAY,KAAM,OAAQ,KAAM,MAChU,IAAIP,EAAyBC,EAAA,GAAQ,WAAYE,EAAA,EAAkBsB,EAA2B,CAAEF,SAAU,WAAYC,SAAU,WAAYE,SAAU,WAAYC,KAAM,OAAQC,OAAQ,SAAUC,OAAQ,UAAY,CAAEC,cAAe,iBAAmB,yCEtB1PtE,EAAAC,EAAAC,EAAA,sBAAAqE,IAAA,IAAA9B,EAAAzC,EAAA,QAAAwE,EAAAxE,EAAA,QAkCAuE,EAAA,WAmEE,SAAAA,EACUE,EACAC,EACAC,EACAC,GAHAhE,KAAA6D,WACA7D,KAAA8D,SACA9D,KAAA+D,SACA/D,KAAAgE,SAxDVhE,KAAAgD,UAAY,GA+CFhD,KAAA0D,cAAgB,IAAI7B,EAAA,EAgFhC,OAzHEoC,OAAAC,eAAIP,EAAAnE,UAAA,OAAI,CCbF2E,IDsBN,WAAqB,OAAOnE,KAAKoE,OCpB3BC,IDWN,SAASC,GACPtE,KAAKoE,MAAQE,EAERtE,KAAKoE,OAAUpE,KAAKoE,MAAMG,OAG7BvE,KAAKwE,sBAFLxE,KAAKyE,0BCNHC,YAAY,EACZC,cAAc,IDkCpBV,OAAAC,eACIP,EAAAnE,UAAA,SAAM,CChCJ2E,IDoCN,WAAuB,OAAOnE,KAAK4E,SClC7BP,ID6BN,SACWZ,GACTzD,KAAK4E,QAAUnB,EACfzD,KAAKgD,UAAYhD,KAAKyD,OAAS,0BAA0BzD,KAAKyD,OAAW,IC5BrEiB,YAAY,EACZC,cAAc,ID2CpBhB,EAAAnE,UAAAqF,YAAA,WAGM7E,KAAKsE,MACPtE,KAAKwE,uBAIDb,EAAAnE,UAAAgF,oBAAR,eAgEIM,EAEEC,EAlENC,EAAAhF,KACQiF,GA+DJH,EAASI,OAAOC,WAEdJ,EAjE8B/E,KAAKsE,KAiEtBc,MAAM,OACnBC,QAAQ,SAAAC,GACZ,IAAMC,EAAaD,EAAKE,OAAO,OACX,IAAhBD,IACFT,EAASW,KAAKC,IAAIH,EAAYT,MAI3BC,EAAMY,IAAI,SAAAL,GAAQ,OAAAA,EAAKM,OAAOd,KAASe,KAAK,MAAMtB,QAxEvDvE,KAAK8F,YAAYb,GACjBjF,KAAK+F,SAAW/F,KAAKgG,cAErBhG,KAAK8D,OACAmC,WAAWhB,EAAiBjF,KAAKoD,SAAUpD,KAAKkG,YAAYjB,IAC5DkB,KAAKlC,OAAAL,EAAA,EAAAK,CAAI,WAAM,OAAAe,EAAKtB,cAAc0C,UAClCC,UAAU,SAAAC,GAAK,OAAAtB,EAAKc,YAAYQ,IAAI,SAAA7E,OAKnCkC,EAAAnE,UAAAiF,uBAAR,WACE,IAAM8B,EAAMvG,KAAKuD,KAAOvD,KAAKuD,MAAQvD,KAAKwD,OAAS,IAAMxD,KAAKwD,OAAS,IAAM,GAE7ExD,KAAK8F,YAAY,sDADFS,EAAM,SAASA,EAAQ,KACsC,SAItE5C,EAAAnE,UAAAsG,YAAR,SAAoBU,GAGlBxG,KAAKiD,cAAcwD,cAAcC,UAAYF,GAIvC7C,EAAAnE,UAAAwG,YAAR,WAIE,OAAOhG,KAAKiD,cAAcwD,cAAcE,aAI1ChD,EAAAnE,UAAAsD,OAAA,WACE,IAAMwB,EAAOtE,KAAK+F,SACS/F,KAAK+D,OAAOxC,SAAS+C,IAG9CtE,KAAKgE,OAAO4C,IAAI,4BAA6BtC,GAC7CtE,KAAK6D,SAASgD,KAAK,cAAe,GAAI,CAAEC,SAAU,QAElD9G,KAAKgE,OAAO+C,MAAM,IAAIC,MAAM,qCAAqC1C,EAAI,MACrEtE,KAAK6D,SAASgD,KAAK,iCAAkC,GAAI,CAAEC,SAAU,QAKzEnD,EAAAnE,UAAA0G,YAAA,SAAY5B,GACV,IAAMhB,EACqB,kBAAlBtD,KAAKsD,SAAyBtD,KAAKsD,SACxB,SAAlBtD,KAAKsD,UACa,UAAlBtD,KAAKsD,WACoB,iBAAlBtD,KAAKsD,SAAwB2D,SAASjH,KAAKsD,SAAU,IAC5DtD,KAAKsD,UAGP,OAAmB,MAAZA,GAAoB4D,MAAM5D,IAC5BgB,EAAK6C,MAAM,QAAU,IAAI/F,OAnKF,GAmKqCkC,GAErEK,EA9IA,sCE3BAvE,EAAAC,EAAAC,EAAA,sBAAA8H,IAAA,IAAAA,EAAA,WAO0B,OAP1B,mDCPAhI,EAAAC,EAAAC,EAAA,sBAAA+H,IAAAjI,EAAAC,EAAAC,EAAA,sBAAAgI,IAAAlI,EAAAC,EAAAC,EAAA,sBAAAiI,IAAAnI,EAAAC,EAAAC,EAAA,sBAAAkI,IAAApI,EAAAC,EAAAC,EAAA,sBAAAmI,IAAArI,EAAAC,EAAAC,EAAA,sBAAAoI,IAAAtI,EAAAC,EAAAC,EAAA,sBAAAqI,IAAA,IAAAC,EAAAxI,EAAA,QAAAyI,EAAAzI,EAAA,QAAA0I,GAAA1I,EAAA,QAAAA,EAAA,SAAA2I,EAAA3I,EAAA,QAAA4I,EAAA5I,EAAA,QAAA6I,EAAA7I,EAAA,QAAA8I,EAAA9I,EAAA,QAAA+I,EAAA/I,EAAA,QAAAgJ,EAAAhJ,EAAA,QAgCAsI,EAAgC,WAC5B,SAASA,EAAeW,EAAmBC,GACvC,IAAItD,EAAQhF,KACZA,KAAKsI,YAAcA,EAInBtI,KAAKuI,gBAAkB,IAAIX,EAAA,EAI3B5H,KAAKwI,aAAe,IAAIZ,EAAA,EAIxB5H,KAAKyI,UAAY,IAAIb,EAAA,EAIrB5H,KAAK0I,oBAAqB,EAC1B1I,KAAKqI,kBAAoBA,EAEzBrI,KAAK2I,WAAWtC,UAAU,WAAc,OAAOrB,EAAM4D,YACrDP,EAAkBQ,QAAQxC,UAAU,WAAc,OAAOrB,EAAM8D,mBAwInE,OAjIApB,EAAelI,UAAUoJ,QAIzB,WACS5I,KAAKuI,gBAAgBQ,QACtB/I,KAAKqI,kBAAkBW,OAE3BC,aAAajJ,KAAKkJ,qBAOtBxB,EAAelI,UAAU2J,kBAIzB,WACSnJ,KAAKyI,UAAUM,SAChB/I,KAAK0I,oBAAqB,EAC1B1I,KAAKyI,UAAUW,OACfpJ,KAAKyI,UAAUY,aAcvB3B,EAAelI,UAAU8J,gBAMzB,WACItJ,KAAKmJ,qBAQTzB,EAAelI,UAAU+J,cAKzB,SAAUzC,GACN,IAAI9B,EAAQhF,KACZA,KAAKkJ,mBAAqBM,WAAW,WAAc,OAAOxE,EAAM4D,WAAc9B,IAOlFY,EAAelI,UAAUiK,MAIzB,WACSzJ,KAAKwI,aAAaO,SACnB/I,KAAKwI,aAAaY,OAClBpJ,KAAKwI,aAAaa,aAO1B3B,EAAelI,UAAUsJ,eAIzB,WACI9I,KAAKsI,YAAYoB,UACZ1J,KAAKyI,UAAUM,QAChB/I,KAAKyI,UAAUY,WAEnBrJ,KAAKuI,gBAAgBa,KAAK,CAAEO,kBAAmB3J,KAAK0I,qBACpD1I,KAAKuI,gBAAgBc,WACrBrJ,KAAK0I,oBAAqB,GAO9BhB,EAAelI,UAAUoK,eAIzB,WACI,OAAO5J,KAAKuI,gBAAgBsB,gBAOhCnC,EAAelI,UAAUsK,YAIzB,WACI,OAAO9J,KAAKqI,kBAAkB0B,UAOlCrC,EAAelI,UAAUmJ,SAIzB,WACI,OAAO3I,KAAKyI,UAAUoB,gBAEnBnC,EA/JoB,GAyK3BF,EAAqB,IAAIK,EAAA,EAAe,mBAS5CJ,EAAmC,WA4B/B,OA3BA,WAIIzH,KAAKgK,WAAa,YAKlBhK,KAAKiK,oBAAsB,GAI3BjK,KAAK8G,SAAW,EAIhB9G,KAAKsC,KAAO,KAIZtC,KAAKkK,mBAAqB,SAI1BlK,KAAKmK,iBAAmB,UA1BE,GAuC9BxC,EAAgC,WAChC,SAASA,EAAeyC,EAAa9H,GACjCtC,KAAKoK,YAAcA,EACnBpK,KAAKsC,KAAOA,EA0ChB,OAnCAqF,EAAenI,UAAU6K,OAIzB,WACIrK,KAAKoK,YAAYjB,qBAErBlF,OAAOC,eAAeyD,EAAenI,UAAW,YAAa,CAEzD2E,IAIA,WACI,QAASnE,KAAKsC,KAAK+H,QAEvB3F,YAAY,EACZC,cAAc,IAkBXgD,EA7CwB,GAkF/BJ,EAAsC,SAAU+C,GAEhD,SAAS/C,EAAqBgD,EAASC,EAAaC,EAAoBC,GACpE,IAAI1F,EAAQsF,EAAOK,KAAK3K,OAASA,KAqBjC,OApBAgF,EAAMuF,QAAUA,EAChBvF,EAAMwF,YAAcA,EACpBxF,EAAMyF,mBAAqBA,EAC3BzF,EAAM0F,eAAiBA,EAIvB1F,EAAM4F,YAAa,EAInB5F,EAAM6D,QAAU,IAAIjB,EAAA,EAIpB5C,EAAM+E,SAAW,IAAInC,EAAA,EAIrB5C,EAAM6F,gBAAkB,OACjB7F,EA+LX,OAtNAf,OAAA6D,EAAA,EAAA7D,CAAUsD,EAAsB+C,GAgChC/C,EAAqB/H,UAAUsL,sBAM/B,SAAUC,GAGN,OAFA/K,KAAKgL,qBACLhL,KAAKiL,wBACEjL,KAAKkL,cAAcJ,sBAAsBC,IASpDxD,EAAqB/H,UAAU2L,qBAM/B,SAAUJ,GAGN,OAFA/K,KAAKgL,qBACLhL,KAAKiL,wBACEjL,KAAKkL,cAAcC,qBAAqBJ,IAQnDxD,EAAqB/H,UAAU4L,eAK/B,SAAUC,GACN,IAAiCC,EAAUD,EAAMC,QAIjD,IAHiB,SAAZA,GAAoC,SADzBD,EAAME,WAC0C,WAAZD,IAChDtL,KAAKwL,gBAEO,YAAZF,EAAuB,CAEvB,IAAIG,EAAYzL,KAAK+J,SACrB/J,KAAKuK,QAAQmB,IAAI,WACbD,EAAUrC,OACVqC,EAAUpC,eAStB9B,EAAqB/H,UAAUmM,MAI/B,WACS3L,KAAK4K,aACN5K,KAAK6K,gBAAkB,UACvB7K,KAAKyK,mBAAmBmB,kBAQhCrE,EAAqB/H,UAAUwJ,KAI/B,WAKI,OADAhJ,KAAK6K,gBAAkB,SAChB7K,KAAK6I,SAOhBtB,EAAqB/H,UAAUqM,YAI/B,WACI7L,KAAK4K,YAAa,EAClB5K,KAAKwL,iBAOTjE,EAAqB/H,UAAUgM,cAK/B,WACI,IAAIxG,EAAQhF,KACZA,KAAKuK,QAAQuB,iBAAiBjC,eAAe1D,KAAKlC,OAAA+D,EAAA,EAAA/D,CAAK,IAAIoC,UAAU,WACjErB,EAAM6D,QAAQO,OACdpE,EAAM6D,QAAQQ,cAOtB9B,EAAqB/H,UAAUyL,sBAI/B,WAEI,IAAIc,EAAU/L,KAAKwK,YAAY/D,cAE3BuF,EAAehM,KAAK0K,eAAeuB,WACnCD,IACIE,MAAMC,QAAQH,GAEdA,EAAa3G,QAAQ,SAAU+G,GAAY,OAAOL,EAAQM,UAAUC,IAAIF,KAGxEL,EAAQM,UAAUC,IAAIN,IAGiB,WAA3ChM,KAAK0K,eAAeR,oBACpB6B,EAAQM,UAAUC,IAAI,wBAEmB,QAAzCtM,KAAK0K,eAAeP,kBACpB4B,EAAQM,UAAUC,IAAI,sBAO9B/E,EAAqB/H,UAAUwL,mBAI/B,WACI,GAAIhL,KAAKkL,cAAcqB,cACnB,MAAMvF,MAAM,6EA4BbO,EAvN8B,CAwNvCQ,EAAA,GAMEV,EAAmC,WAiBnC,OAhBA,aADkC,GA2BlCmF,EAAgC,IAAI3E,EAAA,EAAe,gCAAiC,CACpF4E,WAAY,OACZC,QAMJ,WACI,OAAO,IAAIjF,KAKXH,EAA6B,WAC7B,SAASA,EAAYqF,EAAUC,EAAOC,EAAWC,EAAqBC,EAAiBC,GACnFhN,KAAK2M,SAAWA,EAChB3M,KAAK4M,MAAQA,EACb5M,KAAK6M,UAAYA,EACjB7M,KAAK8M,oBAAsBA,EAC3B9M,KAAK+M,gBAAkBA,EACvB/M,KAAKgN,eAAiBA,EAMtBhN,KAAKiN,wBAA0B,KAuVnC,OArVAhJ,OAAOC,eAAeoD,EAAY9H,UAAW,qBAAsB,CAE/D2E,IAIA,WAEI,IAAI+I,EAASlN,KAAK+M,gBAClB,OAAOG,EAASA,EAAOC,mBAAqBnN,KAAKiN,yBAErD5I,IAIA,SAAUtD,GACFf,KAAK+M,gBACL/M,KAAK+M,gBAAgBI,mBAAqBpM,EAG1Cf,KAAKiN,wBAA0BlM,GAGvC2D,YAAY,EACZC,cAAc,IAkBlB2C,EAAY9H,UAAU4N,kBAStB,SAAUvK,EAAWwK,GACjB,OAAyBrN,KAAKsN,QAAQzK,EAAWwK,IAiBrD/F,EAAY9H,UAAU+N,iBAQtB,SAAUC,EAAUH,GAChB,OAAOrN,KAAKsN,QAAQE,EAAUH,IAelC/F,EAAY9H,UAAUqH,KAOtB,SAAU4G,EAASpD,EAAQgD,QACR,IAAXhD,IAAqBA,EAAS,IAElC,IAAIqD,EAAUzJ,OAAA6D,EAAA,EAAA7D,CAAS,GAAIjE,KAAKgN,eAAgBK,GAOhD,OAJAK,EAAQpL,KAAO,CAAEmL,QAASA,EAASpD,OAAQA,GACtCqD,EAAQzD,sBACTyD,EAAQzD,oBAAsBwD,GAE3BzN,KAAKoN,kBAAkBzF,EAAgB+F,IASlDpG,EAAY9H,UAAUoJ,QAItB,WACQ5I,KAAKmN,oBACLnN,KAAKmN,mBAAmBvE,WAMhCtB,EAAY9H,UAAUqM,YAGtB,WAEQ7L,KAAKiN,yBACLjN,KAAKiN,wBAAwBrE,WASrCtB,EAAY9H,UAAUmO,yBAMtB,SAAUC,EAAYP,GAElB,IAEIQ,EAAW,IAAI9F,EAAA,EAFAsF,GAAUA,EAAOS,kBAAoBT,EAAOS,iBAAiBD,UAE9B7N,KAAK6M,UAAW,IAAIkB,QAAQ,CAC1E,CAACtG,EAAmB4F,MAGpBW,EAAkB,IAAIjG,EAAA,EAAgBR,EAAsB8F,EAAOS,iBAAkBD,GAErFI,EAAeL,EAAWM,OAAOF,GAErC,OADAC,EAAaE,SAASzD,eAAiB2C,EAChCY,EAAaE,UASxB7G,EAAY9H,UAAU8N,QAOtB,SAAUc,EAASC,GAEf,IAAIhB,EAASpJ,OAAA6D,EAAA,EAAA7D,CAAS,GAAI,IAAIwD,EAAqBzH,KAAKgN,eAAgBqB,GAEpET,EAAa5N,KAAKsO,eAAejB,GAEjCkB,EAAYvO,KAAK2N,yBAAyBC,EAAYP,GAEtDjD,EAAc,IAAI1C,EAAe6G,EAAWX,GAChD,GAAIQ,aAAmBvG,EAAA,EAAa,CAEhC,IAAIkD,EAAS,IAAIhD,EAAA,EAAeqG,EAA0B,KAA2B,CACjFI,UAAWnB,EAAO/K,KAClB8H,YAAaA,IAEjBA,EAAY+D,SAAWI,EAAUpD,qBAAqBJ,OAErD,CAED,IAAI8C,EAAW7N,KAAKyO,gBAAgBpB,EAAQjD,GAIxCsE,GAFA3D,EAAS,IAAIhD,EAAA,EAAgBqG,OAASO,EAAWd,GAEpCU,EAAUzD,sBAAsBC,IAEjDX,EAAY+D,SAAWO,EAAWP,SAetC,OAVAnO,KAAK8M,oBAAoB8B,QAAQxG,EAAA,EAAYyG,SAAS1I,KAAKlC,OAAAgE,EAAA,EAAAhE,CAAU2J,EAAWkB,cAAc3I,KAAKlC,OAAA+D,EAAA,EAAA/D,CAAK,MAAMoC,UAAU,SAAU0I,GAC1HA,EAASC,QACTpB,EAAWqB,eAAe5C,UAAUC,IAAI,yBAGxCsB,EAAWqB,eAAe5C,UAAU6C,OAAO,2BAGnDlP,KAAKmP,iBAAiB/E,EAAaiD,GACnCrN,KAAKmN,mBAAqB/C,EACnBpK,KAAKmN,oBAQhB7F,EAAY9H,UAAU2P,iBAMtB,SAAU/E,EAAaiD,GACnB,IAAIrI,EAAQhF,KAEZoK,EAAYR,iBAAiBvD,UAAU,WAE/BrB,EAAMmI,oBAAsB/C,IAC5BpF,EAAMmI,mBAAqB,QAG/BnN,KAAKmN,oBAGLnN,KAAKmN,mBAAmBvD,iBAAiBvD,UAAU,WAC/C+D,EAAY/B,kBAAkBsD,UAElC3L,KAAKmN,mBAAmBvE,WAIxBwB,EAAY/B,kBAAkBsD,QAG9B0B,EAAOvG,UAAYuG,EAAOvG,SAAW,GACrCsD,EAAYN,cAAczD,UAAU,WAAc,OAAO+D,EAAYb,cAAiC8D,EAAgB,YAEtHA,EAAOpD,qBACPjK,KAAK4M,MAAMwC,SAAS/B,EAAOpD,oBAAqBoD,EAAOrD,aAQ/D1C,EAAY9H,UAAU8O,eAKtB,SAAUjB,GAEN,IAAIgC,EAAgB,IAAInH,EAAA,EACxBmH,EAAcC,UAAYjC,EAAOiC,UAEjC,IAAIC,EAAmBvP,KAAK2M,SAASnM,WAAWgP,SAE5CC,EAA6B,QAArBpC,EAAOiC,UAEfI,EAAwC,SAA9BrC,EAAOnD,oBACc,UAA9BmD,EAAOnD,qBAAmCuF,GACZ,QAA9BpC,EAAOnD,oBAAgCuF,EAExCE,GAAWD,GAAwC,WAA9BrC,EAAOnD,mBAkBhC,OAjBIwF,EACAH,EAAiBK,KAAK,KAEjBD,EACLJ,EAAiBM,MAAM,KAGvBN,EAAiBO,qBAGW,QAA5BzC,EAAOlD,iBACPoF,EAAiB1O,IAAI,KAGrB0O,EAAiBQ,OAAO,KAE5BV,EAAcE,iBAAmBA,EAC1BvP,KAAK2M,SAASqD,OAAOX,IAShC/H,EAAY9H,UAAUiP,gBAOtB,SAAUpB,EAAQjD,GAGd,OAAO,IAAIrC,EAAA,EADQsF,GAAUA,EAAOS,kBAAoBT,EAAOS,iBAAiBD,UACtC7N,KAAK6M,UAAW,IAAIkB,QAAQ,CAClE,CAACrG,EAAgB0C,GACjB,CAAC5C,EAAoB6F,EAAO/K,UAejBgF,EAAY2I,gBAAkBhM,OAAA4D,EAAA,EAAA5D,CAAiB,CAAEyI,QAAS,WAAiC,OAAO,IAAIpF,EAAYrD,OAAA4D,EAAA,EAAA5D,CAAOiE,EAAA,GAAUjE,OAAA4D,EAAA,EAAA5D,CAAOkE,EAAA,GAAgBlE,OAAA4D,EAAA,EAAA5D,CAAO4D,EAAA,GAAW5D,OAAA4D,EAAA,EAAA5D,CAAOmE,EAAA,GAAqBnE,OAAA4D,EAAA,EAAA5D,CAAOqD,EAAa,IAAKrD,OAAA4D,EAAA,EAAA5D,CAAOuI,KAAoC0D,MAAO5I,EAAamF,WAAYpF,IACxTC,EApWqB,sCChlBhClI,EAAAC,EAAAC,EAAA,sBAAA6Q,IAAA,IAAAvI,EAAAxI,EAAA,QAAAwE,EAAAxE,EAAA,QAAAgR,EAAAhR,EAAA,QAAAiR,EAAAjR,EAAA,QAcA+Q,EAAA,WAKE,SAAAA,EAAoBnM,GAAAhE,KAAAgE,SAClBhE,KAAKsQ,eAAiBrM,OAAA2D,EAAA,EAAA3D,CAAKjE,KAAKuQ,qBAAqBpK,KAAKlC,OAAAL,EAAA,EAAAK,IA0C9D,OAvCUkM,EAAA3Q,UAAA+Q,kBAAR,eAAAvL,EAAAhF,KACQwQ,EAAO9P,OAA+B,eAC5C,OAAO8P,EAAMC,QAAQC,QAAQF,GAE3BpR,EAAAuR,EAAA,IAAAC,KAAAxR,EAAAyR,EAAAC,KAAA,gBACGF,KACC,WAAM,OAAClQ,OAA+B,gBACtC,SAAAe,GACE,IAAMsP,EAAM,uCAAuCtP,EAAIgM,QAGvD,OAFAzI,EAAKhB,OAAO+C,MAAM,IAAIC,MAAM+J,IAErB,WAAQ,MAAM,IAAI/J,MAAM+J,OAczCZ,EAAA3Q,UAAAyG,WAAA,SAAW3B,EAAclB,EAAmBE,GAC1C,OAAOtD,KAAKsQ,eAAenK,KACzBlC,OAAAmM,EAAA,EAAAnM,CAAI,SAAAuM,GACF,IACE,OAAOA,EAAIlM,EAAMlB,EAAUE,GAC3B,MAAO7B,GACP,IAAMsP,EAAM,sCAAsCzM,EAAKsB,OAAO,EAAG,IAAG,QAEpE,MADAoL,QAAQjK,MAAMgK,EAAKtP,GACb,IAAIuF,MAAM+J,MAGpB9M,OAAAoM,EAAA,EAAApM,KAGNkM,EAhDA,sCChBA/Q,EAAAC,EAAAC,EAAA,sBAAA2R,IAAA7R,EAAAC,EAAAC,EAAA,sBAAA4R,IAAA,IAAArP,EAAAzC,EAAA,QAAA+R,EAAA/R,EAAA,QAAAgS,GAAAhS,EAAA,QAAAA,EAAA,SAAAiS,GAAAjS,EAAA,QAAAA,EAAA,SAAAkS,EAAAlS,EAAA,QAAAmS,GAAAnS,EAAA,QAAAA,EAAA,QAAAA,EAAA,QAAAA,EAAA,SAAAoS,EAAApS,EAAA,QAAAqS,EAAArS,EAAA,QAAAsS,EAAAtS,EAAA,QAuBIuS,EAAkC9P,EAAA,GAAQ,CAAEO,cAAe,EAAGC,OADhC,CAAC,uYACoEC,KAAM,CAAEsP,UAAa,CAAC,CAAEC,KAAM,EAAGC,KAAM,QAASC,YAAa,CAAC,CAAEF,KAAM,EAAGC,KAAM,eAAgBzP,OAAQ,CAAEwP,KAAM,EAAGxP,OAAQ,CAAE2P,UAAW,aAAcC,QAAS,GAAKC,OAAQ,MAAQC,aAASxD,GAAa,CAAEkD,KAAM,EAAGC,KAAM,UAAWzP,OAAQ,CAAEwP,KAAM,EAAGxP,OAAQ,CAAE2P,UAAW,WAAYC,QAAS,GAAKC,OAAQ,MAAQC,aAASxD,GAAa,CAAEkD,KAAM,EAAGO,KAAM,eAAgBR,UAAW,CAAEC,KAAM,EAAGxP,OAAQ,KAAMgQ,QAAS,oCAAsCF,QAAS,MAAQ,CAAEN,KAAM,EAAGO,KAAM,yBAA0BR,UAAW,CAAEC,KAAM,EAAGxP,OAAQ,CAAEwP,KAAM,EAAGxP,OAAQ,CAAE4P,QAAS,GAAKC,OAAQ,MAAQG,QAAS,qCAAuCF,QAAS,OAASA,QAAS,QAEhwB,SAASG,EAA4B9P,GAAM,OAAOX,EAAA,GAAQ,EAAG,EAAEW,MAAQX,EAAA,GAAQ,EAAG,KAAM,KAAM,KAAM,KAAM,MACnG,SAAS0Q,EAA4B/P,GAAM,OAAOX,EAAA,GAAQ,EAAG,CAACA,EAAA,GAAQ,UAAW,EAAG,CAAEqJ,cAAe,KC1B5G1I,MAAAX,EAAA,6BAAAyQ,IAAAzQ,EAAA,sBAAAwP,EAAA,GAAAxP,EAAA,EAAAA,EAAA,IAAAkJ,OAAA,qBAA6B,SAAAhI,EAAAN,GAA7BM,EAAAN,EAAA,IAAa,KAAe,MD2BrB,SAAS+P,EAAiChQ,GAAM,OAAOX,EAAA,GAAQ,EAAG,EAAEW,MAAQX,EAAA,GAAQ,EAAG,EAAG,KAAM,KAAM,EAAG,sBAAuB,CAAC,CAAC,QAAS,2BAA4B,CAAC,OAAQ,UAAW,CAAC,CAAC,GAAI,SAAU,IAAK,CAAC,CAAC,YAAa,gBAAiB,SAAUY,EAAIC,EAAIC,GAAU,IAAIC,GAAK,EAGtR,MAHiS,0BAA4BF,IAE3TE,GADsD,IAA1Cf,EAAA,GAAQY,EAAI,GAAG2I,eAAezI,IAC5BC,GACTA,GAAO2P,EAA6BZ,IAAmC9P,EAAA,GAAQ,EAAG,OAAQ,KAAM,EAAGsP,EAAA,EAAyB,CAACtP,EAAA,EAAWA,EAAA,EAAeA,EAAA,EAAsBsP,EAAA,GAAuB,KAAM,OAAQ,KAAM,SAAUpO,EAAKN,GAAsDM,EAAIN,EAAI,EAAG,EAA3CZ,EAAA,GAAQY,EAAI,GAAGoI,mBACzR,IAAIoG,EAAgCpP,EAAA,GAAQ,sBAAuBsP,EAAA,EAAyBqB,EAAkC,GAAI,GAAI,IAGlIC,EAA4B5Q,EAAA,GAAQ,CAAEO,cAAe,EAAGC,OADhC,CAAC,yUAC8DC,KAAM,KAEjG,SAASoQ,EAAsBlQ,GAAM,OAAOX,EAAA,GAAQ,EAAG,EEpC1BW,MAAAX,EAAA,8FACqBW,MAAAX,EAAA,gIAAAY,EAAAC,EAAAC,GAAA,IAAAC,GAAA,QAChC,UAAAF,IFoCVE,GAD6B,IEpCaH,EACbI,UFmCbwH,UACFzH,GErC4BA,GAAA4O,EAAA,EAAAA,EAAA,IAAA3P,EAAA,mBAAA0P,EAAA,GAAA1P,EAAA,EAAAyP,EAAA,EAAAG,EAAA,KAAAC,EAAA,gBACblP,MAAAX,EAAA,kBAC1B,cAAAkB,EAAAN,GAAA,IAAAkQ,EAAAlQ,EAAAI,UAFuCE,EAAAN,EAAA,IAAAZ,EAAA,GAAAY,EAAA,GAAAmQ,UAAA,wBAAA/Q,EAAA,GAAAY,EAAA,GAAAoQ,gBACb9P,EAAAN,EAAA,IAAAkQ,EAAArQ,KAAA+H,UFsC9B,SAASyI,EAAsBtQ,GAAM,OAAOX,EAAA,GAAQ,EAAG,EExC9DW,MAAAX,EAAA,yDAAMW,MAAAX,EAAA,qBAAuBW,MAAAX,EAAA,6BAAA6Q,IAAA7Q,EAAA,kBAAAuP,EAAA,GAAAvP,EAAA,EAAAA,EAAA,IAAAqB,KAAA,mBACqB,SAAAH,EAAAN,GADrBM,EAAAN,EAAA,IACqBA,EAAAI,UAADkQ,YAAA,SAAAhQ,EAAAN,GAD3CM,EAAAN,EAAA,IAC2CA,EAAAI,UAD3CP,KAAAmL,WFyCC,SAASuF,EAA2BxQ,GAAM,OAAOX,EAAA,GAAQ,EAAG,EAAEW,MAAQX,EAAA,GAAQ,EAAG,EAAG,KAAM,KAAM,EAAG,mBAAoB,CAAC,CAAC,QAAS,wBAAyB,KAAM,KAAM,KAAMiR,EAAuBL,IAA6B5Q,EAAA,GAAQ,EAAG,MAAO,KAAM,EAAGsP,EAAA,EAAmB,CAACA,EAAA,EAAmBA,EAAA,GAAwB,KAAM,OAAQ,KAAM,MACtV,IAAID,EAA0BrP,EAAA,GAAQ,mBAAoBsP,EAAA,EAAmB6B,EAA4B,GAAI,GAAI","file":"default~code-code-example-module-ngfactory~code-code-tabs-module-ngfactory.9637b6e500434e7a8cf7.js","sourcesContent":["/**\n * This class is based on the code in the following projects:\n *\n * - https://github.com/zenorocha/select\n * - https://github.com/zenorocha/clipboard.js/\n *\n * Both released under MIT license - © Zeno Rocha\n */\n\n\nexport class CopierService {\n private fakeElem: HTMLTextAreaElement|null;\n\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n * and makes a selection on it.\n */\n createFake(text: string) {\n const docElem = document.documentElement!;\n const isRTL = docElem.getAttribute('dir') === 'rtl';\n\n // Create a fake element to hold the contents to copy\n this.fakeElem = document.createElement('textarea');\n\n // Prevent zooming on iOS\n this.fakeElem.style.fontSize = '12pt';\n\n // Reset box model\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0';\n\n // Move element out of screen horizontally\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[ isRTL ? 'right' : 'left' ] = '-9999px';\n\n // Move element to the same position vertically\n const yPosition = window.pageYOffset || docElem.scrollTop;\n this.fakeElem.style.top = yPosition + 'px';\n\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = text;\n\n document.body.appendChild(this.fakeElem);\n\n this.fakeElem.select();\n this.fakeElem.setSelectionRange(0, this.fakeElem.value.length);\n }\n\n removeFake() {\n if (this.fakeElem) {\n document.body.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n\n copyText(text: string) {\n try {\n this.createFake(text);\n return document.execCommand('copy');\n } catch (err) {\n return false;\n } finally {\n this.removeFake();\n }\n }\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"./code.component\";\nimport * as i3 from \"@angular/material/snack-bar\";\nimport * as i4 from \"./pretty-printer.service\";\nimport * as i5 from \"../../shared/copier.service\";\nimport * as i6 from \"../../shared/logger.service\";\nvar styles_CodeComponent = [];\nvar RenderType_CodeComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_CodeComponent, data: {} });\nexport { RenderType_CodeComponent as RenderType_CodeComponent };\nfunction View_CodeComponent_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"button\", [[\"class\", \"material-icons copy-button no-print\"], [\"title\", \"Copy code snippet\"]], [[1, \"aria-label\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.doCopy() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\n \"])), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"span\", [[\"aria-hidden\", \"true\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"content_copy\"])), (_l()(), i0.ɵted(-1, null, [\"\\n \"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.ariaLabel; _ck(_v, 0, 0, currVal_0); }); }\nexport function View_CodeComponent_0(_l) { return i0.ɵvid(0, [i0.ɵqud(402653184, 1, { codeContainer: 0 }), (_l()(), i0.ɵeld(1, 0, null, null, 6, \"pre\", [], [[8, \"className\", 0]], null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\" \"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_CodeComponent_1)), i0.ɵdid(4, 16384, null, 0, i1.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n \"])), (_l()(), i0.ɵeld(6, 0, [[1, 0], [\"codeContainer\", 1]], null, 0, \"code\", [[\"class\", \"animated fadeIn\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\n \"]))], function (_ck, _v) { var _co = _v.component; var currVal_1 = !_co.hideCopy; _ck(_v, 4, 0, currVal_1); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = i0.ɵinlineInterpolate(1, \"prettyprint lang-\", _co.language, \"\"); _ck(_v, 1, 0, currVal_0); }); }\nexport function View_CodeComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"aio-code\", [], null, null, null, View_CodeComponent_0, RenderType_CodeComponent)), i0.ɵdid(1, 573440, null, 0, i2.CodeComponent, [i3.MatSnackBar, i4.PrettyPrinter, i5.CopierService, i6.Logger], null, null)], null, null); }\nvar CodeComponentNgFactory = i0.ɵccf(\"aio-code\", i2.CodeComponent, View_CodeComponent_Host_0, { hideCopy: \"hideCopy\", language: \"language\", linenums: \"linenums\", path: \"path\", region: \"region\", header: \"header\" }, { codeFormatted: \"codeFormatted\" }, []);\nexport { CodeComponentNgFactory as CodeComponentNgFactory };\n","\n <pre class=\"prettyprint lang-{{language}}\">\n <button *ngIf=\"!hideCopy\" class=\"material-icons copy-button no-print\"\n title=\"Copy code snippet\"\n [attr.aria-label]=\"ariaLabel\"\n (click)=\"doCopy()\">\n <span aria-hidden=\"true\">content_copy</span>\n </button>\n <code class=\"animated fadeIn\" #codeContainer></code>\n </pre>\n ","import { Component, ElementRef, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core';\nimport { Logger } from 'app/shared/logger.service';\nimport { PrettyPrinter } from './pretty-printer.service';\nimport { CopierService } from 'app/shared/copier.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { tap } from 'rxjs/operators';\n\n/**\n * If linenums is not set, this is the default maximum number of lines that\n * an example can display without line numbers.\n */\nconst DEFAULT_LINE_NUMS_COUNT = 10;\n\n/**\n * Formatted Code Block\n *\n * Pretty renders a code block, used in the docs and API reference by the code-example and\n * code-tabs embedded components.\n * It includes a \"copy\" button that will send the content to the clipboard when clicked\n *\n * Example usage:\n *\n * ```\n * <aio-code\n * [language]=\"ts\"\n * [linenums]=\"true\"\n * [path]=\"router/src/app/app.module.ts\"\n * [region]=\"animations-module\">\n * </aio-code>\n * ```\n *\n *\n * Renders code provided through the `updateCode` method.\n */\n@Component({\n selector: 'aio-code',\n template: `\n <pre class=\"prettyprint lang-{{language}}\">\n <button *ngIf=\"!hideCopy\" class=\"material-icons copy-button no-print\"\n title=\"Copy code snippet\"\n [attr.aria-label]=\"ariaLabel\"\n (click)=\"doCopy()\">\n <span aria-hidden=\"true\">content_copy</span>\n </button>\n <code class=\"animated fadeIn\" #codeContainer></code>\n </pre>\n `\n})\nexport class CodeComponent implements OnChanges {\n ariaLabel = '';\n\n /** The code to be copied when clicking the copy button, this should not be HTML encoded */\n private codeText: string;\n\n /** Code that should be formatted with current inputs and displayed in the view. */\n set code(code: string) {\n this._code = code;\n\n if (!this._code || !this._code.trim()) {\n this.showMissingCodeMessage();\n } else {\n this.formatDisplayedCode();\n }\n }\n get code(): string { return this._code; }\n _code: string;\n\n /** Whether the copy button should be shown. */\n @Input() hideCopy: boolean;\n\n /** Language to render the code (e.g. javascript, dart, typescript). */\n @Input() language: string;\n\n /**\n * Whether to display line numbers:\n * - If false: hide\n * - If true: show\n * - If number: show but start at that number\n */\n @Input() linenums: boolean | number | string;\n\n /** Path to the source of the code. */\n @Input() path: string;\n\n /** Region of the source of the code being displayed. */\n @Input() region: string;\n\n /** Optional header to be displayed above the code. */\n @Input()\n set header(header: string) {\n this._header = header;\n this.ariaLabel = this.header ? `Copy code snippet from ${this.header}` : '';\n }\n get header(): string { return this._header; }\n private _header: string;\n\n @Output() codeFormatted = new EventEmitter<void>();\n\n /** The element in the template that will display the formatted code. */\n @ViewChild('codeContainer') codeContainer: ElementRef;\n\n constructor(\n private snackbar: MatSnackBar,\n private pretty: PrettyPrinter,\n private copier: CopierService,\n private logger: Logger) {}\n\n ngOnChanges() {\n // If some inputs have changed and there is code displayed, update the view with the latest\n // formatted code.\n if (this.code) {\n this.formatDisplayedCode();\n }\n }\n\n private formatDisplayedCode() {\n const leftAlignedCode = leftAlign(this.code);\n this.setCodeHtml(leftAlignedCode); // start with unformatted code\n this.codeText = this.getCodeText(); // store the unformatted code as text (for copying)\n\n this.pretty\n .formatCode(leftAlignedCode, this.language, this.getLinenums(leftAlignedCode))\n .pipe(tap(() => this.codeFormatted.emit()))\n .subscribe(c => this.setCodeHtml(c), err => { /* ignore failure to format */ }\n );\n }\n\n /** Sets the message showing that the code could not be found. */\n private showMissingCodeMessage() {\n const src = this.path ? this.path + (this.region ? '#' + this.region : '') : '';\n const srcMsg = src ? ` for\\n${src}` : '.';\n this.setCodeHtml(`<p class=\"code-missing\">The code sample is missing${srcMsg}</p>`);\n }\n\n /** Sets the innerHTML of the code container to the provided code string. */\n private setCodeHtml(formattedCode: string) {\n // **Security:** Code example content is provided by docs authors and as such its considered to\n // be safe for innerHTML purposes.\n this.codeContainer.nativeElement.innerHTML = formattedCode;\n }\n\n /** Gets the textContent of the displayed code element. */\n private getCodeText() {\n // `prettify` may remove newlines, e.g. when `linenums` are on. Retrieve the content of the\n // container as text, before prettifying it.\n // We take the textContent because we don't want it to be HTML encoded.\n return this.codeContainer.nativeElement.textContent;\n }\n\n /** Copies the code snippet to the user's clipboard. */\n doCopy() {\n const code = this.codeText;\n const successfullyCopied = this.copier.copyText(code);\n\n if (successfullyCopied) {\n this.logger.log('Copied code to clipboard:', code);\n this.snackbar.open('Code Copied', '', { duration: 800 });\n } else {\n this.logger.error(new Error(`ERROR copying code to clipboard: \"${code}\"`));\n this.snackbar.open('Copy failed. Please try again!', '', { duration: 800 });\n }\n }\n\n /** Gets the calculated value of linenums (boolean/number). */\n getLinenums(code: string) {\n const linenums =\n typeof this.linenums === 'boolean' ? this.linenums :\n this.linenums === 'true' ? true :\n this.linenums === 'false' ? false :\n typeof this.linenums === 'string' ? parseInt(this.linenums, 10) :\n this.linenums;\n\n // if no linenums, enable line numbers if more than one line\n return linenums == null || isNaN(linenums as number) ?\n (code.match(/\\n/g) || []).length > DEFAULT_LINE_NUMS_COUNT : linenums;\n }\n}\n\nfunction leftAlign(text: string): string {\n let indent = Number.MAX_VALUE;\n\n const lines = text.split('\\n');\n lines.forEach(line => {\n const lineIndent = line.search(/\\S/);\n if (lineIndent !== -1) {\n indent = Math.min(lineIndent, indent);\n }\n });\n\n return lines.map(line => line.substr(indent)).join('\\n').trim();\n}\n","import { ElementRef, EventEmitter, OnChanges } from '@angular/core';\nimport { Logger } from 'app/shared/logger.service';\nimport { PrettyPrinter } from './pretty-printer.service';\nimport { CopierService } from 'app/shared/copier.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { tap } from 'rxjs/operators';\n/**\n * If linenums is not set, this is the default maximum number of lines that\n * an example can display without line numbers.\n */\nvar DEFAULT_LINE_NUMS_COUNT = 10;\n/**\n * Formatted Code Block\n *\n * Pretty renders a code block, used in the docs and API reference by the code-example and\n * code-tabs embedded components.\n * It includes a \"copy\" button that will send the content to the clipboard when clicked\n *\n * Example usage:\n *\n * ```\n * <aio-code\n * [language]=\"ts\"\n * [linenums]=\"true\"\n * [path]=\"router/src/app/app.module.ts\"\n * [region]=\"animations-module\">\n * </aio-code>\n * ```\n *\n *\n * Renders code provided through the `updateCode` method.\n */\nvar CodeComponent = /** @class */ (function () {\n function CodeComponent(snackbar, pretty, copier, logger) {\n this.snackbar = snackbar;\n this.pretty = pretty;\n this.copier = copier;\n this.logger = logger;\n this.ariaLabel = '';\n this.codeFormatted = new EventEmitter();\n }\n Object.defineProperty(CodeComponent.prototype, \"code\", {\n get: function () { return this._code; },\n /** Code that should be formatted with current inputs and displayed in the view. */\n set: function (code) {\n this._code = code;\n if (!this._code || !this._code.trim()) {\n this.showMissingCodeMessage();\n }\n else {\n this.formatDisplayedCode();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CodeComponent.prototype, \"header\", {\n get: function () { return this._header; },\n /** Optional header to be displayed above the code. */\n set: function (header) {\n this._header = header;\n this.ariaLabel = this.header ? \"Copy code snippet from \" + this.header : '';\n },\n enumerable: true,\n configurable: true\n });\n CodeComponent.prototype.ngOnChanges = function () {\n // If some inputs have changed and there is code displayed, update the view with the latest\n // formatted code.\n if (this.code) {\n this.formatDisplayedCode();\n }\n };\n CodeComponent.prototype.formatDisplayedCode = function () {\n var _this = this;\n var leftAlignedCode = leftAlign(this.code);\n this.setCodeHtml(leftAlignedCode); // start with unformatted code\n this.codeText = this.getCodeText(); // store the unformatted code as text (for copying)\n this.pretty\n .formatCode(leftAlignedCode, this.language, this.getLinenums(leftAlignedCode))\n .pipe(tap(function () { return _this.codeFormatted.emit(); }))\n .subscribe(function (c) { return _this.setCodeHtml(c); }, function (err) { });\n };\n /** Sets the message showing that the code could not be found. */\n CodeComponent.prototype.showMissingCodeMessage = function () {\n var src = this.path ? this.path + (this.region ? '#' + this.region : '') : '';\n var srcMsg = src ? \" for\\n\" + src : '.';\n this.setCodeHtml(\"<p class=\\\"code-missing\\\">The code sample is missing\" + srcMsg + \"</p>\");\n };\n /** Sets the innerHTML of the code container to the provided code string. */\n CodeComponent.prototype.setCodeHtml = function (formattedCode) {\n // **Security:** Code example content is provided by docs authors and as such its considered to\n // be safe for innerHTML purposes.\n this.codeContainer.nativeElement.innerHTML = formattedCode;\n };\n /** Gets the textContent of the displayed code element. */\n CodeComponent.prototype.getCodeText = function () {\n // `prettify` may remove newlines, e.g. when `linenums` are on. Retrieve the content of the\n // container as text, before prettifying it.\n // We take the textContent because we don't want it to be HTML encoded.\n return this.codeContainer.nativeElement.textContent;\n };\n /** Copies the code snippet to the user's clipboard. */\n CodeComponent.prototype.doCopy = function () {\n var code = this.codeText;\n var successfullyCopied = this.copier.copyText(code);\n if (successfullyCopied) {\n this.logger.log('Copied code to clipboard:', code);\n this.snackbar.open('Code Copied', '', { duration: 800 });\n }\n else {\n this.logger.error(new Error(\"ERROR copying code to clipboard: \\\"\" + code + \"\\\"\"));\n this.snackbar.open('Copy failed. Please try again!', '', { duration: 800 });\n }\n };\n /** Gets the calculated value of linenums (boolean/number). */\n CodeComponent.prototype.getLinenums = function (code) {\n var linenums = typeof this.linenums === 'boolean' ? this.linenums :\n this.linenums === 'true' ? true :\n this.linenums === 'false' ? false :\n typeof this.linenums === 'string' ? parseInt(this.linenums, 10) :\n this.linenums;\n // if no linenums, enable line numbers if more than one line\n return linenums == null || isNaN(linenums) ?\n (code.match(/\\n/g) || []).length > DEFAULT_LINE_NUMS_COUNT : linenums;\n };\n return CodeComponent;\n}());\nexport { CodeComponent };\nfunction leftAlign(text) {\n var indent = Number.MAX_VALUE;\n var lines = text.split('\\n');\n lines.forEach(function (line) {\n var lineIndent = line.search(/\\S/);\n if (lineIndent !== -1) {\n indent = Math.min(lineIndent, indent);\n }\n });\n return lines.map(function (line) { return line.substr(indent); }).join('\\n').trim();\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CodeComponent } from './code.component';\nimport { MatSnackBarModule } from '@angular/material';\nimport { PrettyPrinter } from './pretty-printer.service';\nimport { CopierService } from 'app/shared/copier.service';\n\n@NgModule({\n imports: [ CommonModule, MatSnackBarModule ],\n declarations: [ CodeComponent ],\n entryComponents: [ CodeComponent ],\n exports: [ CodeComponent ],\n providers: [ PrettyPrinter, CopierService ]\n})\nexport class CodeModule { }\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Subject } from 'rxjs';\nimport { InjectionToken, Component, ViewEncapsulation, Inject, ChangeDetectionStrategy, ChangeDetectorRef, ElementRef, NgZone, ViewChild, NgModule, Injectable, Injector, Optional, SkipSelf, TemplateRef, defineInjectable, inject, INJECTOR } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { __extends, __assign } from 'tslib';\nimport { BasePortalOutlet, CdkPortalOutlet, PortalModule, ComponentPortal, PortalInjector, TemplatePortal } from '@angular/cdk/portal';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { OverlayModule, Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n * @template T\n */\nvar /**\n * Reference to a snack bar dispatched from the snack bar service.\n * @template T\n */\nMatSnackBarRef = /** @class */ (function () {\n function MatSnackBarRef(containerInstance, _overlayRef) {\n var _this = this;\n this._overlayRef = _overlayRef;\n /**\n * Subject for notifying the user that the snack bar has been dismissed.\n */\n this._afterDismissed = new Subject();\n /**\n * Subject for notifying the user that the snack bar has opened and appeared.\n */\n this._afterOpened = new Subject();\n /**\n * Subject for notifying the user that the snack bar action was called.\n */\n this._onAction = new Subject();\n /**\n * Whether the snack bar was dismissed using the action button.\n */\n this._dismissedByAction = false;\n this.containerInstance = containerInstance;\n // Dismiss snackbar on action.\n this.onAction().subscribe(function () { return _this.dismiss(); });\n containerInstance._onExit.subscribe(function () { return _this._finishDismiss(); });\n }\n /** Dismisses the snack bar. */\n /**\n * Dismisses the snack bar.\n * @return {?}\n */\n MatSnackBarRef.prototype.dismiss = /**\n * Dismisses the snack bar.\n * @return {?}\n */\n function () {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n };\n /** Marks the snackbar action clicked. */\n /**\n * Marks the snackbar action clicked.\n * @return {?}\n */\n MatSnackBarRef.prototype.dismissWithAction = /**\n * Marks the snackbar action clicked.\n * @return {?}\n */\n function () {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n }\n };\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * \\@breaking-change 8.0.0\n * @return {?}\n */\n MatSnackBarRef.prototype.closeWithAction = /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * \\@breaking-change 8.0.0\n * @return {?}\n */\n function () {\n this.dismissWithAction();\n };\n /** Dismisses the snack bar after some duration */\n /**\n * Dismisses the snack bar after some duration\n * @param {?} duration\n * @return {?}\n */\n MatSnackBarRef.prototype._dismissAfter = /**\n * Dismisses the snack bar after some duration\n * @param {?} duration\n * @return {?}\n */\n function (duration) {\n var _this = this;\n this._durationTimeoutId = setTimeout(function () { return _this.dismiss(); }, duration);\n };\n /** Marks the snackbar as opened */\n /**\n * Marks the snackbar as opened\n * @return {?}\n */\n MatSnackBarRef.prototype._open = /**\n * Marks the snackbar as opened\n * @return {?}\n */\n function () {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n };\n /**\n * Cleans up the DOM after closing.\n * @return {?}\n */\n MatSnackBarRef.prototype._finishDismiss = /**\n * Cleans up the DOM after closing.\n * @return {?}\n */\n function () {\n this._overlayRef.dispose();\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n this._afterDismissed.next({ dismissedByAction: this._dismissedByAction });\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n };\n /** Gets an observable that is notified when the snack bar is finished closing. */\n /**\n * Gets an observable that is notified when the snack bar is finished closing.\n * @return {?}\n */\n MatSnackBarRef.prototype.afterDismissed = /**\n * Gets an observable that is notified when the snack bar is finished closing.\n * @return {?}\n */\n function () {\n return this._afterDismissed.asObservable();\n };\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n /**\n * Gets an observable that is notified when the snack bar has opened and appeared.\n * @return {?}\n */\n MatSnackBarRef.prototype.afterOpened = /**\n * Gets an observable that is notified when the snack bar has opened and appeared.\n * @return {?}\n */\n function () {\n return this.containerInstance._onEnter;\n };\n /** Gets an observable that is notified when the snack bar action is called. */\n /**\n * Gets an observable that is notified when the snack bar action is called.\n * @return {?}\n */\n MatSnackBarRef.prototype.onAction = /**\n * Gets an observable that is notified when the snack bar action is called.\n * @return {?}\n */\n function () {\n return this._onAction.asObservable();\n };\n return MatSnackBarRef;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** *\n * Injection token that can be used to access the data that was passed in to a snack bar.\n @type {?} */\nvar MAT_SNACK_BAR_DATA = new InjectionToken('MatSnackBarData');\n/**\n * Configuration used when opening a snack-bar.\n * @template D\n */\nvar /**\n * Configuration used when opening a snack-bar.\n * @template D\n */\nMatSnackBarConfig = /** @class */ (function () {\n function MatSnackBarConfig() {\n /**\n * The politeness level for the MatAriaLiveAnnouncer announcement.\n */\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 /**\n * The length of time in milliseconds to wait before automatically dismissing the snack bar.\n */\n this.duration = 0;\n /**\n * Data being injected into the child component.\n */\n this.data = null;\n /**\n * The horizontal position to place the snack bar.\n */\n this.horizontalPosition = 'center';\n /**\n * The vertical position to place the snack bar.\n */\n this.verticalPosition = 'bottom';\n }\n return MatSnackBarConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A component used to open as the default snack bar, matching material spec.\n * This should only be used internally by the snack bar service.\n */\nvar SimpleSnackBar = /** @class */ (function () {\n function SimpleSnackBar(snackBarRef, data) {\n this.snackBarRef = snackBarRef;\n this.data = data;\n }\n /** Performs the action on the snack bar. */\n /**\n * Performs the action on the snack bar.\n * @return {?}\n */\n SimpleSnackBar.prototype.action = /**\n * Performs the action on the snack bar.\n * @return {?}\n */\n function () {\n this.snackBarRef.dismissWithAction();\n };\n Object.defineProperty(SimpleSnackBar.prototype, \"hasAction\", {\n /** If the action button should be shown. */\n get: /**\n * If the action button should be shown.\n * @return {?}\n */\n function () {\n return !!this.data.action;\n },\n enumerable: true,\n configurable: true\n });\n SimpleSnackBar.decorators = [\n { type: Component, args: [{selector: 'simple-snack-bar',\n template: \"<span>{{data.message}}</span><div class=\\\"mat-simple-snackbar-action\\\" *ngIf=\\\"hasAction\\\"><button mat-button (click)=\\\"action()\\\">{{data.action}}</button></div>\",\n styles: [\".mat-simple-snackbar{display:flex;justify-content:space-between;align-items:center;height:100%;line-height:20px;opacity:1}.mat-simple-snackbar-action{flex-shrink:0;margin:-8px -8px -8px 8px}.mat-simple-snackbar-action button{max-height:36px;min-width:0}[dir=rtl] .mat-simple-snackbar-action{margin-left:-8px;margin-right:8px}\"],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-simple-snackbar',\n }\n },] },\n ];\n /** @nocollapse */\n SimpleSnackBar.ctorParameters = function () { return [\n { type: MatSnackBarRef },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_SNACK_BAR_DATA,] }] }\n ]; };\n return SimpleSnackBar;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** *\n * Animations used by the Material snack bar.\n * \\@docs-private\n @type {?} */\nvar matSnackBarAnimations = {\n /** Animation that shows and hides a snack bar. */\n snackBarState: trigger('state', [\n state('void, hidden', style({\n transform: 'scale(0.8)',\n opacity: 0,\n })),\n state('visible', style({\n transform: 'scale(1)',\n opacity: 1,\n })),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition('* => void, * => hidden', animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', style({\n opacity: 0\n }))),\n ])\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Internal component that wraps user-provided snack bar content.\n * \\@docs-private\n */\nvar MatSnackBarContainer = /** @class */ (function (_super) {\n __extends(MatSnackBarContainer, _super);\n function MatSnackBarContainer(_ngZone, _elementRef, _changeDetectorRef, snackBarConfig) {\n var _this = _super.call(this) || this;\n _this._ngZone = _ngZone;\n _this._elementRef = _elementRef;\n _this._changeDetectorRef = _changeDetectorRef;\n _this.snackBarConfig = snackBarConfig;\n /**\n * Whether the component has been destroyed.\n */\n _this._destroyed = false;\n /**\n * Subject for notifying that the snack bar has exited from view.\n */\n _this._onExit = new Subject();\n /**\n * Subject for notifying that the snack bar has finished entering the view.\n */\n _this._onEnter = new Subject();\n /**\n * The state of the snack bar animations.\n */\n _this._animationState = 'void';\n return _this;\n }\n /** Attach a component portal as content to this snack bar container. */\n /**\n * Attach a component portal as content to this snack bar container.\n * @template T\n * @param {?} portal\n * @return {?}\n */\n MatSnackBarContainer.prototype.attachComponentPortal = /**\n * Attach a component portal as content to this snack bar container.\n * @template T\n * @param {?} portal\n * @return {?}\n */\n function (portal) {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachComponentPortal(portal);\n };\n /** Attach a template portal as content to this snack bar container. */\n /**\n * Attach a template portal as content to this snack bar container.\n * @template C\n * @param {?} portal\n * @return {?}\n */\n MatSnackBarContainer.prototype.attachTemplatePortal = /**\n * Attach a template portal as content to this snack bar container.\n * @template C\n * @param {?} portal\n * @return {?}\n */\n function (portal) {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachTemplatePortal(portal);\n };\n /** Handle end of animations, updating the state of the snackbar. */\n /**\n * Handle end of animations, updating the state of the snackbar.\n * @param {?} event\n * @return {?}\n */\n MatSnackBarContainer.prototype.onAnimationEnd = /**\n * Handle end of animations, updating the state of the snackbar.\n * @param {?} event\n * @return {?}\n */\n function (event) {\n var fromState = event.fromState, toState = event.toState;\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\n }\n if (toState === 'visible') {\n /** @type {?} */\n var onEnter_1 = this._onEnter;\n this._ngZone.run(function () {\n onEnter_1.next();\n onEnter_1.complete();\n });\n }\n };\n /** Begin animation of snack bar entrance into view. */\n /**\n * Begin animation of snack bar entrance into view.\n * @return {?}\n */\n MatSnackBarContainer.prototype.enter = /**\n * Begin animation of snack bar entrance into view.\n * @return {?}\n */\n function () {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n }\n };\n /** Begin animation of the snack bar exiting from view. */\n /**\n * Begin animation of the snack bar exiting from view.\n * @return {?}\n */\n MatSnackBarContainer.prototype.exit = /**\n * Begin animation of the snack bar exiting from view.\n * @return {?}\n */\n function () {\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 return this._onExit;\n };\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n /**\n * Makes sure the exit callbacks have been invoked when the element is destroyed.\n * @return {?}\n */\n MatSnackBarContainer.prototype.ngOnDestroy = /**\n * Makes sure the exit callbacks have been invoked when the element is destroyed.\n * @return {?}\n */\n function () {\n this._destroyed = true;\n this._completeExit();\n };\n /**\n * Waits for the zone to settle before removing the element. Helps prevent\n * errors where we end up removing an element which is in the middle of an animation.\n * @return {?}\n */\n MatSnackBarContainer.prototype._completeExit = /**\n * Waits for the zone to settle before removing the element. Helps prevent\n * errors where we end up removing an element which is in the middle of an animation.\n * @return {?}\n */\n function () {\n var _this = this;\n this._ngZone.onMicrotaskEmpty.asObservable().pipe(take(1)).subscribe(function () {\n _this._onExit.next();\n _this._onExit.complete();\n });\n };\n /**\n * Applies the various positioning and user-configured CSS classes to the snack bar.\n * @return {?}\n */\n MatSnackBarContainer.prototype._applySnackBarClasses = /**\n * Applies the various positioning and user-configured CSS classes to the snack bar.\n * @return {?}\n */\n function () {\n /** @type {?} */\n var element = this._elementRef.nativeElement;\n /** @type {?} */\n var 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(function (cssClass) { return element.classList.add(cssClass); });\n }\n else {\n element.classList.add(panelClasses);\n }\n }\n if (this.snackBarConfig.horizontalPosition === 'center') {\n element.classList.add('mat-snack-bar-center');\n }\n if (this.snackBarConfig.verticalPosition === 'top') {\n element.classList.add('mat-snack-bar-top');\n }\n };\n /**\n * Asserts that no content is already attached to the container.\n * @return {?}\n */\n MatSnackBarContainer.prototype._assertNotAttached = /**\n * Asserts that no content is already attached to the container.\n * @return {?}\n */\n function () {\n if (this._portalOutlet.hasAttached()) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n };\n MatSnackBarContainer.decorators = [\n { type: Component, args: [{selector: 'snack-bar-container',\n template: \"<ng-template cdkPortalOutlet></ng-template>\",\n styles: [\".mat-snack-bar-container{border-radius:4px;box-sizing:border-box;display:block;margin:24px;max-width:33vw;min-width:344px;padding:14px 16px;min-height:48px;transform-origin:center}@media screen and (-ms-high-contrast:active){.mat-snack-bar-container{border:solid 1px}}.mat-snack-bar-handset{width:100%}.mat-snack-bar-handset .mat-snack-bar-container{margin:8px;max-width:100%;width:100%}\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [matSnackBarAnimations.snackBarState],\n host: {\n 'role': 'alert',\n 'class': 'mat-snack-bar-container',\n '[@state]': '_animationState',\n '(@state.done)': 'onAnimationEnd($event)'\n },\n },] },\n ];\n /** @nocollapse */\n MatSnackBarContainer.ctorParameters = function () { return [\n { type: NgZone },\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: MatSnackBarConfig }\n ]; };\n MatSnackBarContainer.propDecorators = {\n _portalOutlet: [{ type: ViewChild, args: [CdkPortalOutlet,] }]\n };\n return MatSnackBarContainer;\n}(BasePortalOutlet));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar MatSnackBarModule = /** @class */ (function () {\n function MatSnackBarModule() {\n }\n MatSnackBarModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n OverlayModule,\n PortalModule,\n CommonModule,\n MatButtonModule,\n MatCommonModule,\n ],\n exports: [MatSnackBarContainer, MatCommonModule],\n declarations: [MatSnackBarContainer, SimpleSnackBar],\n entryComponents: [MatSnackBarContainer, SimpleSnackBar],\n },] },\n ];\n return MatSnackBarModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** *\n * Injection token that can be used to specify default snack bar.\n @type {?} */\nvar MAT_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken('mat-snack-bar-default-options', {\n providedIn: 'root',\n factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY,\n});\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY() {\n return new MatSnackBarConfig();\n}\n/**\n * Service to dispatch Material Design snack bar messages.\n */\nvar MatSnackBar = /** @class */ (function () {\n function MatSnackBar(_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 }\n Object.defineProperty(MatSnackBar.prototype, \"_openedSnackBarRef\", {\n /** Reference to the currently opened snackbar at *any* level. */\n get: /**\n * Reference to the currently opened snackbar at *any* level.\n * @return {?}\n */\n function () {\n /** @type {?} */\n var parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n }\n else {\n this._snackBarRefAtThisLevel = value;\n }\n },\n enumerable: true,\n configurable: true\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 /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @template T\n * @param {?} component Component to be instantiated.\n * @param {?=} config Extra configuration for the snack bar.\n * @return {?}\n */\n MatSnackBar.prototype.openFromComponent = /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @template T\n * @param {?} component Component to be instantiated.\n * @param {?=} config Extra configuration for the snack bar.\n * @return {?}\n */\n function (component, config) {\n return /** @type {?} */ (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 /**\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 * @return {?}\n */\n MatSnackBar.prototype.openFromTemplate = /**\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 * @return {?}\n */\n function (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 /**\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 * @return {?}\n */\n MatSnackBar.prototype.open = /**\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 * @return {?}\n */\n function (message, action, config) {\n if (action === void 0) { action = ''; }\n /** @type {?} */\n var _config = __assign({}, this._defaultConfig, config);\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 = { message: message, action: action };\n if (!_config.announcementMessage) {\n _config.announcementMessage = message;\n }\n return this.openFromComponent(SimpleSnackBar, _config);\n };\n /**\n * Dismisses the currently-visible snack bar.\n */\n /**\n * Dismisses the currently-visible snack bar.\n * @return {?}\n */\n MatSnackBar.prototype.dismiss = /**\n * Dismisses the currently-visible snack bar.\n * @return {?}\n */\n function () {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n };\n /**\n * @return {?}\n */\n MatSnackBar.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\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 * @param {?} overlayRef\n * @param {?} config\n * @return {?}\n */\n MatSnackBar.prototype._attachSnackBarContainer = /**\n * Attaches the snack bar container component to the overlay.\n * @param {?} overlayRef\n * @param {?} config\n * @return {?}\n */\n function (overlayRef, config) {\n /** @type {?} */\n var userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n /** @type {?} */\n var injector = new PortalInjector(userInjector || this._injector, new WeakMap([\n [MatSnackBarConfig, config]\n ]));\n /** @type {?} */\n var containerPortal = new ComponentPortal(MatSnackBarContainer, config.viewContainerRef, injector);\n /** @type {?} */\n var 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 * @template T\n * @param {?} content\n * @param {?=} userConfig\n * @return {?}\n */\n MatSnackBar.prototype._attach = /**\n * Places a new component or a template as the content of the snack bar container.\n * @template T\n * @param {?} content\n * @param {?=} userConfig\n * @return {?}\n */\n function (content, userConfig) {\n /** @type {?} */\n var config = __assign({}, new MatSnackBarConfig(), this._defaultConfig, userConfig);\n /** @type {?} */\n var overlayRef = this._createOverlay(config);\n /** @type {?} */\n var container = this._attachSnackBarContainer(overlayRef, config);\n /** @type {?} */\n var snackBarRef = new MatSnackBarRef(container, overlayRef);\n if (content instanceof TemplateRef) {\n /** @type {?} */\n var portal = new TemplatePortal(content, /** @type {?} */ ((null)), /** @type {?} */ ({\n $implicit: config.data,\n snackBarRef: snackBarRef\n }));\n snackBarRef.instance = container.attachTemplatePortal(portal);\n }\n else {\n /** @type {?} */\n var injector = this._createInjector(config, snackBarRef);\n /** @type {?} */\n var portal = new ComponentPortal(content, undefined, injector);\n /** @type {?} */\n var 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.Handset).pipe(takeUntil(overlayRef.detachments().pipe(take(1)))).subscribe(function (state$$1) {\n if (state$$1.matches) {\n overlayRef.overlayElement.classList.add('mat-snack-bar-handset');\n }\n else {\n overlayRef.overlayElement.classList.remove('mat-snack-bar-handset');\n }\n });\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n };\n /**\n * Animates the old snack bar out and the new one in.\n * @param {?} snackBarRef\n * @param {?} config\n * @return {?}\n */\n MatSnackBar.prototype._animateSnackBar = /**\n * Animates the old snack bar out and the new one in.\n * @param {?} snackBarRef\n * @param {?} config\n * @return {?}\n */\n function (snackBarRef, config) {\n var _this = this;\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(function () {\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 });\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(function () {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n }\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(function () { return snackBarRef._dismissAfter(/** @type {?} */ ((config.duration))); });\n }\n if (config.announcementMessage) {\n this._live.announce(config.announcementMessage, config.politeness);\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 * @return {?}\n */\n MatSnackBar.prototype._createOverlay = /**\n * Creates a new overlay and places it in the correct location.\n * @param {?} config The user-specified snack bar config.\n * @return {?}\n */\n function (config) {\n /** @type {?} */\n var overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n /** @type {?} */\n var positionStrategy = this._overlay.position().global();\n /** @type {?} */\n var isRtl = config.direction === 'rtl';\n /** @type {?} */\n var isLeft = (config.horizontalPosition === 'left' ||\n (config.horizontalPosition === 'start' && !isRtl) ||\n (config.horizontalPosition === 'end' && isRtl));\n /** @type {?} */\n var isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n }\n else if (isRight) {\n positionStrategy.right('0');\n }\n else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n }\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 * @template T\n * @param {?} config Config that was used to create the snack bar.\n * @param {?} snackBarRef Reference to the snack bar.\n * @return {?}\n */\n MatSnackBar.prototype._createInjector = /**\n * Creates an injector to be used inside of a snack bar component.\n * @template T\n * @param {?} config Config that was used to create the snack bar.\n * @param {?} snackBarRef Reference to the snack bar.\n * @return {?}\n */\n function (config, snackBarRef) {\n /** @type {?} */\n var userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n return new PortalInjector(userInjector || this._injector, new WeakMap([\n [MatSnackBarRef, snackBarRef],\n [MAT_SNACK_BAR_DATA, config.data]\n ]));\n };\n MatSnackBar.decorators = [\n { type: Injectable, args: [{ providedIn: MatSnackBarModule },] },\n ];\n /** @nocollapse */\n MatSnackBar.ctorParameters = function () { return [\n { type: Overlay },\n { type: LiveAnnouncer },\n { type: Injector },\n { type: BreakpointObserver },\n { type: MatSnackBar, decorators: [{ type: Optional }, { type: SkipSelf }] },\n { type: MatSnackBarConfig, decorators: [{ type: Inject, args: [MAT_SNACK_BAR_DEFAULT_OPTIONS,] }] }\n ]; };\n /** @nocollapse */ MatSnackBar.ngInjectableDef = defineInjectable({ factory: function MatSnackBar_Factory() { return new MatSnackBar(inject(Overlay), inject(LiveAnnouncer), inject(INJECTOR), inject(BreakpointObserver), inject(MatSnackBar, 12), inject(MAT_SNACK_BAR_DEFAULT_OPTIONS)); }, token: MatSnackBar, providedIn: MatSnackBarModule });\n return MatSnackBar;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\nexport { MatSnackBarModule, MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY, MAT_SNACK_BAR_DEFAULT_OPTIONS, MatSnackBar, MatSnackBarContainer, MAT_SNACK_BAR_DATA, MatSnackBarConfig, MatSnackBarRef, SimpleSnackBar, matSnackBarAnimations };\n//# sourceMappingURL=snack-bar.es5.js.map\n","import { Injectable } from '@angular/core';\n\nimport { from, Observable } from 'rxjs';\nimport { first, map, share } from 'rxjs/operators';\n\nimport { Logger } from 'app/shared/logger.service';\n\ndeclare const System: {\n import(name: string): Promise<any>;\n};\n\ntype PrettyPrintOne = (code: string, language?: string, linenums?: number | boolean) => string;\n\n/**\n * Wrapper around the prettify.js library\n */\n@Injectable()\nexport class PrettyPrinter {\n\n private prettyPrintOne: Observable<PrettyPrintOne>;\n\n constructor(private logger: Logger) {\n this.prettyPrintOne = from(this.getPrettyPrintOne()).pipe(share());\n }\n\n private getPrettyPrintOne(): Promise<PrettyPrintOne> {\n const ppo = (window as any)['prettyPrintOne'];\n return ppo ? Promise.resolve(ppo) :\n // prettify.js is not in window global; load it with webpack loader\n System.import('assets/js/prettify.js')\n .then(\n () => (window as any)['prettyPrintOne'],\n err => {\n const msg = `Cannot get prettify.js from server: ${err.message}`;\n this.logger.error(new Error(msg));\n // return a pretty print fn that always fails.\n return () => { throw new Error(msg); };\n });\n }\n\n /**\n * Format code snippet as HTML\n * @param {string} code - the code snippet to format; should already be HTML encoded\n * @param {string} [language] - The language of the code to render (could be javascript, html, typescript, etc)\n * @param {string|number} [linenums] - Whether to display line numbers:\n * - false: don't display\n * - true: do display\n * - number: do display but start at the given number\n * @returns Observable<string> - Observable of formatted code\n */\n formatCode(code: string, language?: string, linenums?: number | boolean) {\n return this.prettyPrintOne.pipe(\n map(ppo => {\n try {\n return ppo(code, language, linenums);\n } catch (err) {\n const msg = `Could not format code that begins '${code.substr(0, 50)}...'.`;\n console.error(msg, err);\n throw new Error(msg);\n }\n }),\n first(), // complete immediately\n );\n }\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/snack-bar\";\nimport * as i2 from \"@angular/cdk/overlay\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@angular/cdk/bidi\";\nimport * as i5 from \"@angular/cdk/portal\";\nimport * as i6 from \"@angular/cdk/platform\";\nimport * as i7 from \"@angular/cdk/scrolling\";\nimport * as i8 from \"@angular/material/core\";\nimport * as i9 from \"@angular/platform-browser\";\nimport * as i10 from \"@angular/material/button\";\nimport * as i11 from \"../../button/typings/index.ngfactory\";\nimport * as i12 from \"@angular/cdk/a11y\";\nimport * as i13 from \"@angular/platform-browser/animations\";\nvar MatSnackBarModuleNgFactory = i0.ɵcmf(i1.MatSnackBarModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, [MatSnackBarContainerNgFactory, SimpleSnackBarNgFactory]], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.Overlay, i2.Overlay, [i2.ScrollStrategyOptions, i2.OverlayContainer, i0.ComponentFactoryResolver, i2.OverlayPositionBuilder, i2.OverlayKeyboardDispatcher, i0.Injector, i0.NgZone, i3.DOCUMENT, i4.Directionality, [2, i3.Location]]), i0.ɵmpd(5120, i2.ɵc, i2.ɵd, [i2.Overlay]), i0.ɵmpd(4608, i3.NgLocalization, i3.NgLocaleLocalization, [i0.LOCALE_ID, [2, i3.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i4.BidiModule, i4.BidiModule, []), i0.ɵmpd(1073742336, i5.PortalModule, i5.PortalModule, []), i0.ɵmpd(1073742336, i6.PlatformModule, i6.PlatformModule, []), i0.ɵmpd(1073742336, i7.ScrollingModule, i7.ScrollingModule, []), i0.ɵmpd(1073742336, i2.OverlayModule, i2.OverlayModule, []), i0.ɵmpd(1073742336, i3.CommonModule, i3.CommonModule, []), i0.ɵmpd(1073742336, i8.MatCommonModule, i8.MatCommonModule, [[2, i8.MATERIAL_SANITY_CHECKS], [2, i9.HAMMER_LOADER]]), i0.ɵmpd(1073742336, i8.MatRippleModule, i8.MatRippleModule, []), i0.ɵmpd(1073742336, i10.MatButtonModule, i10.MatButtonModule, []), i0.ɵmpd(1073742336, i1.MatSnackBarModule, i1.MatSnackBarModule, [])]); });\nexport { MatSnackBarModuleNgFactory as MatSnackBarModuleNgFactory };\nvar styles_MatSnackBarContainer = [\".mat-snack-bar-container{border-radius:4px;box-sizing:border-box;display:block;margin:24px;max-width:33vw;min-width:344px;padding:14px 16px;min-height:48px;transform-origin:center}@media screen and (-ms-high-contrast:active){.mat-snack-bar-container{border:solid 1px}}.mat-snack-bar-handset{width:100%}.mat-snack-bar-handset .mat-snack-bar-container{margin:8px;max-width:100%;width:100%}\"];\nvar RenderType_MatSnackBarContainer = i0.ɵcrt({ encapsulation: 2, styles: styles_MatSnackBarContainer, data: { \"animation\": [{ type: 7, name: \"state\", definitions: [{ type: 0, name: \"void, hidden\", styles: { type: 6, styles: { transform: \"scale(0.8)\", opacity: 0 }, offset: null }, options: undefined }, { type: 0, name: \"visible\", styles: { type: 6, styles: { transform: \"scale(1)\", opacity: 1 }, offset: null }, options: undefined }, { type: 1, expr: \"* => visible\", animation: { type: 4, styles: null, timings: \"150ms cubic-bezier(0, 0, 0.2, 1)\" }, options: null }, { type: 1, expr: \"* => void, * => hidden\", animation: { type: 4, styles: { type: 6, styles: { opacity: 0 }, offset: null }, timings: \"75ms cubic-bezier(0.4, 0.0, 1, 1)\" }, options: null }], options: {} }] } });\nexport { RenderType_MatSnackBarContainer as RenderType_MatSnackBarContainer };\nfunction View_MatSnackBarContainer_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nexport function View_MatSnackBarContainer_0(_l) { return i0.ɵvid(2, [i0.ɵqud(402653184, 1, { _portalOutlet: 0 }), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatSnackBarContainer_1)), i0.ɵdid(2, 212992, [[1, 4]], 0, i5.CdkPortalOutlet, [i0.ComponentFactoryResolver, i0.ViewContainerRef], { portal: [0, \"portal\"] }, null)], function (_ck, _v) { var currVal_0 = \"\"; _ck(_v, 2, 0, currVal_0); }, null); }\nexport function View_MatSnackBarContainer_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"snack-bar-container\", [[\"class\", \"mat-snack-bar-container\"], [\"role\", \"alert\"]], [[40, \"@state\", 0]], [[\"component\", \"@state.done\"]], function (_v, en, $event) { var ad = true; if ((\"component:@state.done\" === en)) {\n var pd_0 = (i0.ɵnov(_v, 1).onAnimationEnd($event) !== false);\n ad = (pd_0 && ad);\n } return ad; }, View_MatSnackBarContainer_0, RenderType_MatSnackBarContainer)), i0.ɵdid(1, 180224, null, 0, i1.MatSnackBarContainer, [i0.NgZone, i0.ElementRef, i0.ChangeDetectorRef, i1.MatSnackBarConfig], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1)._animationState; _ck(_v, 0, 0, currVal_0); }); }\nvar MatSnackBarContainerNgFactory = i0.ɵccf(\"snack-bar-container\", i1.MatSnackBarContainer, View_MatSnackBarContainer_Host_0, {}, {}, []);\nexport { MatSnackBarContainerNgFactory as MatSnackBarContainerNgFactory };\nvar styles_SimpleSnackBar = [\".mat-simple-snackbar{display:flex;justify-content:space-between;align-items:center;height:100%;line-height:20px;opacity:1}.mat-simple-snackbar-action{flex-shrink:0;margin:-8px -8px -8px 8px}.mat-simple-snackbar-action button{max-height:36px;min-width:0}[dir=rtl] .mat-simple-snackbar-action{margin-left:-8px;margin-right:8px}\"];\nvar RenderType_SimpleSnackBar = i0.ɵcrt({ encapsulation: 2, styles: styles_SimpleSnackBar, data: {} });\nexport { RenderType_SimpleSnackBar as RenderType_SimpleSnackBar };\nfunction View_SimpleSnackBar_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"div\", [[\"class\", \"mat-simple-snackbar-action\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 2, \"button\", [[\"mat-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.action() !== false);\n ad = (pd_0 && ad);\n } return ad; }, i11.View_MatButton_0, i11.RenderType_MatButton)), i0.ɵdid(2, 180224, null, 0, i10.MatButton, [i0.ElementRef, i6.Platform, i12.FocusMonitor, [2, i13.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i0.ɵted(3, 0, [\"\", \"\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = (i0.ɵnov(_v, 2).disabled || null); var currVal_1 = (i0.ɵnov(_v, 2)._animationMode === \"NoopAnimations\"); _ck(_v, 1, 0, currVal_0, currVal_1); var currVal_2 = _co.data.action; _ck(_v, 3, 0, currVal_2); }); }\nexport function View_SimpleSnackBar_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"span\", [], null, null, null, null, null)), (_l()(), i0.ɵted(1, null, [\"\", \"\"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_SimpleSnackBar_1)), i0.ɵdid(3, 16384, null, 0, i3.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_1 = _co.hasAction; _ck(_v, 3, 0, currVal_1); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.data.message; _ck(_v, 1, 0, currVal_0); }); }\nexport function View_SimpleSnackBar_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"simple-snack-bar\", [[\"class\", \"mat-simple-snackbar\"]], null, null, null, View_SimpleSnackBar_0, RenderType_SimpleSnackBar)), i0.ɵdid(1, 49152, null, 0, i1.SimpleSnackBar, [i1.MatSnackBarRef, i1.MAT_SNACK_BAR_DATA], null, null)], null, null); }\nvar SimpleSnackBarNgFactory = i0.ɵccf(\"simple-snack-bar\", i1.SimpleSnackBar, View_SimpleSnackBar_Host_0, {}, {}, []);\nexport { SimpleSnackBarNgFactory as SimpleSnackBarNgFactory };\n","<ng-template cdkPortalOutlet></ng-template>","<span>{{data.message}}</span><div class=\"mat-simple-snackbar-action\" *ngIf=\"hasAction\"><button mat-button (click)=\"action()\">{{data.action}}</button></div>"],"sourceRoot":""}