@taiga-ui/kit 2.77.0 → 2.78.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/taiga-ui-kit-components-tabs.umd.js +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.min.js.map +1 -1
- package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +2 -2
- package/esm5/components/tabs/tabs-with-more/tabs-with-more.component.js +2 -2
- package/fesm2015/taiga-ui-kit-components-tabs.js +1 -1
- package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-tabs.js +1 -1
- package/fesm5/taiga-ui-kit-components-tabs.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@taiga-ui/kit/components/tabs/tab.directive.ts","ng://@taiga-ui/kit/components/tabs/tab/tab.providers.ts","ng://@taiga-ui/kit/components/tabs/tab/tab.component.ts","ng://@taiga-ui/kit/components/tabs/tabs-options.ts","ng://@taiga-ui/kit/components/tabs/tabs/tabs.component.ts","ng://@taiga-ui/kit/components/tabs/tabs-with-more/tabs-with-more.providers.ts","ng://@taiga-ui/kit/components/tabs/tabs-with-more/tabs-with-more.component.ts","ng://@taiga-ui/kit/components/tabs/underline/underline.component.ts","ng://@taiga-ui/kit/components/tabs/tabs.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","create","TuiTabDirective","template","TemplateRef","type","Inject","args","Directive","selector","TUI_TAB_EVENT","InjectionToken","TUI_TAB_PROVIDERS","TuiDestroyService","TuiFocusVisibleService","TuiRouterLinkActiveService","provide","deps","ElementRef","DOCUMENT","Optional","MutationObserverService","RouterLinkActive","useFactory","tabActiveFactory","MODE_PROVIDER","_a","documentRef","routerLinkActiveService","mutationObserverService","routerLinkActive","nativeElement","mutationObserver","pipe","filter","isActive","EMPTY","merge","identity","matches","typedFromEvent","map","dispatchEvent","tuiCustomEvent","bubbles","TuiTabComponent","elementRef","mode$","event$","margin","mobileAware","isIos","isAndroid","focusVisible$","_this","focusVisible","subscribe","visible","ngOnDestroy","isNativeFocused","setNativeFocused","Observable","TUI_MODE","TUI_TAB_MARGIN","TUI_MOBILE_AWARE","TUI_IS_IOS","TUI_IS_ANDROID","HostBinding","Component","changeDetection","ChangeDetectionStrategy","OnPush","providers","host","($.data-mode.attr)","[style.--tui-tab-margin.px]","TUI_TABS_DEFAULT_OPTIONS","underline","exposeActive","itemsLimit","Infinity","minMoreWidth","TUI_TABS_OPTIONS","factory","OBSERVER_INIT","childList","TuiTabsComponent","options","renderer","changeDetectorRef","resize$","children","EMPTY_QUERY","activeItemIndexChange","EventEmitter","activeItemIndex","detectChanges","index","scrollTo","tabs","Array","from","querySelectorAll","onActivate","element","findIndex","tab","activeItemIndexSetter","emit","onKeyDownArrow","current","step","moveFocus","indexOf","ngAfterViewChecked","activeElement","forEach","removeClass","setAttribute","addClass","offsetLeft","offsetWidth","scrollLeft","Renderer2","ChangeDetectorRef","TuiResizeService","ContentChildren","forwardRef","Input","tuiDefaultProp","Output","HostListener","TUI_TAB_ACTIVATE","MUTATION_OBSERVER_INIT","useValue","tabsRefreshFactory","mutations$","destroy$","_b","body","tap","contains","debounceTime","startWith","takeUntil","MUTATION_CONFIG","subtree","characterData","TABS_REFRESH","TABS_PROVIDERS","TuiTabsWithMoreComponent","refresh$","moreWord$","maxIndex","moreContent","dropdownContent","items","open","safeActiveIndex","tuiClamp","lastVisibleIndex","moreButton","offset","Math","min","ngAfterViewInit","getMaxIndex","onActiveItemIndexChange","updateActiveItemIndex","onClick","focusMore","onArrowRight","event","tuiAssertIsHTMLElement","onArrowLeft","onWrapperArrow","wrapper","prev","button","getClosestFocusable","isOverflown","shouldShow","clientWidth","activeWidth","scrollWidth","moreWidth","max","total","reduce","acc","toInt","TUI_MORE_WORD","ViewChild","read","TuiUnderlineComponent","ngZone","animationFrame$","ios","android","element$","ReplaySubject","switchMap","mapTo","tuiZonefree","of","share","transition$","asCallable","transform$","px","width$","next","NgZone","ANIMATION_FRAME","TuiTabsModule","NgModule","imports","CommonModule","TuiHostedDropdownModule","TuiSvgModule","TuiFocusableModule","PolymorpheusModule","declarations","exports"],"mappings":"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","sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import {Directive, Inject, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[tuiTab]',\n})\nexport class TuiTabDirective {\n constructor(\n @Inject(TemplateRef) readonly template: TemplateRef<Record<string, unknown>>,\n ) {}\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, InjectionToken, Optional, Provider} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {MutationObserverService} from '@ng-web-apis/mutation-observer';\nimport {\n tuiCustomEvent,\n TuiDestroyService,\n TuiFocusVisibleService,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TuiRouterLinkActiveService} from '@taiga-ui/core';\nimport {EMPTY, identity, merge, Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nexport const TUI_TAB_ACTIVATE = `tui-tab-activate`;\nexport const TUI_TAB_EVENT = new InjectionToken<Observable<Event>>(\n `Stream of tab activation events`,\n);\nexport const TUI_TAB_PROVIDERS: Provider[] = [\n TuiDestroyService,\n TuiFocusVisibleService,\n TuiRouterLinkActiveService,\n {\n provide: TUI_TAB_EVENT,\n deps: [\n ElementRef,\n DOCUMENT,\n TuiRouterLinkActiveService,\n [new Optional(), MutationObserverService],\n [new Optional(), RouterLinkActive],\n ],\n useFactory: tabActiveFactory,\n },\n MODE_PROVIDER,\n];\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function tabActiveFactory(\n {nativeElement}: ElementRef<HTMLElement>,\n documentRef: Document,\n routerLinkActiveService: Observable<boolean>,\n mutationObserverService: MutationObserverService | null,\n routerLinkActive: RouterLinkActive | null,\n): Observable<unknown> {\n const mutationObserver =\n routerLinkActive && mutationObserverService\n ? mutationObserverService.pipe(filter(() => routerLinkActive.isActive))\n : EMPTY;\n\n return merge(\n mutationObserver,\n routerLinkActiveService.pipe(filter(identity)),\n nativeElement.matches(`button`) ? typedFromEvent(nativeElement, `click`) : EMPTY,\n ).pipe(\n map(() =>\n nativeElement.dispatchEvent(\n tuiCustomEvent(TUI_TAB_ACTIVATE, {bubbles: true}, documentRef),\n ),\n ),\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n OnDestroy,\n Optional,\n} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {\n isNativeFocused,\n setNativeFocused,\n TUI_IS_ANDROID,\n TUI_IS_IOS,\n TuiFocusVisibleService,\n} from '@taiga-ui/cdk';\nimport {TUI_MODE, TuiBrightness} from '@taiga-ui/core';\nimport {TUI_MOBILE_AWARE, TUI_TAB_MARGIN} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\n\nimport {TUI_TAB_EVENT, TUI_TAB_PROVIDERS} from './tab.providers';\n\n@Component({\n selector:\n 'a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]',\n templateUrl: './tab.template.html',\n styleUrls: ['./tab.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_TAB_PROVIDERS,\n host: {\n '($.data-mode.attr)': 'mode$',\n '[style.--tui-tab-margin.px]': 'margin',\n type: 'button',\n },\n})\nexport class TuiTabComponent implements OnDestroy {\n @HostBinding('class._ios')\n readonly isIos: boolean;\n\n @HostBinding('class._android')\n readonly isAndroid: boolean;\n\n @HostBinding('class._focus-visible')\n focusVisible = false;\n\n constructor(\n @Optional()\n @Inject(RouterLinkActive)\n private readonly routerLinkActive: RouterLinkActive | null,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TUI_TAB_EVENT) readonly event$: Observable<Event>,\n @Inject(TUI_TAB_MARGIN) readonly margin: number,\n @Inject(TUI_MOBILE_AWARE) mobileAware: boolean,\n @Inject(TUI_IS_IOS) isIos: boolean,\n @Inject(TUI_IS_ANDROID) isAndroid: boolean,\n @Inject(TuiFocusVisibleService) focusVisible$: TuiFocusVisibleService,\n ) {\n this.isIos = mobileAware && isIos;\n this.isAndroid = mobileAware && isAndroid;\n\n focusVisible$.subscribe(visible => {\n this.focusVisible = visible;\n });\n }\n\n @HostBinding('class._active')\n get isActive(): boolean {\n return !!this.routerLinkActive && this.routerLinkActive.isActive;\n }\n\n ngOnDestroy(): void {\n if (isNativeFocused(this.elementRef.nativeElement)) {\n setNativeFocused(this.elementRef.nativeElement, false);\n }\n }\n}\n","import {InjectionToken, ValueProvider} from '@angular/core';\n\nexport interface TuiTabsOptions {\n readonly underline: boolean;\n readonly exposeActive: boolean;\n readonly itemsLimit: number;\n readonly minMoreWidth: number;\n}\n\nexport const TUI_TABS_DEFAULT_OPTIONS: TuiTabsOptions = {\n underline: true,\n exposeActive: true,\n itemsLimit: Infinity,\n minMoreWidth: 0,\n};\n\nexport const TUI_TABS_OPTIONS = new InjectionToken<TuiTabsOptions>(\n `Default parameters for tabs component`,\n {\n factory: () => TUI_TABS_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiTabsOptionsProvider: (\n options: Partial<TuiTabsOptions>,\n) => ValueProvider = (options: Partial<TuiTabsOptions>) => ({\n provide: TUI_TABS_OPTIONS,\n useValue: {...TUI_TABS_DEFAULT_OPTIONS, ...options},\n});\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport {\n MUTATION_OBSERVER_INIT,\n MutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {\n EMPTY_QUERY,\n moveFocus,\n TUI_IS_ANDROID,\n TUI_IS_IOS,\n tuiDefaultProp,\n TuiDestroyService,\n TuiResizeService,\n} from '@taiga-ui/cdk';\nimport {TUI_MOBILE_AWARE} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {TuiTabComponent} from '../tab/tab.component';\nimport {TUI_TAB_ACTIVATE} from '../tab/tab.providers';\nimport {TUI_TABS_OPTIONS, TuiTabsOptions} from '../tabs-options';\n\nconst TAB_ACTIVE_CLASS = '_active';\n\n// TODO: 3.0 remove in ivy compilation\nexport const OBSERVER_INIT = {\n childList: true,\n};\n\n// @dynamic\n@Component({\n selector: 'tui-tabs, nav[tuiTabs]',\n templateUrl: './tabs.template.html',\n styleUrls: ['./tabs.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TuiDestroyService,\n TuiResizeService,\n MutationObserverService,\n {\n provide: MUTATION_OBSERVER_INIT,\n useValue: OBSERVER_INIT,\n },\n ],\n})\nexport class TuiTabsComponent implements AfterViewChecked {\n @ContentChildren(forwardRef(() => TuiTabComponent))\n readonly children: QueryList<unknown> = EMPTY_QUERY;\n\n @Input()\n @HostBinding('class._underline')\n @tuiDefaultProp()\n underline = this.options.underline;\n\n @Input('activeItemIndex')\n set activeItemIndexSetter(index: number) {\n this.activeItemIndex = index;\n this.scrollTo(this.tabs[index]);\n }\n\n @Output()\n readonly activeItemIndexChange = new EventEmitter<number>();\n\n @HostBinding('class._ios')\n readonly isIos: boolean;\n\n @HostBinding('class._android')\n readonly isAndroid: boolean;\n\n activeItemIndex = 0;\n\n constructor(\n @Inject(TUI_TABS_OPTIONS) private readonly options: TuiTabsOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TuiResizeService) resize$: Observable<void>,\n @Inject(TUI_IS_IOS) isIos: boolean,\n @Inject(TUI_IS_ANDROID) isAndroid: boolean,\n @Inject(TUI_MOBILE_AWARE) mobileAware: boolean,\n ) {\n this.isIos = mobileAware && isIos;\n this.isAndroid = mobileAware && isAndroid;\n\n resize$.pipe(filter(() => this.underline)).subscribe(() => {\n changeDetectorRef.detectChanges();\n });\n }\n\n get tabs(): readonly HTMLElement[] {\n return Array.from(\n this.elementRef.nativeElement.querySelectorAll<HTMLElement>('[tuiTab]'),\n );\n }\n\n get activeElement(): HTMLElement | null {\n return this.tabs[this.activeItemIndex] || null;\n }\n\n @HostListener(`${TUI_TAB_ACTIVATE}.stop`, ['$event.target'])\n onActivate(element: HTMLElement): void {\n const index = this.tabs.findIndex(tab => tab === element);\n\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndexSetter = index;\n this.activeItemIndexChange.emit(index);\n }\n\n @HostListener('keydown.arrowRight.prevent', ['$event.target', '1'])\n @HostListener('keydown.arrowLeft.prevent', ['$event.target', '-1'])\n onKeyDownArrow(current: HTMLElement, step: number): void {\n const {tabs} = this;\n\n moveFocus(tabs.indexOf(current), tabs, step);\n }\n\n ngAfterViewChecked(): void {\n const {tabs, activeElement} = this;\n\n tabs.forEach(nativeElement => {\n this.renderer.removeClass(nativeElement, TAB_ACTIVE_CLASS);\n this.renderer.setAttribute(nativeElement, 'tabIndex', '-1');\n });\n\n if (activeElement) {\n this.renderer.addClass(activeElement, TAB_ACTIVE_CLASS);\n this.renderer.setAttribute(activeElement, 'tabIndex', '0');\n }\n }\n\n private scrollTo(element?: HTMLElement): void {\n if (!element) {\n return;\n }\n\n const {offsetLeft, offsetWidth} = element;\n const {nativeElement} = this.elementRef;\n\n if (offsetLeft < nativeElement.scrollLeft) {\n nativeElement.scrollLeft = offsetLeft;\n }\n\n if (\n offsetLeft + offsetWidth >\n nativeElement.scrollLeft + nativeElement.offsetWidth\n ) {\n nativeElement.scrollLeft =\n offsetLeft + offsetWidth - nativeElement.offsetWidth;\n }\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ChangeDetectorRef, ElementRef, InjectionToken, Provider} from '@angular/core';\nimport {\n MUTATION_OBSERVER_INIT,\n MutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {TuiDestroyService, TuiResizeService} from '@taiga-ui/cdk';\nimport {merge, Observable} from 'rxjs';\nimport {debounceTime, filter, startWith, takeUntil, tap} from 'rxjs/operators';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function tabsRefreshFactory(\n resize$: Observable<unknown>,\n mutations$: Observable<unknown>,\n destroy$: Observable<unknown>,\n {body}: Document,\n {nativeElement}: ElementRef<Node>,\n changeDetectorRef: ChangeDetectorRef,\n): Observable<unknown> {\n return merge(\n resize$,\n mutations$.pipe(tap(() => changeDetectorRef.detectChanges())),\n ).pipe(\n // Ignoring cases when host is detached from DOM\n filter(() => body.contains(nativeElement)),\n debounceTime(0),\n startWith(null),\n takeUntil(destroy$),\n );\n}\n\n// TODO: 3.0 remove in ivy compilation\nexport const MUTATION_CONFIG = {\n childList: true,\n subtree: true,\n characterData: true,\n};\nexport const TABS_REFRESH = new InjectionToken<Observable<unknown>>(`Refresh stream`);\nexport const TABS_PROVIDERS: Provider[] = [\n TuiResizeService,\n TuiDestroyService,\n MutationObserverService,\n {\n provide: MUTATION_OBSERVER_INIT,\n useValue: MUTATION_CONFIG,\n },\n {\n provide: TABS_REFRESH,\n deps: [\n TuiResizeService,\n MutationObserverService,\n TuiDestroyService,\n DOCUMENT,\n ElementRef,\n ChangeDetectorRef,\n ],\n useFactory: tabsRefreshFactory,\n },\n];\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n EMPTY_QUERY,\n getClosestFocusable,\n isNativeFocused,\n setNativeFocused,\n toInt,\n TuiActiveZoneDirective,\n tuiAssertIsHTMLElement,\n tuiClamp,\n TuiContextWithImplicit,\n tuiDefaultProp,\n} from '@taiga-ui/cdk';\nimport {TUI_MORE_WORD, TUI_TAB_MARGIN} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {TuiTabDirective} from '../tab.directive';\nimport {TuiTabComponent} from '../tab/tab.component';\nimport {TUI_TABS_OPTIONS, TuiTabsOptions} from '../tabs-options';\nimport {TABS_PROVIDERS, TABS_REFRESH} from './tabs-with-more.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-tabs-with-more, nav[tuiTabsWithMore]',\n templateUrl: './tabs-with-more.template.html',\n styleUrls: ['./tabs-with-more.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TABS_PROVIDERS,\n})\nexport class TuiTabsWithMoreComponent implements AfterViewInit {\n @ViewChild(TuiTabComponent, {read: ElementRef})\n private readonly moreButton?: ElementRef<HTMLButtonElement>;\n\n private maxIndex = Infinity;\n\n @Input()\n @tuiDefaultProp()\n moreContent: PolymorpheusContent = '';\n\n @Input()\n @tuiDefaultProp()\n dropdownContent: PolymorpheusContent<TuiContextWithImplicit<TuiActiveZoneDirective>> =\n '';\n\n @Input()\n @HostBinding('class._underline')\n @tuiDefaultProp()\n underline = this.options.underline;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = 0;\n\n @Input()\n @tuiDefaultProp()\n itemsLimit = this.options.itemsLimit;\n\n @Output()\n readonly activeItemIndexChange = new EventEmitter<number>();\n\n @ContentChildren(TuiTabDirective, {read: TemplateRef})\n readonly items: QueryList<TemplateRef<Record<string, unknown>>> = EMPTY_QUERY;\n\n open = false;\n\n constructor(\n @Inject(TUI_TABS_OPTIONS) private readonly options: TuiTabsOptions,\n @Inject(TUI_TAB_MARGIN) private readonly margin: number,\n @Inject(TABS_REFRESH) private readonly refresh$: Observable<unknown>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(ChangeDetectorRef) private readonly changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_MORE_WORD) readonly moreWord$: Observable<string>,\n ) {}\n\n // TODO: Improve performance\n get tabs(): readonly HTMLElement[] {\n return Array.from<HTMLElement>(\n this.elementRef.nativeElement.querySelectorAll('[tuiTab]'),\n );\n }\n\n get activeElement(): HTMLElement | null {\n const {tabs} = this;\n const safeActiveIndex = tuiClamp(this.activeItemIndex || 0, 0, tabs.length - 2);\n\n return this.options.exposeActive || this.lastVisibleIndex >= safeActiveIndex\n ? tabs[safeActiveIndex] || null\n : this.moreButton?.nativeElement || null;\n }\n\n get isMoreVisible(): boolean {\n return this.lastVisibleIndex < this.items.length - 1;\n }\n\n get isMoreFocusable(): boolean {\n return !!this.moreButton && isNativeFocused(this.moreButton.nativeElement);\n }\n\n get isMoreActive(): boolean {\n return (\n this.open ||\n (!this.options.exposeActive && this.lastVisibleIndex < this.activeItemIndex)\n );\n }\n\n get isMoreAlone(): boolean {\n return this.lastVisibleIndex < 0 && !this.options.exposeActive;\n }\n\n get lastVisibleIndex(): number {\n if (this.itemsLimit + 1 >= this.items.length) {\n return this.maxIndex;\n }\n\n const offset =\n this.itemsLimit - 1 > this.activeItemIndex || !this.options.exposeActive\n ? 1\n : 2;\n\n return Math.min(this.itemsLimit - offset, this.maxIndex);\n }\n\n ngAfterViewInit(): void {\n this.refresh$\n .pipe(\n map(() => this.getMaxIndex()),\n filter(maxIndex => this.maxIndex !== maxIndex),\n )\n .subscribe(maxIndex => {\n this.maxIndex = maxIndex;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n onActiveItemIndexChange(activeItemIndex: number): void {\n this.updateActiveItemIndex(activeItemIndex);\n }\n\n onClick(index: number): void {\n this.open = false;\n this.focusMore();\n this.updateActiveItemIndex(index);\n }\n\n onArrowRight(event: Event): void {\n tuiAssertIsHTMLElement(event.target);\n\n if (isNativeFocused(event.target)) {\n this.focusMore();\n }\n }\n\n onArrowLeft(): void {\n const {tabs} = this;\n let index = tabs.length - 2;\n\n while (index >= 0) {\n setNativeFocused(tabs[index]);\n\n if (isNativeFocused(tabs[index])) {\n return;\n }\n\n index--;\n }\n }\n\n onWrapperArrow(event: Event, wrapper: HTMLElement, prev: boolean): void {\n const button: HTMLButtonElement = event.target as HTMLButtonElement;\n const target = getClosestFocusable(button, prev, wrapper);\n\n if (target) {\n setNativeFocused(target);\n }\n }\n\n isOverflown(index: number): boolean {\n return index !== this.activeItemIndex || !this.options.exposeActive;\n }\n\n shouldShow(index: number): boolean {\n return index > this.lastVisibleIndex && this.isOverflown(index);\n }\n\n private focusMore(): void {\n if (this.moreButton) {\n setNativeFocused(this.moreButton.nativeElement);\n }\n }\n\n private getMaxIndex(): number {\n const {tabs, activeItemIndex, margin} = this;\n\n if (tabs.length < 2) {\n return 0;\n }\n\n const {exposeActive, minMoreWidth} = this.options;\n const {clientWidth} = this.elementRef.nativeElement;\n const activeWidth = tabs[activeItemIndex] ? tabs[activeItemIndex].scrollWidth : 0;\n const moreWidth = Math.max(tabs[tabs.length - 1].scrollWidth, minMoreWidth);\n let maxIndex = tabs.length - 2;\n let total =\n tabs.reduce((acc, {scrollWidth}) => acc + scrollWidth, 0) +\n maxIndex * margin -\n moreWidth;\n\n if (total <= clientWidth) {\n return Infinity;\n }\n\n while (maxIndex) {\n total -= tabs[maxIndex].scrollWidth + margin;\n maxIndex--;\n\n const activeDisplaced = exposeActive && activeItemIndex > maxIndex;\n const activeOffset = activeDisplaced ? activeWidth + margin : 0;\n const currentWidth = total + activeOffset + moreWidth + margin;\n // Needed for different rounding of visible and hidden elements scrollWidth\n const safetyOffset = toInt(this.maxIndex === maxIndex - 1);\n\n if (currentWidth + safetyOffset < clientWidth) {\n return maxIndex;\n }\n }\n\n return -1;\n }\n\n private updateActiveItemIndex(activeItemIndex: number): void {\n if (this.activeItemIndex === activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = activeItemIndex;\n this.activeItemIndexChange.emit(activeItemIndex);\n this.maxIndex = this.getMaxIndex();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {px, TUI_IS_ANDROID, TUI_IS_IOS, tuiDefaultProp, tuiZonefree} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TUI_MODE, TuiBrightness} from '@taiga-ui/core';\nimport {TUI_MOBILE_AWARE} from '@taiga-ui/kit/tokens';\nimport {asCallable} from '@tinkoff/ng-event-plugins';\nimport {Observable, of, ReplaySubject} from 'rxjs';\nimport {debounceTime, map, mapTo, share, switchMap} from 'rxjs/operators';\n\n@Component({\n selector: 'tui-underline',\n template: '',\n styleUrls: ['./underline.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [MODE_PROVIDER],\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiUnderlineComponent {\n private readonly element$ = new ReplaySubject<HTMLElement | null>(1);\n\n private readonly refresh$ = this.element$.pipe(\n switchMap(element =>\n element\n ? this.animationFrame$.pipe(mapTo(element), tuiZonefree(this.ngZone))\n : of(null),\n ),\n share(),\n );\n\n @Input()\n @tuiDefaultProp()\n set element(element: HTMLElement | null) {\n this.element$.next(element);\n }\n\n @HostBinding('class._ios')\n readonly isIos = this.mobileAware && this.ios;\n\n @HostBinding('class._android')\n readonly isAndroid = this.mobileAware && this.android;\n\n @HostListener('$.style.transitionProperty')\n readonly transition$ = asCallable(\n this.element$.pipe(\n map(element => element && 'all'),\n debounceTime(50),\n ),\n );\n\n @HostListener('$.style.transform')\n readonly transform$ = asCallable(\n this.refresh$.pipe(\n map(element =>\n element ? `translate3d(${px(element.offsetLeft)}, 0, 0)` : null,\n ),\n ),\n );\n\n @HostListener('$.style.width.px')\n readonly width$ = asCallable(\n this.refresh$.pipe(map(element => element?.clientWidth || 0)),\n );\n\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n @Inject(TUI_MOBILE_AWARE) private readonly mobileAware: boolean,\n @Inject(TUI_IS_IOS) private readonly ios: boolean,\n @Inject(TUI_IS_ANDROID) private readonly android: boolean,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n ) {\n nativeElement['$.style.transitionProperty'] = this.transition$;\n nativeElement['$.style.transform'] = this.transform$;\n nativeElement['$.style.width.px'] = this.width$;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiFocusableModule} from '@taiga-ui/cdk';\nimport {TuiHostedDropdownModule, TuiSvgModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiTabDirective} from './tab.directive';\nimport {TuiTabComponent} from './tab/tab.component';\nimport {TuiTabsComponent} from './tabs/tabs.component';\nimport {TuiTabsWithMoreComponent} from './tabs-with-more/tabs-with-more.component';\nimport {TuiUnderlineComponent} from './underline/underline.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiHostedDropdownModule,\n TuiSvgModule,\n TuiFocusableModule,\n PolymorpheusModule,\n ],\n declarations: [\n TuiTabsWithMoreComponent,\n TuiTabsComponent,\n TuiTabComponent,\n TuiUnderlineComponent,\n TuiTabDirective,\n ],\n exports: [\n TuiTabsWithMoreComponent,\n TuiTabsComponent,\n TuiTabComponent,\n TuiTabDirective,\n ],\n})\nexport class TuiTabsModule {}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@taiga-ui/kit/components/tabs/tab.directive.ts","ng://@taiga-ui/kit/components/tabs/tab/tab.providers.ts","ng://@taiga-ui/kit/components/tabs/tab/tab.component.ts","ng://@taiga-ui/kit/components/tabs/tabs-options.ts","ng://@taiga-ui/kit/components/tabs/tabs/tabs.component.ts","ng://@taiga-ui/kit/components/tabs/tabs-with-more/tabs-with-more.providers.ts","ng://@taiga-ui/kit/components/tabs/tabs-with-more/tabs-with-more.component.ts","ng://@taiga-ui/kit/components/tabs/underline/underline.component.ts","ng://@taiga-ui/kit/components/tabs/tabs.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","create","TuiTabDirective","template","TemplateRef","type","Inject","args","Directive","selector","TUI_TAB_EVENT","InjectionToken","TUI_TAB_PROVIDERS","TuiDestroyService","TuiFocusVisibleService","TuiRouterLinkActiveService","provide","deps","ElementRef","DOCUMENT","Optional","MutationObserverService","RouterLinkActive","useFactory","tabActiveFactory","MODE_PROVIDER","_a","documentRef","routerLinkActiveService","mutationObserverService","routerLinkActive","nativeElement","mutationObserver","pipe","filter","isActive","EMPTY","merge","identity","matches","typedFromEvent","map","dispatchEvent","tuiCustomEvent","bubbles","TuiTabComponent","elementRef","mode$","event$","margin","mobileAware","isIos","isAndroid","focusVisible$","_this","focusVisible","subscribe","visible","ngOnDestroy","isNativeFocused","setNativeFocused","Observable","TUI_MODE","TUI_TAB_MARGIN","TUI_MOBILE_AWARE","TUI_IS_IOS","TUI_IS_ANDROID","HostBinding","Component","changeDetection","ChangeDetectionStrategy","OnPush","providers","host","($.data-mode.attr)","[style.--tui-tab-margin.px]","TUI_TABS_DEFAULT_OPTIONS","underline","exposeActive","itemsLimit","Infinity","minMoreWidth","TUI_TABS_OPTIONS","factory","OBSERVER_INIT","childList","TuiTabsComponent","options","renderer","changeDetectorRef","resize$","children","EMPTY_QUERY","activeItemIndexChange","EventEmitter","activeItemIndex","detectChanges","index","scrollTo","tabs","Array","from","querySelectorAll","onActivate","element","findIndex","tab","activeItemIndexSetter","emit","onKeyDownArrow","current","step","moveFocus","indexOf","ngAfterViewChecked","activeElement","forEach","removeClass","setAttribute","addClass","offsetLeft","offsetWidth","scrollLeft","Renderer2","ChangeDetectorRef","TuiResizeService","ContentChildren","forwardRef","Input","tuiDefaultProp","Output","HostListener","TUI_TAB_ACTIVATE","MUTATION_OBSERVER_INIT","useValue","tabsRefreshFactory","mutations$","destroy$","_b","body","tap","contains","debounceTime","startWith","takeUntil","MUTATION_CONFIG","subtree","characterData","TABS_REFRESH","TABS_PROVIDERS","TuiTabsWithMoreComponent","refresh$","moreWord$","maxIndex","moreContent","dropdownContent","items","open","safeActiveIndex","tuiClamp","lastVisibleIndex","moreButton","offset","Math","min","ngAfterViewInit","getMaxIndex","onActiveItemIndexChange","updateActiveItemIndex","onClick","focusMore","onArrowRight","event","tuiAssertIsHTMLElement","onArrowLeft","onWrapperArrow","wrapper","prev","button","getClosestFocusable","isOverflown","shouldShow","clientWidth","activeWidth","scrollWidth","moreWidth","max","total","reduce","acc","toInt","TUI_MORE_WORD","ViewChild","read","TuiUnderlineComponent","ngZone","animationFrame$","ios","android","element$","ReplaySubject","switchMap","mapTo","tuiZonefree","of","share","transition$","asCallable","transform$","px","width$","next","NgZone","ANIMATION_FRAME","TuiTabsModule","NgModule","imports","CommonModule","TuiHostedDropdownModule","TuiSvgModule","TuiFocusableModule","PolymorpheusModule","declarations","exports"],"mappings":"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","sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import {Directive, Inject, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[tuiTab]',\n})\nexport class TuiTabDirective {\n constructor(\n @Inject(TemplateRef) readonly template: TemplateRef<Record<string, unknown>>,\n ) {}\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, InjectionToken, Optional, Provider} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {MutationObserverService} from '@ng-web-apis/mutation-observer';\nimport {\n tuiCustomEvent,\n TuiDestroyService,\n TuiFocusVisibleService,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TuiRouterLinkActiveService} from '@taiga-ui/core';\nimport {EMPTY, identity, merge, Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nexport const TUI_TAB_ACTIVATE = `tui-tab-activate`;\nexport const TUI_TAB_EVENT = new InjectionToken<Observable<Event>>(\n `Stream of tab activation events`,\n);\nexport const TUI_TAB_PROVIDERS: Provider[] = [\n TuiDestroyService,\n TuiFocusVisibleService,\n TuiRouterLinkActiveService,\n {\n provide: TUI_TAB_EVENT,\n deps: [\n ElementRef,\n DOCUMENT,\n TuiRouterLinkActiveService,\n [new Optional(), MutationObserverService],\n [new Optional(), RouterLinkActive],\n ],\n useFactory: tabActiveFactory,\n },\n MODE_PROVIDER,\n];\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function tabActiveFactory(\n {nativeElement}: ElementRef<HTMLElement>,\n documentRef: Document,\n routerLinkActiveService: Observable<boolean>,\n mutationObserverService: MutationObserverService | null,\n routerLinkActive: RouterLinkActive | null,\n): Observable<unknown> {\n const mutationObserver =\n routerLinkActive && mutationObserverService\n ? mutationObserverService.pipe(filter(() => routerLinkActive.isActive))\n : EMPTY;\n\n return merge(\n mutationObserver,\n routerLinkActiveService.pipe(filter(identity)),\n nativeElement.matches(`button`) ? typedFromEvent(nativeElement, `click`) : EMPTY,\n ).pipe(\n map(() =>\n nativeElement.dispatchEvent(\n tuiCustomEvent(TUI_TAB_ACTIVATE, {bubbles: true}, documentRef),\n ),\n ),\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n OnDestroy,\n Optional,\n} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {\n isNativeFocused,\n setNativeFocused,\n TUI_IS_ANDROID,\n TUI_IS_IOS,\n TuiFocusVisibleService,\n} from '@taiga-ui/cdk';\nimport {TUI_MODE, TuiBrightness} from '@taiga-ui/core';\nimport {TUI_MOBILE_AWARE, TUI_TAB_MARGIN} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\n\nimport {TUI_TAB_EVENT, TUI_TAB_PROVIDERS} from './tab.providers';\n\n@Component({\n selector:\n 'a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]',\n templateUrl: './tab.template.html',\n styleUrls: ['./tab.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_TAB_PROVIDERS,\n host: {\n '($.data-mode.attr)': 'mode$',\n '[style.--tui-tab-margin.px]': 'margin',\n type: 'button',\n },\n})\nexport class TuiTabComponent implements OnDestroy {\n @HostBinding('class._ios')\n readonly isIos: boolean;\n\n @HostBinding('class._android')\n readonly isAndroid: boolean;\n\n @HostBinding('class._focus-visible')\n focusVisible = false;\n\n constructor(\n @Optional()\n @Inject(RouterLinkActive)\n private readonly routerLinkActive: RouterLinkActive | null,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TUI_TAB_EVENT) readonly event$: Observable<Event>,\n @Inject(TUI_TAB_MARGIN) readonly margin: number,\n @Inject(TUI_MOBILE_AWARE) mobileAware: boolean,\n @Inject(TUI_IS_IOS) isIos: boolean,\n @Inject(TUI_IS_ANDROID) isAndroid: boolean,\n @Inject(TuiFocusVisibleService) focusVisible$: TuiFocusVisibleService,\n ) {\n this.isIos = mobileAware && isIos;\n this.isAndroid = mobileAware && isAndroid;\n\n focusVisible$.subscribe(visible => {\n this.focusVisible = visible;\n });\n }\n\n @HostBinding('class._active')\n get isActive(): boolean {\n return !!this.routerLinkActive && this.routerLinkActive.isActive;\n }\n\n ngOnDestroy(): void {\n if (isNativeFocused(this.elementRef.nativeElement)) {\n setNativeFocused(this.elementRef.nativeElement, false);\n }\n }\n}\n","import {InjectionToken, ValueProvider} from '@angular/core';\n\nexport interface TuiTabsOptions {\n readonly underline: boolean;\n readonly exposeActive: boolean;\n readonly itemsLimit: number;\n readonly minMoreWidth: number;\n}\n\nexport const TUI_TABS_DEFAULT_OPTIONS: TuiTabsOptions = {\n underline: true,\n exposeActive: true,\n itemsLimit: Infinity,\n minMoreWidth: 0,\n};\n\nexport const TUI_TABS_OPTIONS = new InjectionToken<TuiTabsOptions>(\n `Default parameters for tabs component`,\n {\n factory: () => TUI_TABS_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiTabsOptionsProvider: (\n options: Partial<TuiTabsOptions>,\n) => ValueProvider = (options: Partial<TuiTabsOptions>) => ({\n provide: TUI_TABS_OPTIONS,\n useValue: {...TUI_TABS_DEFAULT_OPTIONS, ...options},\n});\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport {\n MUTATION_OBSERVER_INIT,\n MutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {\n EMPTY_QUERY,\n moveFocus,\n TUI_IS_ANDROID,\n TUI_IS_IOS,\n tuiDefaultProp,\n TuiDestroyService,\n TuiResizeService,\n} from '@taiga-ui/cdk';\nimport {TUI_MOBILE_AWARE} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {TuiTabComponent} from '../tab/tab.component';\nimport {TUI_TAB_ACTIVATE} from '../tab/tab.providers';\nimport {TUI_TABS_OPTIONS, TuiTabsOptions} from '../tabs-options';\n\nconst TAB_ACTIVE_CLASS = '_active';\n\n// TODO: 3.0 remove in ivy compilation\nexport const OBSERVER_INIT = {\n childList: true,\n};\n\n// @dynamic\n@Component({\n selector: 'tui-tabs, nav[tuiTabs]',\n templateUrl: './tabs.template.html',\n styleUrls: ['./tabs.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TuiDestroyService,\n TuiResizeService,\n MutationObserverService,\n {\n provide: MUTATION_OBSERVER_INIT,\n useValue: OBSERVER_INIT,\n },\n ],\n})\nexport class TuiTabsComponent implements AfterViewChecked {\n @ContentChildren(forwardRef(() => TuiTabComponent))\n readonly children: QueryList<unknown> = EMPTY_QUERY;\n\n @Input()\n @HostBinding('class._underline')\n @tuiDefaultProp()\n underline = this.options.underline;\n\n @Input('activeItemIndex')\n set activeItemIndexSetter(index: number) {\n this.activeItemIndex = index;\n this.scrollTo(this.tabs[index]);\n }\n\n @Output()\n readonly activeItemIndexChange = new EventEmitter<number>();\n\n @HostBinding('class._ios')\n readonly isIos: boolean;\n\n @HostBinding('class._android')\n readonly isAndroid: boolean;\n\n activeItemIndex = 0;\n\n constructor(\n @Inject(TUI_TABS_OPTIONS) private readonly options: TuiTabsOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TuiResizeService) resize$: Observable<void>,\n @Inject(TUI_IS_IOS) isIos: boolean,\n @Inject(TUI_IS_ANDROID) isAndroid: boolean,\n @Inject(TUI_MOBILE_AWARE) mobileAware: boolean,\n ) {\n this.isIos = mobileAware && isIos;\n this.isAndroid = mobileAware && isAndroid;\n\n resize$.pipe(filter(() => this.underline)).subscribe(() => {\n changeDetectorRef.detectChanges();\n });\n }\n\n get tabs(): readonly HTMLElement[] {\n return Array.from(\n this.elementRef.nativeElement.querySelectorAll<HTMLElement>('[tuiTab]'),\n );\n }\n\n get activeElement(): HTMLElement | null {\n return this.tabs[this.activeItemIndex] || null;\n }\n\n @HostListener(`${TUI_TAB_ACTIVATE}.stop`, ['$event.target'])\n onActivate(element: HTMLElement): void {\n const index = this.tabs.findIndex(tab => tab === element);\n\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndexSetter = index;\n this.activeItemIndexChange.emit(index);\n }\n\n @HostListener('keydown.arrowRight.prevent', ['$event.target', '1'])\n @HostListener('keydown.arrowLeft.prevent', ['$event.target', '-1'])\n onKeyDownArrow(current: HTMLElement, step: number): void {\n const {tabs} = this;\n\n moveFocus(tabs.indexOf(current), tabs, step);\n }\n\n ngAfterViewChecked(): void {\n const {tabs, activeElement} = this;\n\n tabs.forEach(nativeElement => {\n this.renderer.removeClass(nativeElement, TAB_ACTIVE_CLASS);\n this.renderer.setAttribute(nativeElement, 'tabIndex', '-1');\n });\n\n if (activeElement) {\n this.renderer.addClass(activeElement, TAB_ACTIVE_CLASS);\n this.renderer.setAttribute(activeElement, 'tabIndex', '0');\n }\n }\n\n private scrollTo(element?: HTMLElement): void {\n if (!element) {\n return;\n }\n\n const {offsetLeft, offsetWidth} = element;\n const {nativeElement} = this.elementRef;\n\n if (offsetLeft < nativeElement.scrollLeft) {\n nativeElement.scrollLeft = offsetLeft;\n }\n\n if (\n offsetLeft + offsetWidth >\n nativeElement.scrollLeft + nativeElement.offsetWidth\n ) {\n nativeElement.scrollLeft =\n offsetLeft + offsetWidth - nativeElement.offsetWidth;\n }\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ChangeDetectorRef, ElementRef, InjectionToken, Provider} from '@angular/core';\nimport {\n MUTATION_OBSERVER_INIT,\n MutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {TuiDestroyService, TuiResizeService} from '@taiga-ui/cdk';\nimport {merge, Observable} from 'rxjs';\nimport {debounceTime, filter, startWith, takeUntil, tap} from 'rxjs/operators';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function tabsRefreshFactory(\n resize$: Observable<unknown>,\n mutations$: Observable<unknown>,\n destroy$: Observable<unknown>,\n {body}: Document,\n {nativeElement}: ElementRef<Node>,\n changeDetectorRef: ChangeDetectorRef,\n): Observable<unknown> {\n return merge(\n resize$,\n mutations$.pipe(tap(() => changeDetectorRef.detectChanges())),\n ).pipe(\n // Ignoring cases when host is detached from DOM\n filter(() => body.contains(nativeElement)),\n debounceTime(0),\n startWith(null),\n takeUntil(destroy$),\n );\n}\n\n// TODO: 3.0 remove in ivy compilation\nexport const MUTATION_CONFIG = {\n childList: true,\n subtree: true,\n characterData: true,\n};\nexport const TABS_REFRESH = new InjectionToken<Observable<unknown>>(`Refresh stream`);\nexport const TABS_PROVIDERS: Provider[] = [\n TuiResizeService,\n TuiDestroyService,\n MutationObserverService,\n {\n provide: MUTATION_OBSERVER_INIT,\n useValue: MUTATION_CONFIG,\n },\n {\n provide: TABS_REFRESH,\n deps: [\n TuiResizeService,\n MutationObserverService,\n TuiDestroyService,\n DOCUMENT,\n ElementRef,\n ChangeDetectorRef,\n ],\n useFactory: tabsRefreshFactory,\n },\n];\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n EMPTY_QUERY,\n getClosestFocusable,\n isNativeFocused,\n setNativeFocused,\n toInt,\n TuiActiveZoneDirective,\n tuiAssertIsHTMLElement,\n tuiClamp,\n TuiContextWithImplicit,\n tuiDefaultProp,\n} from '@taiga-ui/cdk';\nimport {TUI_MORE_WORD, TUI_TAB_MARGIN} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {TuiTabDirective} from '../tab.directive';\nimport {TuiTabComponent} from '../tab/tab.component';\nimport {TUI_TABS_OPTIONS, TuiTabsOptions} from '../tabs-options';\nimport {TABS_PROVIDERS, TABS_REFRESH} from './tabs-with-more.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-tabs-with-more, nav[tuiTabsWithMore]',\n templateUrl: './tabs-with-more.template.html',\n styleUrls: ['./tabs-with-more.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TABS_PROVIDERS,\n})\nexport class TuiTabsWithMoreComponent implements AfterViewInit {\n @ViewChild(TuiTabComponent, {read: ElementRef})\n private readonly moreButton?: ElementRef<HTMLButtonElement>;\n\n private maxIndex = Infinity;\n\n @Input()\n @tuiDefaultProp()\n moreContent: PolymorpheusContent = '';\n\n @Input()\n @tuiDefaultProp()\n dropdownContent: PolymorpheusContent<TuiContextWithImplicit<TuiActiveZoneDirective>> =\n '';\n\n @Input()\n @HostBinding('class._underline')\n @tuiDefaultProp()\n underline = this.options.underline;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = 0;\n\n @Input()\n @tuiDefaultProp()\n itemsLimit = this.options.itemsLimit;\n\n @Output()\n readonly activeItemIndexChange = new EventEmitter<number>();\n\n @ContentChildren(TuiTabDirective, {read: TemplateRef})\n readonly items: QueryList<TemplateRef<Record<string, unknown>>> = EMPTY_QUERY;\n\n open = false;\n\n constructor(\n @Inject(TUI_TABS_OPTIONS) private readonly options: TuiTabsOptions,\n @Inject(TUI_TAB_MARGIN) private readonly margin: number,\n @Inject(TABS_REFRESH) private readonly refresh$: Observable<unknown>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(ChangeDetectorRef) private readonly changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_MORE_WORD) readonly moreWord$: Observable<string>,\n ) {}\n\n // TODO: Improve performance\n get tabs(): readonly HTMLElement[] {\n return Array.from<HTMLElement>(\n this.elementRef.nativeElement.querySelectorAll('[tuiTab]'),\n );\n }\n\n get activeElement(): HTMLElement | null {\n const {tabs} = this;\n const safeActiveIndex = tuiClamp(this.activeItemIndex || 0, 0, tabs.length - 2);\n\n return this.options.exposeActive || this.lastVisibleIndex >= safeActiveIndex\n ? tabs[safeActiveIndex] || null\n : this.moreButton?.nativeElement || null;\n }\n\n get isMoreVisible(): boolean {\n return this.lastVisibleIndex < this.items.length - 1;\n }\n\n get isMoreFocusable(): boolean {\n return !!this.moreButton && isNativeFocused(this.moreButton.nativeElement);\n }\n\n get isMoreActive(): boolean {\n return (\n this.open ||\n (!this.options.exposeActive && this.lastVisibleIndex < this.activeItemIndex)\n );\n }\n\n get isMoreAlone(): boolean {\n return this.lastVisibleIndex < 0 && !this.options.exposeActive;\n }\n\n get lastVisibleIndex(): number {\n if (this.itemsLimit + 1 >= this.items.length) {\n return this.maxIndex;\n }\n\n const offset =\n this.itemsLimit - 1 > this.activeItemIndex || !this.options.exposeActive\n ? 1\n : 2;\n\n return Math.min(this.itemsLimit - offset, this.maxIndex);\n }\n\n ngAfterViewInit(): void {\n this.refresh$\n .pipe(\n map(() => this.getMaxIndex()),\n filter(maxIndex => this.maxIndex !== maxIndex),\n )\n .subscribe(maxIndex => {\n this.maxIndex = maxIndex;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n onActiveItemIndexChange(activeItemIndex: number): void {\n this.updateActiveItemIndex(activeItemIndex);\n }\n\n onClick(index: number): void {\n this.open = false;\n this.focusMore();\n this.updateActiveItemIndex(index);\n }\n\n onArrowRight(event: Event): void {\n tuiAssertIsHTMLElement(event.target);\n\n if (isNativeFocused(event.target)) {\n this.focusMore();\n }\n }\n\n onArrowLeft(): void {\n const {tabs} = this;\n let index = tabs.length - 2;\n\n while (index >= 0) {\n setNativeFocused(tabs[index]);\n\n if (isNativeFocused(tabs[index])) {\n return;\n }\n\n index--;\n }\n }\n\n onWrapperArrow(event: Event, wrapper: HTMLElement, prev: boolean): void {\n const button: HTMLButtonElement = event.target as HTMLButtonElement;\n const target = getClosestFocusable(button, prev, wrapper);\n\n if (target) {\n setNativeFocused(target);\n }\n }\n\n isOverflown(index: number): boolean {\n return index !== this.activeItemIndex || !this.options.exposeActive;\n }\n\n shouldShow(index: number): boolean {\n return index > this.lastVisibleIndex && this.isOverflown(index);\n }\n\n private focusMore(): void {\n if (this.moreButton) {\n setNativeFocused(this.moreButton.nativeElement);\n }\n }\n\n private getMaxIndex(): number {\n const {tabs, activeItemIndex, margin} = this;\n\n if (tabs.length < 2) {\n return 0;\n }\n\n const {exposeActive, minMoreWidth} = this.options;\n const {clientWidth} = this.elementRef.nativeElement;\n const activeWidth = tabs[activeItemIndex] ? tabs[activeItemIndex].scrollWidth : 0;\n const moreWidth = Math.max(tabs[tabs.length - 1].scrollWidth, minMoreWidth);\n let maxIndex = tabs.length - 2;\n let total =\n tabs.reduce((acc, {scrollWidth}) => acc + scrollWidth, 0) +\n maxIndex * margin -\n tabs[tabs.length - 1].scrollWidth;\n\n if (total <= clientWidth) {\n return Infinity;\n }\n\n while (maxIndex) {\n total -= tabs[maxIndex].scrollWidth + margin;\n maxIndex--;\n\n const activeDisplaced = exposeActive && activeItemIndex > maxIndex;\n const activeOffset = activeDisplaced ? activeWidth + margin : 0;\n const currentWidth = total + activeOffset + moreWidth + margin;\n // Needed for different rounding of visible and hidden elements scrollWidth\n const safetyOffset = toInt(this.maxIndex === maxIndex - 1);\n\n if (currentWidth + safetyOffset < clientWidth) {\n return maxIndex;\n }\n }\n\n return -1;\n }\n\n private updateActiveItemIndex(activeItemIndex: number): void {\n if (this.activeItemIndex === activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = activeItemIndex;\n this.activeItemIndexChange.emit(activeItemIndex);\n this.maxIndex = this.getMaxIndex();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {px, TUI_IS_ANDROID, TUI_IS_IOS, tuiDefaultProp, tuiZonefree} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TUI_MODE, TuiBrightness} from '@taiga-ui/core';\nimport {TUI_MOBILE_AWARE} from '@taiga-ui/kit/tokens';\nimport {asCallable} from '@tinkoff/ng-event-plugins';\nimport {Observable, of, ReplaySubject} from 'rxjs';\nimport {debounceTime, map, mapTo, share, switchMap} from 'rxjs/operators';\n\n@Component({\n selector: 'tui-underline',\n template: '',\n styleUrls: ['./underline.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [MODE_PROVIDER],\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiUnderlineComponent {\n private readonly element$ = new ReplaySubject<HTMLElement | null>(1);\n\n private readonly refresh$ = this.element$.pipe(\n switchMap(element =>\n element\n ? this.animationFrame$.pipe(mapTo(element), tuiZonefree(this.ngZone))\n : of(null),\n ),\n share(),\n );\n\n @Input()\n @tuiDefaultProp()\n set element(element: HTMLElement | null) {\n this.element$.next(element);\n }\n\n @HostBinding('class._ios')\n readonly isIos = this.mobileAware && this.ios;\n\n @HostBinding('class._android')\n readonly isAndroid = this.mobileAware && this.android;\n\n @HostListener('$.style.transitionProperty')\n readonly transition$ = asCallable(\n this.element$.pipe(\n map(element => element && 'all'),\n debounceTime(50),\n ),\n );\n\n @HostListener('$.style.transform')\n readonly transform$ = asCallable(\n this.refresh$.pipe(\n map(element =>\n element ? `translate3d(${px(element.offsetLeft)}, 0, 0)` : null,\n ),\n ),\n );\n\n @HostListener('$.style.width.px')\n readonly width$ = asCallable(\n this.refresh$.pipe(map(element => element?.clientWidth || 0)),\n );\n\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n @Inject(TUI_MOBILE_AWARE) private readonly mobileAware: boolean,\n @Inject(TUI_IS_IOS) private readonly ios: boolean,\n @Inject(TUI_IS_ANDROID) private readonly android: boolean,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n ) {\n nativeElement['$.style.transitionProperty'] = this.transition$;\n nativeElement['$.style.transform'] = this.transform$;\n nativeElement['$.style.width.px'] = this.width$;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiFocusableModule} from '@taiga-ui/cdk';\nimport {TuiHostedDropdownModule, TuiSvgModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiTabDirective} from './tab.directive';\nimport {TuiTabComponent} from './tab/tab.component';\nimport {TuiTabsComponent} from './tabs/tabs.component';\nimport {TuiTabsWithMoreComponent} from './tabs-with-more/tabs-with-more.component';\nimport {TuiUnderlineComponent} from './underline/underline.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiHostedDropdownModule,\n TuiSvgModule,\n TuiFocusableModule,\n PolymorpheusModule,\n ],\n declarations: [\n TuiTabsWithMoreComponent,\n TuiTabsComponent,\n TuiTabComponent,\n TuiUnderlineComponent,\n TuiTabDirective,\n ],\n exports: [\n TuiTabsWithMoreComponent,\n TuiTabsComponent,\n TuiTabComponent,\n TuiTabDirective,\n ],\n})\nexport class TuiTabsModule {}\n"]}
|
|
@@ -124,7 +124,7 @@ let TuiTabsWithMoreComponent = class TuiTabsWithMoreComponent {
|
|
|
124
124
|
let maxIndex = tabs.length - 2;
|
|
125
125
|
let total = tabs.reduce((acc, { scrollWidth }) => acc + scrollWidth, 0) +
|
|
126
126
|
maxIndex * margin -
|
|
127
|
-
|
|
127
|
+
tabs[tabs.length - 1].scrollWidth;
|
|
128
128
|
if (total <= clientWidth) {
|
|
129
129
|
return Infinity;
|
|
130
130
|
}
|
|
@@ -205,4 +205,4 @@ TuiTabsWithMoreComponent = __decorate([
|
|
|
205
205
|
__param(5, Inject(TUI_MORE_WORD))
|
|
206
206
|
], TuiTabsWithMoreComponent);
|
|
207
207
|
export { TuiTabsWithMoreComponent };
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy13aXRoLW1vcmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3RhYnMvIiwic291cmNlcyI6WyJ0YWJzLXdpdGgtbW9yZS90YWJzLXdpdGgtbW9yZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsS0FBSyxFQUVMLHNCQUFzQixFQUN0QixRQUFRLEVBRVIsY0FBYyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsYUFBYSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsY0FBYyxFQUFFLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXhFLFdBQVc7QUFRWCxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF3QjtJQW9DakMsWUFDK0MsT0FBdUIsRUFDekIsTUFBYyxFQUNoQixRQUE2QixFQUMvQixVQUFtQyxFQUM1QixpQkFBb0MsRUFDaEQsU0FBNkI7UUFMbEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDekIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUMvQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUM1QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ2hELGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBdEN6RCxhQUFRLEdBQUcsUUFBUSxDQUFDO1FBSTVCLGdCQUFXLEdBQXdCLEVBQUUsQ0FBQztRQUl0QyxvQkFBZSxHQUNYLEVBQUUsQ0FBQztRQUtQLGNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUluQyxvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUlwQixlQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFHNUIsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUduRCxVQUFLLEdBQW9ELFdBQVcsQ0FBQztRQUU5RSxTQUFJLEdBQUcsS0FBSyxDQUFDO0lBU1YsQ0FBQztJQUVKLDRCQUE0QjtJQUM1QixJQUFJLElBQUk7UUFDSixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQzdELENBQUM7SUFDTixDQUFDO0lBRUQsSUFBSSxhQUFhOztRQUNiLE1BQU0sRUFBQyxJQUFJLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFDcEIsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWhGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLGVBQWU7WUFDeEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJO1lBQy9CLENBQUMsQ0FBQyxPQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLGFBQWEsS0FBSSxJQUFJLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxDQUNILElBQUksQ0FBQyxJQUFJO1lBQ1QsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQy9FLENBQUM7SUFDTixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2hCLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDMUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3hCO1FBRUQsTUFBTSxNQUFNLEdBQ1IsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWTtZQUNwRSxDQUFDLENBQUMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFWixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFFBQVE7YUFDUixJQUFJLENBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUM3QixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUNqRDthQUNBLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsZUFBdUI7UUFDM0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYTtRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBWTtRQUNyQixzQkFBc0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckMsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsTUFBTSxFQUFDLElBQUksRUFBQyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUU1QixPQUFPLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDZixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUU5QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDOUIsT0FBTzthQUNWO1lBRUQsS0FBSyxFQUFFLENBQUM7U0FDWDtJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBWSxFQUFFLE9BQW9CLEVBQUUsSUFBYTtRQUM1RCxNQUFNLE1BQU0sR0FBc0IsS0FBSyxDQUFDLE1BQTJCLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUxRCxJQUFJLE1BQU0sRUFBRTtZQUNSLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztJQUN4RSxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDcEIsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVPLFNBQVM7UUFDYixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNuRDtJQUNMLENBQUM7SUFFTyxXQUFXO1FBQ2YsTUFBTSxFQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFDLEdBQUcsSUFBSSxDQUFDO1FBRTdDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakIsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUVELE1BQU0sRUFBQyxZQUFZLEVBQUUsWUFBWSxFQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNsRCxNQUFNLEVBQUMsV0FBVyxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDcEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDNUUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLEdBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN6RCxRQUFRLEdBQUcsTUFBTTtZQUNqQixTQUFTLENBQUM7UUFFZCxJQUFJLEtBQUssSUFBSSxXQUFXLEVBQUU7WUFDdEIsT0FBTyxRQUFRLENBQUM7U0FDbkI7UUFFRCxPQUFPLFFBQVEsRUFBRTtZQUNiLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztZQUM3QyxRQUFRLEVBQUUsQ0FBQztZQUVYLE1BQU0sZUFBZSxHQUFHLFlBQVksSUFBSSxlQUFlLEdBQUcsUUFBUSxDQUFDO1lBQ25FLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sWUFBWSxHQUFHLEtBQUssR0FBRyxZQUFZLEdBQUcsU0FBUyxHQUFHLE1BQU0sQ0FBQztZQUMvRCwyRUFBMkU7WUFDM0UsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRTNELElBQUksWUFBWSxHQUFHLFlBQVksR0FBRyxXQUFXLEVBQUU7Z0JBQzNDLE9BQU8sUUFBUSxDQUFDO2FBQ25CO1NBQ0o7UUFFRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVPLHFCQUFxQixDQUFDLGVBQXVCO1FBQ2pELElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxlQUFlLEVBQUU7WUFDMUMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0NBQ0osQ0FBQTs7NENBNUtRLE1BQU0sU0FBQyxnQkFBZ0I7eUNBQ3ZCLE1BQU0sU0FBQyxjQUFjO1lBQzJCLFVBQVUsdUJBQTFELE1BQU0sU0FBQyxZQUFZO1lBQzZCLFVBQVUsdUJBQTFELE1BQU0sU0FBQyxVQUFVO1lBQzZDLGlCQUFpQix1QkFBL0UsTUFBTSxTQUFDLGlCQUFpQjtZQUNrQixVQUFVLHVCQUFwRCxNQUFNLFNBQUMsYUFBYTs7QUF4Q3pCO0lBREMsU0FBUyxDQUFDLGVBQWUsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUMsQ0FBQzs0REFDYTtBQU01RDtJQUZDLEtBQUssRUFBRTtJQUNQLGNBQWMsRUFBRTs2REFDcUI7QUFJdEM7SUFGQyxLQUFLLEVBQUU7SUFDUCxjQUFjLEVBQUU7aUVBRVY7QUFLUDtJQUhDLEtBQUssRUFBRTtJQUNQLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztJQUMvQixjQUFjLEVBQUU7MkRBQ2tCO0FBSW5DO0lBRkMsS0FBSyxFQUFFO0lBQ1AsY0FBYyxFQUFFO2lFQUNHO0FBSXBCO0lBRkMsS0FBSyxFQUFFO0lBQ1AsY0FBYyxFQUFFOzREQUNvQjtBQUdyQztJQURDLE1BQU0sRUFBRTt1RUFDbUQ7QUFHNUQ7SUFEQyxlQUFlLENBQUMsZUFBZSxFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBQyxDQUFDO3VEQUN3QjtBQWhDckUsd0JBQXdCO0lBUHBDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSwwQ0FBMEM7UUFDcEQsaTlFQUE2QztRQUU3QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtRQUMvQyxTQUFTLEVBQUUsY0FBYzs7S0FDNUIsQ0FBQztJQXNDTyxXQUFBLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQ3hCLFdBQUEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3RCLFdBQUEsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ3BCLFdBQUEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ2xCLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDekIsV0FBQSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7R0ExQ2pCLHdCQUF3QixDQWlOcEM7U0FqTlksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRU1QVFlfUVVFUlksXG4gICAgZ2V0Q2xvc2VzdEZvY3VzYWJsZSxcbiAgICBpc05hdGl2ZUZvY3VzZWQsXG4gICAgc2V0TmF0aXZlRm9jdXNlZCxcbiAgICB0b0ludCxcbiAgICBUdWlBY3RpdmVab25lRGlyZWN0aXZlLFxuICAgIHR1aUFzc2VydElzSFRNTEVsZW1lbnQsXG4gICAgdHVpQ2xhbXAsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1RVSV9NT1JFX1dPUkQsIFRVSV9UQUJfTUFSR0lOfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1R1aVRhYkRpcmVjdGl2ZX0gZnJvbSAnLi4vdGFiLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1R1aVRhYkNvbXBvbmVudH0gZnJvbSAnLi4vdGFiL3RhYi5jb21wb25lbnQnO1xuaW1wb3J0IHtUVUlfVEFCU19PUFRJT05TLCBUdWlUYWJzT3B0aW9uc30gZnJvbSAnLi4vdGFicy1vcHRpb25zJztcbmltcG9ydCB7VEFCU19QUk9WSURFUlMsIFRBQlNfUkVGUkVTSH0gZnJvbSAnLi90YWJzLXdpdGgtbW9yZS5wcm92aWRlcnMnO1xuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktdGFicy13aXRoLW1vcmUsIG5hdlt0dWlUYWJzV2l0aE1vcmVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFicy13aXRoLW1vcmUudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFicy13aXRoLW1vcmUuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogVEFCU19QUk9WSURFUlMsXG59KVxuZXhwb3J0IGNsYXNzIFR1aVRhYnNXaXRoTW9yZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIEBWaWV3Q2hpbGQoVHVpVGFiQ29tcG9uZW50LCB7cmVhZDogRWxlbWVudFJlZn0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb3JlQnV0dG9uPzogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgICBwcml2YXRlIG1heEluZGV4ID0gSW5maW5pdHk7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbW9yZUNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBkcm9wZG93bkNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8VHVpQ29udGV4dFdpdGhJbXBsaWNpdDxUdWlBY3RpdmVab25lRGlyZWN0aXZlPj4gPVxuICAgICAgICAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5fdW5kZXJsaW5lJylcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHVuZGVybGluZSA9IHRoaXMub3B0aW9ucy51bmRlcmxpbmU7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgYWN0aXZlSXRlbUluZGV4ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBpdGVtc0xpbWl0ID0gdGhpcy5vcHRpb25zLml0ZW1zTGltaXQ7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBhY3RpdmVJdGVtSW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oVHVpVGFiRGlyZWN0aXZlLCB7cmVhZDogVGVtcGxhdGVSZWZ9KVxuICAgIHJlYWRvbmx5IGl0ZW1zOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+PiA9IEVNUFRZX1FVRVJZO1xuXG4gICAgb3BlbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVFVJX1RBQlNfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUdWlUYWJzT3B0aW9ucyxcbiAgICAgICAgQEluamVjdChUVUlfVEFCX01BUkdJTikgcHJpdmF0ZSByZWFkb25seSBtYXJnaW46IG51bWJlcixcbiAgICAgICAgQEluamVjdChUQUJTX1JFRlJFU0gpIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaCQ6IE9ic2VydmFibGU8dW5rbm93bj4sXG4gICAgICAgIEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoVFVJX01PUkVfV09SRCkgcmVhZG9ubHkgbW9yZVdvcmQkOiBPYnNlcnZhYmxlPHN0cmluZz4sXG4gICAgKSB7fVxuXG4gICAgLy8gVE9ETzogSW1wcm92ZSBwZXJmb3JtYW5jZVxuICAgIGdldCB0YWJzKCk6IHJlYWRvbmx5IEhUTUxFbGVtZW50W10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbdHVpVGFiXScpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBhY3RpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHt0YWJzfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHNhZmVBY3RpdmVJbmRleCA9IHR1aUNsYW1wKHRoaXMuYWN0aXZlSXRlbUluZGV4IHx8IDAsIDAsIHRhYnMubGVuZ3RoIC0gMik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmUgfHwgdGhpcy5sYXN0VmlzaWJsZUluZGV4ID49IHNhZmVBY3RpdmVJbmRleFxuICAgICAgICAgICAgPyB0YWJzW3NhZmVBY3RpdmVJbmRleF0gfHwgbnVsbFxuICAgICAgICAgICAgOiB0aGlzLm1vcmVCdXR0b24/Lm5hdGl2ZUVsZW1lbnQgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgaXNNb3JlVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFZpc2libGVJbmRleCA8IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICB9XG5cbiAgICBnZXQgaXNNb3JlRm9jdXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm1vcmVCdXR0b24gJiYgaXNOYXRpdmVGb2N1c2VkKHRoaXMubW9yZUJ1dHRvbi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXQgaXNNb3JlQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5vcGVuIHx8XG4gICAgICAgICAgICAoIXRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmUgJiYgdGhpcy5sYXN0VmlzaWJsZUluZGV4IDwgdGhpcy5hY3RpdmVJdGVtSW5kZXgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZUFsb25lKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmlzaWJsZUluZGV4IDwgMCAmJiAhdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZTtcbiAgICB9XG5cbiAgICBnZXQgbGFzdFZpc2libGVJbmRleCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pdGVtc0xpbWl0ICsgMSA+PSB0aGlzLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWF4SW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvZmZzZXQgPVxuICAgICAgICAgICAgdGhpcy5pdGVtc0xpbWl0IC0gMSA+IHRoaXMuYWN0aXZlSXRlbUluZGV4IHx8ICF0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlXG4gICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgOiAyO1xuXG4gICAgICAgIHJldHVybiBNYXRoLm1pbih0aGlzLml0ZW1zTGltaXQgLSBvZmZzZXQsIHRoaXMubWF4SW5kZXgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuZ2V0TWF4SW5kZXgoKSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKG1heEluZGV4ID0+IHRoaXMubWF4SW5kZXggIT09IG1heEluZGV4KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUobWF4SW5kZXggPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWF4SW5kZXggPSBtYXhJbmRleDtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQWN0aXZlSXRlbUluZGV4Q2hhbmdlKGFjdGl2ZUl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlQWN0aXZlSXRlbUluZGV4KGFjdGl2ZUl0ZW1JbmRleCk7XG4gICAgfVxuXG4gICAgb25DbGljayhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvY3VzTW9yZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUl0ZW1JbmRleChpbmRleCk7XG4gICAgfVxuXG4gICAgb25BcnJvd1JpZ2h0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0dWlBc3NlcnRJc0hUTUxFbGVtZW50KGV2ZW50LnRhcmdldCk7XG5cbiAgICAgICAgaWYgKGlzTmF0aXZlRm9jdXNlZChldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzTW9yZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd0xlZnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHt0YWJzfSA9IHRoaXM7XG4gICAgICAgIGxldCBpbmRleCA9IHRhYnMubGVuZ3RoIC0gMjtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0YWJzW2luZGV4XSk7XG5cbiAgICAgICAgICAgIGlmIChpc05hdGl2ZUZvY3VzZWQodGFic1tpbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbmRleC0tO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25XcmFwcGVyQXJyb3coZXZlbnQ6IEV2ZW50LCB3cmFwcGVyOiBIVE1MRWxlbWVudCwgcHJldjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBidXR0b246IEhUTUxCdXR0b25FbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRDbG9zZXN0Rm9jdXNhYmxlKGJ1dHRvbiwgcHJldiwgd3JhcHBlcik7XG5cbiAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNPdmVyZmxvd24oaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaW5kZXggIT09IHRoaXMuYWN0aXZlSXRlbUluZGV4IHx8ICF0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlO1xuICAgIH1cblxuICAgIHNob3VsZFNob3coaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaW5kZXggPiB0aGlzLmxhc3RWaXNpYmxlSW5kZXggJiYgdGhpcy5pc092ZXJmbG93bihpbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c01vcmUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vcmVCdXR0b24pIHtcbiAgICAgICAgICAgIHNldE5hdGl2ZUZvY3VzZWQodGhpcy5tb3JlQnV0dG9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYXhJbmRleCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB7dGFicywgYWN0aXZlSXRlbUluZGV4LCBtYXJnaW59ID0gdGhpcztcblxuICAgICAgICBpZiAodGFicy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtleHBvc2VBY3RpdmUsIG1pbk1vcmVXaWR0aH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIGNvbnN0IHtjbGllbnRXaWR0aH0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgYWN0aXZlV2lkdGggPSB0YWJzW2FjdGl2ZUl0ZW1JbmRleF0gPyB0YWJzW2FjdGl2ZUl0ZW1JbmRleF0uc2Nyb2xsV2lkdGggOiAwO1xuICAgICAgICBjb25zdCBtb3JlV2lkdGggPSBNYXRoLm1heCh0YWJzW3RhYnMubGVuZ3RoIC0gMV0uc2Nyb2xsV2lkdGgsIG1pbk1vcmVXaWR0aCk7XG4gICAgICAgIGxldCBtYXhJbmRleCA9IHRhYnMubGVuZ3RoIC0gMjtcbiAgICAgICAgbGV0IHRvdGFsID1cbiAgICAgICAgICAgIHRhYnMucmVkdWNlKChhY2MsIHtzY3JvbGxXaWR0aH0pID0+IGFjYyArIHNjcm9sbFdpZHRoLCAwKSArXG4gICAgICAgICAgICBtYXhJbmRleCAqIG1hcmdpbiAtXG4gICAgICAgICAgICBtb3JlV2lkdGg7XG5cbiAgICAgICAgaWYgKHRvdGFsIDw9IGNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICByZXR1cm4gSW5maW5pdHk7XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAobWF4SW5kZXgpIHtcbiAgICAgICAgICAgIHRvdGFsIC09IHRhYnNbbWF4SW5kZXhdLnNjcm9sbFdpZHRoICsgbWFyZ2luO1xuICAgICAgICAgICAgbWF4SW5kZXgtLTtcblxuICAgICAgICAgICAgY29uc3QgYWN0aXZlRGlzcGxhY2VkID0gZXhwb3NlQWN0aXZlICYmIGFjdGl2ZUl0ZW1JbmRleCA+IG1heEluZGV4O1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlT2Zmc2V0ID0gYWN0aXZlRGlzcGxhY2VkID8gYWN0aXZlV2lkdGggKyBtYXJnaW4gOiAwO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFdpZHRoID0gdG90YWwgKyBhY3RpdmVPZmZzZXQgKyBtb3JlV2lkdGggKyBtYXJnaW47XG4gICAgICAgICAgICAvLyBOZWVkZWQgZm9yIGRpZmZlcmVudCByb3VuZGluZyBvZiB2aXNpYmxlIGFuZCBoaWRkZW4gZWxlbWVudHMgc2Nyb2xsV2lkdGhcbiAgICAgICAgICAgIGNvbnN0IHNhZmV0eU9mZnNldCA9IHRvSW50KHRoaXMubWF4SW5kZXggPT09IG1heEluZGV4IC0gMSk7XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50V2lkdGggKyBzYWZldHlPZmZzZXQgPCBjbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXhJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUFjdGl2ZUl0ZW1JbmRleChhY3RpdmVJdGVtSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVJdGVtSW5kZXggPT09IGFjdGl2ZUl0ZW1JbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtSW5kZXggPSBhY3RpdmVJdGVtSW5kZXg7XG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbUluZGV4Q2hhbmdlLmVtaXQoYWN0aXZlSXRlbUluZGV4KTtcbiAgICAgICAgdGhpcy5tYXhJbmRleCA9IHRoaXMuZ2V0TWF4SW5kZXgoKTtcbiAgICB9XG59XG4iXX0=
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy13aXRoLW1vcmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3RhYnMvIiwic291cmNlcyI6WyJ0YWJzLXdpdGgtbW9yZS90YWJzLXdpdGgtbW9yZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsS0FBSyxFQUVMLHNCQUFzQixFQUN0QixRQUFRLEVBRVIsY0FBYyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsYUFBYSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsY0FBYyxFQUFFLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXhFLFdBQVc7QUFRWCxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF3QjtJQW9DakMsWUFDK0MsT0FBdUIsRUFDekIsTUFBYyxFQUNoQixRQUE2QixF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QUksRUFBRSxXQUFXLEVBQUMsQ0FBQzt1REFDd0I7QUFoQ3JFLHdCQUF3QjtJQVBwQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsMENBQTBDO1FBQ3BELGk5RUFBNkM7UUFFN0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07UUFDL0MsU0FBUyxFQUFFLGNBQWM7O0tBQzVCLENBQUM7SUFzQ08sV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUN4QixXQUFBLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN0QixXQUFBLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNwQixXQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNsQixXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3pCLFdBQUEsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0dBMUNqQix3QkFBd0IsQ0FpTnBDO1NBak5ZLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEVNUFRZX1FVRVJZLFxuICAgIGdldENsb3Nlc3RGb2N1c2FibGUsXG4gICAgaXNOYXRpdmVGb2N1c2VkLFxuICAgIHNldE5hdGl2ZUZvY3VzZWQsXG4gICAgdG9JbnQsXG4gICAgVHVpQWN0aXZlWm9uZURpcmVjdGl2ZSxcbiAgICB0dWlBc3NlcnRJc0hUTUxFbGVtZW50LFxuICAgIHR1aUNsYW1wLFxuICAgIFR1aUNvbnRleHRXaXRoSW1wbGljaXQsXG4gICAgdHVpRGVmYXVsdFByb3AsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtUVUlfTU9SRV9XT1JELCBUVUlfVEFCX01BUkdJTn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtUdWlUYWJEaXJlY3RpdmV9IGZyb20gJy4uL3RhYi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtUdWlUYWJDb21wb25lbnR9IGZyb20gJy4uL3RhYi90YWIuY29tcG9uZW50JztcbmltcG9ydCB7VFVJX1RBQlNfT1BUSU9OUywgVHVpVGFic09wdGlvbnN9IGZyb20gJy4uL3RhYnMtb3B0aW9ucyc7XG5pbXBvcnQge1RBQlNfUFJPVklERVJTLCBUQUJTX1JFRlJFU0h9IGZyb20gJy4vdGFicy13aXRoLW1vcmUucHJvdmlkZXJzJztcblxuLy8gQGR5bmFtaWNcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLXRhYnMtd2l0aC1tb3JlLCBuYXZbdHVpVGFic1dpdGhNb3JlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYnMtd2l0aC1tb3JlLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYnMtd2l0aC1tb3JlLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFRBQlNfUFJPVklERVJTLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlUYWJzV2l0aE1vcmVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKFR1aVRhYkNvbXBvbmVudCwge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9yZUJ1dHRvbj86IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSBtYXhJbmRleCA9IEluZmluaXR5O1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1vcmVDb250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50ID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgZHJvcGRvd25Db250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8VHVpQWN0aXZlWm9uZURpcmVjdGl2ZT4+ID1cbiAgICAgICAgJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX3VuZGVybGluZScpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICB1bmRlcmxpbmUgPSB0aGlzLm9wdGlvbnMudW5kZXJsaW5lO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGFjdGl2ZUl0ZW1JbmRleCA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaXRlbXNMaW1pdCA9IHRoaXMub3B0aW9ucy5pdGVtc0xpbWl0O1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgYWN0aXZlSXRlbUluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFR1aVRhYkRpcmVjdGl2ZSwge3JlYWQ6IFRlbXBsYXRlUmVmfSlcbiAgICByZWFkb25seSBpdGVtczogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIG9wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRVSV9UQUJTX09QVElPTlMpIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpVGFic09wdGlvbnMsXG4gICAgICAgIEBJbmplY3QoVFVJX1RBQl9NQVJHSU4pIHByaXZhdGUgcmVhZG9ubHkgbWFyZ2luOiBudW1iZXIsXG4gICAgICAgIEBJbmplY3QoVEFCU19SRUZSRVNIKSBwcml2YXRlIHJlYWRvbmx5IHJlZnJlc2gkOiBPYnNlcnZhYmxlPHVua25vd24+LFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9NT1JFX1dPUkQpIHJlYWRvbmx5IG1vcmVXb3JkJDogT2JzZXJ2YWJsZTxzdHJpbmc+LFxuICAgICkge31cblxuICAgIC8vIFRPRE86IEltcHJvdmUgcGVyZm9ybWFuY2VcbiAgICBnZXQgdGFicygpOiByZWFkb25seSBIVE1MRWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW3R1aVRhYl0nKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgICAgICBjb25zdCB7dGFic30gPSB0aGlzO1xuICAgICAgICBjb25zdCBzYWZlQWN0aXZlSW5kZXggPSB0dWlDbGFtcCh0aGlzLmFjdGl2ZUl0ZW1JbmRleCB8fCAwLCAwLCB0YWJzLmxlbmd0aCAtIDIpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlIHx8IHRoaXMubGFzdFZpc2libGVJbmRleCA+PSBzYWZlQWN0aXZlSW5kZXhcbiAgICAgICAgICAgID8gdGFic1tzYWZlQWN0aXZlSW5kZXhdIHx8IG51bGxcbiAgICAgICAgICAgIDogdGhpcy5tb3JlQnV0dG9uPy5uYXRpdmVFbGVtZW50IHx8IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZVZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3RWaXNpYmxlSW5kZXggPCB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZUZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5tb3JlQnV0dG9uICYmIGlzTmF0aXZlRm9jdXNlZCh0aGlzLm1vcmVCdXR0b24ubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZUFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMub3BlbiB8fFxuICAgICAgICAgICAgKCF0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlICYmIHRoaXMubGFzdFZpc2libGVJbmRleCA8IHRoaXMuYWN0aXZlSXRlbUluZGV4KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVBbG9uZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFZpc2libGVJbmRleCA8IDAgJiYgIXRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmU7XG4gICAgfVxuXG4gICAgZ2V0IGxhc3RWaXNpYmxlSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuaXRlbXNMaW1pdCArIDEgPj0gdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1heEluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2Zmc2V0ID1cbiAgICAgICAgICAgIHRoaXMuaXRlbXNMaW1pdCAtIDEgPiB0aGlzLmFjdGl2ZUl0ZW1JbmRleCB8fCAhdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZVxuICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgIDogMjtcblxuICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy5pdGVtc0xpbWl0IC0gb2Zmc2V0LCB0aGlzLm1heEluZGV4KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVmcmVzaCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmdldE1heEluZGV4KCkpLFxuICAgICAgICAgICAgICAgIGZpbHRlcihtYXhJbmRleCA9PiB0aGlzLm1heEluZGV4ICE9PSBtYXhJbmRleCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKG1heEluZGV4ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1heEluZGV4ID0gbWF4SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkFjdGl2ZUl0ZW1JbmRleENoYW5nZShhY3RpdmVJdGVtSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUl0ZW1JbmRleChhY3RpdmVJdGVtSW5kZXgpO1xuICAgIH1cblxuICAgIG9uQ2xpY2soaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb2N1c01vcmUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVJdGVtSW5kZXgoaW5kZXgpO1xuICAgIH1cblxuICAgIG9uQXJyb3dSaWdodChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdHVpQXNzZXJ0SXNIVE1MRWxlbWVudChldmVudC50YXJnZXQpO1xuXG4gICAgICAgIGlmIChpc05hdGl2ZUZvY3VzZWQoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c01vcmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXJyb3dMZWZ0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7dGFic30gPSB0aGlzO1xuICAgICAgICBsZXQgaW5kZXggPSB0YWJzLmxlbmd0aCAtIDI7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHNldE5hdGl2ZUZvY3VzZWQodGFic1tpbmRleF0pO1xuXG4gICAgICAgICAgICBpZiAoaXNOYXRpdmVGb2N1c2VkKHRhYnNbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5kZXgtLTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uV3JhcHBlckFycm93KGV2ZW50OiBFdmVudCwgd3JhcHBlcjogSFRNTEVsZW1lbnQsIHByZXY6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9uOiBIVE1MQnV0dG9uRWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0Q2xvc2VzdEZvY3VzYWJsZShidXR0b24sIHByZXYsIHdyYXBwZXIpO1xuXG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAgIHNldE5hdGl2ZUZvY3VzZWQodGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzT3ZlcmZsb3duKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ICE9PSB0aGlzLmFjdGl2ZUl0ZW1JbmRleCB8fCAhdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZTtcbiAgICB9XG5cbiAgICBzaG91bGRTaG93KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gdGhpcy5sYXN0VmlzaWJsZUluZGV4ICYmIHRoaXMuaXNPdmVyZmxvd24oaW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNNb3JlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb3JlQnV0dG9uKSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRoaXMubW9yZUJ1dHRvbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWF4SW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qge3RhYnMsIGFjdGl2ZUl0ZW1JbmRleCwgbWFyZ2lufSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHRhYnMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7ZXhwb3NlQWN0aXZlLCBtaW5Nb3JlV2lkdGh9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCB7Y2xpZW50V2lkdGh9ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVdpZHRoID0gdGFic1thY3RpdmVJdGVtSW5kZXhdID8gdGFic1thY3RpdmVJdGVtSW5kZXhdLnNjcm9sbFdpZHRoIDogMDtcbiAgICAgICAgY29uc3QgbW9yZVdpZHRoID0gTWF0aC5tYXgodGFic1t0YWJzLmxlbmd0aCAtIDFdLnNjcm9sbFdpZHRoLCBtaW5Nb3JlV2lkdGgpO1xuICAgICAgICBsZXQgbWF4SW5kZXggPSB0YWJzLmxlbmd0aCAtIDI7XG4gICAgICAgIGxldCB0b3RhbCA9XG4gICAgICAgICAgICB0YWJzLnJlZHVjZSgoYWNjLCB7c2Nyb2xsV2lkdGh9KSA9PiBhY2MgKyBzY3JvbGxXaWR0aCwgMCkgK1xuICAgICAgICAgICAgbWF4SW5kZXggKiBtYXJnaW4gLVxuICAgICAgICAgICAgdGFic1t0YWJzLmxlbmd0aCAtIDFdLnNjcm9sbFdpZHRoO1xuXG4gICAgICAgIGlmICh0b3RhbCA8PSBjbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuIEluZmluaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKG1heEluZGV4KSB7XG4gICAgICAgICAgICB0b3RhbCAtPSB0YWJzW21heEluZGV4XS5zY3JvbGxXaWR0aCArIG1hcmdpbjtcbiAgICAgICAgICAgIG1heEluZGV4LS07XG5cbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZURpc3BsYWNlZCA9IGV4cG9zZUFjdGl2ZSAmJiBhY3RpdmVJdGVtSW5kZXggPiBtYXhJbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZU9mZnNldCA9IGFjdGl2ZURpc3BsYWNlZCA/IGFjdGl2ZVdpZHRoICsgbWFyZ2luIDogMDtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aCA9IHRvdGFsICsgYWN0aXZlT2Zmc2V0ICsgbW9yZVdpZHRoICsgbWFyZ2luO1xuICAgICAgICAgICAgLy8gTmVlZGVkIGZvciBkaWZmZXJlbnQgcm91bmRpbmcgb2YgdmlzaWJsZSBhbmQgaGlkZGVuIGVsZW1lbnRzIHNjcm9sbFdpZHRoXG4gICAgICAgICAgICBjb25zdCBzYWZldHlPZmZzZXQgPSB0b0ludCh0aGlzLm1heEluZGV4ID09PSBtYXhJbmRleCAtIDEpO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFdpZHRoICsgc2FmZXR5T2Zmc2V0IDwgY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF4SW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVBY3RpdmVJdGVtSW5kZXgoYWN0aXZlSXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSXRlbUluZGV4ID09PSBhY3RpdmVJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbUluZGV4ID0gYWN0aXZlSXRlbUluZGV4O1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1JbmRleENoYW5nZS5lbWl0KGFjdGl2ZUl0ZW1JbmRleCk7XG4gICAgICAgIHRoaXMubWF4SW5kZXggPSB0aGlzLmdldE1heEluZGV4KCk7XG4gICAgfVxufVxuIl19
|
|
@@ -156,7 +156,7 @@ var TuiTabsWithMoreComponent = /** @class */ (function () {
|
|
|
156
156
|
return acc + scrollWidth;
|
|
157
157
|
}, 0) +
|
|
158
158
|
maxIndex * margin -
|
|
159
|
-
|
|
159
|
+
tabs[tabs.length - 1].scrollWidth;
|
|
160
160
|
if (total <= clientWidth) {
|
|
161
161
|
return Infinity;
|
|
162
162
|
}
|
|
@@ -238,4 +238,4 @@ var TuiTabsWithMoreComponent = /** @class */ (function () {
|
|
|
238
238
|
return TuiTabsWithMoreComponent;
|
|
239
239
|
}());
|
|
240
240
|
export { TuiTabsWithMoreComponent };
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy13aXRoLW1vcmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3RhYnMvIiwic291cmNlcyI6WyJ0YWJzLXdpdGgtbW9yZS90YWJzLXdpdGgtbW9yZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsS0FBSyxFQUVMLHNCQUFzQixFQUN0QixRQUFRLEVBRVIsY0FBYyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsYUFBYSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsY0FBYyxFQUFFLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXhFLFdBQVc7QUFRWDtJQW9DSSxrQ0FDK0MsT0FBdUIsRUFDekIsTUFBYyxFQUNoQixRQUE2QixFQUMvQixVQUFtQyxFQUM1QixpQkFBb0MsRUFDaEQs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UUFEQyxlQUFlLENBQUMsZUFBZSxFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBQyxDQUFDOzJEQUN3QjtJQWhDckUsd0JBQXdCO1FBUHBDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSwwQ0FBMEM7WUFDcEQsaTlFQUE2QztZQUU3QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtZQUMvQyxTQUFTLEVBQUUsY0FBYzs7U0FDNUIsQ0FBQztRQXNDTyxXQUFBLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQ3hCLFdBQUEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ3RCLFdBQUEsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3BCLFdBQUEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2xCLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDekIsV0FBQSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7T0ExQ2pCLHdCQUF3QixDQWlOcEM7SUFBRCwrQkFBQztDQUFBLEFBak5ELElBaU5DO1NBak5ZLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEVNUFRZX1FVRVJZLFxuICAgIGdldENsb3Nlc3RGb2N1c2FibGUsXG4gICAgaXNOYXRpdmVGb2N1c2VkLFxuICAgIHNldE5hdGl2ZUZvY3VzZWQsXG4gICAgdG9JbnQsXG4gICAgVHVpQWN0aXZlWm9uZURpcmVjdGl2ZSxcbiAgICB0dWlBc3NlcnRJc0hUTUxFbGVtZW50LFxuICAgIHR1aUNsYW1wLFxuICAgIFR1aUNvbnRleHRXaXRoSW1wbGljaXQsXG4gICAgdHVpRGVmYXVsdFByb3AsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtUVUlfTU9SRV9XT1JELCBUVUlfVEFCX01BUkdJTn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtUdWlUYWJEaXJlY3RpdmV9IGZyb20gJy4uL3RhYi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtUdWlUYWJDb21wb25lbnR9IGZyb20gJy4uL3RhYi90YWIuY29tcG9uZW50JztcbmltcG9ydCB7VFVJX1RBQlNfT1BUSU9OUywgVHVpVGFic09wdGlvbnN9IGZyb20gJy4uL3RhYnMtb3B0aW9ucyc7XG5pbXBvcnQge1RBQlNfUFJPVklERVJTLCBUQUJTX1JFRlJFU0h9IGZyb20gJy4vdGFicy13aXRoLW1vcmUucHJvdmlkZXJzJztcblxuLy8gQGR5bmFtaWNcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLXRhYnMtd2l0aC1tb3JlLCBuYXZbdHVpVGFic1dpdGhNb3JlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYnMtd2l0aC1tb3JlLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYnMtd2l0aC1tb3JlLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFRBQlNfUFJPVklERVJTLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlUYWJzV2l0aE1vcmVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKFR1aVRhYkNvbXBvbmVudCwge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9yZUJ1dHRvbj86IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSBtYXhJbmRleCA9IEluZmluaXR5O1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1vcmVDb250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50ID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgZHJvcGRvd25Db250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8VHVpQWN0aXZlWm9uZURpcmVjdGl2ZT4+ID1cbiAgICAgICAgJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX3VuZGVybGluZScpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICB1bmRlcmxpbmUgPSB0aGlzLm9wdGlvbnMudW5kZXJsaW5lO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGFjdGl2ZUl0ZW1JbmRleCA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaXRlbXNMaW1pdCA9IHRoaXMub3B0aW9ucy5pdGVtc0xpbWl0O1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgYWN0aXZlSXRlbUluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFR1aVRhYkRpcmVjdGl2ZSwge3JlYWQ6IFRlbXBsYXRlUmVmfSlcbiAgICByZWFkb25seSBpdGVtczogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIG9wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRVSV9UQUJTX09QVElPTlMpIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpVGFic09wdGlvbnMsXG4gICAgICAgIEBJbmplY3QoVFVJX1RBQl9NQVJHSU4pIHByaXZhdGUgcmVhZG9ubHkgbWFyZ2luOiBudW1iZXIsXG4gICAgICAgIEBJbmplY3QoVEFCU19SRUZSRVNIKSBwcml2YXRlIHJlYWRvbmx5IHJlZnJlc2gkOiBPYnNlcnZhYmxlPHVua25vd24+LFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9NT1JFX1dPUkQpIHJlYWRvbmx5IG1vcmVXb3JkJDogT2JzZXJ2YWJsZTxzdHJpbmc+LFxuICAgICkge31cblxuICAgIC8vIFRPRE86IEltcHJvdmUgcGVyZm9ybWFuY2VcbiAgICBnZXQgdGFicygpOiByZWFkb25seSBIVE1MRWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW3R1aVRhYl0nKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgICAgICBjb25zdCB7dGFic30gPSB0aGlzO1xuICAgICAgICBjb25zdCBzYWZlQWN0aXZlSW5kZXggPSB0dWlDbGFtcCh0aGlzLmFjdGl2ZUl0ZW1JbmRleCB8fCAwLCAwLCB0YWJzLmxlbmd0aCAtIDIpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlIHx8IHRoaXMubGFzdFZpc2libGVJbmRleCA+PSBzYWZlQWN0aXZlSW5kZXhcbiAgICAgICAgICAgID8gdGFic1tzYWZlQWN0aXZlSW5kZXhdIHx8IG51bGxcbiAgICAgICAgICAgIDogdGhpcy5tb3JlQnV0dG9uPy5uYXRpdmVFbGVtZW50IHx8IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZVZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3RWaXNpYmxlSW5kZXggPCB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZUZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5tb3JlQnV0dG9uICYmIGlzTmF0aXZlRm9jdXNlZCh0aGlzLm1vcmVCdXR0b24ubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZUFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMub3BlbiB8fFxuICAgICAgICAgICAgKCF0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlICYmIHRoaXMubGFzdFZpc2libGVJbmRleCA8IHRoaXMuYWN0aXZlSXRlbUluZGV4KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVBbG9uZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFZpc2libGVJbmRleCA8IDAgJiYgIXRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmU7XG4gICAgfVxuXG4gICAgZ2V0IGxhc3RWaXNpYmxlSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuaXRlbXNMaW1pdCArIDEgPj0gdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1heEluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2Zmc2V0ID1cbiAgICAgICAgICAgIHRoaXMuaXRlbXNMaW1pdCAtIDEgPiB0aGlzLmFjdGl2ZUl0ZW1JbmRleCB8fCAhdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZVxuICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgIDogMjtcblxuICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy5pdGVtc0xpbWl0IC0gb2Zmc2V0LCB0aGlzLm1heEluZGV4KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVmcmVzaCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmdldE1heEluZGV4KCkpLFxuICAgICAgICAgICAgICAgIGZpbHRlcihtYXhJbmRleCA9PiB0aGlzLm1heEluZGV4ICE9PSBtYXhJbmRleCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKG1heEluZGV4ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1heEluZGV4ID0gbWF4SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkFjdGl2ZUl0ZW1JbmRleENoYW5nZShhY3RpdmVJdGVtSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUl0ZW1JbmRleChhY3RpdmVJdGVtSW5kZXgpO1xuICAgIH1cblxuICAgIG9uQ2xpY2soaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb2N1c01vcmUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVJdGVtSW5kZXgoaW5kZXgpO1xuICAgIH1cblxuICAgIG9uQXJyb3dSaWdodChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdHVpQXNzZXJ0SXNIVE1MRWxlbWVudChldmVudC50YXJnZXQpO1xuXG4gICAgICAgIGlmIChpc05hdGl2ZUZvY3VzZWQoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c01vcmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXJyb3dMZWZ0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7dGFic30gPSB0aGlzO1xuICAgICAgICBsZXQgaW5kZXggPSB0YWJzLmxlbmd0aCAtIDI7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHNldE5hdGl2ZUZvY3VzZWQodGFic1tpbmRleF0pO1xuXG4gICAgICAgICAgICBpZiAoaXNOYXRpdmVGb2N1c2VkKHRhYnNbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5kZXgtLTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uV3JhcHBlckFycm93KGV2ZW50OiBFdmVudCwgd3JhcHBlcjogSFRNTEVsZW1lbnQsIHByZXY6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9uOiBIVE1MQnV0dG9uRWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0Q2xvc2VzdEZvY3VzYWJsZShidXR0b24sIHByZXYsIHdyYXBwZXIpO1xuXG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAgIHNldE5hdGl2ZUZvY3VzZWQodGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzT3ZlcmZsb3duKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ICE9PSB0aGlzLmFjdGl2ZUl0ZW1JbmRleCB8fCAhdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZTtcbiAgICB9XG5cbiAgICBzaG91bGRTaG93KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gdGhpcy5sYXN0VmlzaWJsZUluZGV4ICYmIHRoaXMuaXNPdmVyZmxvd24oaW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNNb3JlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb3JlQnV0dG9uKSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRoaXMubW9yZUJ1dHRvbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWF4SW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qge3RhYnMsIGFjdGl2ZUl0ZW1JbmRleCwgbWFyZ2lufSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHRhYnMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7ZXhwb3NlQWN0aXZlLCBtaW5Nb3JlV2lkdGh9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCB7Y2xpZW50V2lkdGh9ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVdpZHRoID0gdGFic1thY3RpdmVJdGVtSW5kZXhdID8gdGFic1thY3RpdmVJdGVtSW5kZXhdLnNjcm9sbFdpZHRoIDogMDtcbiAgICAgICAgY29uc3QgbW9yZVdpZHRoID0gTWF0aC5tYXgodGFic1t0YWJzLmxlbmd0aCAtIDFdLnNjcm9sbFdpZHRoLCBtaW5Nb3JlV2lkdGgpO1xuICAgICAgICBsZXQgbWF4SW5kZXggPSB0YWJzLmxlbmd0aCAtIDI7XG4gICAgICAgIGxldCB0b3RhbCA9XG4gICAgICAgICAgICB0YWJzLnJlZHVjZSgoYWNjLCB7c2Nyb2xsV2lkdGh9KSA9PiBhY2MgKyBzY3JvbGxXaWR0aCwgMCkgK1xuICAgICAgICAgICAgbWF4SW5kZXggKiBtYXJnaW4gLVxuICAgICAgICAgICAgbW9yZVdpZHRoO1xuXG4gICAgICAgIGlmICh0b3RhbCA8PSBjbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuIEluZmluaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKG1heEluZGV4KSB7XG4gICAgICAgICAgICB0b3RhbCAtPSB0YWJzW21heEluZGV4XS5zY3JvbGxXaWR0aCArIG1hcmdpbjtcbiAgICAgICAgICAgIG1heEluZGV4LS07XG5cbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZURpc3BsYWNlZCA9IGV4cG9zZUFjdGl2ZSAmJiBhY3RpdmVJdGVtSW5kZXggPiBtYXhJbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZU9mZnNldCA9IGFjdGl2ZURpc3BsYWNlZCA/IGFjdGl2ZVdpZHRoICsgbWFyZ2luIDogMDtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aCA9IHRvdGFsICsgYWN0aXZlT2Zmc2V0ICsgbW9yZVdpZHRoICsgbWFyZ2luO1xuICAgICAgICAgICAgLy8gTmVlZGVkIGZvciBkaWZmZXJlbnQgcm91bmRpbmcgb2YgdmlzaWJsZSBhbmQgaGlkZGVuIGVsZW1lbnRzIHNjcm9sbFdpZHRoXG4gICAgICAgICAgICBjb25zdCBzYWZldHlPZmZzZXQgPSB0b0ludCh0aGlzLm1heEluZGV4ID09PSBtYXhJbmRleCAtIDEpO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFdpZHRoICsgc2FmZXR5T2Zmc2V0IDwgY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF4SW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVBY3RpdmVJdGVtSW5kZXgoYWN0aXZlSXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSXRlbUluZGV4ID09PSBhY3RpdmVJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbUluZGV4ID0gYWN0aXZlSXRlbUluZGV4O1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1JbmRleENoYW5nZS5lbWl0KGFjdGl2ZUl0ZW1JbmRleCk7XG4gICAgICAgIHRoaXMubWF4SW5kZXggPSB0aGlzLmdldE1heEluZGV4KCk7XG4gICAgfVxufVxuIl19
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy13aXRoLW1vcmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3RhYnMvIiwic291cmNlcyI6WyJ0YWJzLXdpdGgtbW9yZS90YWJzLXdpdGgtbW9yZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsS0FBSyxFQUVMLHNCQUFzQixFQUN0QixRQUFRLEVBRVIsY0FBYyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsYUFBYSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsY0FBYyxFQUFFLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXhFLFdBQVc7QUFRWDtJQW9DSSxrQ0FDK0MsT0FBdUIsRUFDekIsTUFBYyxFQUNoQixRQUE2QixFQUMvQixVQUFtQyxFQUM1QixpQkFBb0MsRUFDaEQs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RUFBRTtnRUFDb0I7SUFHckM7UUFEQyxNQUFNLEVBQUU7MkVBQ21EO0lBRzVEO1FBREMsZUFBZSxDQUFDLGVBQWUsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUMsQ0FBQzsyREFDd0I7SUFoQ3JFLHdCQUF3QjtRQVBwQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsMENBQTBDO1lBQ3BELGk5RUFBNkM7WUFFN0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07WUFDL0MsU0FBUyxFQUFFLGNBQWM7O1NBQzVCLENBQUM7UUFzQ08sV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUN4QixXQUFBLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUN0QixXQUFBLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNwQixXQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNsQixXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3pCLFdBQUEsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO09BMUNqQix3QkFBd0IsQ0FpTnBDO0lBQUQsK0JBQUM7Q0FBQSxBQWpORCxJQWlOQztTQWpOWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBFTVBUWV9RVUVSWSxcbiAgICBnZXRDbG9zZXN0Rm9jdXNhYmxlLFxuICAgIGlzTmF0aXZlRm9jdXNlZCxcbiAgICBzZXROYXRpdmVGb2N1c2VkLFxuICAgIHRvSW50LFxuICAgIFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUsXG4gICAgdHVpQXNzZXJ0SXNIVE1MRWxlbWVudCxcbiAgICB0dWlDbGFtcCxcbiAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0LFxuICAgIHR1aURlZmF1bHRQcm9wLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7VFVJX01PUkVfV09SRCwgVFVJX1RBQl9NQVJHSU59IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7VHVpVGFiRGlyZWN0aXZlfSBmcm9tICcuLi90YWIuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpVGFiQ29tcG9uZW50fSBmcm9tICcuLi90YWIvdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQge1RVSV9UQUJTX09QVElPTlMsIFR1aVRhYnNPcHRpb25zfSBmcm9tICcuLi90YWJzLW9wdGlvbnMnO1xuaW1wb3J0IHtUQUJTX1BST1ZJREVSUywgVEFCU19SRUZSRVNIfSBmcm9tICcuL3RhYnMtd2l0aC1tb3JlLnByb3ZpZGVycyc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS10YWJzLXdpdGgtbW9yZSwgbmF2W3R1aVRhYnNXaXRoTW9yZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJzLXdpdGgtbW9yZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWJzLXdpdGgtbW9yZS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBUQUJTX1BST1ZJREVSUyxcbn0pXG5leHBvcnQgY2xhc3MgVHVpVGFic1dpdGhNb3JlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZChUdWlUYWJDb21wb25lbnQsIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vcmVCdXR0b24/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICAgIHByaXZhdGUgbWF4SW5kZXggPSBJbmZpbml0eTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtb3JlQ29udGVudDogUG9seW1vcnBoZXVzQ29udGVudCA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGRyb3Bkb3duQ29udGVudDogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmU+PiA9XG4gICAgICAgICcnO1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl91bmRlcmxpbmUnKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgdW5kZXJsaW5lID0gdGhpcy5vcHRpb25zLnVuZGVybGluZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBhY3RpdmVJdGVtSW5kZXggPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGl0ZW1zTGltaXQgPSB0aGlzLm9wdGlvbnMuaXRlbXNMaW1pdDtcblxuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGFjdGl2ZUl0ZW1JbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUdWlUYWJEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gICAgcmVhZG9ubHkgaXRlbXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUVUlfVEFCU19PUFRJT05TKSBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFR1aVRhYnNPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9UQUJfTUFSR0lOKSBwcml2YXRlIHJlYWRvbmx5IG1hcmdpbjogbnVtYmVyLFxuICAgICAgICBASW5qZWN0KFRBQlNfUkVGUkVTSCkgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoJDogT2JzZXJ2YWJsZTx1bmtub3duPixcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfTU9SRV9XT1JEKSByZWFkb25seSBtb3JlV29yZCQ6IE9ic2VydmFibGU8c3RyaW5nPixcbiAgICApIHt9XG5cbiAgICAvLyBUT0RPOiBJbXByb3ZlIHBlcmZvcm1hbmNlXG4gICAgZ2V0IHRhYnMoKTogcmVhZG9ubHkgSFRNTEVsZW1lbnRbXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1t0dWlUYWJdJyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGFjdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgY29uc3Qge3RhYnN9ID0gdGhpcztcbiAgICAgICAgY29uc3Qgc2FmZUFjdGl2ZUluZGV4ID0gdHVpQ2xhbXAodGhpcy5hY3RpdmVJdGVtSW5kZXggfHwgMCwgMCwgdGFicy5sZW5ndGggLSAyKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZSB8fCB0aGlzLmxhc3RWaXNpYmxlSW5kZXggPj0gc2FmZUFjdGl2ZUluZGV4XG4gICAgICAgICAgICA/IHRhYnNbc2FmZUFjdGl2ZUluZGV4XSB8fCBudWxsXG4gICAgICAgICAgICA6IHRoaXMubW9yZUJ1dHRvbj8ubmF0aXZlRWxlbWVudCB8fCBudWxsO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmlzaWJsZUluZGV4IDwgdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVGb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubW9yZUJ1dHRvbiAmJiBpc05hdGl2ZUZvY3VzZWQodGhpcy5tb3JlQnV0dG9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm9wZW4gfHxcbiAgICAgICAgICAgICghdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZSAmJiB0aGlzLmxhc3RWaXNpYmxlSW5kZXggPCB0aGlzLmFjdGl2ZUl0ZW1JbmRleClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaXNNb3JlQWxvbmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3RWaXNpYmxlSW5kZXggPCAwICYmICF0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlO1xuICAgIH1cblxuICAgIGdldCBsYXN0VmlzaWJsZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zTGltaXQgKyAxID49IHRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhJbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9mZnNldCA9XG4gICAgICAgICAgICB0aGlzLml0ZW1zTGltaXQgLSAxID4gdGhpcy5hY3RpdmVJdGVtSW5kZXggfHwgIXRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmVcbiAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICA6IDI7XG5cbiAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMuaXRlbXNMaW1pdCAtIG9mZnNldCwgdGhpcy5tYXhJbmRleCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlZnJlc2gkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5nZXRNYXhJbmRleCgpKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIobWF4SW5kZXggPT4gdGhpcy5tYXhJbmRleCAhPT0gbWF4SW5kZXgpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShtYXhJbmRleCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXhJbmRleCA9IG1heEluZGV4O1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25BY3RpdmVJdGVtSW5kZXhDaGFuZ2UoYWN0aXZlSXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVJdGVtSW5kZXgoYWN0aXZlSXRlbUluZGV4KTtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNNb3JlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQWN0aXZlSXRlbUluZGV4KGluZGV4KTtcbiAgICB9XG5cbiAgICBvbkFycm93UmlnaHQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHR1aUFzc2VydElzSFRNTEVsZW1lbnQoZXZlbnQudGFyZ2V0KTtcblxuICAgICAgICBpZiAoaXNOYXRpdmVGb2N1c2VkKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNNb3JlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93TGVmdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge3RhYnN9ID0gdGhpcztcbiAgICAgICAgbGV0IGluZGV4ID0gdGFicy5sZW5ndGggLSAyO1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRhYnNbaW5kZXhdKTtcblxuICAgICAgICAgICAgaWYgKGlzTmF0aXZlRm9jdXNlZCh0YWJzW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbldyYXBwZXJBcnJvdyhldmVudDogRXZlbnQsIHdyYXBwZXI6IEhUTUxFbGVtZW50LCBwcmV2OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGdldENsb3Nlc3RGb2N1c2FibGUoYnV0dG9uLCBwcmV2LCB3cmFwcGVyKTtcblxuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc092ZXJmbG93bihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpbmRleCAhPT0gdGhpcy5hY3RpdmVJdGVtSW5kZXggfHwgIXRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmU7XG4gICAgfVxuXG4gICAgc2hvdWxkU2hvdyhpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpbmRleCA+IHRoaXMubGFzdFZpc2libGVJbmRleCAmJiB0aGlzLmlzT3ZlcmZsb3duKGluZGV4KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzTW9yZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9yZUJ1dHRvbikge1xuICAgICAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0aGlzLm1vcmVCdXR0b24ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1heEluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHt0YWJzLCBhY3RpdmVJdGVtSW5kZXgsIG1hcmdpbn0gPSB0aGlzO1xuXG4gICAgICAgIGlmICh0YWJzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge2V4cG9zZUFjdGl2ZSwgbWluTW9yZVdpZHRofSA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgY29uc3Qge2NsaWVudFdpZHRofSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBhY3RpdmVXaWR0aCA9IHRhYnNbYWN0aXZlSXRlbUluZGV4XSA/IHRhYnNbYWN0aXZlSXRlbUluZGV4XS5zY3JvbGxXaWR0aCA6IDA7XG4gICAgICAgIGNvbnN0IG1vcmVXaWR0aCA9IE1hdGgubWF4KHRhYnNbdGFicy5sZW5ndGggLSAxXS5zY3JvbGxXaWR0aCwgbWluTW9yZVdpZHRoKTtcbiAgICAgICAgbGV0IG1heEluZGV4ID0gdGFicy5sZW5ndGggLSAyO1xuICAgICAgICBsZXQgdG90YWwgPVxuICAgICAgICAgICAgdGFicy5yZWR1Y2UoKGFjYywge3Njcm9sbFdpZHRofSkgPT4gYWNjICsgc2Nyb2xsV2lkdGgsIDApICtcbiAgICAgICAgICAgIG1heEluZGV4ICogbWFyZ2luIC1cbiAgICAgICAgICAgIHRhYnNbdGFicy5sZW5ndGggLSAxXS5zY3JvbGxXaWR0aDtcblxuICAgICAgICBpZiAodG90YWwgPD0gY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBJbmZpbml0eTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChtYXhJbmRleCkge1xuICAgICAgICAgICAgdG90YWwgLT0gdGFic1ttYXhJbmRleF0uc2Nyb2xsV2lkdGggKyBtYXJnaW47XG4gICAgICAgICAgICBtYXhJbmRleC0tO1xuXG4gICAgICAgICAgICBjb25zdCBhY3RpdmVEaXNwbGFjZWQgPSBleHBvc2VBY3RpdmUgJiYgYWN0aXZlSXRlbUluZGV4ID4gbWF4SW5kZXg7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVPZmZzZXQgPSBhY3RpdmVEaXNwbGFjZWQgPyBhY3RpdmVXaWR0aCArIG1hcmdpbiA6IDA7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50V2lkdGggPSB0b3RhbCArIGFjdGl2ZU9mZnNldCArIG1vcmVXaWR0aCArIG1hcmdpbjtcbiAgICAgICAgICAgIC8vIE5lZWRlZCBmb3IgZGlmZmVyZW50IHJvdW5kaW5nIG9mIHZpc2libGUgYW5kIGhpZGRlbiBlbGVtZW50cyBzY3JvbGxXaWR0aFxuICAgICAgICAgICAgY29uc3Qgc2FmZXR5T2Zmc2V0ID0gdG9JbnQodGhpcy5tYXhJbmRleCA9PT0gbWF4SW5kZXggLSAxKTtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRXaWR0aCArIHNhZmV0eU9mZnNldCA8IGNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1heEluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQWN0aXZlSXRlbUluZGV4KGFjdGl2ZUl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUl0ZW1JbmRleCA9PT0gYWN0aXZlSXRlbUluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1JbmRleCA9IGFjdGl2ZUl0ZW1JbmRleDtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtSW5kZXhDaGFuZ2UuZW1pdChhY3RpdmVJdGVtSW5kZXgpO1xuICAgICAgICB0aGlzLm1heEluZGV4ID0gdGhpcy5nZXRNYXhJbmRleCgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -423,7 +423,7 @@ let TuiTabsWithMoreComponent = class TuiTabsWithMoreComponent {
|
|
|
423
423
|
let maxIndex = tabs.length - 2;
|
|
424
424
|
let total = tabs.reduce((acc, { scrollWidth }) => acc + scrollWidth, 0) +
|
|
425
425
|
maxIndex * margin -
|
|
426
|
-
|
|
426
|
+
tabs[tabs.length - 1].scrollWidth;
|
|
427
427
|
if (total <= clientWidth) {
|
|
428
428
|
return Infinity;
|
|
429
429
|
}
|