-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathembedded.module.c56ec241181acf9cd3a6.chunk.js.map
1 lines (1 loc) · 361 KB
/
embedded.module.c56ec241181acf9cd3a6.chunk.js.map
1
{"version":3,"sources":["/home/wzc/dev/angular/angular/aio/src/app/embedded/api/api-list.component.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/api/api-list.component.ts.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/src/app/shared/attribute-utils.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/code/code-example.component.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/code/code-tabs.component.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor-list.component.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/current-location.component.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/search/file-not-found-search.component.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/live-example/live-example.component.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/resource/resource-list.component.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/embedded.module.ts","/home/wzc/dev/angular/angular/aio/node_modules/rxjs/_esm5/observable/fromEventPattern.js","/home/wzc/dev/angular/angular/aio/node_modules/rxjs/_esm5/observable/FromEventPatternObservable.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/node_modules/@angular/cdk/esm5/layout.es5.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/node_modules/@angular/material/esm5/snack-bar.es5.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/node_modules/@angular/material/snack-bar/typings/index.ngfactory.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/node_modules/@angular/material/snack-bar/typings/index.d.ts.MatSnackBarContainer.html","/home/wzc/dev/angular/angular/aio/node_modules/@angular/material/snack-bar/typings/index.d.ts.SimpleSnackBar.html","/home/wzc/dev/angular/angular/aio/src/app/embedded/api/api.service.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/api/api.service.ts.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/src/app/embedded/api/api-list.component.ngfactory.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/src/app/embedded/api/api-list.component.html","/home/wzc/dev/angular/angular/aio/src/app/embedded/code/code.component.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/code/pretty-printer.service.ts","/home/wzc/dev/angular/angular/aio/src/app/shared/copier.service.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/code/code.component.ngfactory.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/src/app/embedded/code/code.component.ts.CodeComponent.html","/home/wzc/dev/angular/angular/aio/src/app/embedded/code/code-example.component.ngfactory.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/src/app/embedded/code/code-example.component.ts.CodeExampleComponent.html","/home/wzc/dev/angular/angular/aio/node_modules/@angular/cdk/esm5/observers.es5.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/node_modules/@angular/material/esm5/tabs.es5.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/node_modules/@angular/material/tabs/typings/index.ngfactory.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/node_modules/@angular/material/tabs/typings/index.d.ts.MatTabGroup.html","/home/wzc/dev/angular/angular/aio/node_modules/@angular/material/tabs/typings/index.d.ts.MatTabBody.html","/home/wzc/dev/angular/angular/aio/node_modules/@angular/material/tabs/typings/index.d.ts.MatTabHeader.html","/home/wzc/dev/angular/angular/aio/node_modules/@angular/material/tabs/typings/index.d.ts.MatTab.html","/home/wzc/dev/angular/angular/aio/src/app/embedded/code/code-tabs.component.ngfactory.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/src/app/embedded/code/code-tabs.component.ts.CodeTabsComponent.html","/home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor.component.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor.component.ngfactory.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor.component.ts.ContributorComponent.html","/home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor.service.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor-list.component.ngfactory.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor-list.component.ts.ContributorListComponent.html","/home/wzc/dev/angular/angular/aio/src/app/embedded/current-location.component.ngfactory.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/src/app/embedded/current-location.component.ts.CurrentLocationComponent.html","/home/wzc/dev/angular/angular/aio/src/app/embedded/search/file-not-found-search.component.ngfactory.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/src/app/embedded/search/file-not-found-search.component.ts.FileNotFoundSearchComponent.html","/home/wzc/dev/angular/angular/aio/src/app/embedded/live-example/live-example.component.ngfactory.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/src/app/embedded/live-example/live-example.component.html","/home/wzc/dev/angular/angular/aio/src/app/embedded/live-example/live-example.component.ts.EmbeddedStackblitzComponent.html","/home/wzc/dev/angular/angular/aio/src/app/embedded/resource/resource.service.ts","/home/wzc/dev/angular/angular/aio/src/app/embedded/resource/resource-list.component.ngfactory.js.pre-build-optimizer.js","/home/wzc/dev/angular/angular/aio/src/app/embedded/resource/resource-list.component.html","/home/wzc/dev/angular/angular/aio/src/app/embedded/embedded.module.ngfactory.js.pre-build-optimizer.js"],"names":["SearchCriteria","this","query","status","type","api_list_component_ApiListComponent","ApiListComponent","apiService","locationService","showStatusMenu","showTypeMenu","criteriaSubject","ReplaySubject","searchCriteria","types","value","title","statuses","prototype","ngOnInit","_this","filteredSections","Object","combineLatest","sections","criteria","filter","section","filterSection","initializeSearchCriteria","setQuery","setSearchCriteria","toLowerCase","trim","setStatus","toggleStatusMenu","setType","toggleTypeMenu","_a","showSection","items","forEach","item","show","docType","stability","securityRisk","name","indexOf","search","q","queryEl","nativeElement","find","x","next","setLocationSearch","setSearch","undefined","assign","getAttrs","el","attrMap","_i","core","attributes","length","attr","getAttrValue","attrs","a","boolFromValue","attrValue","def","getBoolFromAttribute","code_example_component_CodeExampleComponent","CodeExampleComponent","elementRef","isAvoid","element","language","getAttribute","linenums","path","region","removeAttribute","avoid","hideCopy","classes","headed-code","simple-code","code","codeExampleContent","CodeTabsComponent","linenumsDefault","getLinenums","processContent","codeTabsContent","content","document","createElement","innerHTML","tabs","codeExamples","querySelectorAll","i","codeExample","tab","class","push","ContributorListComponent","contributorService","groupName","contributors","subscribe","grps","groups","groupNames","map","g","selectGroup","selectedGroup","group","CurrentLocationComponent","location","FileNotFoundSearchComponent","searchResults","currentPath","switchMap","split","join","liveExampleBase","document_service","zipBase","live_example_component_LiveExampleComponent","LiveExampleComponent","narrowWidth","enableDownload","isEmbedded","mode","exampleDir","match","zipName","stackblitzName","stackblitz","zip","calcStackblitzLink","width","urlQuery","embedded","liveExampleContent","onResize","window","innerWidth","EmbeddedStackblitzComponent","ngAfterViewInit","iframe","src","ResourceListComponent","resourceService","scrollPos","pathname","replace","href","cat","id","categories","cats","onScroll","target","scrollTop","body","embeddedComponents","EmbeddedModule","fromEventPattern","_super","FromEventPatternObservable","addHandler","removeHandler","selector","call","tslib_es6","create","_subscribe","subscriber","handler","args","arguments","_callSelector","e","retValue","_callAddHandler","isFunction","add","Subscription","result","apply","error","errorSubscriber","Observable","styleElementForWebkitCompatibility","Map","MediaMatcher","platform","_matchMedia","isBrowser","matchMedia","bind","noopMatchMedia","WEBKIT","has","style","setAttribute","sheet","appendChild","createTextNode","getElementsByTagName","set","console","createEmptyStyleRule","matches","media","addListener","removeListener","layout_es5_BreakpointObserver","BreakpointObserver","mediaMatcher","zone","_queries","_destroySubject","Subject","ngOnDestroy","complete","isMatched","coercion_es5","some","mediaQuery","_registerQuery","mql","observe","observables","observable","b","get","output","listener","run","pipe","takeUntil","startWith","nextMql","LayoutModule","snack_bar_es5_MatSnackBarRef","MatSnackBarRef","containerInstance","_overlayRef","_afterClosed","_afterOpened","_onAction","onAction","dismiss","_onExit","_finishDismiss","closed","exit","clearTimeout","_durationTimeoutId","closeWithAction","_dismissAfter","duration","setTimeout","_open","dispose","afterDismissed","asObservable","afterOpened","_onEnter","MAT_SNACK_BAR_DATA","MatSnackBarConfig","politeness","announcementMessage","direction","data","horizontalPosition","verticalPosition","SimpleSnackBar","snackBarRef","action","defineProperty","enumerable","configurable","snack_bar_es5_MatSnackBarContainer","MatSnackBarContainer","_ngZone","_renderer","_elementRef","_changeDetectorRef","_destroyed","_animationState","attachComponentPortal","portal","_portalOutlet","hasAttached","Error","snackBarConfig","panelClass","extraClasses","classes_1","_getCssClasses","concat","addClass","attachTemplatePortal","onAnimationEnd","event","toState","fromState","startsWith","_completeExit","onEnter_1","enter","detectChanges","onMicrotaskEmpty","first","classList","Array","isArray","portal_es5","snack_bar_es5_MatSnackBar","MatSnackBar","_overlay","_live","_injector","_breakpointObserver","_parentSnackBar","_snackBarRefAtThisLevel","parent","_openedSnackBarRef","openFromComponent","component","config","_config","_applyConfigDefaults","_attach","announce","open","message","_attachSnackBarContainer","overlayRef","containerPortal","viewContainerRef","containerRef","attach","instance","_createOverlay","container","injector","_createInjector","contentRef","detachments","state$$1","overlayElement","remove","overlayConfig","overlay_es5","positionStrategy","position","global","isRtl","isLeft","isRight","left","right","centerHorizontally","top","bottom","userInjector","injectionTokens","WeakMap","MatSnackBarModule","RenderType_MatSnackBarContainer","encapsulation","styles","animation","definitions","transform","offset","options","expr","timings","View_MatSnackBarContainer_1","_l","View_MatSnackBarContainer_0","_ck","_v","MatSnackBarContainerNgFactory","en","$event","ad","RenderType_SimpleSnackBar","opacity","View_SimpleSnackBar_1","View_SimpleSnackBar_0","common","ngIf","hasAction","SimpleSnackBarNgFactory","api_service_ApiService","ApiService","http","logger","apiBase","apiListJsonDefault","firstTime","onDestroy","sectionsSubject","_sections","fetchSections","log","url","do","err","RenderType_ApiListComponent","View_ApiListComponent_3","context","$implicit","View_ApiListComponent_2","View_ApiListComponent_1","ngForOf","View_ApiListComponent_0","_co","onClick","onKeyDown","option","select_component_ngfactory","select_component","selected","showSymbol","label","change","ApiListComponentNgFactory","location_service","CodeComponent","snackbar","pretty","copier","ariaLabel","ngOnChanges","indent","lines","Number","MAX_VALUE","line","lineIndent","Math","min","substr","setCodeHtml","codeText","getCodeText","formatCode","formattedCode","codeContainer","textContent","doCopy","copyText","parseInt","NaN","pretty_printer_service_PrettyPrinter","PrettyPrinter","prettyPrintOne","fromPromise","getPrettyPrintOne","share","ppo","Promise","resolve","__webpack_require__","then","msg","CopierService","createFake","text","isRTL","documentElement","fakeElem","fontSize","border","padding","margin","yPosition","pageYOffset","select","setSelectionRange","removeFake","removeChild","execCommand","RenderType_CodeComponent","View_CodeComponent_1","View_CodeComponent_0","RenderType_CodeExampleComponent","View_CodeExampleComponent_1","View_CodeExampleComponent_0","ngClass","logger_service","CodeExampleComponentNgFactory","MutationObserverFactory","callback","MutationObserver","observers_es5_CdkObserveContent","CdkObserveContent","_mutationObserverFactory","_debouncer","ngAfterContentInit","debounce","runOutsideAngular","debounceTime","mutations","emit","_observer","characterData","childList","subtree","disconnect","ObserversModule","MatInkBar","alignToElement","requestAnimationFrame","_setStyles","setStyle","hide","offsetWidth","offsetLeft","tabs_es5_MatTabLabel","MatTabLabel","templateRef","tabs_es5_MatTab","MatTab","_viewContainerRef","textLabel","_contentPortal","_labelChange","_disableChange","origin","isActive","changes","hasOwnProperty","_content","core_es5","tabs_es5_MatTabBodyPortal","MatTabBodyPortal","_componentFactoryResolver","_host","_isCenterPosition","_position","_centeringSub","_beforeCentering","isCentering","detach","unsubscribe","tabs_es5_MatTabBody","MatTabBody","_dir","_onCentering","_onCentered","_getLayoutDirection","dir","_origin","_onTranslateTabStarted","clientHeight","_onTranslateTabComplete","nextId","tabs_es5_MatTabGroup","MatTabGroup","_indexToSelect","_tabBodyWrapperHeight","_tabsSubscription","EMPTY","_tabLabelSubscription","_dynamicHeight","_selectedIndex","headerPosition","selectedIndexChange","focusChange","selectedTabChange","selectChange","_groupId","_backgroundColor","removeClass","backgroundColor","ngAfterContentChecked","indexToSelect","_tabs","max","tabChangeEvent","_createChangeEvent","index","markForCheck","_subscribeToTabLabels","_focusChanged","toArray","merge","_getTabLabelId","_getTabContentId","_setTabBodyWrapperHeight","tabHeight","_tabBodyWrapper","offsetHeight","_removeTabBodyWrapperHeight","_handleClick","tabHeader","idx","disabled","selectedIndex","focusIndex","_getTabIndex","tabs_es5_MatTabLabelWrapper","MatTabLabelWrapper","focus","getOffsetLeft","getOffsetWidth","tabs_es5_MatTabHeader","MatTabHeader","_viewportRuler","_focusIndex","_scrollDistance","_selectedIndexChanged","_realignInkBar","_showPaginationControls","_disableScrollAfter","_disableScrollBefore","selectFocusedIndex","indexFocused","_tabLabelCount","_labelWrappers","_updatePagination","_scrollToLabel","_checkScrollingControls","_alignInkBarToSelectedTab","_scrollDistanceChanged","_updateTabScrollPosition","_handleKeydown","keyCode","keycodes_es5","_focusNextTab","_focusPreviousTab","preventDefault","dirChange","of","resize","_onContentChanges","_checkPaginationEnabled","_isValidIndex","_setTabFocus","tabIndex","containerEl","_tabListContainer","scrollLeft","scrollWidth","_moveFocus","scrollDistance","translateX","_tabList","v","_getMaxScrollDistance","_scrollHeader","scrollDir","labelIndex","selectedLabel","labelBeforePos","labelAfterPos","viewLength","beforeVisiblePos","afterVisiblePos","isEnabled","selectedLabelWrapper","_inkBar","MatTabsModule","RenderType_MatTabGroup","View_MatTabGroup_3","View_MatTabGroup_2","templateLabel","View_MatTabGroup_4","View_MatTabGroup_1","platform_es5","disableRipple","unbounded","View_MatTabGroup_5","View_MatTabBody_0","RenderType_MatTabBody","bidi_es5","View_MatTabGroup_0","View_MatTabHeader_0","RenderType_MatTabHeader","scrolling_es5","View_MatTabBody_1","RenderType_MatTab","View_MatTab_1","View_MatTab_0","RenderType_CodeTabsComponent","View_CodeTabsComponent_2","View_CodeTabsComponent_1","View_CodeTabsComponent_0","dynamicHeight","CodeTabsComponentNgFactory","contributor_component_ContributorComponent","ContributorComponent","noPicture","pictureBase","flipCard","person","isFlipped","RenderType_ContributorComponent","View_ContributorComponent_1","View_ContributorComponent_2","stopPropagation","twitter","View_ContributorComponent_3","website","View_ContributorComponent_4","bio","View_ContributorComponent_0","klass","flipped","picture","contributorsPath","knownGroups","ContributorService","getContributors","contribs","contribMap","keys","key","contributor","contribGroup","cmap","order","sort","compareContributors","compareGroups","publishLast","connect","l","r","toUpperCase","RenderType_ContributorListComponent","View_ContributorListComponent_1","View_ContributorListComponent_3","View_ContributorListComponent_2","View_ContributorListComponent_0","ContributorListComponentNgFactory","RenderType_CurrentLocationComponent","View_CurrentLocationComponent_0","CurrentLocationComponentNgFactory","RenderType_FileNotFoundSearchComponent","View_FileNotFoundSearchComponent_0","search_results_component_ngfactory","search_results_component","FileNotFoundSearchComponentNgFactory","search_service","RenderType_LiveExampleComponent","View_LiveExampleComponent_1","View_LiveExampleComponent_3","View_LiveExampleComponent_2","View_EmbeddedStackblitzComponent_0","RenderType_EmbeddedStackblitzComponent","View_LiveExampleComponent_4","View_LiveExampleComponent_6","View_LiveExampleComponent_5","View_LiveExampleComponent_0","ngSwitch","ngSwitchCase","LiveExampleComponentNgFactory","resourcesPath","ResourceService","getCategories","categoryJson","catKey","subCategoryJson","makeId","subCategories","subKey","resourceJson","sub","resources","resKey","res","category","subCategory","compareTitles","compareCats","RenderType_ResourceListComponent","View_ResourceListComponent_4","desc","View_ResourceListComponent_3","rev","View_ResourceListComponent_2","View_ResourceListComponent_1","View_ResourceListComponent_0","ResourceListComponentNgFactory","d","__webpack_exports__","EmbeddedModuleNgFactory","icon_es5","esm5_http","platform_browser","a11y_es5","shared_module"],"mappings":"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","file":"embedded.module.c56ec241181acf9cd3a6.chunk.js","sourcesContent":["/*\n* API List & Filter Component\n*\n* A page that displays a formatted list of the public Angular API entities.\n* Clicking on a list item triggers navigation to the corresponding API entity document.\n* Can add/remove API entity links based on filter settings.\n*/\n\nimport { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\n\nimport { Observable } from 'rxjs/Observable';\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\nimport { combineLatest } from 'rxjs/observable/combineLatest';\n\nimport { LocationService } from 'app/shared/location.service';\nimport { ApiSection, ApiService } from './api.service';\n\nimport { Option } from 'app/shared/select/select.component';\n\nclass SearchCriteria {\n query? = '';\n status? = 'all';\n type? = 'all';\n}\n\n@Component({\n selector: 'aio-api-list',\n templateUrl: './api-list.component.html'\n})\nexport class ApiListComponent implements OnInit {\n\n filteredSections: Observable<ApiSection[]>;\n\n showStatusMenu = false;\n showTypeMenu = false;\n\n private criteriaSubject = new ReplaySubject<SearchCriteria>(1);\n private searchCriteria = new SearchCriteria();\n\n status: Option;\n type: Option;\n\n // API types\n types: Option[] = [\n { value: 'all', title: 'All' },\n { value: 'class', title: 'Class' },\n { value: 'const', title: 'Const'},\n { value: 'decorator', title: 'Decorator' },\n { value: 'directive', title: 'Directive' },\n { value: 'enum', title: 'Enum' },\n { value: 'function', title: 'Function' },\n { value: 'interface', title: 'Interface' },\n { value: 'pipe', title: 'Pipe'},\n { value: 'type-alias', title: 'Type Alias' }\n ];\n\n statuses: Option[] = [\n { value: 'all', title: 'All' },\n { value: 'stable', title: 'Stable' },\n { value: 'deprecated', title: 'Deprecated' },\n { value: 'experimental', title: 'Experimental' },\n { value: 'security-risk', title: 'Security Risk' }\n ];\n\n @ViewChild('filter') queryEl: ElementRef;\n\n constructor(\n private apiService: ApiService,\n private locationService: LocationService) { }\n\n ngOnInit() {\n\n this.filteredSections = combineLatest(\n this.apiService.sections,\n this.criteriaSubject,\n (sections, criteria) => {\n return sections.filter(section => this.filterSection(section, criteria));\n }\n );\n\n this.initializeSearchCriteria();\n }\n\n // TODO: may need to debounce as the original did\n // although there shouldn't be any perf consequences if we don't\n setQuery(query: string) {\n this.setSearchCriteria({query: (query || '').toLowerCase().trim() });\n }\n\n setStatus(status: Option) {\n this.toggleStatusMenu();\n this.status = status;\n this.setSearchCriteria({status: status.value});\n }\n\n setType(type: Option) {\n this.toggleTypeMenu();\n this.type = type;\n this.setSearchCriteria({type: type.value});\n }\n\n toggleStatusMenu() {\n this.showStatusMenu = !this.showStatusMenu;\n }\n\n toggleTypeMenu() {\n this.showTypeMenu = !this.showTypeMenu;\n }\n\n //////// Private //////////\n\n private filterSection(section: ApiSection, { query, status, type }: SearchCriteria) {\n let showSection = false;\n\n section.items.forEach(item => {\n item.show = matchesType() && matchesStatus() && matchesQuery();\n\n // show section if any of its items will be shown\n showSection = showSection || item.show;\n\n function matchesQuery() {\n return !query ||\n section.name.indexOf(query) !== -1 ||\n item.name.indexOf(query) !== -1;\n }\n\n function matchesStatus() {\n return status === 'all' ||\n status === item.stability ||\n (status === 'security-risk' && item.securityRisk);\n };\n\n function matchesType() {\n return type === 'all' || type === item.docType;\n }\n });\n\n return showSection;\n\n }\n\n // Get initial search criteria from URL search params\n private initializeSearchCriteria() {\n const {query, status, type} = this.locationService.search();\n\n const q = (query || '').toLowerCase();\n // Hack: can't bind to query because input cursor always forced to end-of-line.\n this.queryEl.nativeElement.value = q;\n\n this.status = this.statuses.find(x => x.value === status) || this.statuses[0];\n this.type = this.types.find(x => x.value === type) || this.types[0];\n\n this.searchCriteria = {\n query: q,\n status: this.status.value,\n type: this.type.value\n };\n\n this.criteriaSubject.next(this.searchCriteria);\n }\n\n private setLocationSearch() {\n const {query, status, type} = this.searchCriteria;\n const params = {\n query: query ? query : undefined,\n status: status !== 'all' ? status : undefined,\n type: type !== 'all' ? type : undefined\n };\n\n this.locationService.setSearch('API Search', params);\n }\n\n private setSearchCriteria(criteria: SearchCriteria) {\n this.criteriaSubject.next(Object.assign(this.searchCriteria, criteria));\n this.setLocationSearch();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/api/api-list.component.ts","/*\n* API List & Filter Component\n*\n* A page that displays a formatted list of the public Angular API entities.\n* Clicking on a list item triggers navigation to the corresponding API entity document.\n* Can add/remove API entity links based on filter settings.\n*/\nimport { ElementRef } from '@angular/core';\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\nimport { combineLatest } from 'rxjs/observable/combineLatest';\nimport { LocationService } from 'app/shared/location.service';\nimport { ApiService } from './api.service';\nvar SearchCriteria = /** @class */ (function () {\n function SearchCriteria() {\n this.query = '';\n this.status = 'all';\n this.type = 'all';\n }\n return SearchCriteria;\n}());\nvar ApiListComponent = /** @class */ (function () {\n function ApiListComponent(apiService, locationService) {\n this.apiService = apiService;\n this.locationService = locationService;\n this.showStatusMenu = false;\n this.showTypeMenu = false;\n this.criteriaSubject = new ReplaySubject(1);\n this.searchCriteria = new SearchCriteria();\n // API types\n this.types = [\n { value: 'all', title: 'All' },\n { value: 'class', title: 'Class' },\n { value: 'const', title: 'Const' },\n { value: 'decorator', title: 'Decorator' },\n { value: 'directive', title: 'Directive' },\n { value: 'enum', title: 'Enum' },\n { value: 'function', title: 'Function' },\n { value: 'interface', title: 'Interface' },\n { value: 'pipe', title: 'Pipe' },\n { value: 'type-alias', title: 'Type Alias' }\n ];\n this.statuses = [\n { value: 'all', title: 'All' },\n { value: 'stable', title: 'Stable' },\n { value: 'deprecated', title: 'Deprecated' },\n { value: 'experimental', title: 'Experimental' },\n { value: 'security-risk', title: 'Security Risk' }\n ];\n }\n ApiListComponent.prototype.ngOnInit = function () {\n var _this = this;\n this.filteredSections = combineLatest(this.apiService.sections, this.criteriaSubject, function (sections, criteria) {\n return sections.filter(function (section) { return _this.filterSection(section, criteria); });\n });\n this.initializeSearchCriteria();\n };\n // TODO: may need to debounce as the original did\n // although there shouldn't be any perf consequences if we don't\n ApiListComponent.prototype.setQuery = function (query) {\n this.setSearchCriteria({ query: (query || '').toLowerCase().trim() });\n };\n ApiListComponent.prototype.setStatus = function (status) {\n this.toggleStatusMenu();\n this.status = status;\n this.setSearchCriteria({ status: status.value });\n };\n ApiListComponent.prototype.setType = function (type) {\n this.toggleTypeMenu();\n this.type = type;\n this.setSearchCriteria({ type: type.value });\n };\n ApiListComponent.prototype.toggleStatusMenu = function () {\n this.showStatusMenu = !this.showStatusMenu;\n };\n ApiListComponent.prototype.toggleTypeMenu = function () {\n this.showTypeMenu = !this.showTypeMenu;\n };\n //////// Private //////////\n ApiListComponent.prototype.filterSection = function (section, _a) {\n var query = _a.query, status = _a.status, type = _a.type;\n var showSection = false;\n section.items.forEach(function (item) {\n item.show = matchesType() && matchesStatus() && matchesQuery();\n // show section if any of its items will be shown\n showSection = showSection || item.show;\n function matchesQuery() {\n return !query ||\n section.name.indexOf(query) !== -1 ||\n item.name.indexOf(query) !== -1;\n }\n function matchesStatus() {\n return status === 'all' ||\n status === item.stability ||\n (status === 'security-risk' && item.securityRisk);\n }\n ;\n function matchesType() {\n return type === 'all' || type === item.docType;\n }\n });\n return showSection;\n };\n // Get initial search criteria from URL search params\n ApiListComponent.prototype.initializeSearchCriteria = function () {\n var _a = this.locationService.search(), query = _a.query, status = _a.status, type = _a.type;\n var q = (query || '').toLowerCase();\n // Hack: can't bind to query because input cursor always forced to end-of-line.\n this.queryEl.nativeElement.value = q;\n this.status = this.statuses.find(function (x) { return x.value === status; }) || this.statuses[0];\n this.type = this.types.find(function (x) { return x.value === type; }) || this.types[0];\n this.searchCriteria = {\n query: q,\n status: this.status.value,\n type: this.type.value\n };\n this.criteriaSubject.next(this.searchCriteria);\n };\n ApiListComponent.prototype.setLocationSearch = function () {\n var _a = this.searchCriteria, query = _a.query, status = _a.status, type = _a.type;\n var params = {\n query: query ? query : undefined,\n status: status !== 'all' ? status : undefined,\n type: type !== 'all' ? type : undefined\n };\n this.locationService.setSearch('API Search', params);\n };\n ApiListComponent.prototype.setSearchCriteria = function (criteria) {\n this.criteriaSubject.next(Object.assign(this.searchCriteria, criteria));\n this.setLocationSearch();\n };\n return ApiListComponent;\n}());\nexport { ApiListComponent };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/api/api-list.component.ts.pre-build-optimizer.js","// Utilities for processing HTML element attributes\nimport { ElementRef } from '@angular/core';\n\ninterface StringMap { [index: string]: string; }\n\n/**\n * Get attribute map from element or ElementRef `attributes`.\n * Attribute map keys are forced lowercase for case-insensitive lookup.\n * @param el The source of the attributes\n */\nexport function getAttrs(el: HTMLElement | ElementRef): StringMap {\n const attrs: NamedNodeMap = el instanceof ElementRef ? el.nativeElement.attributes : el.attributes;\n const attrMap: StringMap = {};\n for (const attr of attrs as any /* cast due to https://github.com/Microsoft/TypeScript/issues/2695 */) {\n attrMap[attr.name.toLowerCase()] = attr.value;\n }\n return attrMap;\n}\n\n/**\n * Return the attribute that matches `attr`.\n * @param attr Name of the attribute or a string of candidate attribute names\n */\nexport function getAttrValue(attrs: StringMap, attr: string | string[] = ''): string {\n return attrs[typeof attr === 'string' ?\n attr.toLowerCase() :\n attr.find(a => attrs[a.toLowerCase()] !== undefined) || ''\n ];\n}\n\n/**\n * Return the boolean state of an attribute value (if supplied)\n * @param attrValue The string value of some attribute (or undefined if attribute not present)\n * @param def Default boolean value when attribute is undefined.\n */\nexport function boolFromValue(attrValue: string|undefined, def: boolean = false) {\n // tslint:disable-next-line:triple-equals\n return attrValue == undefined ? def : attrValue.trim() !== 'false';\n}\n\n/**\n * Return the boolean state of attribute from an element\n * @param el The source of the attributes\n * @param atty Name of the attribute or a string of candidate attribute names\n * @param def Default boolean value when attribute is undefined.\n */\nexport function getBoolFromAttribute(\n el: HTMLElement | ElementRef,\n attr: string | string[],\n def: boolean = false): boolean {\n return boolFromValue(getAttrValue(getAttrs(el), attr), def);\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/shared/attribute-utils.ts","/* tslint:disable component-selector */\nimport { Component, ElementRef, HostBinding, OnInit } from '@angular/core';\nimport { getBoolFromAttribute } from 'app/shared/attribute-utils';\n\n/**\n * An embeddable code block that displays nicely formatted code.\n * Example usage:\n *\n * ```\n * <code-example language=\"ts\" linenums=\"2\" class=\"special\" title=\"Do Stuff\">\n * // a code block\n * console.log('do stuff');\n * </code-example>\n * ```\n */\n@Component({\n selector: 'code-example',\n template: `\n <header *ngIf=\"title\">{{title}}</header>\n <aio-code [ngClass]=\"classes\" [code]=\"code\"\n [language]=\"language\" [linenums]=\"linenums\"\n [path]=\"path\" [region]=\"region\"\n [hideCopy]=\"hideCopy\" [title]=\"title\"></aio-code>\n `\n})\nexport class CodeExampleComponent implements OnInit {\n\n classes: {};\n code: string;\n language: string;\n linenums: string;\n path: string;\n region: string;\n title: string;\n hideCopy: boolean;\n\n @HostBinding('class.avoidFile')\n isAvoid = false;\n\n constructor(private elementRef: ElementRef) {\n const element: HTMLElement = this.elementRef.nativeElement;\n\n this.language = element.getAttribute('language') || '';\n this.linenums = element.getAttribute('linenums') || '';\n this.path = element.getAttribute('path') || '';\n this.region = element.getAttribute('region') || '';\n this.title = element.getAttribute('title') || '';\n // Now remove the title attribute to prevent unwanted tooltip popups when hovering over the code.\n element.removeAttribute('title');\n\n const avoid = getBoolFromAttribute(element, 'avoid');\n this.isAvoid = avoid || this.path.indexOf('.avoid.') !== -1;\n this.hideCopy = this.isAvoid || getBoolFromAttribute(element, ['hidecopy', 'hide-copy']);\n\n this.classes = {\n 'headed-code': !!this.title,\n 'simple-code': !this.title,\n };\n }\n\n ngOnInit() {\n // The `codeExampleContent` property is set by the DocViewer when it builds this component.\n // It is the original innerHTML of the host element.\n this.code = this.elementRef.nativeElement.codeExampleContent;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/code/code-example.component.ts","/* tslint:disable component-selector */\nimport { Component, ElementRef, OnInit } from '@angular/core';\n\nexport interface TabInfo {\n class: string|null;\n code: string;\n language: string|null;\n linenums: any;\n path: string;\n region: string;\n title: string|null;\n}\n\n/**\n * An embedded component used to generate tabbed code panes inside docs\n *\n * The innerHTML of the `<code-tabs>` component should contain `<code-pane>` elements.\n * Each `<code-pane>` has the same interface as the embedded `<code-example>` component.\n * The optional `linenums` attribute is the default `linenums` for each code pane.\n */\n@Component({\n selector: 'code-tabs',\n template: `\n <mat-tab-group class=\"code-tab-group\" disableRipple>\n <mat-tab style=\"overflow-y: hidden;\" *ngFor=\"let tab of tabs\">\n <ng-template mat-tab-label>\n <span class=\"{{ tab.class }}\">{{ tab.title }}</span>\n </ng-template>\n <aio-code class=\"{{ tab.class }}\"\n [code]=\"tab.code\"\n [language]=\"tab.language\"\n [linenums]=\"tab.linenums\"\n [path]=\"tab.path\"\n [region]=\"tab.region\"\n [title]=\"tab.title\">\n </aio-code>\n </mat-tab>\n </mat-tab-group>\n `\n})\nexport class CodeTabsComponent implements OnInit {\n tabs: TabInfo[];\n linenumsDefault: string;\n\n constructor(private elementRef: ElementRef) { }\n\n ngOnInit() {\n const element = this.elementRef.nativeElement;\n this.linenumsDefault = this.getLinenums(element);\n\n // The `codeTabsContent` property is set by the DocViewer when it builds this component.\n // It is the original innerHTML of the host element.\n const content = element.codeTabsContent;\n this.processContent(content);\n }\n\n processContent(content: string) {\n // We add it to an element so that we can easily parse the HTML\n const element = document.createElement('div');\n // **Security:** `codeTabsContent` is provided by docs authors and as such is considered to\n // be safe for innerHTML purposes.\n element.innerHTML = content;\n\n this.tabs = [];\n const codeExamples = element.querySelectorAll('code-pane');\n for (let i = 0; i < codeExamples.length; i++) {\n const codeExample = codeExamples.item(i);\n const tab = {\n class: codeExample.getAttribute('class'),\n code: codeExample.innerHTML,\n language: codeExample.getAttribute('language'),\n linenums: this.getLinenums(codeExample),\n path: codeExample.getAttribute('path') || '',\n region: codeExample.getAttribute('region') || '',\n title: codeExample.getAttribute('title')\n };\n this.tabs.push(tab);\n }\n }\n\n getLinenums(element: Element) {\n const linenums = element.getAttribute('linenums');\n return linenums == null ? this.linenumsDefault : linenums;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/code/code-tabs.component.ts","import { Component, OnInit } from '@angular/core';\nimport { ContributorGroup } from './contributors.model';\nimport { ContributorService } from './contributor.service';\nimport { LocationService } from 'app/shared/location.service';\n\n@Component({\n selector: `aio-contributor-list`,\n template: `\n <div class=\"flex-center group-buttons\">\n <a *ngFor=\"let name of groupNames\"\n [class.selected]=\"name == selectedGroup.name\"\n class=\"button mat-button filter-button\"\n (click)=\"selectGroup(name)\">{{name}}</a>\n </div>\n <section *ngIf=\"selectedGroup\" class=\"grid-fluid\">\n <div class=\"contributor-group\">\n <aio-contributor *ngFor=\"let person of selectedGroup.contributors\" [person]=\"person\"></aio-contributor>\n </div>\n </section>`\n})\nexport class ContributorListComponent implements OnInit {\n private groups: ContributorGroup[];\n groupNames: string[];\n selectedGroup: ContributorGroup;\n\n constructor(\n private contributorService: ContributorService,\n private locationService: LocationService) { }\n\n ngOnInit() {\n const groupName = this.locationService.search()['group'] || '';\n // no need to unsubscribe because `contributors` completes\n this.contributorService.contributors\n .subscribe(grps => {\n this.groups = grps;\n this.groupNames = grps.map(g => g.name);\n this.selectGroup(groupName);\n });\n }\n\n selectGroup(name: string) {\n name = name.toLowerCase();\n this.selectedGroup = this.groups.find(g => g.name.toLowerCase() === name) || this.groups[0];\n this.locationService.setSearch('', {group: this.selectedGroup.name});\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor-list.component.ts","/* tslint:disable component-selector */\nimport { Component } from '@angular/core';\nimport { LocationService } from 'app/shared/location.service';\n\n/**\n * A simple embedded component that displays the current location path\n */\n@Component({\n selector: 'current-location',\n template: '{{ location.currentPath | async }}'\n})\nexport class CurrentLocationComponent {\n constructor(public location: LocationService) {\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/current-location.component.ts","import { Component, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { LocationService } from 'app/shared/location.service';\nimport { SearchResults } from 'app/search/interfaces';\nimport { SearchService } from 'app/search/search.service';\n\n@Component({\n selector: 'aio-file-not-found-search',\n template:\n `<p>Let's see if any of these search results help...</p>\n <aio-search-results class=\"embedded\" [searchResults]=\"searchResults | async\"></aio-search-results>`\n})\nexport class FileNotFoundSearchComponent implements OnInit {\n searchResults: Observable<SearchResults>;\n constructor(private location: LocationService, private search: SearchService) {}\n\n ngOnInit() {\n this.searchResults = this.location.currentPath.switchMap(path => {\n const query = path.split(/\\W+/).join(' ');\n return this.search.search(query);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/search/file-not-found-search.component.ts","/* tslint:disable component-selector */\nimport { Component, ElementRef, HostListener, Input, OnInit, AfterViewInit, ViewChild } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { CONTENT_URL_PREFIX } from 'app/documents/document.service';\n\nimport { boolFromValue, getAttrs, getAttrValue } from 'app/shared/attribute-utils';\n\nconst liveExampleBase = CONTENT_URL_PREFIX + 'live-examples/';\nconst zipBase = CONTENT_URL_PREFIX + 'zips/';\n\n/**\n* Angular.io Live Example Embedded Component\n*\n* Renders a link to a live/host example of the doc page.\n*\n* All attributes and the text content are optional\n*\n* Usage:\n* <live-example\n* [name=\"...\"] // name of the example directory\n* [stackblitz=\"...\"\"] // name of the stackblitz file (becomes part of zip file name as well)\n* [embedded] // embed the stackblitz in the doc page, else display in new browser tab (default)\n* [noDownload] // no downloadable zip option\n* [downloadOnly] // just the zip\n* [title=\"...\"]> // text for live example link and tooltip\n* text // higher precedence way to specify text for live example link and tooltip\n* </live-example>\n* Example:\n* <p>Run <live-example>Try the live example</live-example></p>.\n* // ~/resources/live-examples/{page}/stackblitz.json\n*\n* <p>Run <live-example name=\"toh-pt1\">this example</live-example></p>.\n* // ~/resources/live-examples/toh-pt1/stackblitz.json\n*\n* // Link to the default stackblitz in the toh-pt1 sample\n* // The title overrides default (\"live example\") with \"Tour of Heroes - Part 1\"\n* <p>Run <live-example name=\"toh-pt1\" title=\"Tour of Heroes - Part 1\"></live-example></p>.\n* // ~/resources/live-examples/toh-pt1/stackblitz.json\n*\n* <p>Run <live-example stackblitz=\"minimal\"></live-example></p>.\n* // ~/resources/live-examples/{page}/minimal.stackblitz.json\n*\n* // Embed the current page's default stackblitz\n* // Text within tag is \"live example\"\n* // No title (no tooltip)\n* <live-example embedded title=\"\"></live-example>\n* // ~/resources/live-examples/{page}/stackblitz.json\n*\n* // Displays within the document page as an embedded style stackblitz editor\n* <live-example name=\"toh-pt1\" embedded stackblitz=\"minimal\">Tour of Heroes - Part 1</live-example>\n* // ~/resources/live-examples/toh-pt1/minimal.stackblitz.json\n*/\n@Component({\n selector: 'live-example',\n templateUrl: 'live-example.component.html'\n})\nexport class LiveExampleComponent implements OnInit {\n\n // Will force to embedded-style when viewport width is narrow\n // \"narrow\" value was picked based on phone dimensions from http://screensiz.es/phone\n readonly narrowWidth = 1000;\n\n attrs: any;\n enableDownload = true;\n exampleDir: string;\n isEmbedded = false;\n mode = 'disabled';\n stackblitz: string;\n stackblitzName: string;\n title: string;\n zip: string;\n zipName: string;\n\n constructor(\n private elementRef: ElementRef,\n location: Location ) {\n\n const attrs = this.attrs = getAttrs(this.elementRef);\n let exampleDir = attrs.name;\n if (!exampleDir) {\n // take last segment, excluding hash fragment and query params\n exampleDir = (location.path(false).match(/[^\\/?\\#]+(?=\\/?(?:$|\\#|\\?))/) || [])[0];\n }\n this.exampleDir = exampleDir.trim();\n this.zipName = exampleDir.indexOf('/') === -1 ? this.exampleDir : exampleDir.split('/')[0];\n this.stackblitzName = attrs.stackblitz ? attrs.stackblitz.trim() + '.' : '';\n this.zip = `${zipBase}${exampleDir}/${this.stackblitzName}${this.zipName}.zip`;\n\n this.enableDownload = !boolFromValue(getAttrValue(attrs, 'nodownload'));\n\n if (boolFromValue(getAttrValue(attrs, 'downloadonly'))) {\n this.mode = 'downloadOnly';\n }\n }\n\n calcStackblitzLink(width: number) {\n\n const attrs = this.attrs;\n const exampleDir = this.exampleDir;\n let urlQuery = '';\n\n this.mode = 'default'; // display in another browser tab by default\n\n this.isEmbedded = boolFromValue(attrs.embedded);\n\n if (this.isEmbedded) {\n this.mode = 'embedded'; // display embedded in the doc\n urlQuery = '?ctl=1';\n }\n\n this.stackblitz = `${liveExampleBase}${exampleDir}/${this.stackblitzName}stackblitz.html${urlQuery}`;\n }\n\n ngOnInit() {\n // The `liveExampleContent` property is set by the DocViewer when it builds this component.\n // It is the original innerHTML of the host element.\n // Angular will sanitize this title when displayed so should be plain text.\n const title = this.elementRef.nativeElement.liveExampleContent;\n this.title = (title || this.attrs.title || 'live example').trim();\n this.onResize(window.innerWidth);\n }\n\n @HostListener('window:resize', ['$event.target.innerWidth'])\n onResize(width: number) {\n if (this.mode !== 'downloadOnly') {\n this.calcStackblitzLink(width);\n }\n }\n}\n\n///// EmbeddedStackblitzComponent ///\n/**\n * Hides the <iframe> so we can test LiveExampleComponent without actually triggering\n * a call to stackblitz to load the iframe\n */\n@Component({\n selector: 'aio-embedded-stackblitz',\n template: `<iframe #iframe frameborder=\"0\" width=\"100%\" height=\"100%\"></iframe>`,\n styles: [ 'iframe { min-height: 400px; }']\n})\nexport class EmbeddedStackblitzComponent implements AfterViewInit {\n @Input() src: string;\n\n @ViewChild('iframe') iframe: ElementRef;\n\n ngAfterViewInit() {\n // DEVELOPMENT TESTING ONLY\n // this.src = 'https://angular.io/resources/live-examples/quickstart/ts/stackblitz.json';\n\n if (this.iframe) {\n // security: the `src` is always authored by the documentation team\n // and is considered to be safe\n this.iframe.nativeElement.src = this.src;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/live-example/live-example.component.ts","import { Component, HostListener, OnInit } from '@angular/core';\nimport { PlatformLocation } from '@angular/common';\n\nimport { Category } from './resource.model';\nimport { ResourceService } from './resource.service';\n\n@Component({\n selector: 'aio-resource-list',\n templateUrl: 'resource-list.component.html'\n})\nexport class ResourceListComponent implements OnInit {\n\n categories: Category[];\n location: string;\n scrollPos = 0;\n\n constructor(\n location: PlatformLocation,\n private resourceService: ResourceService) {\n this.location = location.pathname.replace(/^\\/+/, '');\n }\n\n href(cat: {id: string}) {\n return this.location + '#' + cat.id;\n }\n\n ngOnInit() {\n // Not using async pipe because cats appear twice in template\n // No need to unsubscribe because categories observable completes.\n this.resourceService.categories.subscribe(cats => this.categories = cats);\n }\n\n @HostListener('window:scroll', ['$event.target'])\n onScroll(target: any) {\n this.scrollPos = target ? target.scrollTop || target.body.scrollTop || 0 : 0;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/resource/resource-list.component.ts","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ContributorService } from './contributor/contributor.service';\nimport { CopierService } from 'app/shared/copier.service';\nimport { PrettyPrinter } from './code/pretty-printer.service';\nimport { WithEmbeddedComponents } from 'app/embed-components/embed-components.service';\n\n// Any components that we want to use inside embedded components must be declared or imported here\n// It is not enough just to import them inside the AppModule\n\n// Reusable components (used inside embedded components)\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { CodeComponent } from './code/code.component';\nimport { SharedModule } from 'app/shared/shared.module';\n\n// Embedded Components\nimport { ApiListComponent } from './api/api-list.component';\nimport { ApiService } from './api/api.service';\nimport { CodeExampleComponent } from './code/code-example.component';\nimport { CodeTabsComponent } from './code/code-tabs.component';\nimport { ContributorListComponent } from './contributor/contributor-list.component';\nimport { ContributorComponent } from './contributor/contributor.component';\nimport { CurrentLocationComponent } from './current-location.component';\nimport { FileNotFoundSearchComponent } from './search/file-not-found-search.component';\nimport { LiveExampleComponent, EmbeddedStackblitzComponent } from './live-example/live-example.component';\nimport { ResourceListComponent } from './resource/resource-list.component';\nimport { ResourceService } from './resource/resource.service';\n\n/**\n * Components that can be embedded in docs,\n * such as CodeExampleComponent, LiveExampleComponent,...\n */\nexport const embeddedComponents: Type<any>[] = [\n ApiListComponent, CodeExampleComponent, CodeTabsComponent, ContributorListComponent,\n CurrentLocationComponent, FileNotFoundSearchComponent, LiveExampleComponent, ResourceListComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatSnackBarModule,\n MatTabsModule,\n SharedModule\n ],\n declarations: [\n embeddedComponents,\n CodeComponent,\n ContributorComponent,\n EmbeddedStackblitzComponent\n ],\n providers: [\n ApiService,\n ContributorService,\n CopierService,\n PrettyPrinter,\n ResourceService\n ],\n entryComponents: [ embeddedComponents ]\n})\nexport class EmbeddedModule implements WithEmbeddedComponents {\n embeddedComponents = embeddedComponents;\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/embedded.module.ts","/** PURE_IMPORTS_START ._FromEventPatternObservable PURE_IMPORTS_END */\nimport { FromEventPatternObservable } from './FromEventPatternObservable';\nexport var fromEventPattern = FromEventPatternObservable.create;\n//# sourceMappingURL=fromEventPattern.js.map \n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/wzc/dev/angular/angular/aio/node_modules/rxjs/_esm5/observable/fromEventPattern.js\n// module id = null\n// module chunks = ","/** PURE_IMPORTS_START .._util_isFunction,.._Observable,.._Subscription PURE_IMPORTS_END */\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nimport { isFunction } from '../util/isFunction';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var FromEventPatternObservable = /*@__PURE__*/ (/*@__PURE__*/ function (_super) {\n __extends(FromEventPatternObservable, _super);\n function FromEventPatternObservable(addHandler, removeHandler, selector) {\n _super.call(this);\n this.addHandler = addHandler;\n this.removeHandler = removeHandler;\n this.selector = selector;\n }\n /**\n * Creates an Observable from an API based on addHandler/removeHandler\n * functions.\n *\n * <span class=\"informal\">Converts any addHandler/removeHandler API to an\n * Observable.</span>\n *\n * <img src=\"./img/fromEventPattern.png\" width=\"100%\">\n *\n * Creates an Observable by using the `addHandler` and `removeHandler`\n * functions to add and remove the handlers, with an optional selector\n * function to project the event arguments to a result. The `addHandler` is\n * called when the output Observable is subscribed, and `removeHandler` is\n * called when the Subscription is unsubscribed.\n *\n * @example <caption>Emits clicks happening on the DOM document</caption>\n * function addClickHandler(handler) {\n * document.addEventListener('click', handler);\n * }\n *\n * function removeClickHandler(handler) {\n * document.removeEventListener('click', handler);\n * }\n *\n * var clicks = Rx.Observable.fromEventPattern(\n * addClickHandler,\n * removeClickHandler\n * );\n * clicks.subscribe(x => console.log(x));\n *\n * @see {@link from}\n * @see {@link fromEvent}\n *\n * @param {function(handler: Function): any} addHandler A function that takes\n * a `handler` function as argument and attaches it somehow to the actual\n * source of events.\n * @param {function(handler: Function, signal?: any): void} [removeHandler] An optional function that\n * takes a `handler` function as argument and removes it in case it was\n * previously attached using `addHandler`. if addHandler returns signal to teardown when remove,\n * removeHandler function will forward it.\n * @param {function(...args: any): T} [selector] An optional function to\n * post-process results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable<T>}\n * @static true\n * @name fromEventPattern\n * @owner Observable\n */\n FromEventPatternObservable.create = function (addHandler, removeHandler, selector) {\n return new FromEventPatternObservable(addHandler, removeHandler, selector);\n };\n FromEventPatternObservable.prototype._subscribe = function (subscriber) {\n var _this = this;\n var removeHandler = this.removeHandler;\n var handler = !!this.selector ? function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i - 0] = arguments[_i];\n }\n _this._callSelector(subscriber, args);\n } : function (e) { subscriber.next(e); };\n var retValue = this._callAddHandler(handler, subscriber);\n if (!isFunction(removeHandler)) {\n return;\n }\n subscriber.add(new Subscription(function () {\n //TODO: determine whether or not to forward to error handler\n removeHandler(handler, retValue);\n }));\n };\n FromEventPatternObservable.prototype._callSelector = function (subscriber, args) {\n try {\n var result = this.selector.apply(this, args);\n subscriber.next(result);\n }\n catch (e) {\n subscriber.error(e);\n }\n };\n FromEventPatternObservable.prototype._callAddHandler = function (handler, errorSubscriber) {\n try {\n return this.addHandler(handler) || null;\n }\n catch (e) {\n errorSubscriber.error(e);\n }\n };\n return FromEventPatternObservable;\n}(Observable));\n//# sourceMappingURL=FromEventPatternObservable.js.map \n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/rxjs/_esm5/observable/FromEventPatternObservable.js.pre-build-optimizer.js","/**\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 { Injectable, NgModule, NgZone } from '@angular/core';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { Subject } from 'rxjs/Subject';\nimport { map } from 'rxjs/operators/map';\nimport { startWith } from 'rxjs/operators/startWith';\nimport { takeUntil } from 'rxjs/operators/takeUntil';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { combineLatest } from 'rxjs/observable/combineLatest';\nimport { fromEventPattern } from 'rxjs/observable/fromEventPattern';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * Global registry for all dynamically-created, injected style tags.\n */\nvar styleElementForWebkitCompatibility = new Map();\n/**\n * A utility for calling matchMedia queries.\n */\nvar MediaMatcher = (function () {\n function MediaMatcher(platform) {\n this.platform = platform;\n this._matchMedia = this.platform.isBrowser ?\n // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window) :\n noopMatchMedia;\n }\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n * @param {?} query\n * @return {?}\n */\n MediaMatcher.prototype.matchMedia = /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n * @param {?} query\n * @return {?}\n */\n function (query) {\n if (this.platform.WEBKIT) {\n createEmptyStyleRule(query);\n }\n return this._matchMedia(query);\n };\n MediaMatcher.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n MediaMatcher.ctorParameters = function () { return [\n { type: Platform, },\n ]; };\n return MediaMatcher;\n}());\n/**\n * For Webkit engines that only trigger the MediaQueryListListener when there is at least one CSS\n * selector for the respective media query.\n * @param {?} query\n * @return {?}\n */\nfunction createEmptyStyleRule(query) {\n if (!styleElementForWebkitCompatibility.has(query)) {\n try {\n var /** @type {?} */ style = document.createElement('style');\n style.setAttribute('type', 'text/css');\n if (!style.sheet) {\n var /** @type {?} */ cssText = \"@media \" + query + \" {.fx-query-test{ }}\";\n style.appendChild(document.createTextNode(cssText));\n }\n document.getElementsByTagName('head')[0].appendChild(style);\n // Store in private global registry\n styleElementForWebkitCompatibility.set(query, style);\n }\n catch (/** @type {?} */ e) {\n console.error(e);\n }\n }\n}\n/**\n * No-op matchMedia replacement for non-browser platforms.\n * @param {?} query\n * @return {?}\n */\nfunction noopMatchMedia(query) {\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: function () { },\n removeListener: function () { }\n };\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * The current state of a layout breakpoint.\n * @record\n */\n\n/**\n * Utility for checking the matching state of \\@media queries.\n */\nvar BreakpointObserver = (function () {\n function BreakpointObserver(mediaMatcher, zone) {\n this.mediaMatcher = mediaMatcher;\n this.zone = zone;\n /**\n * A map of all media queries currently being listened for.\n */\n this._queries = new Map();\n /**\n * A subject for all other observables to takeUntil based on.\n */\n this._destroySubject = new Subject();\n }\n /** Completes the active subject, signalling to all other observables to complete. */\n /**\n * Completes the active subject, signalling to all other observables to complete.\n * @return {?}\n */\n BreakpointObserver.prototype.ngOnDestroy = /**\n * Completes the active subject, signalling to all other observables to complete.\n * @return {?}\n */\n function () {\n this._destroySubject.next();\n this._destroySubject.complete();\n };\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n /**\n * Whether one or more media queries match the current viewport size.\n * @param {?} value One or more media queries to check.\n * @return {?} Whether any of the media queries match.\n */\n BreakpointObserver.prototype.isMatched = /**\n * Whether one or more media queries match the current viewport size.\n * @param {?} value One or more media queries to check.\n * @return {?} Whether any of the media queries match.\n */\n function (value) {\n var _this = this;\n var /** @type {?} */ queries = coerceArray(value);\n return queries.some(function (mediaQuery) { return _this._registerQuery(mediaQuery).mql.matches; });\n };\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @returns A stream of matches for the given queries.\n */\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param {?} value\n * @return {?} A stream of matches for the given queries.\n */\n BreakpointObserver.prototype.observe = /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param {?} value\n * @return {?} A stream of matches for the given queries.\n */\n function (value) {\n var _this = this;\n var /** @type {?} */ queries = coerceArray(value);\n var /** @type {?} */ observables = queries.map(function (query) { return _this._registerQuery(query).observable; });\n return combineLatest(observables, function (a, b) {\n return {\n matches: !!((a && a.matches) || (b && b.matches)),\n };\n });\n };\n /**\n * Registers a specific query to be listened for.\n * @param {?} query\n * @return {?}\n */\n BreakpointObserver.prototype._registerQuery = /**\n * Registers a specific query to be listened for.\n * @param {?} query\n * @return {?}\n */\n function (query) {\n var _this = this;\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return /** @type {?} */ ((this._queries.get(query)));\n }\n var /** @type {?} */ mql = this.mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n var /** @type {?} */ queryObservable = fromEventPattern(\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n function (listener) {\n mql.addListener(function (e) { return _this.zone.run(function () { return listener(e); }); });\n }, function (listener) {\n mql.removeListener(function (e) { return _this.zone.run(function () { return listener(e); }); });\n })\n .pipe(takeUntil(this._destroySubject), startWith(mql), map(function (nextMql) { return ({ matches: nextMql.matches }); }));\n // Add the MediaQueryList to the set of queries.\n var /** @type {?} */ output = { observable: queryObservable, mql: mql };\n this._queries.set(query, output);\n return output;\n };\n BreakpointObserver.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n BreakpointObserver.ctorParameters = function () { return [\n { type: MediaMatcher, },\n { type: NgZone, },\n ]; };\n return BreakpointObserver;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nvar Breakpoints = {\n Handset: '(max-width: 599px) and (orientation: portrait), ' +\n '(max-width: 959px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839px) and (orientation: portrait), ' +\n '(min-width: 960px) and (max-width: 1279px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' +\n '(min-width: 1280px) and (orientation: landscape)',\n HandsetPortrait: '(max-width: 599px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n HandsetLandscape: '(max-width: 959px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)',\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nvar LayoutModule = (function () {\n function LayoutModule() {\n }\n LayoutModule.decorators = [\n { type: NgModule, args: [{\n providers: [BreakpointObserver, MediaMatcher],\n imports: [PlatformModule],\n },] },\n ];\n /** @nocollapse */\n LayoutModule.ctorParameters = function () { return []; };\n return LayoutModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LayoutModule, BreakpointObserver, Breakpoints, MediaMatcher };\n//# sourceMappingURL=layout.es5.js.map\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/@angular/cdk/esm5/layout.es5.js.pre-build-optimizer.js","/**\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 { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Injectable, InjectionToken, Injector, NgModule, NgZone, Optional, Renderer2, SkipSelf, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, PortalInjector, PortalModule } from '@angular/cdk/portal';\nimport { LIVE_ANNOUNCER_PROVIDER, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { BreakpointObserver, Breakpoints, LayoutModule } from '@angular/cdk/layout';\nimport { AnimationCurves, AnimationDurations, MatCommonModule } from '@angular/material/core';\nimport { __assign, __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { first } from 'rxjs/operators/first';\nimport { takeUntil } from 'rxjs/operators/takeUntil';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Subject } from 'rxjs/Subject';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nvar MatSnackBarRef = (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 closed.\n */\n this._afterClosed = 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 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._afterClosed.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.closeWithAction = /**\n * Marks the snackbar action clicked.\n * @return {?}\n */\n function () {\n if (!this._onAction.closed) {\n this._onAction.next();\n this._onAction.complete();\n }\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._afterClosed.next();\n this._afterClosed.complete();\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._afterClosed.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} checked by tsc\n */\n\nvar MAT_SNACK_BAR_DATA = new InjectionToken('MatSnackBarData');\n/**\n * Configuration used when opening a snack-bar.\n */\nvar MatSnackBarConfig = (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 MatAriaLiveAnnouncer\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 * Text layout direction for the snack bar.\n */\n this.direction = 'ltr';\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} checked by tsc\n */\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 = (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.closeWithAction();\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: \"{{data.message}} <button class=\\\"mat-simple-snackbar-action\\\" *ngIf=\\\"hasAction\\\" (click)=\\\"action()\\\">{{data.action}}</button>\",\n styles: [\".mat-simple-snackbar{display:flex;justify-content:space-between;line-height:20px;opacity:1}.mat-simple-snackbar-action{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;background:0 0;flex-shrink:0;margin-left:48px}[dir=rtl] .mat-simple-snackbar-action{margin-right:48px;margin-left:0}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('contentFade', [\n transition(':enter', [\n style({ opacity: '0' }),\n animate(AnimationDurations.COMPLEX + \" \" + AnimationCurves.STANDARD_CURVE)\n ])\n ])\n ],\n host: {\n '[@contentFade]': '',\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} checked by tsc\n */\nvar SHOW_ANIMATION = AnimationDurations.ENTERING + \" \" + AnimationCurves.DECELERATION_CURVE;\nvar HIDE_ANIMATION = AnimationDurations.EXITING + \" \" + AnimationCurves.ACCELERATION_CURVE;\n/**\n * Internal component that wraps user-provided snack bar content.\n * \\@docs-private\n */\nvar MatSnackBarContainer = (function (_super) {\n __extends(MatSnackBarContainer, _super);\n function MatSnackBarContainer(_ngZone, _renderer, _elementRef, _changeDetectorRef) {\n var _this = _super.call(this) || this;\n _this._ngZone = _ngZone;\n _this._renderer = _renderer;\n _this._elementRef = _elementRef;\n _this._changeDetectorRef = _changeDetectorRef;\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 if (this._portalOutlet.hasAttached()) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n if (this.snackBarConfig.panelClass || this.snackBarConfig.extraClasses) {\n var /** @type {?} */ classes = this._getCssClasses(this.snackBarConfig.panelClass).concat(this._getCssClasses(this.snackBarConfig.extraClasses));\n // Not the most efficient way of adding classes, but the renderer doesn't allow us\n // to pass in an array or a space-separated list.\n for (var _i = 0, classes_1 = classes; _i < classes_1.length; _i++) {\n var cssClass = classes_1[_i];\n this._renderer.addClass(this._elementRef.nativeElement, cssClass);\n }\n }\n if (this.snackBarConfig.horizontalPosition === 'center') {\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-snack-bar-center');\n }\n if (this.snackBarConfig.verticalPosition === 'top') {\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-snack-bar-top');\n }\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 * @return {?}\n */\n MatSnackBarContainer.prototype.attachTemplatePortal = /**\n * Attach a template portal as content to this snack bar container.\n * @return {?}\n */\n function () {\n throw Error('Not yet implemented');\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.startsWith('hidden')) {\n this._completeExit();\n }\n if (toState.startsWith('visible')) {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n var /** @type {?} */ 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-\" + this.snackBarConfig.verticalPosition;\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 this._animationState = \"hidden-\" + this.snackBarConfig.verticalPosition;\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(first()).subscribe(function () {\n _this._onExit.next();\n _this._onExit.complete();\n });\n };\n /**\n * Convert the class list to a array of classes it can apply to the dom\n * @param {?} classList\n * @return {?}\n */\n MatSnackBarContainer.prototype._getCssClasses = /**\n * Convert the class list to a array of classes it can apply to the dom\n * @param {?} classList\n * @return {?}\n */\n function (classList) {\n if (classList) {\n if (Array.isArray(classList)) {\n return classList;\n }\n else {\n return [classList];\n }\n }\n return [];\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:2px;box-sizing:border-box;display:block;margin:24px;max-width:568px;min-width:288px;padding:14px 24px;transform:translateY(100%) translateY(24px)}.mat-snack-bar-container.mat-snack-bar-center{margin:0;transform:translateY(100%)}.mat-snack-bar-container.mat-snack-bar-top{transform:translateY(-100%) translateY(-24px)}.mat-snack-bar-container.mat-snack-bar-top.mat-snack-bar-center{transform:translateY(-100%)}@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:0;max-width:inherit;width:100%}\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n 'role': 'alert',\n 'class': 'mat-snack-bar-container',\n '[@state]': '_animationState',\n '(@state.done)': 'onAnimationEnd($event)'\n },\n animations: [\n trigger('state', [\n state('visible-top, visible-bottom', style({ transform: 'translateY(0%)' })),\n transition('visible-top => hidden-top, visible-bottom => hidden-bottom', animate(HIDE_ANIMATION)),\n transition('void => visible-top, void => visible-bottom', animate(SHOW_ANIMATION)),\n ])\n ],\n },] },\n ];\n /** @nocollapse */\n MatSnackBarContainer.ctorParameters = function () { return [\n { type: NgZone, },\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\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} checked by tsc\n */\n/**\n * Service to dispatch Material Design snack bar messages.\n */\nvar MatSnackBar = (function () {\n function MatSnackBar(_overlay, _live, _injector, _breakpointObserver, _parentSnackBar) {\n this._overlay = _overlay;\n this._live = _live;\n this._injector = _injector;\n this._breakpointObserver = _breakpointObserver;\n this._parentSnackBar = _parentSnackBar;\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 var /** @type {?} */ 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 var _this = this;\n var /** @type {?} */ _config = _applyConfigDefaults(config);\n var /** @type {?} */ snackBarRef = this._attach(component, _config);\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 {?} */ ((/** @type {?} */ ((_config)).duration))); });\n }\n if (_config.announcementMessage) {\n this._live.announce(_config.announcementMessage, _config.politeness);\n }\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\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 var /** @type {?} */ _config = _applyConfigDefaults(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 _config.announcementMessage = message;\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 * 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 var /** @type {?} */ containerPortal = new ComponentPortal(MatSnackBarContainer, config.viewContainerRef);\n var /** @type {?} */ containerRef = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n };\n /**\n * Places a new component as the content of the snack bar container.\n * @template T\n * @param {?} component\n * @param {?} config\n * @return {?}\n */\n MatSnackBar.prototype._attach = /**\n * Places a new component as the content of the snack bar container.\n * @template T\n * @param {?} component\n * @param {?} config\n * @return {?}\n */\n function (component, config) {\n var /** @type {?} */ overlayRef = this._createOverlay(config);\n var /** @type {?} */ container = this._attachSnackBarContainer(overlayRef, config);\n var /** @type {?} */ snackBarRef = new MatSnackBarRef(container, overlayRef);\n var /** @type {?} */ injector = this._createInjector(config, snackBarRef);\n var /** @type {?} */ portal = new ComponentPortal(component, undefined, injector);\n var /** @type {?} */ 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 // 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(first()))).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 return snackBarRef;\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 var /** @type {?} */ overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n var /** @type {?} */ positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n var /** @type {?} */ isRtl = config.direction === 'rtl';\n var /** @type {?} */ isLeft = (config.horizontalPosition === 'left' ||\n (config.horizontalPosition === 'start' && !isRtl) ||\n (config.horizontalPosition === 'end' && isRtl));\n var /** @type {?} */ 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 var /** @type {?} */ userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n var /** @type {?} */ injectionTokens = new WeakMap();\n injectionTokens.set(MatSnackBarRef, snackBarRef);\n injectionTokens.set(MAT_SNACK_BAR_DATA, config.data);\n return new PortalInjector(userInjector || this._injector, injectionTokens);\n };\n MatSnackBar.decorators = [\n { type: Injectable },\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 ]; };\n return MatSnackBar;\n}());\n/**\n * Applies default options to the snackbar config.\n * @param {?=} config The configuration to which the defaults will be applied.\n * @return {?} The new configuration object with defaults applied.\n */\nfunction _applyConfigDefaults(config) {\n return __assign({}, new MatSnackBarConfig(), config);\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nvar MatSnackBarModule = (function () {\n function MatSnackBarModule() {\n }\n MatSnackBarModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n OverlayModule,\n PortalModule,\n CommonModule,\n MatCommonModule,\n LayoutModule,\n ],\n exports: [MatSnackBarContainer, MatCommonModule],\n declarations: [MatSnackBarContainer, SimpleSnackBar],\n entryComponents: [MatSnackBarContainer, SimpleSnackBar],\n providers: [MatSnackBar, LIVE_ANNOUNCER_PROVIDER]\n },] },\n ];\n /** @nocollapse */\n MatSnackBarModule.ctorParameters = function () { return []; };\n return MatSnackBarModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSnackBarModule, MatSnackBar, SHOW_ANIMATION, HIDE_ANIMATION, MatSnackBarContainer, MAT_SNACK_BAR_DATA, MatSnackBarConfig, MatSnackBarRef, SimpleSnackBar };\n//# sourceMappingURL=snack-bar.es5.js.map\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/@angular/material/esm5/snack-bar.es5.js.pre-build-optimizer.js","/**\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/bidi\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@angular/cdk/platform\";\nimport * as i5 from \"@angular/cdk/scrolling\";\nimport * as i6 from \"@angular/cdk/overlay\";\nimport * as i7 from \"@angular/cdk/layout\";\nimport * as i8 from \"@angular/cdk/a11y\";\nimport * as i9 from \"@angular/cdk/portal\";\nimport * as i10 from \"@angular/material/core\";\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(6144, i2.DIR_DOCUMENT, null, [i3.DOCUMENT]), i0.ɵmpd(4608, i2.Directionality, i2.Directionality, [[2, i2.DIR_DOCUMENT]]), i0.ɵmpd(4608, i4.Platform, i4.Platform, []), i0.ɵmpd(5120, i5.ScrollDispatcher, i5.SCROLL_DISPATCHER_PROVIDER_FACTORY, [[3, i5.ScrollDispatcher], i0.NgZone, i4.Platform]), i0.ɵmpd(5120, i5.ViewportRuler, i5.VIEWPORT_RULER_PROVIDER_FACTORY, [[3, i5.ViewportRuler], i4.Platform, i0.NgZone]), i0.ɵmpd(4608, i6.ScrollStrategyOptions, i6.ScrollStrategyOptions, [i5.ScrollDispatcher, i5.ViewportRuler, i0.NgZone]), i0.ɵmpd(5120, i6.OverlayContainer, i6.ɵa, [[3, i6.OverlayContainer], i3.DOCUMENT]), i0.ɵmpd(4608, i6.ɵh, i6.ɵh, [i5.ViewportRuler, i3.DOCUMENT]), i0.ɵmpd(5120, i6.OverlayKeyboardDispatcher, i6.ɵf, [[3, i6.OverlayKeyboardDispatcher], i3.DOCUMENT]), i0.ɵmpd(4608, i6.Overlay, i6.Overlay, [i6.ScrollStrategyOptions, i6.OverlayContainer, i0.ComponentFactoryResolver, i6.ɵh, i6.OverlayKeyboardDispatcher, i0.ApplicationRef, i0.Injector, i0.NgZone, i3.DOCUMENT]), i0.ɵmpd(5120, i6.ɵc, i6.ɵd, [i6.Overlay]), i0.ɵmpd(4608, i3.NgLocalization, i3.NgLocaleLocalization, [i0.LOCALE_ID, [2, i3.ɵa]]), i0.ɵmpd(4608, i7.MediaMatcher, i7.MediaMatcher, [i4.Platform]), i0.ɵmpd(135680, i7.BreakpointObserver, i7.BreakpointObserver, [i7.MediaMatcher, i0.NgZone]), i0.ɵmpd(5120, i8.LiveAnnouncer, i8.LIVE_ANNOUNCER_PROVIDER_FACTORY, [[3, i8.LiveAnnouncer], [2, i8.LIVE_ANNOUNCER_ELEMENT_TOKEN], i3.DOCUMENT]), i0.ɵmpd(4608, i1.MatSnackBar, i1.MatSnackBar, [i6.Overlay, i8.LiveAnnouncer, i0.Injector, i7.BreakpointObserver, [3, i1.MatSnackBar]]), i0.ɵmpd(512, i2.BidiModule, i2.BidiModule, []), i0.ɵmpd(512, i9.PortalModule, i9.PortalModule, []), i0.ɵmpd(512, i4.PlatformModule, i4.PlatformModule, []), i0.ɵmpd(512, i5.ScrollDispatchModule, i5.ScrollDispatchModule, []), i0.ɵmpd(512, i6.OverlayModule, i6.OverlayModule, []), i0.ɵmpd(512, i3.CommonModule, i3.CommonModule, []), i0.ɵmpd(256, i10.MATERIAL_SANITY_CHECKS, true, []), i0.ɵmpd(512, i10.MatCommonModule, i10.MatCommonModule, [[2, i10.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(512, i7.LayoutModule, i7.LayoutModule, []), i0.ɵmpd(512, i1.MatSnackBarModule, i1.MatSnackBarModule, [])]); });\nexport { MatSnackBarModuleNgFactory as MatSnackBarModuleNgFactory };\nvar styles_MatSnackBarContainer = [\".mat-snack-bar-container{border-radius:2px;box-sizing:border-box;display:block;margin:24px;max-width:568px;min-width:288px;padding:14px 24px;transform:translateY(100%) translateY(24px)}.mat-snack-bar-container.mat-snack-bar-center{margin:0;transform:translateY(100%)}.mat-snack-bar-container.mat-snack-bar-top{transform:translateY(-100%) translateY(-24px)}.mat-snack-bar-container.mat-snack-bar-top.mat-snack-bar-center{transform:translateY(-100%)}@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:0;max-width:inherit;width:100%}\"];\nvar RenderType_MatSnackBarContainer = i0.ɵcrt({ encapsulation: 2, styles: styles_MatSnackBarContainer, data: { \"animation\": [{ type: 7, name: \"state\", definitions: [{ type: 0, name: \"visible-top, visible-bottom\", styles: { type: 6, styles: { transform: \"translateY(0%)\" }, offset: null }, options: undefined }, { type: 1, expr: \"visible-top => hidden-top, visible-bottom => hidden-bottom\", animation: { type: 4, styles: null, timings: \"195ms cubic-bezier(0.4,0.0,1,1)\" }, options: null }, { type: 1, expr: \"void => visible-top, void => visible-bottom\", animation: { type: 4, styles: null, timings: \"225ms cubic-bezier(0.0,0.0,0.2,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, 147456, [[1, 4]], 0, i9.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.Renderer2, i0.ElementRef, i0.ChangeDetectorRef], 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;line-height:20px;opacity:1}.mat-simple-snackbar-action{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;background:0 0;flex-shrink:0;margin-left:48px}[dir=rtl] .mat-simple-snackbar-action{margin-right:48px;margin-left:0}\"];\nvar RenderType_SimpleSnackBar = i0.ɵcrt({ encapsulation: 2, styles: styles_SimpleSnackBar, data: { \"animation\": [{ type: 7, name: \"contentFade\", definitions: [{ type: 1, expr: \":enter\", animation: [{ type: 6, styles: { opacity: \"0\" }, offset: null }, { type: 4, styles: null, timings: \"375ms cubic-bezier(0.4,0.0,0.2,1)\" }], options: null }], options: {} }] } });\nexport { RenderType_SimpleSnackBar as RenderType_SimpleSnackBar };\nfunction View_SimpleSnackBar_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"button\", [[\"class\", \"mat-simple-snackbar-action\"]], 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; }, null, null)), (_l()(), i0.ɵted(1, null, [\"\", \"\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.data.action; _ck(_v, 1, 0, currVal_0); }); }\nexport function View_SimpleSnackBar_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵted(0, null, [\"\", \" \"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_SimpleSnackBar_1)), i0.ɵdid(2, 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, 2, 0, currVal_1); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.data.message; _ck(_v, 0, 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\"]], [[40, \"@contentFade\", 0]], 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, function (_ck, _v) { var currVal_0 = undefined; _ck(_v, 0, 0, currVal_0); }); }\nvar SimpleSnackBarNgFactory = i0.ɵccf(\"simple-snack-bar\", i1.SimpleSnackBar, View_SimpleSnackBar_Host_0, {}, {}, []);\nexport { SimpleSnackBarNgFactory as SimpleSnackBarNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/@angular/material/snack-bar/typings/index.ngfactory.js.pre-build-optimizer.js","<ng-template cdkPortalOutlet></ng-template>\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/@angular/material/snack-bar/typings/index.d.ts.MatSnackBarContainer.html","{{data.message}} <button class=\"mat-simple-snackbar-action\" *ngIf=\"hasAction\" (click)=\"action()\">{{data.action}}</button>\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/@angular/material/snack-bar/typings/index.d.ts.SimpleSnackBar.html","import { Injectable, OnDestroy } from '@angular/core';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\n\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\nimport { Subject } from 'rxjs/Subject';\nimport 'rxjs/add/operator/do';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/takeUntil';\n\nimport { Logger } from 'app/shared/logger.service';\nimport { DOC_CONTENT_URL_PREFIX } from 'app/documents/document.service';\n\nexport interface ApiItem {\n name: string;\n title: string;\n path: string;\n docType: string;\n stability: string;\n securityRisk: boolean;\n\n show?: boolean;\n}\n\nexport interface ApiSection {\n name: string;\n title: string;\n items: ApiItem[];\n}\n\n@Injectable()\nexport class ApiService implements OnDestroy {\n\n private apiBase = DOC_CONTENT_URL_PREFIX + 'api/';\n private apiListJsonDefault = 'api-list.json';\n private firstTime = true;\n private onDestroy = new Subject();\n private sectionsSubject = new ReplaySubject<ApiSection[]>(1);\n private _sections = this.sectionsSubject.takeUntil(this.onDestroy);\n\n /**\n * Return a cached observable of API sections from a JSON file.\n * API sections is an array of Angular top modules and metadata about their API documents (items).\n */\n get sections() {\n\n if (this.firstTime) {\n this.firstTime = false;\n this.fetchSections(); // TODO: get URL for fetchSections by configuration?\n\n // makes sectionsSubject hot; subscribe ensures stays alive (always refCount > 0);\n this._sections.subscribe(sections => this.logger.log('ApiService got API sections') );\n }\n\n return this._sections;\n };\n\n constructor(private http: HttpClient, private logger: Logger) { }\n\n ngOnDestroy() {\n this.onDestroy.next();\n }\n\n /**\n * Fetch API sections from a JSON file.\n * API sections is an array of Angular top modules and metadata about their API documents (items).\n * Updates `sections` observable\n *\n * @param {string} [src] - Name of the api list JSON file\n */\n fetchSections(src?: string) {\n // TODO: get URL by configuration?\n const url = this.apiBase + (src || this.apiListJsonDefault);\n this.http.get<ApiSection[]>(url)\n .takeUntil(this.onDestroy)\n .do(() => this.logger.log(`Got API sections from ${url}`))\n .subscribe(\n sections => this.sectionsSubject.next(sections),\n (err: HttpErrorResponse) => {\n // TODO: handle error\n this.logger.error(err);\n throw err; // rethrow for now.\n }\n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/api/api.service.ts","import { HttpClient } from '@angular/common/http';\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\nimport { Subject } from 'rxjs/Subject';\nimport 'rxjs/add/operator/do';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/takeUntil';\nimport { Logger } from 'app/shared/logger.service';\nimport { DOC_CONTENT_URL_PREFIX } from 'app/documents/document.service';\nvar ApiService = /** @class */ (function () {\n function ApiService(http, logger) {\n this.http = http;\n this.logger = logger;\n this.apiBase = DOC_CONTENT_URL_PREFIX + 'api/';\n this.apiListJsonDefault = 'api-list.json';\n this.firstTime = true;\n this.onDestroy = new Subject();\n this.sectionsSubject = new ReplaySubject(1);\n this._sections = this.sectionsSubject.takeUntil(this.onDestroy);\n }\n Object.defineProperty(ApiService.prototype, \"sections\", {\n /**\n * Return a cached observable of API sections from a JSON file.\n * API sections is an array of Angular top modules and metadata about their API documents (items).\n */\n get: function () {\n var _this = this;\n if (this.firstTime) {\n this.firstTime = false;\n this.fetchSections(); // TODO: get URL for fetchSections by configuration?\n // makes sectionsSubject hot; subscribe ensures stays alive (always refCount > 0);\n this._sections.subscribe(function (sections) { return _this.logger.log('ApiService got API sections'); });\n }\n return this._sections;\n },\n enumerable: true,\n configurable: true\n });\n ;\n ApiService.prototype.ngOnDestroy = function () {\n this.onDestroy.next();\n };\n /**\n * Fetch API sections from a JSON file.\n * API sections is an array of Angular top modules and metadata about their API documents (items).\n * Updates `sections` observable\n *\n * @param {string} [src] - Name of the api list JSON file\n */\n ApiService.prototype.fetchSections = function (src) {\n var _this = this;\n // TODO: get URL by configuration?\n var url = this.apiBase + (src || this.apiListJsonDefault);\n this.http.get(url)\n .takeUntil(this.onDestroy)\n .do(function () { return _this.logger.log(\"Got API sections from \" + url); })\n .subscribe(function (sections) { return _this.sectionsSubject.next(sections); }, function (err) {\n // TODO: handle error\n _this.logger.error(err);\n throw err; // rethrow for now.\n });\n };\n return ApiService;\n}());\nexport { ApiService };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/api/api.service.ts.pre-build-optimizer.js","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n * /*\n* API List & Filter Component\n*\n* A page that displays a formatted list of the public Angular API entities.\n* Clicking on a list item triggers navigation to the corresponding API entity document.\n* Can add/remove API entity links based on filter settings.\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 \"../../shared/select/select.component.ngfactory\";\nimport * as i3 from \"../../shared/select/select.component\";\nimport * as i4 from \"./api-list.component\";\nimport * as i5 from \"./api.service\";\nimport * as i6 from \"../../shared/location.service\";\nvar styles_ApiListComponent = [];\nvar RenderType_ApiListComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_ApiListComponent, data: {} });\nexport { RenderType_ApiListComponent as RenderType_ApiListComponent };\nfunction View_ApiListComponent_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"li\", [[\"class\", \"api-item\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 2, \"a\", [], [[8, \"href\", 4]], null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 0, \"span\", [], [[8, \"className\", 0]], null, null, null, null)), (_l()(), i0.ɵted(3, null, [\" \", \"\"]))], null, function (_ck, _v) { var currVal_0 = _v.parent.context.$implicit.path; _ck(_v, 1, 0, currVal_0); var currVal_1 = i0.ɵinlineInterpolate(1, \"symbol \", _v.parent.context.$implicit.docType, \"\"); _ck(_v, 2, 0, currVal_1); var currVal_2 = _v.parent.context.$implicit.title; _ck(_v, 3, 0, currVal_2); }); }\nfunction View_ApiListComponent_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, null, null, null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ApiListComponent_3)), i0.ɵdid(2, 16384, null, 0, i1.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(0, null, null, 0))], function (_ck, _v) { var currVal_0 = _v.context.$implicit.show; _ck(_v, 2, 0, currVal_0); }, null); }\nfunction View_ApiListComponent_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 5, \"div\", [], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 1, \"h2\", [], null, null, null, null, null)), (_l()(), i0.ɵted(2, null, [\"\", \"\"])), (_l()(), i0.ɵeld(3, 0, null, null, 2, \"ul\", [[\"class\", \"api-list\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ApiListComponent_2)), i0.ɵdid(5, 802816, null, 0, i1.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var currVal_1 = _v.context.$implicit.items; _ck(_v, 5, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = _v.context.$implicit.title; _ck(_v, 2, 0, currVal_0); }); }\nexport function View_ApiListComponent_0(_l) { return i0.ɵvid(0, [i0.ɵqud(402653184, 1, { queryEl: 0 }), (_l()(), i0.ɵeld(1, 0, null, null, 8, \"div\", [[\"class\", \"l-flex-wrap api-filter\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"aio-select\", [[\"label\", \"Type:\"]], null, [[null, \"change\"], [\"document\", \"click\"], [\"document\", \"keydown.escape\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"document:click\" === en)) {\n var pd_0 = (i0.ɵnov(_v, 3).onClick($event.target) !== false);\n ad = (pd_0 && ad);\n } if ((\"document:keydown.escape\" === en)) {\n var pd_1 = (i0.ɵnov(_v, 3).onKeyDown() !== false);\n ad = (pd_1 && ad);\n } if ((\"change\" === en)) {\n var pd_2 = (_co.setType($event.option) !== false);\n ad = (pd_2 && ad);\n } return ad; }, i2.View_SelectComponent_0, i2.RenderType_SelectComponent)), i0.ɵdid(3, 114688, null, 0, i3.SelectComponent, [i0.ElementRef], { selected: [0, \"selected\"], options: [1, \"options\"], showSymbol: [2, \"showSymbol\"], label: [3, \"label\"] }, { change: \"change\" }), (_l()(), i0.ɵeld(4, 0, null, null, 1, \"aio-select\", [[\"label\", \"Status:\"]], null, [[null, \"change\"], [\"document\", \"click\"], [\"document\", \"keydown.escape\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"document:click\" === en)) {\n var pd_0 = (i0.ɵnov(_v, 5).onClick($event.target) !== false);\n ad = (pd_0 && ad);\n } if ((\"document:keydown.escape\" === en)) {\n var pd_1 = (i0.ɵnov(_v, 5).onKeyDown() !== false);\n ad = (pd_1 && ad);\n } if ((\"change\" === en)) {\n var pd_2 = (_co.setStatus($event.option) !== false);\n ad = (pd_2 && ad);\n } return ad; }, i2.View_SelectComponent_0, i2.RenderType_SelectComponent)), i0.ɵdid(5, 114688, null, 0, i3.SelectComponent, [i0.ElementRef], { selected: [0, \"selected\"], options: [1, \"options\"], label: [2, \"label\"] }, { change: \"change\" }), (_l()(), i0.ɵeld(6, 0, null, null, 3, \"div\", [[\"class\", \"form-search\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(7, 0, [[1, 0], [\"filter\", 1]], null, 0, \"input\", [[\"placeholder\", \"Filter\"]], null, [[null, \"input\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"input\" === en)) {\n var pd_0 = (_co.setQuery($event.target.value) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(8, 0, null, null, 1, \"i\", [[\"class\", \"material-icons\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"search\"])), (_l()(), i0.ɵeld(10, 0, null, null, 3, \"article\", [[\"class\", \"api-list-container l-content-small docs-content\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 2, null, View_ApiListComponent_1)), i0.ɵdid(12, 802816, null, 0, i1.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), i0.ɵpid(131072, i1.AsyncPipe, [i0.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.type; var currVal_1 = _co.types; var currVal_2 = true; var currVal_3 = \"Type:\"; _ck(_v, 3, 0, currVal_0, currVal_1, currVal_2, currVal_3); var currVal_4 = _co.status; var currVal_5 = _co.statuses; var currVal_6 = \"Status:\"; _ck(_v, 5, 0, currVal_4, currVal_5, currVal_6); var currVal_7 = i0.ɵunv(_v, 12, 0, i0.ɵnov(_v, 13).transform(_co.filteredSections)); _ck(_v, 12, 0, currVal_7); }, null); }\nexport function View_ApiListComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"aio-api-list\", [], null, null, null, View_ApiListComponent_0, RenderType_ApiListComponent)), i0.ɵdid(1, 114688, null, 0, i4.ApiListComponent, [i5.ApiService, i6.LocationService], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar ApiListComponentNgFactory = i0.ɵccf(\"aio-api-list\", i4.ApiListComponent, View_ApiListComponent_Host_0, {}, {}, []);\nexport { ApiListComponentNgFactory as ApiListComponentNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/api/api-list.component.ngfactory.js.pre-build-optimizer.js","<div class=\"l-flex-wrap api-filter\">\n\n <aio-select (change)=\"setType($event.option)\"\n [options]=\"types\"\n [selected]=\"type\"\n [showSymbol]=\"true\"\n label=\"Type:\">\n </aio-select>\n\n <aio-select (change)=\"setStatus($event.option)\"\n [options]=\"statuses\"\n [selected]=\"status\"\n label=\"Status:\">\n </aio-select>\n\n <div class=\"form-search\">\n <input #filter placeholder=\"Filter\" (input)=\"setQuery($event.target.value)\">\n <i class=\"material-icons\">search</i>\n </div>\n</div>\n\n<article class=\"api-list-container l-content-small docs-content\">\n <div *ngFor=\"let section of filteredSections | async\" >\n <h2>{{section.title}}</h2>\n <ul class=\"api-list\">\n <ng-container *ngFor=\"let item of section.items\">\n <li *ngIf=\"item.show\" class=\"api-item\">\n <a [href]=\"item.path\"><span class=\"symbol {{item.docType}}\"></span> {{item.title}}</a>\n </li>\n </ng-container>\n </ul>\n </div>\n</article>\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/api/api-list.component.html","import { Component, ElementRef, ViewChild, OnChanges, Input } 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';\n\nconst defaultLineNumsCount = 10; // by default, show linenums over this number\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 * [code]=\"variableContainingCode\"\n * [language]=\"ts\"\n * [linenums]=\"true\"\n * [path]=\"router/src/app/app.module.ts\"\n * [region]=\"animations-module\">\n * </aio-code>\n * ```\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\n ariaLabel = '';\n\n /**\n * The code to be formatted, this should already be HTML encoded\n */\n @Input()\n code: string;\n\n /**\n * The code to be copied when clicking the copy button, this should not be HTML encoded\n */\n private codeText: string;\n\n /**\n * set to true if the copy button is not to be shown\n */\n @Input()\n hideCopy: boolean;\n\n /**\n * The language of the code to render\n * (could be javascript, dart, typescript, etc)\n */\n @Input()\n language: string;\n\n /**\n * 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 */\n @Input()\n linenums: boolean | number | string;\n\n /**\n * path to the source of the code being displayed\n */\n @Input()\n path: string;\n\n /**\n * region of the source of the code being displayed\n */\n @Input()\n region: string;\n\n /**\n * title for this snippet (optional)\n */\n @Input()\n title: string;\n\n /**\n * The element in the template that will display the formatted code\n */\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 this.code = this.code && leftAlign(this.code);\n this.ariaLabel = this.title ? `Copy code snippet from ${this.title}` : '';\n\n if (!this.code) {\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 return;\n }\n\n const linenums = this.getLinenums();\n\n this.setCodeHtml(this.code); // start with unformatted code\n this.codeText = this.getCodeText(); // store the unformatted code as text (for copying)\n this.pretty.formatCode(this.code, this.language, linenums).subscribe(\n formattedCode => this.setCodeHtml(formattedCode),\n err => { /* ignore failure to format */ }\n );\n }\n\n private setCodeHtml(formattedCode: string) {\n // **Security:** `codeExampleContent` 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 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 doCopy() {\n const code = this.codeText;\n if (this.copier.copyText(code)) {\n this.logger.log('Copied code to clipboard:', code);\n // success snackbar alert\n this.snackbar.open('Code Copied', '', {\n duration: 800,\n });\n } else {\n this.logger.error(new Error(`ERROR copying code to clipboard: \"${code}\"`));\n // failure snackbar alert\n this.snackbar.open('Copy failed. Please try again!', '', {\n duration: 800,\n });\n }\n }\n\n getLinenums() {\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 || linenums === NaN ?\n (this.code.match(/\\n/g) || []).length > defaultLineNumsCount : linenums;\n }\n}\n\nfunction leftAlign(text: string) {\n let indent = Number.MAX_VALUE;\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 return lines.map(line => line.substr(indent)).join('\\n').trim();\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/code/code.component.ts","import { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs/Observable';\nimport { fromPromise } from 'rxjs/observable/fromPromise';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/first';\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 = fromPromise(this.getPrettyPrintOne()).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.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\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/code/pretty-printer.service.ts","/**\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 isRTL = document.documentElement.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 || document.documentElement.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\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/shared/copier.service.ts","/**\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, { code: \"code\", hideCopy: \"hideCopy\", language: \"language\", linenums: \"linenums\", path: \"path\", region: \"region\", title: \"title\" }, {}, []);\nexport { CodeComponentNgFactory as CodeComponentNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/code/code.component.ngfactory.js.pre-build-optimizer.js","\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\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/code/code.component.ts.CodeComponent.html","/**\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.ngfactory\";\nimport * as i3 from \"./code.component\";\nimport * as i4 from \"@angular/material/snack-bar\";\nimport * as i5 from \"./pretty-printer.service\";\nimport * as i6 from \"../../shared/copier.service\";\nimport * as i7 from \"../../shared/logger.service\";\nimport * as i8 from \"./code-example.component\";\nvar styles_CodeExampleComponent = [];\nvar RenderType_CodeExampleComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_CodeExampleComponent, data: {} });\nexport { RenderType_CodeExampleComponent as RenderType_CodeExampleComponent };\nfunction View_CodeExampleComponent_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"header\", [], null, null, null, null, null)), (_l()(), i0.ɵted(1, null, [\"\", \"\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.title; _ck(_v, 1, 0, currVal_0); }); }\nexport function View_CodeExampleComponent_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_CodeExampleComponent_1)), i0.ɵdid(1, 16384, null, 0, i1.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵeld(2, 0, null, null, 2, \"aio-code\", [], null, null, null, i2.View_CodeComponent_0, i2.RenderType_CodeComponent)), i0.ɵdid(3, 278528, null, 0, i1.NgClass, [i0.IterableDiffers, i0.KeyValueDiffers, i0.ElementRef, i0.Renderer2], { ngClass: [0, \"ngClass\"] }, null), i0.ɵdid(4, 573440, null, 0, i3.CodeComponent, [i4.MatSnackBar, i5.PrettyPrinter, i6.CopierService, i7.Logger], { code: [0, \"code\"], hideCopy: [1, \"hideCopy\"], language: [2, \"language\"], linenums: [3, \"linenums\"], path: [4, \"path\"], region: [5, \"region\"], title: [6, \"title\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.title; _ck(_v, 1, 0, currVal_0); var currVal_1 = _co.classes; _ck(_v, 3, 0, currVal_1); var currVal_2 = _co.code; var currVal_3 = _co.hideCopy; var currVal_4 = _co.language; var currVal_5 = _co.linenums; var currVal_6 = _co.path; var currVal_7 = _co.region; var currVal_8 = _co.title; _ck(_v, 4, 0, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6, currVal_7, currVal_8); }, null); }\nexport function View_CodeExampleComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"code-example\", [], [[2, \"avoidFile\", null]], null, null, View_CodeExampleComponent_0, RenderType_CodeExampleComponent)), i0.ɵdid(1, 114688, null, 0, i8.CodeExampleComponent, [i0.ElementRef], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).isAvoid; _ck(_v, 0, 0, currVal_0); }); }\nvar CodeExampleComponentNgFactory = i0.ɵccf(\"code-example\", i8.CodeExampleComponent, View_CodeExampleComponent_Host_0, {}, {}, []);\nexport { CodeExampleComponentNgFactory as CodeExampleComponentNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/code/code-example.component.ngfactory.js.pre-build-optimizer.js","\n <header *ngIf=\"title\">{{title}}</header>\n <aio-code [ngClass]=\"classes\" [code]=\"code\"\n [language]=\"language\" [linenums]=\"linenums\"\n [path]=\"path\" [region]=\"region\"\n [hideCopy]=\"hideCopy\" [title]=\"title\"></aio-code>\n \n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/code/code-example.component.ts.CodeExampleComponent.html","/**\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 { Directive, ElementRef, EventEmitter, Injectable, Input, NgModule, NgZone, Output } from '@angular/core';\nimport { Subject } from 'rxjs/Subject';\nimport { debounceTime } from 'rxjs/operators/debounceTime';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * \\@docs-private\n */\nvar MutationObserverFactory = (function () {\n function MutationObserverFactory() {\n }\n /**\n * @param {?} callback\n * @return {?}\n */\n MutationObserverFactory.prototype.create = /**\n * @param {?} callback\n * @return {?}\n */\n function (callback) {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n };\n MutationObserverFactory.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n MutationObserverFactory.ctorParameters = function () { return []; };\n return MutationObserverFactory;\n}());\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\nvar CdkObserveContent = (function () {\n function CdkObserveContent(_mutationObserverFactory, _elementRef, _ngZone) {\n this._mutationObserverFactory = _mutationObserverFactory;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n /**\n * Event emitted for each change in the element's content.\n */\n this.event = new EventEmitter();\n /**\n * Used for debouncing the emitted values to the observeContent event.\n */\n this._debouncer = new Subject();\n }\n /**\n * @return {?}\n */\n CdkObserveContent.prototype.ngAfterContentInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.debounce > 0) {\n this._ngZone.runOutsideAngular(function () {\n _this._debouncer.pipe(debounceTime(_this.debounce))\n .subscribe(function (mutations) { return _this.event.emit(mutations); });\n });\n }\n else {\n this._debouncer.subscribe(function (mutations) { return _this.event.emit(mutations); });\n }\n this._observer = this._ngZone.runOutsideAngular(function () {\n return _this._mutationObserverFactory.create(function (mutations) {\n _this._debouncer.next(mutations);\n });\n });\n if (this._observer) {\n this._observer.observe(this._elementRef.nativeElement, {\n 'characterData': true,\n 'childList': true,\n 'subtree': true\n });\n }\n };\n /**\n * @return {?}\n */\n CdkObserveContent.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n if (this._observer) {\n this._observer.disconnect();\n }\n this._debouncer.complete();\n };\n CdkObserveContent.decorators = [\n { type: Directive, args: [{\n selector: '[cdkObserveContent]',\n exportAs: 'cdkObserveContent',\n },] },\n ];\n /** @nocollapse */\n CdkObserveContent.ctorParameters = function () { return [\n { type: MutationObserverFactory, },\n { type: ElementRef, },\n { type: NgZone, },\n ]; };\n CdkObserveContent.propDecorators = {\n \"event\": [{ type: Output, args: ['cdkObserveContent',] },],\n \"debounce\": [{ type: Input },],\n };\n return CdkObserveContent;\n}());\nvar ObserversModule = (function () {\n function ObserversModule() {\n }\n ObserversModule.decorators = [\n { type: NgModule, args: [{\n exports: [CdkObserveContent],\n declarations: [CdkObserveContent],\n providers: [MutationObserverFactory]\n },] },\n ];\n /** @nocollapse */\n ObserversModule.ctorParameters = function () { return []; };\n return ObserversModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkObserveContent as ObserveContent, MutationObserverFactory, CdkObserveContent, ObserversModule };\n//# sourceMappingURL=observers.es5.js.map\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/@angular/cdk/esm5/observers.es5.js.pre-build-optimizer.js","/**\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 { ObserversModule } from '@angular/cdk/observers';\nimport { CdkPortal, CdkPortalOutlet, PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { ScrollDispatchModule, VIEWPORT_RULER_PROVIDER, ViewportRuler } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentFactoryResolver, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, Inject, Input, NgModule, NgZone, Optional, Output, Renderer2, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MAT_RIPPLE_GLOBAL_OPTIONS, MatCommonModule, MatRipple, MatRippleModule, mixinColor, mixinDisableRipple, mixinDisabled, mixinTabIndex } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { Subject } from 'rxjs/Subject';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Subscription } from 'rxjs/Subscription';\nimport { merge } from 'rxjs/observable/merge';\nimport { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { startWith } from 'rxjs/operators/startWith';\nimport { of } from 'rxjs/observable/of';\nimport { Platform } from '@angular/cdk/platform';\nimport { takeUntil } from 'rxjs/operators/takeUntil';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * The ink-bar is used to display and animate the line underneath the current active tab label.\n * \\@docs-private\n */\nvar MatInkBar = (function () {\n function MatInkBar(_renderer, _elementRef, _ngZone) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n }\n /**\n * Calculates the styles from the provided element in order to align the ink-bar to that element.\n * Shows the ink bar if previously set as hidden.\n * @param element\n */\n /**\n * Calculates the styles from the provided element in order to align the ink-bar to that element.\n * Shows the ink bar if previously set as hidden.\n * @param {?} element\n * @return {?}\n */\n MatInkBar.prototype.alignToElement = /**\n * Calculates the styles from the provided element in order to align the ink-bar to that element.\n * Shows the ink bar if previously set as hidden.\n * @param {?} element\n * @return {?}\n */\n function (element) {\n var _this = this;\n this.show();\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(function () {\n requestAnimationFrame(function () { return _this._setStyles(element); });\n });\n }\n else {\n this._setStyles(element);\n }\n };\n /** Shows the ink bar. */\n /**\n * Shows the ink bar.\n * @return {?}\n */\n MatInkBar.prototype.show = /**\n * Shows the ink bar.\n * @return {?}\n */\n function () {\n this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'visible');\n };\n /** Hides the ink bar. */\n /**\n * Hides the ink bar.\n * @return {?}\n */\n MatInkBar.prototype.hide = /**\n * Hides the ink bar.\n * @return {?}\n */\n function () {\n this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'hidden');\n };\n /**\n * Sets the proper styles to the ink bar element.\n * @param {?} element\n * @return {?}\n */\n MatInkBar.prototype._setStyles = /**\n * Sets the proper styles to the ink bar element.\n * @param {?} element\n * @return {?}\n */\n function (element) {\n var /** @type {?} */ left = element ? (element.offsetLeft || 0) + 'px' : '0';\n var /** @type {?} */ width = element ? (element.offsetWidth || 0) + 'px' : '0';\n this._renderer.setStyle(this._elementRef.nativeElement, 'left', left);\n this._renderer.setStyle(this._elementRef.nativeElement, 'width', width);\n };\n MatInkBar.decorators = [\n { type: Directive, args: [{\n selector: 'mat-ink-bar',\n host: {\n 'class': 'mat-ink-bar',\n },\n },] },\n ];\n /** @nocollapse */\n MatInkBar.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: NgZone, },\n ]; };\n return MatInkBar;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatTabLabelBaseClass = CdkPortal;\n/**\n * Used to flag tab labels for use with the portal directive\n */\nvar MatTabLabel = (function (_super) {\n __extends(MatTabLabel, _super);\n function MatTabLabel(templateRef, viewContainerRef) {\n return _super.call(this, templateRef, viewContainerRef) || this;\n }\n MatTabLabel.decorators = [\n { type: Directive, args: [{\n selector: '[mat-tab-label], [matTabLabel]',\n },] },\n ];\n /** @nocollapse */\n MatTabLabel.ctorParameters = function () { return [\n { type: TemplateRef, },\n { type: ViewContainerRef, },\n ]; };\n return MatTabLabel;\n}(_MatTabLabelBaseClass));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * \\@docs-private\n */\nvar MatTabBase = (function () {\n function MatTabBase() {\n }\n return MatTabBase;\n}());\nvar _MatTabMixinBase = mixinDisabled(MatTabBase);\nvar MatTab = (function (_super) {\n __extends(MatTab, _super);\n function MatTab(_viewContainerRef) {\n var _this = _super.call(this) || this;\n _this._viewContainerRef = _viewContainerRef;\n /**\n * The plain text label for the tab, used when there is no template label.\n */\n _this.textLabel = '';\n /**\n * The portal that will be the hosted content of the tab\n */\n _this._contentPortal = null;\n /**\n * Emits whenever the label changes.\n */\n _this._labelChange = new Subject();\n /**\n * Emits whenevfer the disable changes\n */\n _this._disableChange = new Subject();\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n _this.position = null;\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n */\n _this.origin = null;\n /**\n * Whether the tab is currently active.\n */\n _this.isActive = false;\n return _this;\n }\n Object.defineProperty(MatTab.prototype, \"content\", {\n get: /**\n * @return {?}\n */\n function () { return this._contentPortal; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} changes\n * @return {?}\n */\n MatTab.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n if (changes.hasOwnProperty('textLabel')) {\n this._labelChange.next();\n }\n if (changes.hasOwnProperty('disabled')) {\n this._disableChange.next();\n }\n };\n /**\n * @return {?}\n */\n MatTab.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this._disableChange.complete();\n this._labelChange.complete();\n };\n /**\n * @return {?}\n */\n MatTab.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n this._contentPortal = new TemplatePortal(this._content, this._viewContainerRef);\n };\n MatTab.decorators = [\n { type: Component, args: [{selector: 'mat-tab',\n template: \"<ng-template><ng-content></ng-content></ng-template>\",\n inputs: ['disabled'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n exportAs: 'matTab',\n },] },\n ];\n /** @nocollapse */\n MatTab.ctorParameters = function () { return [\n { type: ViewContainerRef, },\n ]; };\n MatTab.propDecorators = {\n \"templateLabel\": [{ type: ContentChild, args: [MatTabLabel,] },],\n \"_content\": [{ type: ViewChild, args: [TemplateRef,] },],\n \"textLabel\": [{ type: Input, args: ['label',] },],\n };\n return MatTab;\n}(_MatTabMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatTabBodyPortalBaseClass = CdkPortalOutlet;\n/**\n * The portal host directive for the contents of the tab.\n * \\@docs-private\n */\nvar MatTabBodyPortal = (function (_super) {\n __extends(MatTabBodyPortal, _super);\n function MatTabBodyPortal(_componentFactoryResolver, _viewContainerRef, _host) {\n var _this = _super.call(this, _componentFactoryResolver, _viewContainerRef) || this;\n _this._host = _host;\n return _this;\n }\n /** Set initial visibility or set up subscription for changing visibility. */\n /**\n * Set initial visibility or set up subscription for changing visibility.\n * @return {?}\n */\n MatTabBodyPortal.prototype.ngOnInit = /**\n * Set initial visibility or set up subscription for changing visibility.\n * @return {?}\n */\n function () {\n var _this = this;\n if (this._host._isCenterPosition(this._host._position)) {\n this.attach(this._host._content);\n }\n this._centeringSub = this._host._beforeCentering.subscribe(function (isCentering) {\n if (isCentering) {\n if (!_this.hasAttached()) {\n _this.attach(_this._host._content);\n }\n }\n else {\n _this.detach();\n }\n });\n };\n /** Clean up centering subscription. */\n /**\n * Clean up centering subscription.\n * @return {?}\n */\n MatTabBodyPortal.prototype.ngOnDestroy = /**\n * Clean up centering subscription.\n * @return {?}\n */\n function () {\n if (this._centeringSub && !this._centeringSub.closed) {\n this._centeringSub.unsubscribe();\n }\n };\n MatTabBodyPortal.decorators = [\n { type: Directive, args: [{\n selector: '[matTabBodyHost]'\n },] },\n ];\n /** @nocollapse */\n MatTabBodyPortal.ctorParameters = function () { return [\n { type: ComponentFactoryResolver, },\n { type: ViewContainerRef, },\n { type: MatTabBody, decorators: [{ type: Inject, args: [forwardRef(function () { return MatTabBody; }),] },] },\n ]; };\n return MatTabBodyPortal;\n}(_MatTabBodyPortalBaseClass));\n/**\n * Wrapper for the contents of a tab.\n * \\@docs-private\n */\nvar MatTabBody = (function () {\n function MatTabBody(_elementRef, _dir) {\n this._elementRef = _elementRef;\n this._dir = _dir;\n /**\n * Event emitted when the tab begins to animate towards the center as the active tab.\n */\n this._onCentering = new EventEmitter();\n /**\n * Event emitted before the centering of the tab begins.\n */\n this._beforeCentering = new EventEmitter();\n /**\n * Event emitted when the tab completes its animation towards the center.\n */\n this._onCentered = new EventEmitter(true);\n }\n Object.defineProperty(MatTabBody.prototype, \"position\", {\n set: /**\n * @param {?} position\n * @return {?}\n */\n function (position) {\n if (position < 0) {\n this._position = this._getLayoutDirection() == 'ltr' ? 'left' : 'right';\n }\n else if (position > 0) {\n this._position = this._getLayoutDirection() == 'ltr' ? 'right' : 'left';\n }\n else {\n this._position = 'center';\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabBody.prototype, \"origin\", {\n set: /**\n * The origin position from which this tab should appear when it is centered into view.\n * @param {?} origin\n * @return {?}\n */\n function (origin) {\n if (origin == null) {\n return;\n }\n var /** @type {?} */ dir = this._getLayoutDirection();\n if ((dir == 'ltr' && origin <= 0) || (dir == 'rtl' && origin > 0)) {\n this._origin = 'left';\n }\n else {\n this._origin = 'right';\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * After initialized, check if the content is centered and has an origin. If so, set the\n * special position states that transition the tab from the left or right before centering.\n */\n /**\n * After initialized, check if the content is centered and has an origin. If so, set the\n * special position states that transition the tab from the left or right before centering.\n * @return {?}\n */\n MatTabBody.prototype.ngOnInit = /**\n * After initialized, check if the content is centered and has an origin. If so, set the\n * special position states that transition the tab from the left or right before centering.\n * @return {?}\n */\n function () {\n if (this._position == 'center' && this._origin) {\n this._position = this._origin == 'left' ? 'left-origin-center' : 'right-origin-center';\n }\n };\n /**\n * @param {?} e\n * @return {?}\n */\n MatTabBody.prototype._onTranslateTabStarted = /**\n * @param {?} e\n * @return {?}\n */\n function (e) {\n var /** @type {?} */ isCentering = this._isCenterPosition(e.toState);\n this._beforeCentering.emit(isCentering);\n if (isCentering) {\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n }\n };\n /**\n * @param {?} e\n * @return {?}\n */\n MatTabBody.prototype._onTranslateTabComplete = /**\n * @param {?} e\n * @return {?}\n */\n function (e) {\n // If the transition to the center is complete, emit an event.\n if (this._isCenterPosition(e.toState) && this._isCenterPosition(this._position)) {\n this._onCentered.emit();\n }\n };\n /** The text direction of the containing app. */\n /**\n * The text direction of the containing app.\n * @return {?}\n */\n MatTabBody.prototype._getLayoutDirection = /**\n * The text direction of the containing app.\n * @return {?}\n */\n function () {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n };\n /** Whether the provided position state is considered center, regardless of origin. */\n /**\n * Whether the provided position state is considered center, regardless of origin.\n * @param {?} position\n * @return {?}\n */\n MatTabBody.prototype._isCenterPosition = /**\n * Whether the provided position state is considered center, regardless of origin.\n * @param {?} position\n * @return {?}\n */\n function (position) {\n return position == 'center' ||\n position == 'left-origin-center' ||\n position == 'right-origin-center';\n };\n MatTabBody.decorators = [\n { type: Component, args: [{selector: 'mat-tab-body',\n template: \"<div class=\\\"mat-tab-body-content\\\" #content [@translateTab]=\\\"_position\\\" (@translateTab.start)=\\\"_onTranslateTabStarted($event)\\\" (@translateTab.done)=\\\"_onTranslateTabComplete($event)\\\"><ng-template matTabBodyHost></ng-template></div>\",\n styles: [\".mat-tab-body-content{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;overflow:auto}.mat-tab-group-dynamic-height .mat-tab-body-content{overflow:hidden}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-tab-body',\n },\n animations: [\n trigger('translateTab', [\n // Note: transitions to `none` instead of 0, because some browsers might blur the content.\n state('center, void, left-origin-center, right-origin-center', style({ transform: 'none' })),\n state('left', style({ transform: 'translate3d(-100%, 0, 0)' })),\n state('right', style({ transform: 'translate3d(100%, 0, 0)' })),\n transition('* => left, * => right, left => center, right => center', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')),\n transition('void => left-origin-center', [\n style({ transform: 'translate3d(-100%, 0, 0)' }),\n animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')\n ]),\n transition('void => right-origin-center', [\n style({ transform: 'translate3d(100%, 0, 0)' }),\n animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')\n ])\n ])\n ]\n },] },\n ];\n /** @nocollapse */\n MatTabBody.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatTabBody.propDecorators = {\n \"_onCentering\": [{ type: Output },],\n \"_beforeCentering\": [{ type: Output },],\n \"_onCentered\": [{ type: Output },],\n \"_content\": [{ type: Input, args: ['content',] },],\n \"position\": [{ type: Input, args: ['position',] },],\n \"origin\": [{ type: Input, args: ['origin',] },],\n };\n return MatTabBody;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Used to generate unique ID's for each tab component\n */\nvar nextId = 0;\n/**\n * A simple change event emitted on focus or selection changes.\n */\nvar MatTabChangeEvent = (function () {\n function MatTabChangeEvent() {\n }\n return MatTabChangeEvent;\n}());\n/**\n * \\@docs-private\n */\nvar MatTabGroupBase = (function () {\n function MatTabGroupBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatTabGroupBase;\n}());\nvar _MatTabGroupMixinBase = mixinColor(mixinDisableRipple(MatTabGroupBase), 'primary');\n/**\n * Material design tab-group component. Supports basic tab pairs (label + content) and includes\n * animated ink-bar, keyboard navigation, and screen reader.\n * See: https://www.google.com/design/spec/components/tabs.html\n */\nvar MatTabGroup = (function (_super) {\n __extends(MatTabGroup, _super);\n function MatTabGroup(_renderer, elementRef, _changeDetectorRef) {\n var _this = _super.call(this, _renderer, elementRef) || this;\n _this._changeDetectorRef = _changeDetectorRef;\n /**\n * The tab index that should be selected after the content has been checked.\n */\n _this._indexToSelect = 0;\n /**\n * Snapshot of the height of the tab body wrapper before another tab is activated.\n */\n _this._tabBodyWrapperHeight = 0;\n /**\n * Subscription to tabs being added/removed.\n */\n _this._tabsSubscription = Subscription.EMPTY;\n /**\n * Subscription to changes in the tab labels.\n */\n _this._tabLabelSubscription = Subscription.EMPTY;\n _this._dynamicHeight = false;\n _this._selectedIndex = null;\n /**\n * Position of the tab header.\n */\n _this.headerPosition = 'above';\n /**\n * Output to enable support for two-way binding on `[(selectedIndex)]`\n */\n _this.selectedIndexChange = new EventEmitter();\n /**\n * Event emitted when focus has changed within a tab group.\n */\n _this.focusChange = new EventEmitter();\n /**\n * Event emitted when the tab selection has changed.\n */\n _this.selectedTabChange = new EventEmitter(true);\n /**\n * Event emitted when the tab selection has changed.\n * @deprecated Use `selectedTabChange` instead.\n */\n _this.selectChange = _this.selectedTabChange;\n _this._groupId = nextId++;\n return _this;\n }\n Object.defineProperty(MatTabGroup.prototype, \"dynamicHeight\", {\n get: /**\n * Whether the tab group should grow to the size of the active tab.\n * @return {?}\n */\n function () { return this._dynamicHeight; },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) { this._dynamicHeight = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabGroup.prototype, \"_dynamicHeightDeprecated\", {\n get: /**\n * @deprecated\n * @return {?}\n */\n function () { return this._dynamicHeight; },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) { this._dynamicHeight = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabGroup.prototype, \"selectedIndex\", {\n get: /**\n * @return {?}\n */\n function () { return this._selectedIndex; },\n set: /**\n * The index of the active tab.\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._indexToSelect = coerceNumberProperty(value, null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabGroup.prototype, \"backgroundColor\", {\n get: /**\n * Background color of the tab group.\n * @return {?}\n */\n function () { return this._backgroundColor; },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n var /** @type {?} */ nativeElement = this._elementRef.nativeElement;\n this._renderer.removeClass(nativeElement, \"mat-background-\" + this.backgroundColor);\n if (value) {\n this._renderer.addClass(nativeElement, \"mat-background-\" + value);\n }\n this._backgroundColor = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index, and additionally we know how\n * a new selected tab should transition in (from the left or right).\n */\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index, and additionally we know how\n * a new selected tab should transition in (from the left or right).\n * @return {?}\n */\n MatTabGroup.prototype.ngAfterContentChecked = /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index, and additionally we know how\n * a new selected tab should transition in (from the left or right).\n * @return {?}\n */\n function () {\n var _this = this;\n // Clamp the next selected index to the boundsof 0 and the tabs length.\n // Note the `|| 0`, which ensures that values like NaN can't get through\n // and which would otherwise throw the component into an infinite loop\n // (since Math.max(NaN, 0) === NaN).\n var /** @type {?} */ indexToSelect = this._indexToSelect =\n Math.min(this._tabs.length - 1, Math.max(this._indexToSelect || 0, 0));\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this._selectedIndex != indexToSelect && this._selectedIndex != null) {\n var /** @type {?} */ tabChangeEvent = this._createChangeEvent(indexToSelect);\n this.selectedTabChange.emit(tabChangeEvent);\n // Emitting this value after change detection has run\n // since the checked content may contain this variable'\n Promise.resolve().then(function () { return _this.selectedIndexChange.emit(indexToSelect); });\n }\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach(function (tab, index) {\n tab.position = index - indexToSelect;\n tab.isActive = index === indexToSelect;\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (_this._selectedIndex != null && tab.position == 0 && !tab.origin) {\n tab.origin = indexToSelect - _this._selectedIndex;\n }\n });\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * @return {?}\n */\n MatTabGroup.prototype.ngAfterContentInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n this._subscribeToTabLabels();\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this._tabsSubscription = this._tabs.changes.subscribe(function () {\n _this._subscribeToTabLabels();\n _this._changeDetectorRef.markForCheck();\n });\n };\n /**\n * @return {?}\n */\n MatTabGroup.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n };\n /**\n * @param {?} index\n * @return {?}\n */\n MatTabGroup.prototype._focusChanged = /**\n * @param {?} index\n * @return {?}\n */\n function (index) {\n this.focusChange.emit(this._createChangeEvent(index));\n };\n /**\n * @param {?} index\n * @return {?}\n */\n MatTabGroup.prototype._createChangeEvent = /**\n * @param {?} index\n * @return {?}\n */\n function (index) {\n var /** @type {?} */ event = new MatTabChangeEvent;\n event.index = index;\n if (this._tabs && this._tabs.length) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n };\n /**\n * Subscribes to changes in the tab labels. This is needed, because the \\@Input for the label is\n * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n * @return {?}\n */\n MatTabGroup.prototype._subscribeToTabLabels = /**\n * Subscribes to changes in the tab labels. This is needed, because the \\@Input for the label is\n * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n * @return {?}\n */\n function () {\n var _this = this;\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n this._tabLabelSubscription = merge.apply(void 0, this._tabs.map(function (tab) { return tab._disableChange; }).concat(this._tabs.map(function (tab) { return tab._labelChange; }))).subscribe(function () {\n _this._changeDetectorRef.markForCheck();\n });\n };\n /** Returns a unique id for each tab label element */\n /**\n * Returns a unique id for each tab label element\n * @param {?} i\n * @return {?}\n */\n MatTabGroup.prototype._getTabLabelId = /**\n * Returns a unique id for each tab label element\n * @param {?} i\n * @return {?}\n */\n function (i) {\n return \"mat-tab-label-\" + this._groupId + \"-\" + i;\n };\n /** Returns a unique id for each tab content element */\n /**\n * Returns a unique id for each tab content element\n * @param {?} i\n * @return {?}\n */\n MatTabGroup.prototype._getTabContentId = /**\n * Returns a unique id for each tab content element\n * @param {?} i\n * @return {?}\n */\n function (i) {\n return \"mat-tab-content-\" + this._groupId + \"-\" + i;\n };\n /**\n * Sets the height of the body wrapper to the height of the activating tab if dynamic\n * height property is true.\n */\n /**\n * Sets the height of the body wrapper to the height of the activating tab if dynamic\n * height property is true.\n * @param {?} tabHeight\n * @return {?}\n */\n MatTabGroup.prototype._setTabBodyWrapperHeight = /**\n * Sets the height of the body wrapper to the height of the activating tab if dynamic\n * height property is true.\n * @param {?} tabHeight\n * @return {?}\n */\n function (tabHeight) {\n if (!this._dynamicHeight || !this._tabBodyWrapperHeight) {\n return;\n }\n this._renderer.setStyle(this._tabBodyWrapper.nativeElement, 'height', this._tabBodyWrapperHeight + 'px');\n // This conditional forces the browser to paint the height so that\n // the animation to the new height can have an origin.\n if (this._tabBodyWrapper.nativeElement.offsetHeight) {\n this._renderer.setStyle(this._tabBodyWrapper.nativeElement, 'height', tabHeight + 'px');\n }\n };\n /** Removes the height of the tab body wrapper. */\n /**\n * Removes the height of the tab body wrapper.\n * @return {?}\n */\n MatTabGroup.prototype._removeTabBodyWrapperHeight = /**\n * Removes the height of the tab body wrapper.\n * @return {?}\n */\n function () {\n this._tabBodyWrapperHeight = this._tabBodyWrapper.nativeElement.clientHeight;\n this._renderer.setStyle(this._tabBodyWrapper.nativeElement, 'height', '');\n };\n /** Handle click events, setting new selected index if appropriate. */\n /**\n * Handle click events, setting new selected index if appropriate.\n * @param {?} tab\n * @param {?} tabHeader\n * @param {?} idx\n * @return {?}\n */\n MatTabGroup.prototype._handleClick = /**\n * Handle click events, setting new selected index if appropriate.\n * @param {?} tab\n * @param {?} tabHeader\n * @param {?} idx\n * @return {?}\n */\n function (tab, tabHeader, idx) {\n if (!tab.disabled) {\n this.selectedIndex = tabHeader.focusIndex = idx;\n }\n };\n /** Retrieves the tabindex for the tab. */\n /**\n * Retrieves the tabindex for the tab.\n * @param {?} tab\n * @param {?} idx\n * @return {?}\n */\n MatTabGroup.prototype._getTabIndex = /**\n * Retrieves the tabindex for the tab.\n * @param {?} tab\n * @param {?} idx\n * @return {?}\n */\n function (tab, idx) {\n if (tab.disabled) {\n return null;\n }\n return this.selectedIndex === idx ? 0 : -1;\n };\n MatTabGroup.decorators = [\n { type: Component, args: [{selector: 'mat-tab-group',\n exportAs: 'matTabGroup',\n template: \"<mat-tab-header #tabHeader [selectedIndex]=\\\"selectedIndex\\\" [disableRipple]=\\\"disableRipple\\\" (indexFocused)=\\\"_focusChanged($event)\\\" (selectFocusedIndex)=\\\"selectedIndex = $event\\\"><div class=\\\"mat-tab-label\\\" role=\\\"tab\\\" matTabLabelWrapper mat-ripple *ngFor=\\\"let tab of _tabs; let i = index\\\" [id]=\\\"_getTabLabelId(i)\\\" [attr.tabIndex]=\\\"_getTabIndex(tab, i)\\\" [attr.aria-controls]=\\\"_getTabContentId(i)\\\" [attr.aria-selected]=\\\"selectedIndex == i\\\" [class.mat-tab-label-active]=\\\"selectedIndex == i\\\" [disabled]=\\\"tab.disabled\\\" [matRippleDisabled]=\\\"tab.disabled || disableRipple\\\" (click)=\\\"_handleClick(tab, tabHeader, i)\\\"><ng-template [ngIf]=\\\"tab.templateLabel\\\"><ng-template [cdkPortalOutlet]=\\\"tab.templateLabel\\\"></ng-template></ng-template><ng-template [ngIf]=\\\"!tab.templateLabel\\\">{{tab.textLabel}}</ng-template></div></mat-tab-header><div class=\\\"mat-tab-body-wrapper\\\" #tabBodyWrapper><mat-tab-body role=\\\"tabpanel\\\" *ngFor=\\\"let tab of _tabs; let i = index\\\" [id]=\\\"_getTabContentId(i)\\\" [attr.aria-labelledby]=\\\"_getTabLabelId(i)\\\" [class.mat-tab-body-active]=\\\"selectedIndex == i\\\" [content]=\\\"tab.content\\\" [position]=\\\"tab.position\\\" [origin]=\\\"tab.origin\\\" (_onCentered)=\\\"_removeTabBodyWrapperHeight()\\\" (_onCentering)=\\\"_setTabBodyWrapperHeight($event)\\\"></mat-tab-body></div>\",\n styles: [\".mat-tab-group{display:flex;flex-direction:column}.mat-tab-group.mat-tab-group-inverted-header{flex-direction:column-reverse}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0;opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default}@media (max-width:600px){.mat-tab-label{padding:0 12px}}@media (max-width:960px){.mat-tab-label{padding:0 12px}}.mat-tab-group[mat-stretch-tabs] .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height .5s cubic-bezier(.35,0,.25,1)}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['color', 'disableRipple'],\n host: {\n 'class': 'mat-tab-group',\n '[class.mat-tab-group-dynamic-height]': 'dynamicHeight',\n '[class.mat-tab-group-inverted-header]': 'headerPosition === \"below\"',\n },\n },] },\n ];\n /** @nocollapse */\n MatTabGroup.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n ]; };\n MatTabGroup.propDecorators = {\n \"_tabs\": [{ type: ContentChildren, args: [MatTab,] },],\n \"_tabBodyWrapper\": [{ type: ViewChild, args: ['tabBodyWrapper',] },],\n \"dynamicHeight\": [{ type: Input },],\n \"_dynamicHeightDeprecated\": [{ type: Input, args: ['mat-dynamic-height',] },],\n \"selectedIndex\": [{ type: Input },],\n \"headerPosition\": [{ type: Input },],\n \"backgroundColor\": [{ type: Input },],\n \"selectedIndexChange\": [{ type: Output },],\n \"focusChange\": [{ type: Output },],\n \"selectedTabChange\": [{ type: Output },],\n \"selectChange\": [{ type: Output },],\n };\n return MatTabGroup;\n}(_MatTabGroupMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * \\@docs-private\n */\nvar MatTabLabelWrapperBase = (function () {\n function MatTabLabelWrapperBase() {\n }\n return MatTabLabelWrapperBase;\n}());\nvar _MatTabLabelWrapperMixinBase = mixinDisabled(MatTabLabelWrapperBase);\n/**\n * Used in the `mat-tab-group` view to display tab labels.\n * \\@docs-private\n */\nvar MatTabLabelWrapper = (function (_super) {\n __extends(MatTabLabelWrapper, _super);\n function MatTabLabelWrapper(elementRef) {\n var _this = _super.call(this) || this;\n _this.elementRef = elementRef;\n return _this;\n }\n /** Sets focus on the wrapper element */\n /**\n * Sets focus on the wrapper element\n * @return {?}\n */\n MatTabLabelWrapper.prototype.focus = /**\n * Sets focus on the wrapper element\n * @return {?}\n */\n function () {\n this.elementRef.nativeElement.focus();\n };\n /**\n * @return {?}\n */\n MatTabLabelWrapper.prototype.getOffsetLeft = /**\n * @return {?}\n */\n function () {\n return this.elementRef.nativeElement.offsetLeft;\n };\n /**\n * @return {?}\n */\n MatTabLabelWrapper.prototype.getOffsetWidth = /**\n * @return {?}\n */\n function () {\n return this.elementRef.nativeElement.offsetWidth;\n };\n MatTabLabelWrapper.decorators = [\n { type: Directive, args: [{\n selector: '[matTabLabelWrapper]',\n inputs: ['disabled'],\n host: {\n '[class.mat-tab-disabled]': 'disabled'\n }\n },] },\n ];\n /** @nocollapse */\n MatTabLabelWrapper.ctorParameters = function () { return [\n { type: ElementRef, },\n ]; };\n return MatTabLabelWrapper;\n}(_MatTabLabelWrapperMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * The distance in pixels that will be overshot when scrolling a tab label into view. This helps\n * provide a small affordance to the label next to it.\n */\nvar EXAGGERATED_OVERSCROLL = 60;\n/**\n * \\@docs-private\n */\nvar MatTabHeaderBase = (function () {\n function MatTabHeaderBase() {\n }\n return MatTabHeaderBase;\n}());\nvar _MatTabHeaderMixinBase = mixinDisableRipple(MatTabHeaderBase);\n/**\n * The header of the tab group which displays a list of all the tabs in the tab group. Includes\n * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the\n * width of the header container, then arrows will be displayed to allow the user to scroll\n * left and right across the header.\n * \\@docs-private\n */\nvar MatTabHeader = (function (_super) {\n __extends(MatTabHeader, _super);\n function MatTabHeader(_elementRef, _renderer, _changeDetectorRef, _viewportRuler, _dir) {\n var _this = _super.call(this) || this;\n _this._elementRef = _elementRef;\n _this._renderer = _renderer;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._viewportRuler = _viewportRuler;\n _this._dir = _dir;\n /**\n * The tab index that is focused.\n */\n _this._focusIndex = 0;\n /**\n * The distance in pixels that the tab labels should be translated to the left.\n */\n _this._scrollDistance = 0;\n /**\n * Whether the header should scroll to the selected index after the view has been checked.\n */\n _this._selectedIndexChanged = false;\n /**\n * Combines listeners that will re-align the ink bar whenever they're invoked.\n */\n _this._realignInkBar = Subscription.EMPTY;\n /**\n * Whether the controls for pagination should be displayed\n */\n _this._showPaginationControls = false;\n /**\n * Whether the tab list can be scrolled more towards the end of the tab label list.\n */\n _this._disableScrollAfter = true;\n /**\n * Whether the tab list can be scrolled more towards the beginning of the tab label list.\n */\n _this._disableScrollBefore = true;\n _this._selectedIndex = 0;\n /**\n * Event emitted when the option is selected.\n */\n _this.selectFocusedIndex = new EventEmitter();\n /**\n * Event emitted when a label is focused.\n */\n _this.indexFocused = new EventEmitter();\n return _this;\n }\n Object.defineProperty(MatTabHeader.prototype, \"selectedIndex\", {\n get: /**\n * The index of the active tab.\n * @return {?}\n */\n function () { return this._selectedIndex; },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n value = coerceNumberProperty(value);\n this._selectedIndexChanged = this._selectedIndex != value;\n this._selectedIndex = value;\n this._focusIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatTabHeader.prototype.ngAfterContentChecked = /**\n * @return {?}\n */\n function () {\n // If the number of tab labels have changed, check if scrolling should be enabled\n if (this._tabLabelCount != this._labelWrappers.length) {\n this._updatePagination();\n this._tabLabelCount = this._labelWrappers.length;\n this._changeDetectorRef.markForCheck();\n }\n // If the selected index has changed, scroll to the label and check if the scrolling controls\n // should be disabled.\n if (this._selectedIndexChanged) {\n this._scrollToLabel(this._selectedIndex);\n this._checkScrollingControls();\n this._alignInkBarToSelectedTab();\n this._selectedIndexChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n // then translate the header to reflect this.\n if (this._scrollDistanceChanged) {\n this._updateTabScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatTabHeader.prototype._handleKeydown = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n switch (event.keyCode) {\n case RIGHT_ARROW:\n this._focusNextTab();\n break;\n case LEFT_ARROW:\n this._focusPreviousTab();\n break;\n case ENTER:\n case SPACE:\n this.selectFocusedIndex.emit(this.focusIndex);\n event.preventDefault();\n break;\n }\n };\n /**\n * Aligns the ink bar to the selected tab on load.\n */\n /**\n * Aligns the ink bar to the selected tab on load.\n * @return {?}\n */\n MatTabHeader.prototype.ngAfterContentInit = /**\n * Aligns the ink bar to the selected tab on load.\n * @return {?}\n */\n function () {\n var _this = this;\n var /** @type {?} */ dirChange = this._dir ? this._dir.change : of(null);\n var /** @type {?} */ resize = this._viewportRuler.change(150);\n this._realignInkBar = merge(dirChange, resize).pipe(startWith(null)).subscribe(function () {\n _this._updatePagination();\n _this._alignInkBarToSelectedTab();\n });\n };\n /**\n * @return {?}\n */\n MatTabHeader.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this._realignInkBar.unsubscribe();\n };\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n */\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n * @return {?}\n */\n MatTabHeader.prototype._onContentChanges = /**\n * Callback for when the MutationObserver detects that the content has changed.\n * @return {?}\n */\n function () {\n this._updatePagination();\n this._alignInkBarToSelectedTab();\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Updating the view whether pagination should be enabled or not\n */\n /**\n * Updating the view whether pagination should be enabled or not\n * @return {?}\n */\n MatTabHeader.prototype._updatePagination = /**\n * Updating the view whether pagination should be enabled or not\n * @return {?}\n */\n function () {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n };\n Object.defineProperty(MatTabHeader.prototype, \"focusIndex\", {\n /** Tracks which element has focus; used for keyboard navigation */\n get: /**\n * Tracks which element has focus; used for keyboard navigation\n * @return {?}\n */\n function () { return this._focusIndex; },\n /** When the focus index is set, we must manually send focus to the correct label */\n set: /**\n * When the focus index is set, we must manually send focus to the correct label\n * @param {?} value\n * @return {?}\n */\n function (value) {\n if (!this._isValidIndex(value) || this._focusIndex == value) {\n return;\n }\n this._focusIndex = value;\n this.indexFocused.emit(value);\n this._setTabFocus(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n */\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n * @param {?} index\n * @return {?}\n */\n MatTabHeader.prototype._isValidIndex = /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n * @param {?} index\n * @return {?}\n */\n function (index) {\n if (!this._labelWrappers) {\n return true;\n }\n var /** @type {?} */ tab = this._labelWrappers ? this._labelWrappers.toArray()[index] : null;\n return !!tab && !tab.disabled;\n };\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n */\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n * @param {?} tabIndex\n * @return {?}\n */\n MatTabHeader.prototype._setTabFocus = /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n * @param {?} tabIndex\n * @return {?}\n */\n function (tabIndex) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n if (this._labelWrappers && this._labelWrappers.length) {\n this._labelWrappers.toArray()[tabIndex].focus();\n // Do not let the browser manage scrolling to focus the element, this will be handled\n // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n // should be the full width minus the offset width.\n var /** @type {?} */ containerEl = this._tabListContainer.nativeElement;\n var /** @type {?} */ dir = this._getLayoutDirection();\n if (dir == 'ltr') {\n containerEl.scrollLeft = 0;\n }\n else {\n containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\n }\n }\n };\n /**\n * Moves the focus towards the beginning or the end of the list depending on the offset provided.\n * Valid offsets are 1 and -1.\n */\n /**\n * Moves the focus towards the beginning or the end of the list depending on the offset provided.\n * Valid offsets are 1 and -1.\n * @param {?} offset\n * @return {?}\n */\n MatTabHeader.prototype._moveFocus = /**\n * Moves the focus towards the beginning or the end of the list depending on the offset provided.\n * Valid offsets are 1 and -1.\n * @param {?} offset\n * @return {?}\n */\n function (offset) {\n if (this._labelWrappers) {\n var /** @type {?} */ tabs = this._labelWrappers.toArray();\n for (var /** @type {?} */ i = this.focusIndex + offset; i < tabs.length && i >= 0; i += offset) {\n if (this._isValidIndex(i)) {\n this.focusIndex = i;\n return;\n }\n }\n }\n };\n /** Increment the focus index by 1 until a valid tab is found. */\n /**\n * Increment the focus index by 1 until a valid tab is found.\n * @return {?}\n */\n MatTabHeader.prototype._focusNextTab = /**\n * Increment the focus index by 1 until a valid tab is found.\n * @return {?}\n */\n function () {\n this._moveFocus(this._getLayoutDirection() == 'ltr' ? 1 : -1);\n };\n /** Decrement the focus index by 1 until a valid tab is found. */\n /**\n * Decrement the focus index by 1 until a valid tab is found.\n * @return {?}\n */\n MatTabHeader.prototype._focusPreviousTab = /**\n * Decrement the focus index by 1 until a valid tab is found.\n * @return {?}\n */\n function () {\n this._moveFocus(this._getLayoutDirection() == 'ltr' ? -1 : 1);\n };\n /** The layout direction of the containing app. */\n /**\n * The layout direction of the containing app.\n * @return {?}\n */\n MatTabHeader.prototype._getLayoutDirection = /**\n * The layout direction of the containing app.\n * @return {?}\n */\n function () {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n };\n /** Performs the CSS transformation on the tab list that will cause the list to scroll. */\n /**\n * Performs the CSS transformation on the tab list that will cause the list to scroll.\n * @return {?}\n */\n MatTabHeader.prototype._updateTabScrollPosition = /**\n * Performs the CSS transformation on the tab list that will cause the list to scroll.\n * @return {?}\n */\n function () {\n var /** @type {?} */ scrollDistance = this.scrollDistance;\n var /** @type {?} */ translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n this._renderer.setStyle(this._tabList.nativeElement, 'transform', \"translate3d(\" + translateX + \"px, 0, 0)\");\n };\n Object.defineProperty(MatTabHeader.prototype, \"scrollDistance\", {\n get: /**\n * @return {?}\n */\n function () { return this._scrollDistance; },\n /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\n set: /**\n * Sets the distance in pixels that the tab header should be transformed in the X-axis.\n * @param {?} v\n * @return {?}\n */\n function (v) {\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @param {?} scrollDir\n * @return {?}\n */\n MatTabHeader.prototype._scrollHeader = /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @param {?} scrollDir\n * @return {?}\n */\n function (scrollDir) {\n var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n // Move the scroll distance one-third the length of the tab list's viewport.\n this.scrollDistance += (scrollDir == 'before' ? -1 : 1) * viewLength / 3;\n };\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @param {?} labelIndex\n * @return {?}\n */\n MatTabHeader.prototype._scrollToLabel = /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @param {?} labelIndex\n * @return {?}\n */\n function (labelIndex) {\n var /** @type {?} */ selectedLabel = this._labelWrappers ? this._labelWrappers.toArray()[labelIndex] : null;\n if (!selectedLabel) {\n return;\n }\n // The view length is the visible width of the tab labels.\n var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n var /** @type {?} */ labelBeforePos, /** @type {?} */ labelAfterPos;\n if (this._getLayoutDirection() == 'ltr') {\n labelBeforePos = selectedLabel.getOffsetLeft();\n labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();\n }\n else {\n labelAfterPos = this._tabList.nativeElement.offsetWidth - selectedLabel.getOffsetLeft();\n labelBeforePos = labelAfterPos - selectedLabel.getOffsetWidth();\n }\n var /** @type {?} */ beforeVisiblePos = this.scrollDistance;\n var /** @type {?} */ afterVisiblePos = this.scrollDistance + viewLength;\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n }\n else if (labelAfterPos > afterVisiblePos) {\n // Scroll header to move label to the after direction\n this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\n }\n };\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @return {?}\n */\n MatTabHeader.prototype._checkPaginationEnabled = /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @return {?}\n */\n function () {\n var /** @type {?} */ isEnabled = this._tabList.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n this._showPaginationControls = isEnabled;\n };\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @return {?}\n */\n MatTabHeader.prototype._checkScrollingControls = /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @return {?}\n */\n function () {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance == 0;\n this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @return {?}\n */\n MatTabHeader.prototype._getMaxScrollDistance = /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @return {?}\n */\n function () {\n var /** @type {?} */ lengthOfTabList = this._tabList.nativeElement.scrollWidth;\n var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n return (lengthOfTabList - viewLength) || 0;\n };\n /**\n * Tells the ink-bar to align itself to the current label wrapper\n * @return {?}\n */\n MatTabHeader.prototype._alignInkBarToSelectedTab = /**\n * Tells the ink-bar to align itself to the current label wrapper\n * @return {?}\n */\n function () {\n var /** @type {?} */ selectedLabelWrapper = this._labelWrappers && this._labelWrappers.length ?\n this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement :\n null;\n this._inkBar.alignToElement(selectedLabelWrapper);\n };\n MatTabHeader.decorators = [\n { type: Component, args: [{selector: 'mat-tab-header',\n template: \"<div class=\\\"mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4\\\" aria-hidden=\\\"true\\\" mat-ripple [matRippleDisabled]=\\\"_disableScrollBefore || disableRipple\\\" [class.mat-tab-header-pagination-disabled]=\\\"_disableScrollBefore\\\" (click)=\\\"_scrollHeader('before')\\\"><div class=\\\"mat-tab-header-pagination-chevron\\\"></div></div><div class=\\\"mat-tab-label-container\\\" #tabListContainer (keydown)=\\\"_handleKeydown($event)\\\"><div class=\\\"mat-tab-list\\\" #tabList role=\\\"tablist\\\" (cdkObserveContent)=\\\"_onContentChanges()\\\"><div class=\\\"mat-tab-labels\\\"><ng-content></ng-content></div><mat-ink-bar></mat-ink-bar></div></div><div class=\\\"mat-tab-header-pagination mat-tab-header-pagination-after mat-elevation-z4\\\" aria-hidden=\\\"true\\\" mat-ripple [matRippleDisabled]=\\\"_disableScrollAfter || disableRipple\\\" [class.mat-tab-header-pagination-disabled]=\\\"_disableScrollAfter\\\" (click)=\\\"_scrollHeader('after')\\\"><div class=\\\"mat-tab-header-pagination-chevron\\\"></div></div>\",\n styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0;opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default}@media (max-width:600px){.mat-tab-label{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.mat-tab-header-pagination{position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-pagination-after,.mat-tab-header-rtl .mat-tab-header-pagination-before{padding-right:4px}.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:'';height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-list{flex-grow:1;position:relative;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mat-tab-labels{display:flex}\"],\n inputs: ['disableRipple'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n },\n },] },\n ];\n /** @nocollapse */\n MatTabHeader.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n { type: ViewportRuler, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatTabHeader.propDecorators = {\n \"_labelWrappers\": [{ type: ContentChildren, args: [MatTabLabelWrapper,] },],\n \"_inkBar\": [{ type: ViewChild, args: [MatInkBar,] },],\n \"_tabListContainer\": [{ type: ViewChild, args: ['tabListContainer',] },],\n \"_tabList\": [{ type: ViewChild, args: ['tabList',] },],\n \"selectedIndex\": [{ type: Input },],\n \"selectFocusedIndex\": [{ type: Output },],\n \"indexFocused\": [{ type: Output },],\n };\n return MatTabHeader;\n}(_MatTabHeaderMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * \\@docs-private\n */\nvar MatTabNavBase = (function () {\n function MatTabNavBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatTabNavBase;\n}());\nvar _MatTabNavMixinBase = mixinDisableRipple(mixinColor(MatTabNavBase, 'primary'));\n/**\n * Navigation component matching the styles of the tab group header.\n * Provides anchored navigation with animated ink bar.\n */\nvar MatTabNav = (function (_super) {\n __extends(MatTabNav, _super);\n function MatTabNav(renderer, elementRef, _dir, _ngZone, _changeDetectorRef, _viewportRuler) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._dir = _dir;\n _this._ngZone = _ngZone;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._viewportRuler = _viewportRuler;\n /**\n * Subject that emits when the component has been destroyed.\n */\n _this._onDestroy = new Subject();\n _this._disableRipple = false;\n return _this;\n }\n Object.defineProperty(MatTabNav.prototype, \"backgroundColor\", {\n get: /**\n * Background color of the tab nav.\n * @return {?}\n */\n function () { return this._backgroundColor; },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n var /** @type {?} */ nativeElement = this._elementRef.nativeElement;\n this._renderer.removeClass(nativeElement, \"mat-background-\" + this.backgroundColor);\n if (value) {\n this._renderer.addClass(nativeElement, \"mat-background-\" + value);\n }\n this._backgroundColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabNav.prototype, \"disableRipple\", {\n /** Whether ripples should be disabled for all links or not. */\n get: /**\n * Whether ripples should be disabled for all links or not.\n * @return {?}\n */\n function () { return this._disableRipple; },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._disableRipple = coerceBooleanProperty(value);\n this._setLinkDisableRipple();\n },\n enumerable: true,\n configurable: true\n });\n /** Notifies the component that the active link has been changed. */\n /**\n * Notifies the component that the active link has been changed.\n * @param {?} element\n * @return {?}\n */\n MatTabNav.prototype.updateActiveLink = /**\n * Notifies the component that the active link has been changed.\n * @param {?} element\n * @return {?}\n */\n function (element) {\n this._activeLinkChanged = this._activeLinkElement != element;\n this._activeLinkElement = element;\n if (this._activeLinkChanged) {\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * @return {?}\n */\n MatTabNav.prototype.ngAfterContentInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n var /** @type {?} */ dirChange = _this._dir ? _this._dir.change : of(null);\n return merge(dirChange, _this._viewportRuler.change(10)).pipe(takeUntil(_this._onDestroy))\n .subscribe(function () { return _this._alignInkBar(); });\n });\n this._setLinkDisableRipple();\n };\n /** Checks if the active link has been changed and, if so, will update the ink bar. */\n /**\n * Checks if the active link has been changed and, if so, will update the ink bar.\n * @return {?}\n */\n MatTabNav.prototype.ngAfterContentChecked = /**\n * Checks if the active link has been changed and, if so, will update the ink bar.\n * @return {?}\n */\n function () {\n if (this._activeLinkChanged) {\n this._alignInkBar();\n this._activeLinkChanged = false;\n }\n };\n /**\n * @return {?}\n */\n MatTabNav.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this._onDestroy.next();\n this._onDestroy.complete();\n };\n /** Aligns the ink bar to the active link. */\n /**\n * Aligns the ink bar to the active link.\n * @return {?}\n */\n MatTabNav.prototype._alignInkBar = /**\n * Aligns the ink bar to the active link.\n * @return {?}\n */\n function () {\n if (this._activeLinkElement) {\n this._inkBar.alignToElement(this._activeLinkElement.nativeElement);\n }\n };\n /**\n * Sets the `disableRipple` property on each link of the navigation bar.\n * @return {?}\n */\n MatTabNav.prototype._setLinkDisableRipple = /**\n * Sets the `disableRipple` property on each link of the navigation bar.\n * @return {?}\n */\n function () {\n var _this = this;\n if (this._tabLinks) {\n this._tabLinks.forEach(function (link) { return link.disableRipple = _this.disableRipple; });\n }\n };\n MatTabNav.decorators = [\n { type: Component, args: [{selector: '[mat-tab-nav-bar]',\n exportAs: 'matTabNavBar, matTabNav',\n inputs: ['color', 'disableRipple'],\n template: \"<div class=\\\"mat-tab-links\\\" (cdkObserveContent)=\\\"_alignInkBar()\\\"><ng-content></ng-content><mat-ink-bar></mat-ink-bar></div>\",\n styles: [\".mat-tab-nav-bar{overflow:hidden;position:relative;flex-shrink:0}.mat-tab-links{position:relative}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden}.mat-tab-link:focus{outline:0;opacity:1}.mat-tab-link.mat-tab-disabled{cursor:default}@media (max-width:600px){.mat-tab-link{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}\"],\n host: { 'class': 'mat-tab-nav-bar' },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /** @nocollapse */\n MatTabNav.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: NgZone, },\n { type: ChangeDetectorRef, },\n { type: ViewportRuler, },\n ]; };\n MatTabNav.propDecorators = {\n \"_inkBar\": [{ type: ViewChild, args: [MatInkBar,] },],\n \"_tabLinks\": [{ type: ContentChildren, args: [forwardRef(function () { return MatTabLink; }), { descendants: true },] },],\n \"backgroundColor\": [{ type: Input },],\n };\n return MatTabNav;\n}(_MatTabNavMixinBase));\nvar MatTabLinkBase = (function () {\n function MatTabLinkBase() {\n }\n return MatTabLinkBase;\n}());\nvar _MatTabLinkMixinBase = mixinTabIndex(mixinDisabled(MatTabLinkBase));\n/**\n * Link inside of a `mat-tab-nav-bar`.\n */\nvar MatTabLink = (function (_super) {\n __extends(MatTabLink, _super);\n function MatTabLink(_tabNavBar, _elementRef, ngZone, platform, globalOptions, tabIndex) {\n var _this = _super.call(this) || this;\n _this._tabNavBar = _tabNavBar;\n _this._elementRef = _elementRef;\n /**\n * Whether the tab link is active or not.\n */\n _this._isActive = false;\n /**\n * Whether the ripples for this tab should be disabled or not.\n */\n _this._disableRipple = false;\n // Manually create a ripple instance that uses the tab link element as trigger element.\n // Notice that the lifecycle hooks for the ripple config won't be called anymore.\n // Manually create a ripple instance that uses the tab link element as trigger element.\n // Notice that the lifecycle hooks for the ripple config won't be called anymore.\n _this._tabLinkRipple = new MatRipple(_elementRef, ngZone, platform, globalOptions);\n _this.tabIndex = parseInt(tabIndex) || 0;\n return _this;\n }\n Object.defineProperty(MatTabLink.prototype, \"active\", {\n get: /**\n * Whether the link is active.\n * @return {?}\n */\n function () { return this._isActive; },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._isActive = value;\n if (value) {\n this._tabNavBar.updateActiveLink(this._elementRef);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabLink.prototype, \"disableRipple\", {\n /** Whether ripples should be disabled or not. */\n get: /**\n * Whether ripples should be disabled or not.\n * @return {?}\n */\n function () { return this.disabled || this._disableRipple; },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._disableRipple = value;\n this._tabLinkRipple.disabled = this.disableRipple;\n this._tabLinkRipple._updateRippleRenderer();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatTabLink.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n // Manually call the ngOnDestroy lifecycle hook of the ripple instance because it won't be\n // called automatically since its instance is not created by Angular.\n this._tabLinkRipple.ngOnDestroy();\n };\n MatTabLink.decorators = [\n { type: Directive, args: [{\n selector: '[mat-tab-link], [matTabLink]',\n exportAs: 'matTabLink',\n inputs: ['disabled', 'tabIndex'],\n host: {\n 'class': 'mat-tab-link',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.tabIndex]': 'tabIndex',\n '[class.mat-tab-disabled]': 'disabled',\n '[class.mat-tab-label-active]': 'active',\n }\n },] },\n ];\n /** @nocollapse */\n MatTabLink.ctorParameters = function () { return [\n { type: MatTabNav, },\n { type: ElementRef, },\n { type: NgZone, },\n { type: Platform, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] },] },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n ]; };\n MatTabLink.propDecorators = {\n \"active\": [{ type: Input },],\n };\n return MatTabLink;\n}(_MatTabLinkMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nvar MatTabsModule = (function () {\n function MatTabsModule() {\n }\n MatTabsModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n ScrollDispatchModule,\n ],\n // Don't export all components because some are only to be used internally.\n exports: [\n MatCommonModule,\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatTabNav,\n MatTabLink,\n ],\n declarations: [\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatInkBar,\n MatTabLabelWrapper,\n MatTabNav,\n MatTabLink,\n MatTabBody,\n MatTabBodyPortal,\n MatTabHeader\n ],\n providers: [VIEWPORT_RULER_PROVIDER],\n },] },\n ];\n /** @nocollapse */\n MatTabsModule.ctorParameters = function () { return []; };\n return MatTabsModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatInkBar, MatTabBody, MatTabBodyPortal, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabsModule, MatTabChangeEvent, MatTabGroupBase, _MatTabGroupMixinBase, MatTabGroup, MatTabBase as ɵe22, _MatTabMixinBase as ɵf22, MatTabHeaderBase as ɵa22, _MatTabHeaderMixinBase as ɵb22, MatTabLabelWrapperBase as ɵc22, _MatTabLabelWrapperMixinBase as ɵd22, MatTabLinkBase as ɵi22, MatTabNavBase as ɵg22, _MatTabLinkMixinBase as ɵj22, _MatTabNavMixinBase as ɵh22 };\n//# sourceMappingURL=tabs.es5.js.map\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/@angular/material/esm5/tabs.es5.js.pre-build-optimizer.js","/**\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/tabs\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/cdk/bidi\";\nimport * as i4 from \"@angular/cdk/platform\";\nimport * as i5 from \"@angular/cdk/observers\";\nimport * as i6 from \"@angular/cdk/scrolling\";\nimport * as i7 from \"@angular/material/core\";\nimport * as i8 from \"@angular/cdk/portal\";\nvar MatTabsModuleNgFactory = i0.ɵcmf(i1.MatTabsModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵa]]), i0.ɵmpd(6144, i3.DIR_DOCUMENT, null, [i2.DOCUMENT]), i0.ɵmpd(4608, i3.Directionality, i3.Directionality, [[2, i3.DIR_DOCUMENT]]), i0.ɵmpd(4608, i4.Platform, i4.Platform, []), i0.ɵmpd(4608, i5.MutationObserverFactory, i5.MutationObserverFactory, []), i0.ɵmpd(5120, i6.ScrollDispatcher, i6.SCROLL_DISPATCHER_PROVIDER_FACTORY, [[3, i6.ScrollDispatcher], i0.NgZone, i4.Platform]), i0.ɵmpd(5120, i6.ViewportRuler, i6.VIEWPORT_RULER_PROVIDER_FACTORY, [[3, i6.ViewportRuler], i4.Platform, i0.NgZone]), i0.ɵmpd(512, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(512, i3.BidiModule, i3.BidiModule, []), i0.ɵmpd(256, i7.MATERIAL_SANITY_CHECKS, true, []), i0.ɵmpd(512, i7.MatCommonModule, i7.MatCommonModule, [[2, i7.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(512, i8.PortalModule, i8.PortalModule, []), i0.ɵmpd(512, i4.PlatformModule, i4.PlatformModule, []), i0.ɵmpd(512, i7.MatRippleModule, i7.MatRippleModule, []), i0.ɵmpd(512, i5.ObserversModule, i5.ObserversModule, []), i0.ɵmpd(512, i6.ScrollDispatchModule, i6.ScrollDispatchModule, []), i0.ɵmpd(512, i1.MatTabsModule, i1.MatTabsModule, [])]); });\nexport { MatTabsModuleNgFactory as MatTabsModuleNgFactory };\nvar styles_MatTabGroup = [\".mat-tab-group{display:flex;flex-direction:column}.mat-tab-group.mat-tab-group-inverted-header{flex-direction:column-reverse}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0;opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default}@media (max-width:600px){.mat-tab-label{padding:0 12px}}@media (max-width:960px){.mat-tab-label{padding:0 12px}}.mat-tab-group[mat-stretch-tabs] .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height .5s cubic-bezier(.35,0,.25,1)}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}\"];\nvar RenderType_MatTabGroup = i0.ɵcrt({ encapsulation: 2, styles: styles_MatTabGroup, data: {} });\nexport { RenderType_MatTabGroup as RenderType_MatTabGroup };\nfunction View_MatTabGroup_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_MatTabGroup_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatTabGroup_3)), i0.ɵdid(1, 147456, null, 0, i8.CdkPortalOutlet, [i0.ComponentFactoryResolver, i0.ViewContainerRef], { portal: [0, \"portal\"] }, null), (_l()(), i0.ɵand(0, null, null, 0))], function (_ck, _v) { var currVal_0 = _v.parent.context.$implicit.templateLabel; _ck(_v, 1, 0, currVal_0); }, null); }\nfunction View_MatTabGroup_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵted(0, null, [\"\", \"\"]))], null, function (_ck, _v) { var currVal_0 = _v.parent.context.$implicit.textLabel; _ck(_v, 0, 0, currVal_0); }); }\nfunction View_MatTabGroup_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 6, \"div\", [[\"class\", \"mat-tab-label mat-ripple\"], [\"mat-ripple\", \"\"], [\"matTabLabelWrapper\", \"\"], [\"role\", \"tab\"]], [[8, \"id\", 0], [1, \"tabIndex\", 0], [1, \"aria-controls\", 0], [1, \"aria-selected\", 0], [2, \"mat-tab-label-active\", null], [2, \"mat-ripple-unbounded\", null], [2, \"mat-tab-disabled\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co._handleClick(_v.context.$implicit, i0.ɵnov(_v.parent, 2), _v.context.index) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), i0.ɵdid(1, 671744, null, 0, i7.MatRipple, [i0.ElementRef, i0.NgZone, i4.Platform, [2, i7.MAT_RIPPLE_GLOBAL_OPTIONS]], { disabled: [0, \"disabled\"] }, null), i0.ɵdid(2, 16384, [[2, 4]], 0, i1.MatTabLabelWrapper, [i0.ElementRef], { disabled: [0, \"disabled\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatTabGroup_2)), i0.ɵdid(4, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatTabGroup_4)), i0.ɵdid(6, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_7 = (_v.context.$implicit.disabled || _co.disableRipple); _ck(_v, 1, 0, currVal_7); var currVal_8 = _v.context.$implicit.disabled; _ck(_v, 2, 0, currVal_8); var currVal_9 = _v.context.$implicit.templateLabel; _ck(_v, 4, 0, currVal_9); var currVal_10 = !_v.context.$implicit.templateLabel; _ck(_v, 6, 0, currVal_10); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co._getTabLabelId(_v.context.index); var currVal_1 = _co._getTabIndex(_v.context.$implicit, _v.context.index); var currVal_2 = _co._getTabContentId(_v.context.index); var currVal_3 = (_co.selectedIndex == _v.context.index); var currVal_4 = (_co.selectedIndex == _v.context.index); var currVal_5 = i0.ɵnov(_v, 1).unbounded; var currVal_6 = i0.ɵnov(_v, 2).disabled; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6); }); }\nfunction View_MatTabGroup_5(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-tab-body\", [[\"class\", \"mat-tab-body\"], [\"role\", \"tabpanel\"]], [[8, \"id\", 0], [1, \"aria-labelledby\", 0], [2, \"mat-tab-body-active\", null]], [[null, \"_onCentered\"], [null, \"_onCentering\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"_onCentered\" === en)) {\n var pd_0 = (_co._removeTabBodyWrapperHeight() !== false);\n ad = (pd_0 && ad);\n } if ((\"_onCentering\" === en)) {\n var pd_1 = (_co._setTabBodyWrapperHeight($event) !== false);\n ad = (pd_1 && ad);\n } return ad; }, View_MatTabBody_0, RenderType_MatTabBody)), i0.ɵdid(1, 114688, null, 0, i1.MatTabBody, [i0.ElementRef, [2, i3.Directionality]], { _content: [0, \"_content\"], position: [1, \"position\"], origin: [2, \"origin\"] }, { _onCentering: \"_onCentering\", _onCentered: \"_onCentered\" })], function (_ck, _v) { var currVal_3 = _v.context.$implicit.content; var currVal_4 = _v.context.$implicit.position; var currVal_5 = _v.context.$implicit.origin; _ck(_v, 1, 0, currVal_3, currVal_4, currVal_5); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co._getTabContentId(_v.context.index); var currVal_1 = _co._getTabLabelId(_v.context.index); var currVal_2 = (_co.selectedIndex == _v.context.index); _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2); }); }\nexport function View_MatTabGroup_0(_l) { return i0.ɵvid(2, [i0.ɵqud(402653184, 1, { _tabBodyWrapper: 0 }), (_l()(), i0.ɵeld(1, 0, null, null, 4, \"mat-tab-header\", [[\"class\", \"mat-tab-header\"]], [[2, \"mat-tab-header-pagination-controls-enabled\", null], [2, \"mat-tab-header-rtl\", null]], [[null, \"indexFocused\"], [null, \"selectFocusedIndex\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"indexFocused\" === en)) {\n var pd_0 = (_co._focusChanged($event) !== false);\n ad = (pd_0 && ad);\n } if ((\"selectFocusedIndex\" === en)) {\n var pd_1 = ((_co.selectedIndex = $event) !== false);\n ad = (pd_1 && ad);\n } return ad; }, View_MatTabHeader_0, RenderType_MatTabHeader)), i0.ɵdid(2, 3325952, [[\"tabHeader\", 4]], 1, i1.MatTabHeader, [i0.ElementRef, i0.Renderer2, i0.ChangeDetectorRef, i6.ViewportRuler, [2, i3.Directionality]], { disableRipple: [0, \"disableRipple\"], selectedIndex: [1, \"selectedIndex\"] }, { selectFocusedIndex: \"selectFocusedIndex\", indexFocused: \"indexFocused\" }), i0.ɵqud(603979776, 2, { _labelWrappers: 1 }), (_l()(), i0.ɵand(16777216, null, 0, 1, null, View_MatTabGroup_1)), i0.ɵdid(5, 802816, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), (_l()(), i0.ɵeld(6, 0, [[1, 0], [\"tabBodyWrapper\", 1]], null, 2, \"div\", [[\"class\", \"mat-tab-body-wrapper\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatTabGroup_5)), i0.ɵdid(8, 802816, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_2 = _co.disableRipple; var currVal_3 = _co.selectedIndex; _ck(_v, 2, 0, currVal_2, currVal_3); var currVal_4 = _co._tabs; _ck(_v, 5, 0, currVal_4); var currVal_5 = _co._tabs; _ck(_v, 8, 0, currVal_5); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 2)._showPaginationControls; var currVal_1 = (i0.ɵnov(_v, 2)._getLayoutDirection() == \"rtl\"); _ck(_v, 1, 0, currVal_0, currVal_1); }); }\nexport function View_MatTabGroup_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"mat-tab-group\", [[\"class\", \"mat-tab-group\"]], [[2, \"mat-tab-group-dynamic-height\", null], [2, \"mat-tab-group-inverted-header\", null]], null, null, View_MatTabGroup_0, RenderType_MatTabGroup)), i0.ɵdid(1, 3325952, null, 1, i1.MatTabGroup, [i0.Renderer2, i0.ElementRef, i0.ChangeDetectorRef], null, null), i0.ɵqud(603979776, 1, { _tabs: 1 })], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).dynamicHeight; var currVal_1 = (i0.ɵnov(_v, 1).headerPosition === \"below\"); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nvar MatTabGroupNgFactory = i0.ɵccf(\"mat-tab-group\", i1.MatTabGroup, View_MatTabGroup_Host_0, { color: \"color\", disableRipple: \"disableRipple\", dynamicHeight: \"dynamicHeight\", _dynamicHeightDeprecated: \"mat-dynamic-height\", selectedIndex: \"selectedIndex\", headerPosition: \"headerPosition\", backgroundColor: \"backgroundColor\" }, { selectedIndexChange: \"selectedIndexChange\", focusChange: \"focusChange\", selectedTabChange: \"selectedTabChange\", selectChange: \"selectChange\" }, []);\nexport { MatTabGroupNgFactory as MatTabGroupNgFactory };\nvar styles_MatTabBody = [\".mat-tab-body-content{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;overflow:auto}.mat-tab-group-dynamic-height .mat-tab-body-content{overflow:hidden}\"];\nvar RenderType_MatTabBody = i0.ɵcrt({ encapsulation: 2, styles: styles_MatTabBody, data: { \"animation\": [{ type: 7, name: \"translateTab\", definitions: [{ type: 0, name: \"center, void, left-origin-center, right-origin-center\", styles: { type: 6, styles: { transform: \"none\" }, offset: null }, options: undefined }, { type: 0, name: \"left\", styles: { type: 6, styles: { transform: \"translate3d(-100%, 0, 0)\" }, offset: null }, options: undefined }, { type: 0, name: \"right\", styles: { type: 6, styles: { transform: \"translate3d(100%, 0, 0)\" }, offset: null }, options: undefined }, { type: 1, expr: \"* => left, * => right, left => center, right => center\", animation: { type: 4, styles: null, timings: \"500ms cubic-bezier(0.35, 0, 0.25, 1)\" }, options: null }, { type: 1, expr: \"void => left-origin-center\", animation: [{ type: 6, styles: { transform: \"translate3d(-100%, 0, 0)\" }, offset: null }, { type: 4, styles: null, timings: \"500ms cubic-bezier(0.35, 0, 0.25, 1)\" }], options: null }, { type: 1, expr: \"void => right-origin-center\", animation: [{ type: 6, styles: { transform: \"translate3d(100%, 0, 0)\" }, offset: null }, { type: 4, styles: null, timings: \"500ms cubic-bezier(0.35, 0, 0.25, 1)\" }], options: null }], options: {} }] } });\nexport { RenderType_MatTabBody as RenderType_MatTabBody };\nfunction View_MatTabBody_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nexport function View_MatTabBody_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, [[\"content\", 1]], null, 2, \"div\", [[\"class\", \"mat-tab-body-content\"]], [[24, \"@translateTab\", 0]], [[null, \"@translateTab.start\"], [null, \"@translateTab.done\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"@translateTab.start\" === en)) {\n var pd_0 = (_co._onTranslateTabStarted($event) !== false);\n ad = (pd_0 && ad);\n } if ((\"@translateTab.done\" === en)) {\n var pd_1 = (_co._onTranslateTabComplete($event) !== false);\n ad = (pd_1 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatTabBody_1)), i0.ɵdid(2, 212992, null, 0, i1.MatTabBodyPortal, [i0.ComponentFactoryResolver, i0.ViewContainerRef, i1.MatTabBody], null, null)], function (_ck, _v) { _ck(_v, 2, 0); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co._position; _ck(_v, 0, 0, currVal_0); }); }\nexport function View_MatTabBody_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-tab-body\", [[\"class\", \"mat-tab-body\"]], null, null, null, View_MatTabBody_0, RenderType_MatTabBody)), i0.ɵdid(1, 114688, null, 0, i1.MatTabBody, [i0.ElementRef, [2, i3.Directionality]], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar MatTabBodyNgFactory = i0.ɵccf(\"mat-tab-body\", i1.MatTabBody, View_MatTabBody_Host_0, { _content: \"content\", position: \"position\", origin: \"origin\" }, { _onCentering: \"_onCentering\", _beforeCentering: \"_beforeCentering\", _onCentered: \"_onCentered\" }, []);\nexport { MatTabBodyNgFactory as MatTabBodyNgFactory };\nvar styles_MatTabHeader = [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0;opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default}@media (max-width:600px){.mat-tab-label{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.mat-tab-header-pagination{position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-pagination-after,.mat-tab-header-rtl .mat-tab-header-pagination-before{padding-right:4px}.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:'';height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-list{flex-grow:1;position:relative;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mat-tab-labels{display:flex}\"];\nvar RenderType_MatTabHeader = i0.ɵcrt({ encapsulation: 2, styles: styles_MatTabHeader, data: {} });\nexport { RenderType_MatTabHeader as RenderType_MatTabHeader };\nexport function View_MatTabHeader_0(_l) { return i0.ɵvid(2, [i0.ɵqud(402653184, 1, { _inkBar: 0 }), i0.ɵqud(402653184, 2, { _tabListContainer: 0 }), i0.ɵqud(402653184, 3, { _tabList: 0 }), (_l()(), i0.ɵeld(3, 0, null, null, 2, \"div\", [[\"aria-hidden\", \"true\"], [\"class\", \"mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4 mat-ripple\"], [\"mat-ripple\", \"\"]], [[2, \"mat-tab-header-pagination-disabled\", null], [2, \"mat-ripple-unbounded\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co._scrollHeader(\"before\") !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), i0.ɵdid(4, 671744, null, 0, i7.MatRipple, [i0.ElementRef, i0.NgZone, i4.Platform, [2, i7.MAT_RIPPLE_GLOBAL_OPTIONS]], { disabled: [0, \"disabled\"] }, null), (_l()(), i0.ɵeld(5, 0, null, null, 0, \"div\", [[\"class\", \"mat-tab-header-pagination-chevron\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(6, 0, [[2, 0], [\"tabListContainer\", 1]], null, 6, \"div\", [[\"class\", \"mat-tab-label-container\"]], null, [[null, \"keydown\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"keydown\" === en)) {\n var pd_0 = (_co._handleKeydown($event) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(7, 0, [[3, 0], [\"tabList\", 1]], null, 5, \"div\", [[\"class\", \"mat-tab-list\"], [\"role\", \"tablist\"]], null, [[null, \"cdkObserveContent\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"cdkObserveContent\" === en)) {\n var pd_0 = (_co._onContentChanges() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), i0.ɵdid(8, 1196032, null, 0, i5.CdkObserveContent, [i5.MutationObserverFactory, i0.ElementRef, i0.NgZone], null, { event: \"cdkObserveContent\" }), (_l()(), i0.ɵeld(9, 0, null, null, 1, \"div\", [[\"class\", \"mat-tab-labels\"]], null, null, null, null, null)), i0.ɵncd(null, 0), (_l()(), i0.ɵeld(11, 0, null, null, 1, \"mat-ink-bar\", [[\"class\", \"mat-ink-bar\"]], null, null, null, null, null)), i0.ɵdid(12, 16384, [[1, 4]], 0, i1.MatInkBar, [i0.Renderer2, i0.ElementRef, i0.NgZone], null, null), (_l()(), i0.ɵeld(13, 0, null, null, 2, \"div\", [[\"aria-hidden\", \"true\"], [\"class\", \"mat-tab-header-pagination mat-tab-header-pagination-after mat-elevation-z4 mat-ripple\"], [\"mat-ripple\", \"\"]], [[2, \"mat-tab-header-pagination-disabled\", null], [2, \"mat-ripple-unbounded\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co._scrollHeader(\"after\") !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), i0.ɵdid(14, 671744, null, 0, i7.MatRipple, [i0.ElementRef, i0.NgZone, i4.Platform, [2, i7.MAT_RIPPLE_GLOBAL_OPTIONS]], { disabled: [0, \"disabled\"] }, null), (_l()(), i0.ɵeld(15, 0, null, null, 0, \"div\", [[\"class\", \"mat-tab-header-pagination-chevron\"]], null, null, null, null, null))], function (_ck, _v) { var _co = _v.component; var currVal_2 = (_co._disableScrollBefore || _co.disableRipple); _ck(_v, 4, 0, currVal_2); var currVal_5 = (_co._disableScrollAfter || _co.disableRipple); _ck(_v, 14, 0, currVal_5); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co._disableScrollBefore; var currVal_1 = i0.ɵnov(_v, 4).unbounded; _ck(_v, 3, 0, currVal_0, currVal_1); var currVal_3 = _co._disableScrollAfter; var currVal_4 = i0.ɵnov(_v, 14).unbounded; _ck(_v, 13, 0, currVal_3, currVal_4); }); }\nexport function View_MatTabHeader_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"mat-tab-header\", [[\"class\", \"mat-tab-header\"]], [[2, \"mat-tab-header-pagination-controls-enabled\", null], [2, \"mat-tab-header-rtl\", null]], null, null, View_MatTabHeader_0, RenderType_MatTabHeader)), i0.ɵdid(1, 3325952, null, 1, i1.MatTabHeader, [i0.ElementRef, i0.Renderer2, i0.ChangeDetectorRef, i6.ViewportRuler, [2, i3.Directionality]], null, null), i0.ɵqud(603979776, 1, { _labelWrappers: 1 })], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1)._showPaginationControls; var currVal_1 = (i0.ɵnov(_v, 1)._getLayoutDirection() == \"rtl\"); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nvar MatTabHeaderNgFactory = i0.ɵccf(\"mat-tab-header\", i1.MatTabHeader, View_MatTabHeader_Host_0, { disableRipple: \"disableRipple\", selectedIndex: \"selectedIndex\" }, { selectFocusedIndex: \"selectFocusedIndex\", indexFocused: \"indexFocused\" }, [\"*\"]);\nexport { MatTabHeaderNgFactory as MatTabHeaderNgFactory };\nvar styles_MatTab = [];\nvar RenderType_MatTab = i0.ɵcrt({ encapsulation: 2, styles: styles_MatTab, data: {} });\nexport { RenderType_MatTab as RenderType_MatTab };\nfunction View_MatTab_1(_l) { return i0.ɵvid(0, [i0.ɵncd(null, 0), (_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nexport function View_MatTab_0(_l) { return i0.ɵvid(2, [i0.ɵqud(402653184, 1, { _content: 0 }), (_l()(), i0.ɵand(0, [[1, 2]], null, 0, null, View_MatTab_1))], null, null); }\nexport function View_MatTab_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 16777216, null, null, 2, \"mat-tab\", [], null, null, null, View_MatTab_0, RenderType_MatTab)), i0.ɵdid(1, 770048, null, 1, i1.MatTab, [i0.ViewContainerRef], null, null), i0.ɵqud(335544320, 1, { templateLabel: 0 })], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar MatTabNgFactory = i0.ɵccf(\"mat-tab\", i1.MatTab, View_MatTab_Host_0, { disabled: \"disabled\", textLabel: \"label\" }, {}, [\"*\"]);\nexport { MatTabNgFactory as MatTabNgFactory };\nvar styles_MatTabNav = [\".mat-tab-nav-bar{overflow:hidden;position:relative;flex-shrink:0}.mat-tab-links{position:relative}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden}.mat-tab-link:focus{outline:0;opacity:1}.mat-tab-link.mat-tab-disabled{cursor:default}@media (max-width:600px){.mat-tab-link{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}\"];\nvar RenderType_MatTabNav = i0.ɵcrt({ encapsulation: 2, styles: styles_MatTabNav, data: {} });\nexport { RenderType_MatTabNav as RenderType_MatTabNav };\nexport function View_MatTabNav_0(_l) { return i0.ɵvid(2, [i0.ɵqud(402653184, 1, { _inkBar: 0 }), (_l()(), i0.ɵeld(1, 0, null, null, 4, \"div\", [[\"class\", \"mat-tab-links\"]], null, [[null, \"cdkObserveContent\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"cdkObserveContent\" === en)) {\n var pd_0 = (_co._alignInkBar() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), i0.ɵdid(2, 1196032, null, 0, i5.CdkObserveContent, [i5.MutationObserverFactory, i0.ElementRef, i0.NgZone], null, { event: \"cdkObserveContent\" }), i0.ɵncd(null, 0), (_l()(), i0.ɵeld(4, 0, null, null, 1, \"mat-ink-bar\", [[\"class\", \"mat-ink-bar\"]], null, null, null, null, null)), i0.ɵdid(5, 16384, [[1, 4]], 0, i1.MatInkBar, [i0.Renderer2, i0.ElementRef, i0.NgZone], null, null)], null, null); }\nexport function View_MatTabNav_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"div\", [[\"class\", \"mat-tab-nav-bar\"], [\"mat-tab-nav-bar\", \"\"]], null, null, null, View_MatTabNav_0, RenderType_MatTabNav)), i0.ɵdid(1, 3325952, null, 1, i1.MatTabNav, [i0.Renderer2, i0.ElementRef, [2, i3.Directionality], i0.NgZone, i0.ChangeDetectorRef, i6.ViewportRuler], null, null), i0.ɵqud(603979776, 1, { _tabLinks: 1 })], null, null); }\nvar MatTabNavNgFactory = i0.ɵccf(\"[mat-tab-nav-bar]\", i1.MatTabNav, View_MatTabNav_Host_0, { color: \"color\", disableRipple: \"disableRipple\", backgroundColor: \"backgroundColor\" }, {}, [\"*\"]);\nexport { MatTabNavNgFactory as MatTabNavNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/@angular/material/tabs/typings/index.ngfactory.js.pre-build-optimizer.js","<mat-tab-header #tabHeader [selectedIndex]=\"selectedIndex\" [disableRipple]=\"disableRipple\" (indexFocused)=\"_focusChanged($event)\" (selectFocusedIndex)=\"selectedIndex = $event\"><div class=\"mat-tab-label\" role=\"tab\" matTabLabelWrapper mat-ripple *ngFor=\"let tab of _tabs; let i = index\" [id]=\"_getTabLabelId(i)\" [attr.tabIndex]=\"_getTabIndex(tab, i)\" [attr.aria-controls]=\"_getTabContentId(i)\" [attr.aria-selected]=\"selectedIndex == i\" [class.mat-tab-label-active]=\"selectedIndex == i\" [disabled]=\"tab.disabled\" [matRippleDisabled]=\"tab.disabled || disableRipple\" (click)=\"_handleClick(tab, tabHeader, i)\"><ng-template [ngIf]=\"tab.templateLabel\"><ng-template [cdkPortalOutlet]=\"tab.templateLabel\"></ng-template></ng-template><ng-template [ngIf]=\"!tab.templateLabel\">{{tab.textLabel}}</ng-template></div></mat-tab-header><div class=\"mat-tab-body-wrapper\" #tabBodyWrapper><mat-tab-body role=\"tabpanel\" *ngFor=\"let tab of _tabs; let i = index\" [id]=\"_getTabContentId(i)\" [attr.aria-labelledby]=\"_getTabLabelId(i)\" [class.mat-tab-body-active]=\"selectedIndex == i\" [content]=\"tab.content\" [position]=\"tab.position\" [origin]=\"tab.origin\" (_onCentered)=\"_removeTabBodyWrapperHeight()\" (_onCentering)=\"_setTabBodyWrapperHeight($event)\"></mat-tab-body></div>\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/@angular/material/tabs/typings/index.d.ts.MatTabGroup.html","<div class=\"mat-tab-body-content\" #content [@translateTab]=\"_position\" (@translateTab.start)=\"_onTranslateTabStarted($event)\" (@translateTab.done)=\"_onTranslateTabComplete($event)\"><ng-template matTabBodyHost></ng-template></div>\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/@angular/material/tabs/typings/index.d.ts.MatTabBody.html","<div class=\"mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4\" aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollBefore || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollBefore\" (click)=\"_scrollHeader('before')\"><div class=\"mat-tab-header-pagination-chevron\"></div></div><div class=\"mat-tab-label-container\" #tabListContainer (keydown)=\"_handleKeydown($event)\"><div class=\"mat-tab-list\" #tabList role=\"tablist\" (cdkObserveContent)=\"_onContentChanges()\"><div class=\"mat-tab-labels\"><ng-content></ng-content></div><mat-ink-bar></mat-ink-bar></div></div><div class=\"mat-tab-header-pagination mat-tab-header-pagination-after mat-elevation-z4\" aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollAfter || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollAfter\" (click)=\"_scrollHeader('after')\"><div class=\"mat-tab-header-pagination-chevron\"></div></div>\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/@angular/material/tabs/typings/index.d.ts.MatTabHeader.html","<ng-template><ng-content></ng-content></ng-template>\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/node_modules/@angular/material/tabs/typings/index.d.ts.MatTab.html","/**\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 \"../../../../node_modules/@angular/material/tabs/typings/index.ngfactory\";\nimport * as i2 from \"@angular/material/tabs\";\nimport * as i3 from \"./code.component.ngfactory\";\nimport * as i4 from \"./code.component\";\nimport * as i5 from \"@angular/material/snack-bar\";\nimport * as i6 from \"./pretty-printer.service\";\nimport * as i7 from \"../../shared/copier.service\";\nimport * as i8 from \"../../shared/logger.service\";\nimport * as i9 from \"@angular/common\";\nimport * as i10 from \"./code-tabs.component\";\nvar styles_CodeTabsComponent = [];\nvar RenderType_CodeTabsComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_CodeTabsComponent, data: {} });\nexport { RenderType_CodeTabsComponent as RenderType_CodeTabsComponent };\nfunction View_CodeTabsComponent_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"span\", [], [[8, \"className\", 0]], null, null, null, null)), (_l()(), i0.ɵted(1, null, [\"\", \"\"]))], null, function (_ck, _v) { var currVal_0 = i0.ɵinlineInterpolate(1, \"\", _v.parent.context.$implicit.class, \"\"); _ck(_v, 0, 0, currVal_0); var currVal_1 = _v.parent.context.$implicit.title; _ck(_v, 1, 0, currVal_1); }); }\nfunction View_CodeTabsComponent_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 16777216, null, null, 6, \"mat-tab\", [[\"style\", \"overflow-y: hidden;\"]], null, null, null, i1.View_MatTab_0, i1.RenderType_MatTab)), i0.ɵdid(1, 770048, [[1, 4]], 1, i2.MatTab, [i0.ViewContainerRef], null, null), i0.ɵqud(335544320, 2, { templateLabel: 0 }), (_l()(), i0.ɵand(16777216, null, 0, 1, null, View_CodeTabsComponent_2)), i0.ɵdid(4, 16384, [[2, 4]], 0, i2.MatTabLabel, [i0.TemplateRef, i0.ViewContainerRef], null, null), (_l()(), i0.ɵeld(5, 0, null, 0, 1, \"aio-code\", [], [[8, \"className\", 0]], null, null, i3.View_CodeComponent_0, i3.RenderType_CodeComponent)), i0.ɵdid(6, 573440, null, 0, i4.CodeComponent, [i5.MatSnackBar, i6.PrettyPrinter, i7.CopierService, i8.Logger], { code: [0, \"code\"], language: [1, \"language\"], linenums: [2, \"linenums\"], path: [3, \"path\"], region: [4, \"region\"], title: [5, \"title\"] }, null), (_l()(), i0.ɵand(0, null, null, 0))], function (_ck, _v) { _ck(_v, 1, 0); var currVal_1 = _v.context.$implicit.code; var currVal_2 = _v.context.$implicit.language; var currVal_3 = _v.context.$implicit.linenums; var currVal_4 = _v.context.$implicit.path; var currVal_5 = _v.context.$implicit.region; var currVal_6 = _v.context.$implicit.title; _ck(_v, 6, 0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6); }, function (_ck, _v) { var currVal_0 = i0.ɵinlineInterpolate(1, \"\", _v.context.$implicit.class, \"\"); _ck(_v, 5, 0, currVal_0); }); }\nexport function View_CodeTabsComponent_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"mat-tab-group\", [[\"class\", \"code-tab-group mat-tab-group\"], [\"disableRipple\", \"\"]], [[2, \"mat-tab-group-dynamic-height\", null], [2, \"mat-tab-group-inverted-header\", null]], null, null, i1.View_MatTabGroup_0, i1.RenderType_MatTabGroup)), i0.ɵdid(1, 3325952, null, 1, i2.MatTabGroup, [i0.Renderer2, i0.ElementRef, i0.ChangeDetectorRef], { disableRipple: [0, \"disableRipple\"] }, null), i0.ɵqud(603979776, 1, { _tabs: 1 }), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_CodeTabsComponent_1)), i0.ɵdid(4, 802816, null, 0, i9.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_2 = \"\"; _ck(_v, 1, 0, currVal_2); var currVal_3 = _co.tabs; _ck(_v, 4, 0, currVal_3); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).dynamicHeight; var currVal_1 = (i0.ɵnov(_v, 1).headerPosition === \"below\"); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nexport function View_CodeTabsComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"code-tabs\", [], null, null, null, View_CodeTabsComponent_0, RenderType_CodeTabsComponent)), i0.ɵdid(1, 114688, null, 0, i10.CodeTabsComponent, [i0.ElementRef], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar CodeTabsComponentNgFactory = i0.ɵccf(\"code-tabs\", i10.CodeTabsComponent, View_CodeTabsComponent_Host_0, {}, {}, []);\nexport { CodeTabsComponentNgFactory as CodeTabsComponentNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/code/code-tabs.component.ngfactory.js.pre-build-optimizer.js","\n <mat-tab-group class=\"code-tab-group\" disableRipple>\n <mat-tab style=\"overflow-y: hidden;\" *ngFor=\"let tab of tabs\">\n <ng-template mat-tab-label>\n <span class=\"{{ tab.class }}\">{{ tab.title }}</span>\n </ng-template>\n <aio-code class=\"{{ tab.class }}\"\n [code]=\"tab.code\"\n [language]=\"tab.language\"\n [linenums]=\"tab.linenums\"\n [path]=\"tab.path\"\n [region]=\"tab.region\"\n [title]=\"tab.title\">\n </aio-code>\n </mat-tab>\n </mat-tab-group>\n \n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/code/code-tabs.component.ts.CodeTabsComponent.html","import { Component, Input } from '@angular/core';\n\nimport { Contributor } from './contributors.model';\nimport { CONTENT_URL_PREFIX } from 'app/documents/document.service';\n\n@Component({\n selector: 'aio-contributor',\n template: `\n <div [ngClass]=\"{ 'flipped': person.isFlipped }\" class=\"contributor-card\">\n\n <div class=\"card-front\" (click)=\"flipCard(person)\">\n <h3>{{person.name}}</h3>\n\n <div class=\"contributor-image\" [style.background-image]=\"'url('+pictureBase+(person.picture || noPicture)+')'\">\n <div class=\"contributor-info\">\n <a *ngIf=\"person.bio\" mat-button>\n View Bio\n </a>\n <a *ngIf=\"person.twitter\" mat-button class=\"icon\"\n href=\"https://twitter.com/{{person.twitter}}\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\n <span class=\"fa fa-twitter fa-2x\"></span>\n </a>\n <a *ngIf=\"person.website\" mat-button class=\"icon\"\n href=\"{{person.website}}\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\n <span class=\"fa fa-link fa-2x\"></span>\n </a>\n </div>\n </div>\n </div>\n\n <div class=\"card-back\" *ngIf=\"person.isFlipped\" (click)=\"flipCard(person)\">\n <h3>{{person.name}}</h3>\n <p class=\"contributor-bio\">{{person.bio}}</p>\n </div>\n </div>\n `\n})\nexport class ContributorComponent {\n @Input() person: Contributor;\n noPicture = '_no-one.png';\n pictureBase = CONTENT_URL_PREFIX + 'images/bios/';\n\n flipCard(person: Contributor) {\n person.isFlipped = !person.isFlipped;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor.component.ts","/**\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 \"./contributor.component\";\nvar styles_ContributorComponent = [];\nvar RenderType_ContributorComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_ContributorComponent, data: {} });\nexport { RenderType_ContributorComponent as RenderType_ContributorComponent };\nfunction View_ContributorComponent_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"a\", [[\"mat-button\", \"\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\" View Bio \"]))], null, null); }\nfunction View_ContributorComponent_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"a\", [[\"class\", \"icon\"], [\"mat-button\", \"\"], [\"target\", \"_blank\"]], [[8, \"href\", 4]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n var pd_0 = ($event.stopPropagation() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 0, \"span\", [[\"class\", \"fa fa-twitter fa-2x\"]], null, null, null, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = i0.ɵinlineInterpolate(1, \"https://twitter.com/\", _co.person.twitter, \"\"); _ck(_v, 0, 0, currVal_0); }); }\nfunction View_ContributorComponent_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"a\", [[\"class\", \"icon\"], [\"mat-button\", \"\"], [\"target\", \"_blank\"]], [[8, \"href\", 4]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n var pd_0 = ($event.stopPropagation() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 0, \"span\", [[\"class\", \"fa fa-link fa-2x\"]], null, null, null, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = i0.ɵinlineInterpolate(1, \"\", _co.person.website, \"\"); _ck(_v, 0, 0, currVal_0); }); }\nfunction View_ContributorComponent_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"div\", [[\"class\", \"card-back\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.flipCard(_co.person) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 1, \"h3\", [], null, null, null, null, null)), (_l()(), i0.ɵted(2, null, [\"\", \"\"])), (_l()(), i0.ɵeld(3, 0, null, null, 1, \"p\", [[\"class\", \"contributor-bio\"]], null, null, null, null, null)), (_l()(), i0.ɵted(4, null, [\"\", \"\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.person.name; _ck(_v, 2, 0, currVal_0); var currVal_1 = _co.person.bio; _ck(_v, 4, 0, currVal_1); }); }\nexport function View_ContributorComponent_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 15, \"div\", [[\"class\", \"contributor-card\"]], null, null, null, null, null)), i0.ɵdid(1, 278528, null, 0, i1.NgClass, [i0.IterableDiffers, i0.KeyValueDiffers, i0.ElementRef, i0.Renderer2], { klass: [0, \"klass\"], ngClass: [1, \"ngClass\"] }, null), i0.ɵpod(2, { \"flipped\": 0 }), (_l()(), i0.ɵeld(3, 0, null, null, 10, \"div\", [[\"class\", \"card-front\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.flipCard(_co.person) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(4, 0, null, null, 1, \"h3\", [], null, null, null, null, null)), (_l()(), i0.ɵted(5, null, [\"\", \"\"])), (_l()(), i0.ɵeld(6, 0, null, null, 7, \"div\", [[\"class\", \"contributor-image\"]], [[4, \"background-image\", null]], null, null, null, null)), (_l()(), i0.ɵeld(7, 0, null, null, 6, \"div\", [[\"class\", \"contributor-info\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ContributorComponent_1)), i0.ɵdid(9, 16384, null, 0, i1.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ContributorComponent_2)), i0.ɵdid(11, 16384, null, 0, i1.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ContributorComponent_3)), i0.ɵdid(13, 16384, null, 0, i1.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ContributorComponent_4)), i0.ɵdid(15, 16384, null, 0, i1.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = \"contributor-card\"; var currVal_1 = _ck(_v, 2, 0, _co.person.isFlipped); _ck(_v, 1, 0, currVal_0, currVal_1); var currVal_4 = _co.person.bio; _ck(_v, 9, 0, currVal_4); var currVal_5 = _co.person.twitter; _ck(_v, 11, 0, currVal_5); var currVal_6 = _co.person.website; _ck(_v, 13, 0, currVal_6); var currVal_7 = _co.person.isFlipped; _ck(_v, 15, 0, currVal_7); }, function (_ck, _v) { var _co = _v.component; var currVal_2 = _co.person.name; _ck(_v, 5, 0, currVal_2); var currVal_3 = (((\"url(\" + _co.pictureBase) + (_co.person.picture || _co.noPicture)) + \")\"); _ck(_v, 6, 0, currVal_3); }); }\nexport function View_ContributorComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"aio-contributor\", [], null, null, null, View_ContributorComponent_0, RenderType_ContributorComponent)), i0.ɵdid(1, 49152, null, 0, i2.ContributorComponent, [], null, null)], null, null); }\nvar ContributorComponentNgFactory = i0.ɵccf(\"aio-contributor\", i2.ContributorComponent, View_ContributorComponent_Host_0, { person: \"person\" }, {}, []);\nexport { ContributorComponentNgFactory as ContributorComponentNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor.component.ngfactory.js.pre-build-optimizer.js","\n <div [ngClass]=\"{ 'flipped': person.isFlipped }\" class=\"contributor-card\">\n\n <div class=\"card-front\" (click)=\"flipCard(person)\">\n <h3>{{person.name}}</h3>\n\n <div class=\"contributor-image\" [style.background-image]=\"'url('+pictureBase+(person.picture || noPicture)+')'\">\n <div class=\"contributor-info\">\n <a *ngIf=\"person.bio\" mat-button>\n View Bio\n </a>\n <a *ngIf=\"person.twitter\" mat-button class=\"icon\"\n href=\"https://twitter.com/{{person.twitter}}\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\n <span class=\"fa fa-twitter fa-2x\"></span>\n </a>\n <a *ngIf=\"person.website\" mat-button class=\"icon\"\n href=\"{{person.website}}\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\n <span class=\"fa fa-link fa-2x\"></span>\n </a>\n </div>\n </div>\n </div>\n\n <div class=\"card-back\" *ngIf=\"person.isFlipped\" (click)=\"flipCard(person)\">\n <h3>{{person.name}}</h3>\n <p class=\"contributor-bio\">{{person.bio}}</p>\n </div>\n </div>\n \n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor.component.ts.ContributorComponent.html","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Observable } from 'rxjs/Observable';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/publishLast';\n\nimport { Contributor, ContributorGroup } from './contributors.model';\nimport { CONTENT_URL_PREFIX } from 'app/documents/document.service';\n\nconst contributorsPath = CONTENT_URL_PREFIX + 'contributors.json';\nconst knownGroups = ['Angular', 'GDE'];\n\n@Injectable()\nexport class ContributorService {\n contributors: Observable<ContributorGroup[]>;\n\n constructor(private http: HttpClient) {\n this.contributors = this.getContributors();\n }\n\n private getContributors() {\n const contributors = this.http.get<{[key: string]: Contributor}>(contributorsPath)\n // Create group map\n .map(contribs => {\n const contribMap: { [name: string]: Contributor[]} = {};\n Object.keys(contribs).forEach(key => {\n const contributor = contribs[key];\n const group = contributor.group;\n const contribGroup = contribMap[group];\n if (contribGroup) {\n contribGroup.push(contributor);\n } else {\n contribMap[group] = [contributor];\n }\n });\n\n return contribMap;\n })\n\n // Flatten group map into sorted group array of sorted contributors\n .map(cmap => {\n return Object.keys(cmap).map(key => {\n const order = knownGroups.indexOf(key);\n return {\n name: key,\n order: order === -1 ? knownGroups.length : order,\n contributors: cmap[key].sort(compareContributors)\n } as ContributorGroup;\n })\n .sort(compareGroups);\n })\n .publishLast();\n\n contributors.connect();\n return contributors;\n }\n}\n\nfunction compareContributors(l: Contributor, r: Contributor) {\n return l.name.toUpperCase() > r.name.toUpperCase() ? 1 : -1;\n}\n\nfunction compareGroups(l: ContributorGroup, r: ContributorGroup) {\n return l.order === r.order ?\n (l.name > r.name ? 1 : -1) :\n l.order > r.order ? 1 : -1;\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor.service.ts","/**\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 \"./contributor.component.ngfactory\";\nimport * as i2 from \"./contributor.component\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"./contributor-list.component\";\nimport * as i5 from \"./contributor.service\";\nimport * as i6 from \"../../shared/location.service\";\nvar styles_ContributorListComponent = [];\nvar RenderType_ContributorListComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_ContributorListComponent, data: {} });\nexport { RenderType_ContributorListComponent as RenderType_ContributorListComponent };\nfunction View_ContributorListComponent_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"a\", [[\"class\", \"button mat-button filter-button\"]], [[2, \"selected\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.selectGroup(_v.context.$implicit) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵted(1, null, [\"\", \"\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = (_v.context.$implicit == _co.selectedGroup.name); _ck(_v, 0, 0, currVal_0); var currVal_1 = _v.context.$implicit; _ck(_v, 1, 0, currVal_1); }); }\nfunction View_ContributorListComponent_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"aio-contributor\", [], null, null, null, i1.View_ContributorComponent_0, i1.RenderType_ContributorComponent)), i0.ɵdid(1, 49152, null, 0, i2.ContributorComponent, [], { person: [0, \"person\"] }, null)], function (_ck, _v) { var currVal_0 = _v.context.$implicit; _ck(_v, 1, 0, currVal_0); }, null); }\nfunction View_ContributorListComponent_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"section\", [[\"class\", \"grid-fluid\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 2, \"div\", [[\"class\", \"contributor-group\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ContributorListComponent_3)), i0.ɵdid(3, 802816, null, 0, i3.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.selectedGroup.contributors; _ck(_v, 3, 0, currVal_0); }, null); }\nexport function View_ContributorListComponent_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"div\", [[\"class\", \"flex-center group-buttons\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ContributorListComponent_1)), i0.ɵdid(2, 802816, null, 0, i3.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ContributorListComponent_2)), i0.ɵdid(4, 16384, null, 0, i3.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.groupNames; _ck(_v, 2, 0, currVal_0); var currVal_1 = _co.selectedGroup; _ck(_v, 4, 0, currVal_1); }, null); }\nexport function View_ContributorListComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"aio-contributor-list\", [], null, null, null, View_ContributorListComponent_0, RenderType_ContributorListComponent)), i0.ɵdid(1, 114688, null, 0, i4.ContributorListComponent, [i5.ContributorService, i6.LocationService], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar ContributorListComponentNgFactory = i0.ɵccf(\"aio-contributor-list\", i4.ContributorListComponent, View_ContributorListComponent_Host_0, {}, {}, []);\nexport { ContributorListComponentNgFactory as ContributorListComponentNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor-list.component.ngfactory.js.pre-build-optimizer.js","\n <div class=\"flex-center group-buttons\">\n <a *ngFor=\"let name of groupNames\"\n [class.selected]=\"name == selectedGroup.name\"\n class=\"button mat-button filter-button\"\n (click)=\"selectGroup(name)\">{{name}}</a>\n </div>\n <section *ngIf=\"selectedGroup\" class=\"grid-fluid\">\n <div class=\"contributor-group\">\n <aio-contributor *ngFor=\"let person of selectedGroup.contributors\" [person]=\"person\"></aio-contributor>\n </div>\n </section>\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/contributor/contributor-list.component.ts.ContributorListComponent.html","/**\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 \"./current-location.component\";\nimport * as i3 from \"../shared/location.service\";\nvar styles_CurrentLocationComponent = [];\nvar RenderType_CurrentLocationComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_CurrentLocationComponent, data: {} });\nexport { RenderType_CurrentLocationComponent as RenderType_CurrentLocationComponent };\nexport function View_CurrentLocationComponent_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵted(0, null, [\"\", \"\"])), i0.ɵpid(131072, i1.AsyncPipe, [i0.ChangeDetectorRef])], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = i0.ɵunv(_v, 0, 0, i0.ɵnov(_v, 1).transform(_co.location.currentPath)); _ck(_v, 0, 0, currVal_0); }); }\nexport function View_CurrentLocationComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"current-location\", [], null, null, null, View_CurrentLocationComponent_0, RenderType_CurrentLocationComponent)), i0.ɵdid(1, 49152, null, 0, i2.CurrentLocationComponent, [i3.LocationService], null, null)], null, null); }\nvar CurrentLocationComponentNgFactory = i0.ɵccf(\"current-location\", i2.CurrentLocationComponent, View_CurrentLocationComponent_Host_0, {}, {}, []);\nexport { CurrentLocationComponentNgFactory as CurrentLocationComponentNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/current-location.component.ngfactory.js.pre-build-optimizer.js","{{ location.currentPath | async }}\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/current-location.component.ts.CurrentLocationComponent.html","/**\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 \"../../shared/search-results/search-results.component.ngfactory\";\nimport * as i2 from \"../../shared/search-results/search-results.component\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"./file-not-found-search.component\";\nimport * as i5 from \"../../shared/location.service\";\nimport * as i6 from \"../../search/search.service\";\nvar styles_FileNotFoundSearchComponent = [];\nvar RenderType_FileNotFoundSearchComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_FileNotFoundSearchComponent, data: {} });\nexport { RenderType_FileNotFoundSearchComponent as RenderType_FileNotFoundSearchComponent };\nexport function View_FileNotFoundSearchComponent_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"p\", [], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"Let's see if any of these search results help...\"])), (_l()(), i0.ɵeld(2, 0, null, null, 2, \"aio-search-results\", [[\"class\", \"embedded\"]], null, null, null, i1.View_SearchResultsComponent_0, i1.RenderType_SearchResultsComponent)), i0.ɵdid(3, 573440, null, 0, i2.SearchResultsComponent, [], { searchResults: [0, \"searchResults\"] }, null), i0.ɵpid(131072, i3.AsyncPipe, [i0.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = i0.ɵunv(_v, 3, 0, i0.ɵnov(_v, 4).transform(_co.searchResults)); _ck(_v, 3, 0, currVal_0); }, null); }\nexport function View_FileNotFoundSearchComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"aio-file-not-found-search\", [], null, null, null, View_FileNotFoundSearchComponent_0, RenderType_FileNotFoundSearchComponent)), i0.ɵdid(1, 114688, null, 0, i4.FileNotFoundSearchComponent, [i5.LocationService, i6.SearchService], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar FileNotFoundSearchComponentNgFactory = i0.ɵccf(\"aio-file-not-found-search\", i4.FileNotFoundSearchComponent, View_FileNotFoundSearchComponent_Host_0, {}, {}, []);\nexport { FileNotFoundSearchComponentNgFactory as FileNotFoundSearchComponentNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/search/file-not-found-search.component.ngfactory.js.pre-build-optimizer.js","<p>Let's see if any of these search results help...</p>\n <aio-search-results class=\"embedded\" [searchResults]=\"searchResults | async\"></aio-search-results>\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/search/file-not-found-search.component.ts.FileNotFoundSearchComponent.html","/**\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 \"./live-example.component\";\nimport * as i2 from \"@angular/common\";\nvar styles_LiveExampleComponent = [];\nvar RenderType_LiveExampleComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_LiveExampleComponent, data: {} });\nexport { RenderType_LiveExampleComponent as RenderType_LiveExampleComponent };\nfunction View_LiveExampleComponent_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"span\", [], null, null, null, null, null)), (_l()(), i0.ɵted(1, null, [\"\", \" \"])), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"em\", [], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"(not available on this device)\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.title; _ck(_v, 1, 0, currVal_0); }); }\nfunction View_LiveExampleComponent_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"p\", [], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\" You can also \"])), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"a\", [[\"download\", \"\"], [\"title\", \"Download example\"]], [[8, \"href\", 4]], null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"download this example\"])), (_l()(), i0.ɵted(-1, null, [\". \"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.zip; _ck(_v, 2, 0, currVal_0); }); }\nfunction View_LiveExampleComponent_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 5, \"span\", [], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 2, \"div\", [], [[8, \"title\", 0]], null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"aio-embedded-stackblitz\", [], null, null, null, View_EmbeddedStackblitzComponent_0, RenderType_EmbeddedStackblitzComponent)), i0.ɵdid(3, 4243456, null, 0, i1.EmbeddedStackblitzComponent, [], { src: [0, \"src\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_LiveExampleComponent_3)), i0.ɵdid(5, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_1 = _co.stackblitz; _ck(_v, 3, 0, currVal_1); var currVal_2 = _co.enableDownload; _ck(_v, 5, 0, currVal_2); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = i0.ɵinlineInterpolate(1, \"\", _co.title, \"\"); _ck(_v, 1, 0, currVal_0); }); }\nfunction View_LiveExampleComponent_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"span\", [], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 1, \"a\", [[\"download\", \"\"]], [[8, \"href\", 4], [8, \"title\", 0]], null, null, null, null)), (_l()(), i0.ɵted(2, null, [\"\", \"\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.zip; var currVal_1 = i0.ɵinlineInterpolate(1, \"\", _co.title, \"\"); _ck(_v, 1, 0, currVal_0, currVal_1); var currVal_2 = _co.title; _ck(_v, 2, 0, currVal_2); }); }\nfunction View_LiveExampleComponent_6(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"span\", [], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\" / \"])), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"a\", [[\"download\", \"\"], [\"title\", \"Download example\"]], [[8, \"href\", 4]], null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"download example\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.zip; _ck(_v, 2, 0, currVal_0); }); }\nfunction View_LiveExampleComponent_5(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"span\", [], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 1, \"a\", [[\"target\", \"_blank\"]], [[8, \"href\", 4], [8, \"title\", 0]], null, null, null, null)), (_l()(), i0.ɵted(2, null, [\"\", \"\"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_LiveExampleComponent_6)), i0.ɵdid(4, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_3 = _co.enableDownload; _ck(_v, 4, 0, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.stackblitz; var currVal_1 = i0.ɵinlineInterpolate(1, \"\", _co.title, \"\"); _ck(_v, 1, 0, currVal_0, currVal_1); var currVal_2 = _co.title; _ck(_v, 2, 0, currVal_2); }); }\nexport function View_LiveExampleComponent_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 9, \"span\", [], null, null, null, null, null)), i0.ɵdid(1, 16384, null, 0, i2.NgSwitch, [], { ngSwitch: [0, \"ngSwitch\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_LiveExampleComponent_1)), i0.ɵdid(3, 278528, null, 0, i2.NgSwitchCase, [i0.ViewContainerRef, i0.TemplateRef, i2.NgSwitch], { ngSwitchCase: [0, \"ngSwitchCase\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_LiveExampleComponent_2)), i0.ɵdid(5, 278528, null, 0, i2.NgSwitchCase, [i0.ViewContainerRef, i0.TemplateRef, i2.NgSwitch], { ngSwitchCase: [0, \"ngSwitchCase\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_LiveExampleComponent_4)), i0.ɵdid(7, 278528, null, 0, i2.NgSwitchCase, [i0.ViewContainerRef, i0.TemplateRef, i2.NgSwitch], { ngSwitchCase: [0, \"ngSwitchCase\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_LiveExampleComponent_5)), i0.ɵdid(9, 16384, null, 0, i2.NgSwitchDefault, [i0.ViewContainerRef, i0.TemplateRef, i2.NgSwitch], null, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.mode; _ck(_v, 1, 0, currVal_0); var currVal_1 = \"disabled\"; _ck(_v, 3, 0, currVal_1); var currVal_2 = \"embedded\"; _ck(_v, 5, 0, currVal_2); var currVal_3 = \"downloadOnly\"; _ck(_v, 7, 0, currVal_3); }, null); }\nexport function View_LiveExampleComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"live-example\", [], null, [[\"window\", \"resize\"]], function (_v, en, $event) { var ad = true; if ((\"window:resize\" === en)) {\n var pd_0 = (i0.ɵnov(_v, 1).onResize($event.target.innerWidth) !== false);\n ad = (pd_0 && ad);\n } return ad; }, View_LiveExampleComponent_0, RenderType_LiveExampleComponent)), i0.ɵdid(1, 114688, null, 0, i1.LiveExampleComponent, [i0.ElementRef, i2.Location], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar LiveExampleComponentNgFactory = i0.ɵccf(\"live-example\", i1.LiveExampleComponent, View_LiveExampleComponent_Host_0, {}, {}, []);\nexport { LiveExampleComponentNgFactory as LiveExampleComponentNgFactory };\nvar styles_EmbeddedStackblitzComponent = [\"iframe[_ngcontent-%COMP%] { min-height: 400px; }\"];\nvar RenderType_EmbeddedStackblitzComponent = i0.ɵcrt({ encapsulation: 0, styles: styles_EmbeddedStackblitzComponent, data: {} });\nexport { RenderType_EmbeddedStackblitzComponent as RenderType_EmbeddedStackblitzComponent };\nexport function View_EmbeddedStackblitzComponent_0(_l) { return i0.ɵvid(0, [i0.ɵqud(402653184, 1, { iframe: 0 }), (_l()(), i0.ɵeld(1, 0, [[1, 0], [\"iframe\", 1]], null, 0, \"iframe\", [[\"frameborder\", \"0\"], [\"height\", \"100%\"], [\"width\", \"100%\"]], null, null, null, null, null))], null, null); }\nexport function View_EmbeddedStackblitzComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"aio-embedded-stackblitz\", [], null, null, null, View_EmbeddedStackblitzComponent_0, RenderType_EmbeddedStackblitzComponent)), i0.ɵdid(1, 4243456, null, 0, i1.EmbeddedStackblitzComponent, [], null, null)], null, null); }\nvar EmbeddedStackblitzComponentNgFactory = i0.ɵccf(\"aio-embedded-stackblitz\", i1.EmbeddedStackblitzComponent, View_EmbeddedStackblitzComponent_Host_0, { src: \"src\" }, {}, []);\nexport { EmbeddedStackblitzComponentNgFactory as EmbeddedStackblitzComponentNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/live-example/live-example.component.ngfactory.js.pre-build-optimizer.js","<span [ngSwitch]=\"mode\">\n <span *ngSwitchCase=\"'disabled'\">{{title}} <em>(not available on this device)</em></span>\n <span *ngSwitchCase=\"'embedded'\">\n <div title=\"{{title}}\">\n <aio-embedded-stackblitz [src]=\"stackblitz\"></aio-embedded-stackblitz>\n </div>\n <p *ngIf=\"enableDownload\">\n You can also <a [href]=\"zip\" download title=\"Download example\">download this example</a>.\n </p>\n </span>\n <span *ngSwitchCase=\"'downloadOnly'\">\n <a [href]=\"zip\" download title=\"{{title}}\">{{title}}</a>\n </span>\n <span *ngSwitchDefault>\n <a [href]=\"stackblitz\" target=\"_blank\" title=\"{{title}}\">{{title}}</a>\n <span *ngIf=\"enableDownload\">\n / <a [href]=\"zip\" download title=\"Download example\">download example</a>\n </span>\n </span>\n</span>\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/live-example/live-example.component.html","<iframe #iframe frameborder=\"0\" width=\"100%\" height=\"100%\"></iframe>\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/live-example/live-example.component.ts.EmbeddedStackblitzComponent.html","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Observable } from 'rxjs/Observable';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/publishLast';\n\nimport { Category, Resource, SubCategory } from './resource.model';\nimport { CONTENT_URL_PREFIX } from 'app/documents/document.service';\n\nconst resourcesPath = CONTENT_URL_PREFIX + 'resources.json';\n\n@Injectable()\nexport class ResourceService {\n categories: Observable<Category[]>;\n\n constructor(private http: HttpClient) {\n this.categories = this.getCategories();\n }\n\n private getCategories(): Observable<Category[]> {\n\n const categories = this.http.get<any>(resourcesPath)\n .map(data => mkCategories(data))\n .publishLast();\n\n categories.connect();\n return categories;\n };\n}\n\n// Extract sorted Category[] from resource JSON data\nfunction mkCategories(categoryJson: any): Category[] {\n return Object.keys(categoryJson).map(catKey => {\n const cat = categoryJson[catKey];\n return {\n id: makeId(catKey),\n title: catKey,\n order: cat.order,\n subCategories: mkSubCategories(cat.subCategories, catKey)\n } as Category;\n })\n .sort(compareCats);\n}\n\n// Extract sorted SubCategory[] from JSON category data\nfunction mkSubCategories(subCategoryJson: any, catKey: string): SubCategory[] {\n return Object.keys(subCategoryJson).map(subKey => {\n const sub = subCategoryJson[subKey];\n return {\n id: makeId(subKey),\n title: subKey,\n order: sub.order,\n resources: mkResources(sub.resources, subKey, catKey)\n } as SubCategory;\n })\n .sort(compareCats);\n}\n\n// Extract sorted Resource[] from JSON subcategory data\nfunction mkResources(resourceJson: any, subKey: string, catKey: string): Resource[] {\n return Object.keys(resourceJson).map(resKey => {\n const res = resourceJson[resKey];\n res.category = catKey;\n res.subCategory = subKey;\n res.id = makeId(resKey);\n return res as Resource;\n })\n .sort(compareTitles);\n}\n\nfunction compareCats(l: Category | SubCategory, r: Category | SubCategory) {\n return l.order === r.order ? compareTitles(l, r) : l.order > r.order ? 1 : -1;\n}\n\nfunction compareTitles(l: {title: string}, r: {title: string}) {\n return l.title.toUpperCase() > r.title.toUpperCase() ? 1 : -1;\n}\n\nfunction makeId(title: string) {\n return title.toLowerCase().replace(/\\s+/g, '-');\n}\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/resource/resource.service.ts","/**\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 \"./resource-list.component\";\nimport * as i3 from \"./resource.service\";\nvar styles_ResourceListComponent = [];\nvar RenderType_ResourceListComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_ResourceListComponent, data: {} });\nexport { RenderType_ResourceListComponent as RenderType_ResourceListComponent };\nfunction View_ResourceListComponent_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 6, \"div\", [[\"class\", \"c-resource\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 5, \"a\", [[\"class\", \"l-flex--column resource-row-link\"], [\"target\", \"_blank\"]], [[8, \"href\", 4]], null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 4, \"div\", [], null, null, null, null, null)), (_l()(), i0.ɵeld(3, 0, null, null, 1, \"h4\", [], null, null, null, null, null)), (_l()(), i0.ɵted(4, null, [\"\", \"\"])), (_l()(), i0.ɵeld(5, 0, null, null, 1, \"p\", [[\"class\", \"resource-description\"]], null, null, null, null, null)), (_l()(), i0.ɵted(6, null, [\"\", \"\"]))], null, function (_ck, _v) { var currVal_0 = _v.parent.context.$implicit.url; _ck(_v, 1, 0, currVal_0); var currVal_1 = _v.parent.context.$implicit.title; _ck(_v, 4, 0, currVal_1); var currVal_2 = (_v.parent.context.$implicit.desc || \"No Description\"); _ck(_v, 6, 0, currVal_2); }); }\nfunction View_ResourceListComponent_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"div\", [], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ResourceListComponent_4)), i0.ɵdid(2, 16384, null, 0, i1.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var currVal_0 = _v.context.$implicit.rev; _ck(_v, 2, 0, currVal_0); }, null); }\nfunction View_ResourceListComponent_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 5, \"div\", [], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 0, \"a\", [[\"class\", \"h-anchor-offset\"]], [[8, \"id\", 0]], null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"h3\", [[\"class\", \"subcategory-title\"]], null, null, null, null, null)), (_l()(), i0.ɵted(3, null, [\"\", \"\"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ResourceListComponent_3)), i0.ɵdid(5, 802816, null, 0, i1.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var currVal_2 = _v.context.$implicit.resources; _ck(_v, 5, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i0.ɵinlineInterpolate(1, \"\", _v.context.$implicit.id, \"\"); _ck(_v, 1, 0, currVal_0); var currVal_1 = _v.context.$implicit.title; _ck(_v, 3, 0, currVal_1); }); }\nfunction View_ResourceListComponent_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 7, \"div\", [[\"class\", \"showcase\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 3, \"header\", [[\"class\", \"c-resource-header\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 0, \"a\", [[\"class\", \"h-anchor-offset\"]], [[8, \"id\", 0]], null, null, null, null)), (_l()(), i0.ɵeld(3, 0, null, null, 1, \"h2\", [], null, null, null, null, null)), (_l()(), i0.ɵted(4, null, [\"\", \"\"])), (_l()(), i0.ɵeld(5, 0, null, null, 2, \"div\", [[\"class\", \"shadow-1\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ResourceListComponent_2)), i0.ɵdid(7, 802816, null, 0, i1.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var currVal_2 = _v.context.$implicit.subCategories; _ck(_v, 7, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i0.ɵinlineInterpolate(1, \"\", _v.context.$implicit.id, \"\"); _ck(_v, 2, 0, currVal_0); var currVal_1 = _v.context.$implicit.title; _ck(_v, 4, 0, currVal_1); }); }\nexport function View_ResourceListComponent_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"div\", [[\"class\", \"resources-container\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 2, \"div\", [[\"class\", \"l-flex--column\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ResourceListComponent_1)), i0.ɵdid(3, 802816, null, 0, i1.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.categories; _ck(_v, 3, 0, currVal_0); }, null); }\nexport function View_ResourceListComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"aio-resource-list\", [], null, [[\"window\", \"scroll\"]], function (_v, en, $event) { var ad = true; if ((\"window:scroll\" === en)) {\n var pd_0 = (i0.ɵnov(_v, 1).onScroll($event.target) !== false);\n ad = (pd_0 && ad);\n } return ad; }, View_ResourceListComponent_0, RenderType_ResourceListComponent)), i0.ɵdid(1, 114688, null, 0, i2.ResourceListComponent, [i1.PlatformLocation, i3.ResourceService], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar ResourceListComponentNgFactory = i0.ɵccf(\"aio-resource-list\", i2.ResourceListComponent, View_ResourceListComponent_Host_0, {}, {}, []);\nexport { ResourceListComponentNgFactory as ResourceListComponentNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/resource/resource-list.component.ngfactory.js.pre-build-optimizer.js","<div class=\"resources-container\">\n <div class=\"l-flex--column\">\n <div class=\"showcase\" *ngFor=\"let category of categories\">\n <header class=\"c-resource-header\">\n <a class=\"h-anchor-offset\" id=\"{{category.id}}\"></a>\n <h2>{{category.title}}</h2>\n </header>\n\n <div class=\"shadow-1\">\n <div *ngFor=\"let subCategory of category.subCategories\">\n <a class=\"h-anchor-offset\" id=\"{{subCategory.id}}\"></a>\n <h3 class=\"subcategory-title\">{{subCategory.title}}</h3>\n\n <div *ngFor=\"let resource of subCategory.resources\">\n <div class=\"c-resource\" *ngIf=\"resource.rev\">\n <a class=\"l-flex--column resource-row-link\" target=\"_blank\" [href]=\"resource.url\">\n <div>\n <h4>{{resource.title}}</h4>\n <p class=\"resource-description\">{{resource.desc || 'No Description'}}</p>\n </div>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/resource/resource-list.component.html","/**\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 \"./embedded.module\";\nimport * as i2 from \"../../../node_modules/@angular/material/snack-bar/typings/index.ngfactory\";\nimport * as i3 from \"./api/api-list.component.ngfactory\";\nimport * as i4 from \"./code/code-example.component.ngfactory\";\nimport * as i5 from \"./code/code-tabs.component.ngfactory\";\nimport * as i6 from \"./contributor/contributor-list.component.ngfactory\";\nimport * as i7 from \"./current-location.component.ngfactory\";\nimport * as i8 from \"./search/file-not-found-search.component.ngfactory\";\nimport * as i9 from \"./live-example/live-example.component.ngfactory\";\nimport * as i10 from \"./resource/resource-list.component.ngfactory\";\nimport * as i11 from \"@angular/common\";\nimport * as i12 from \"@angular/cdk/bidi\";\nimport * as i13 from \"@angular/material/icon\";\nimport * as i14 from \"@angular/common/http\";\nimport * as i15 from \"@angular/platform-browser\";\nimport * as i16 from \"@angular/cdk/platform\";\nimport * as i17 from \"@angular/cdk/scrolling\";\nimport * as i18 from \"@angular/cdk/overlay\";\nimport * as i19 from \"@angular/cdk/layout\";\nimport * as i20 from \"@angular/cdk/a11y\";\nimport * as i21 from \"@angular/material/snack-bar\";\nimport * as i22 from \"@angular/cdk/observers\";\nimport * as i23 from \"./api/api.service\";\nimport * as i24 from \"../shared/logger.service\";\nimport * as i25 from \"./contributor/contributor.service\";\nimport * as i26 from \"../shared/copier.service\";\nimport * as i27 from \"./code/pretty-printer.service\";\nimport * as i28 from \"./resource/resource.service\";\nimport * as i29 from \"@angular/material/core\";\nimport * as i30 from \"@angular/cdk/portal\";\nimport * as i31 from \"@angular/material/tabs\";\nimport * as i32 from \"../shared/shared.module\";\nvar EmbeddedModuleNgFactory = i0.ɵcmf(i1.EmbeddedModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, [i2.MatSnackBarContainerNgFactory, i2.SimpleSnackBarNgFactory, i3.ApiListComponentNgFactory, i4.CodeExampleComponentNgFactory, i5.CodeTabsComponentNgFactory, i6.ContributorListComponentNgFactory, i7.CurrentLocationComponentNgFactory, i8.FileNotFoundSearchComponentNgFactory, i9.LiveExampleComponentNgFactory, i10.ResourceListComponentNgFactory]], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i11.NgLocalization, i11.NgLocaleLocalization, [i0.LOCALE_ID, [2, i11.ɵa]]), i0.ɵmpd(6144, i12.DIR_DOCUMENT, null, [i11.DOCUMENT]), i0.ɵmpd(4608, i12.Directionality, i12.Directionality, [[2, i12.DIR_DOCUMENT]]), i0.ɵmpd(5120, i13.MatIconRegistry, i13.ICON_REGISTRY_PROVIDER_FACTORY, [[3, i13.MatIconRegistry], [2, i14.HttpClient], i15.DomSanitizer]), i0.ɵmpd(4608, i16.Platform, i16.Platform, []), i0.ɵmpd(5120, i17.ScrollDispatcher, i17.SCROLL_DISPATCHER_PROVIDER_FACTORY, [[3, i17.ScrollDispatcher], i0.NgZone, i16.Platform]), i0.ɵmpd(5120, i17.ViewportRuler, i17.VIEWPORT_RULER_PROVIDER_FACTORY, [[3, i17.ViewportRuler], i16.Platform, i0.NgZone]), i0.ɵmpd(4608, i18.ScrollStrategyOptions, i18.ScrollStrategyOptions, [i17.ScrollDispatcher, i17.ViewportRuler, i0.NgZone]), i0.ɵmpd(5120, i18.OverlayContainer, i18.ɵa, [[3, i18.OverlayContainer], i11.DOCUMENT]), i0.ɵmpd(4608, i18.ɵh, i18.ɵh, [i17.ViewportRuler, i11.DOCUMENT]), i0.ɵmpd(5120, i18.OverlayKeyboardDispatcher, i18.ɵf, [[3, i18.OverlayKeyboardDispatcher], i11.DOCUMENT]), i0.ɵmpd(4608, i18.Overlay, i18.Overlay, [i18.ScrollStrategyOptions, i18.OverlayContainer, i0.ComponentFactoryResolver, i18.ɵh, i18.OverlayKeyboardDispatcher, i0.ApplicationRef, i0.Injector, i0.NgZone, i11.DOCUMENT]), i0.ɵmpd(5120, i18.ɵc, i18.ɵd, [i18.Overlay]), i0.ɵmpd(4608, i19.MediaMatcher, i19.MediaMatcher, [i16.Platform]), i0.ɵmpd(135680, i19.BreakpointObserver, i19.BreakpointObserver, [i19.MediaMatcher, i0.NgZone]), i0.ɵmpd(5120, i20.LiveAnnouncer, i20.LIVE_ANNOUNCER_PROVIDER_FACTORY, [[3, i20.LiveAnnouncer], [2, i20.LIVE_ANNOUNCER_ELEMENT_TOKEN], i11.DOCUMENT]), i0.ɵmpd(4608, i21.MatSnackBar, i21.MatSnackBar, [i18.Overlay, i20.LiveAnnouncer, i0.Injector, i19.BreakpointObserver, [3, i21.MatSnackBar]]), i0.ɵmpd(4608, i22.MutationObserverFactory, i22.MutationObserverFactory, []), i0.ɵmpd(135680, i23.ApiService, i23.ApiService, [i14.HttpClient, i24.Logger]), i0.ɵmpd(4608, i25.ContributorService, i25.ContributorService, [i14.HttpClient]), i0.ɵmpd(4608, i26.CopierService, i26.CopierService, []), i0.ɵmpd(4608, i27.PrettyPrinter, i27.PrettyPrinter, [i24.Logger]), i0.ɵmpd(4608, i28.ResourceService, i28.ResourceService, [i14.HttpClient]), i0.ɵmpd(512, i11.CommonModule, i11.CommonModule, []), i0.ɵmpd(512, i12.BidiModule, i12.BidiModule, []), i0.ɵmpd(256, i29.MATERIAL_SANITY_CHECKS, true, []), i0.ɵmpd(512, i29.MatCommonModule, i29.MatCommonModule, [[2, i29.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(512, i13.MatIconModule, i13.MatIconModule, []), i0.ɵmpd(512, i30.PortalModule, i30.PortalModule, []), i0.ɵmpd(512, i16.PlatformModule, i16.PlatformModule, []), i0.ɵmpd(512, i17.ScrollDispatchModule, i17.ScrollDispatchModule, []), i0.ɵmpd(512, i18.OverlayModule, i18.OverlayModule, []), i0.ɵmpd(512, i19.LayoutModule, i19.LayoutModule, []), i0.ɵmpd(512, i21.MatSnackBarModule, i21.MatSnackBarModule, []), i0.ɵmpd(512, i29.MatRippleModule, i29.MatRippleModule, []), i0.ɵmpd(512, i22.ObserversModule, i22.ObserversModule, []), i0.ɵmpd(512, i31.MatTabsModule, i31.MatTabsModule, []), i0.ɵmpd(512, i32.SharedModule, i32.SharedModule, []), i0.ɵmpd(512, i1.EmbeddedModule, i1.EmbeddedModule, [])]); });\nexport { EmbeddedModuleNgFactory as EmbeddedModuleNgFactory };\n\n\n\n// WEBPACK FOOTER //\n// /home/wzc/dev/angular/angular/aio/src/app/embedded/embedded.module.ngfactory.js.pre-build-optimizer.js"],"sourceRoot":"webpack:///"}