@sd-angular/core 1.2.2 → 1.2.5

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.
Files changed (24) hide show
  1. package/bundles/sd-angular-core-tab-router.umd.js +58 -32
  2. package/bundles/sd-angular-core-tab-router.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-tab-router.umd.min.js +2 -2
  4. package/bundles/sd-angular-core-tab-router.umd.min.js.map +1 -1
  5. package/esm2015/tab-router/sd-angular-core-tab-router.js +2 -1
  6. package/esm2015/tab-router/src/lib/components/tab-router-item/tab-router-item.component.js +2 -2
  7. package/esm2015/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.js +12 -5
  8. package/esm2015/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.js +2 -2
  9. package/esm2015/tab-router/src/lib/directives/router-link-mouse-down.directive.js +22 -0
  10. package/esm2015/tab-router/src/lib/models/tab-router.model.js +1 -1
  11. package/esm2015/tab-router/src/lib/pipes/tab-info.pipe.js +6 -2
  12. package/esm2015/tab-router/src/lib/services/tab-router.service.js +4 -1
  13. package/esm2015/tab-router/src/lib/tab-router.module.js +11 -2
  14. package/fesm2015/sd-angular-core-tab-router.js +51 -11
  15. package/fesm2015/sd-angular-core-tab-router.js.map +1 -1
  16. package/package.json +1 -1
  17. package/{sd-angular-core-1.2.2.tgz → sd-angular-core-1.2.5.tgz} +0 -0
  18. package/tab-router/sd-angular-core-tab-router.d.ts +1 -0
  19. package/tab-router/sd-angular-core-tab-router.metadata.json +1 -1
  20. package/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.d.ts +4 -1
  21. package/tab-router/src/lib/directives/router-link-mouse-down.directive.d.ts +4 -0
  22. package/tab-router/src/lib/models/tab-router.model.d.ts +1 -0
  23. package/tab-router/src/lib/pipes/tab-info.pipe.d.ts +1 -1
  24. package/tab-router/src/lib/services/tab-router.service.d.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/tab-router/src/lib/events/tab-router.event.ts","../../../../projects/sd-core/tab-router/src/lib/services/tab-router.service.ts","../../../../projects/sd-core/tab-router/src/lib/services/tab-decorator.service.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-item/tab-router-item.component.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.ts","../../../../projects/sd-core/tab-router/src/lib/pipes/tab-info.pipe.ts","../../../../projects/sd-core/tab-router/src/lib/tab-router.module.ts","../../../../projects/sd-core/tab-router/src/lib/decorators/tab.decorator.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","length","push","__read","o","m","r","i","ar","error","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","SdTabBase","tab","_tab","defineProperty","SdTabActivated","_super","SdTabDeactivated","SdTabRouterService","notifyService","_this","events","BehaviorSubject","actions","builders","_currentTab","_componentBuilders","addBuilder","builder","some","component","setCurrentTab","pushEvent","Event","setOptions","close","type","_a","key","Injectable","args","providedIn","SdNotifyService","SdTabDecoratorService","tabRouterService","undefined","event","preventDefault","stopPropagation","Component","selector","template","Input","SdTabRouterNavComponent","mode","checkUI","nameWidth","tabRouterNav","nativeElement","clientWidth","tabs","onResize","ViewChild","HostListener","SdTabRouterOutletComponent","router","activatedRoute","cd","injector","compiler","tabDecoratorService","sdNotifyService","_rootRoute","_subscription","Subscription","_firstLoad","_closeTab","isActive","activeKey","activeIndex","findIndex","_k","nextTab","nextUrl","url","nextQueryParams","assign","queryParams","filter","navigate","switchTab","navigateByUrl","markForCheck","_activeRoute","fullUrl","route","params","split","hash","existedIndex","activatedIndex","forEach","index","currentNavigation","getCurrentNavigation","_b","extras","existedTab","_d","_c","parent","routeConfig","loadChildren","module","_l","compileModuleAsync","factory","injector_1","activatedRoute_1","_getActivatedRoute","SdOutletInjector","name","_f","_e","replaceTab","splice","_h","_g","_j","notify","warning","_getActivatedRouteSnapshot","activatedRouteSnapshot","firstChild","add","pipe","RoutesRecognized","NavigationEnd","subscribe","snapshot","routerState","root","urlAfterRedirects","ngOnDestroy","unsubscribe","Router","ActivatedRoute","ChangeDetectorRef","Injector","Compiler","token","notFoundValue","SdTabInfoPipe","transform","map","find","tabInfo","initialName","tooltip","color","Pipe","NgModule","declarations","SdTabRouterItemComponent","imports","RouterModule","CommonModule","MatIconModule","MatTooltipModule","exports","providers","service","take"],"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 __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 (_) 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 Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\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: n === \"return\" } : 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","import { SdTab } from '../models/tab-router.model';\r\n\r\nexport class SdTabBase {\r\n #tab: SdTab | null;\r\n\r\n constructor(tab: SdTab | null) {\r\n this.#tab = tab;\r\n }\r\n\r\n get tab(): SdTab | null {\r\n return this.#tab;\r\n }\r\n}\r\n\r\nexport class SdTabActivated extends SdTabBase {}\r\n\r\nexport class SdTabDeactivated extends SdTabBase {}\r\n\r\nexport declare type SdTabEvent = SdTabActivated | SdTabDeactivated;\r\n","import { Injectable, Type } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTab } from '../models/tab-router.model';\r\nimport { SdTabAction } from '../actions/tab-router.action';\r\nimport { SdTabEvent, SdTabBase } from '../events/tab-router.event';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTabComponentBuilder } from '../decorators/tab.decorator';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SdTabRouterService {\r\n events = new BehaviorSubject<SdTabEvent>(new SdTabBase(null));\r\n actions = new BehaviorSubject<SdTabAction | null>(null);\r\n builders = new BehaviorSubject<SdTabComponentBuilder[]>([]);\r\n\r\n #currentTab: SdTab | null = null;\r\n #componentBuilders: SdTabComponentBuilder[] = [];\r\n constructor(private notifyService: SdNotifyService) {\r\n }\r\n\r\n addBuilder = (builder: SdTabComponentBuilder) => {\r\n if (!this.#componentBuilders.some(e => e.component === builder.component)) {\r\n this.#componentBuilders.push(builder);\r\n this.builders.next(this.#componentBuilders);\r\n }\r\n }\r\n\r\n get currentTab() {\r\n return this.#currentTab;\r\n }\r\n\r\n get key() {\r\n return this.#currentTab?.key || null;\r\n }\r\n\r\n // select = (tabOrKey: string | SdTab): void => {\r\n // const tab = this.#tabs.find(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key === tabOrKey;\r\n // }\r\n // return e.key === tabOrKey?.key;\r\n // });\r\n // if (tab) {\r\n // this.#currentTab = tab;\r\n // }\r\n // }\r\n\r\n // add = (tab: SdTab): void => {\r\n // if (!tab.key) {\r\n // this.notifyService.notify.warning('Tab key is required');\r\n // }\r\n // if (!tab.component) {\r\n // this.notifyService.notify.warning('Tab component is required');\r\n // }\r\n // const existedTab = this.#tabs.find(e => e.key === tab.key);\r\n // if (!existedTab) {\r\n // this.#tabs.push(tab);\r\n // this.select(tab);\r\n // } else {\r\n // this.select(existedTab);\r\n // }\r\n // }\r\n\r\n // remove = (tabOrKey: string | SdTab): void => {\r\n // this.#tabs = this.#tabs.filter(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key !== tabOrKey;\r\n // }\r\n // return e.key !== tabOrKey?.key;\r\n // });\r\n // }\r\n\r\n setCurrentTab = (tab: SdTab): void => {\r\n this.#currentTab = tab;\r\n }\r\n\r\n pushEvent = (tab: SdTab, Event: Type<SdTabEvent>) => {\r\n this.events.next(new Event(tab));\r\n }\r\n\r\n setOptions = () => { };\r\n\r\n close = (tab?: SdTab) => {\r\n if (tab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab,\r\n });\r\n } else if (this.#currentTab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab: this.#currentTab,\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTabRouterService } from './tab-router.service';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdTabDecoratorService {\r\n static tabRouterService = new BehaviorSubject<SdTabRouterService>(undefined);\r\n constructor(tabRouterService: SdTabRouterService) {\r\n SdTabDecoratorService.tabRouterService.next(tabRouterService);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\nimport { SdTabRouterService } from '../../services/tab-router.service';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-item',\r\n templateUrl: './tab-router-item.component.html',\r\n styleUrls: ['./tab-router-item.component.scss'],\r\n})\r\nexport class SdTabRouterItemComponent {\r\n @Input() tab: SdTab;\r\n\r\n constructor(private tabRouterService: SdTabRouterService) {}\r\n\r\n close = (event: Event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.tabRouterService.close(this.tab);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-nav',\r\n templateUrl: './tab-router-nav.component.html',\r\n styleUrls: ['./tab-router-nav.component.scss'],\r\n})\r\nexport class SdTabRouterNavComponent {\r\n @ViewChild('tabRouterNav') tabRouterNav: ElementRef;\r\n\r\n @Input() tabs: SdTab[];\r\n mode: 'default' | 'compact' = 'default';\r\n\r\n constructor() {}\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event): void {\r\n this.checkUI();\r\n }\r\n\r\n checkUI = () => {\r\n const width = this.tabRouterNav.nativeElement.clientWidth;\r\n const nameWidth = (width - this.tabs.length * 64) / this.tabs.length;\r\n if (nameWidth <= 20) {\r\n this.mode = 'compact';\r\n } else {\r\n this.mode = 'default';\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Compiler,\r\n Component,\r\n Injector,\r\n NgModuleRef,\r\n OnDestroy,\r\n OnInit,\r\n Type,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot,\r\n ChildrenOutletContexts,\r\n // ChildrenOutletContexts,\r\n Event,\r\n NavigationEnd,\r\n PRIMARY_OUTLET,\r\n Router,\r\n RoutesRecognized,\r\n} from '@angular/router';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport {\r\n SdTabActivated,\r\n SdTabDeactivated,\r\n} from '../../events/tab-router.event';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\nimport { SdTabAction } from '../../actions/tab-router.action';\r\nimport { SdTabRouterService } from '../../services/tab-router.service';\r\nimport { SdTabRouterNavComponent } from '../tab-router-nav/tab-router-nav.component';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdTabDecoratorService } from '../../services/tab-decorator.service';\r\nimport { filter } from 'rxjs/operators';\r\nimport * as hash from 'object-hash';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-outlet',\r\n templateUrl: './tab-router-outlet.component.html',\r\n styleUrls: ['./tab-router-outlet.component.scss'],\r\n // changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTabRouterOutletComponent implements OnDestroy {\r\n @ViewChild('tabRouterNav') tabRouterNav: SdTabRouterNavComponent;\r\n tabs: SdTab[] = [];\r\n\r\n #rootRoute: ActivatedRoute;\r\n #subscription = new Subscription();\r\n #firstLoad = true;\r\n constructor(\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private cd: ChangeDetectorRef,\r\n private injector: Injector,\r\n private compiler: Compiler,\r\n private tabDecoratorService: SdTabDecoratorService,\r\n private tabRouterService: SdTabRouterService,\r\n private sdNotifyService: SdNotifyService\r\n ) {\r\n this.#subscription.add(\r\n router.events\r\n .pipe(\r\n filter(\r\n (event) =>\r\n event instanceof RoutesRecognized ||\r\n event instanceof NavigationEnd\r\n )\r\n )\r\n .subscribe(async (event: RoutesRecognized | NavigationEnd) => {\r\n if (this.#firstLoad && event instanceof NavigationEnd) {\r\n this.#firstLoad = false;\r\n const route = this.#getActivatedRouteSnapshot(\r\n this.activatedRoute.snapshot\r\n );\r\n this.#rootRoute = this.router.routerState.root;\r\n await this.#activeRoute(\r\n event.urlAfterRedirects || event.url,\r\n route\r\n );\r\n return;\r\n }\r\n if (!this.#firstLoad && event instanceof RoutesRecognized) {\r\n const route = this.#getActivatedRouteSnapshot(event.state.root);\r\n this.#rootRoute = this.router.routerState.root;\r\n await this.#activeRoute(\r\n event.urlAfterRedirects || event.url,\r\n route\r\n );\r\n }\r\n })\r\n );\r\n\r\n this.#subscription.add(\r\n tabRouterService.actions.subscribe((event: SdTabAction | null) => {\r\n if (event && event.type === 'close') {\r\n this.#closeTab(event.tab);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #closeTab = (tab: SdTab) => {\r\n const { isActive, key: activeKey } = tab;\r\n\r\n if (isActive) {\r\n const activeIndex = this.tabs.findIndex(({ key }) => key === activeKey);\r\n const nextTab = this.tabs[activeIndex + 1] || this.tabs[activeIndex - 1];\r\n if (nextTab) {\r\n const { url: nextUrl } = nextTab;\r\n const nextQueryParams = {\r\n ...(nextTab.queryParams || {}),\r\n };\r\n\r\n this.tabs = this.tabs.filter(({ key }) => key !== activeKey);\r\n this.router.navigate([nextUrl], {\r\n queryParams: nextQueryParams,\r\n state: {\r\n switchTab: true,\r\n },\r\n });\r\n } else {\r\n this.tabs = this.tabs.filter(({ key }) => key !== activeKey);\r\n this.router.navigateByUrl('/', {\r\n state: {\r\n switchTab: true,\r\n },\r\n });\r\n }\r\n } else {\r\n this.tabs = this.tabs.filter(({ key }) => key !== tab.key);\r\n this.tabRouterNav?.checkUI();\r\n this.cd.markForCheck();\r\n }\r\n };\r\n\r\n #activeRoute = async (\r\n fullUrl: string,\r\n route: ActivatedRouteSnapshot | null\r\n ) => {\r\n if (!route?.component) {\r\n return;\r\n }\r\n const component = route.component as Type<any>;\r\n const queryParams = {\r\n ...(route.queryParams || {}),\r\n };\r\n const params = {\r\n ...(route.params || {}),\r\n };\r\n\r\n const [url] = fullUrl.split('?');\r\n const key = hash({ url, queryParams });\r\n\r\n let existedIndex = -1;\r\n let activatedIndex = -1;\r\n this.tabs.forEach((tab: SdTab, index: number) => {\r\n if (tab.key === key) {\r\n tab.isActive = true;\r\n existedIndex = index;\r\n } else {\r\n if (tab.isActive) {\r\n activatedIndex = index;\r\n this.tabRouterService.pushEvent(tab, SdTabDeactivated);\r\n }\r\n tab.isActive = false;\r\n }\r\n });\r\n\r\n const currentNavigation = this.router.getCurrentNavigation();\r\n if (existedIndex >= 0 && currentNavigation?.extras?.state?.switchTab) {\r\n const existedTab = this.tabs[existedIndex];\r\n this.tabRouterService.setCurrentTab(existedTab);\r\n this.tabRouterService.pushEvent(existedTab, SdTabActivated);\r\n } else {\r\n if (typeof route?.parent?.routeConfig?.loadChildren === 'function') {\r\n const module = await route.parent.routeConfig.loadChildren();\r\n const factory = await this.compiler.compileModuleAsync(module);\r\n const injector = factory.create(this.injector);\r\n const activatedRoute = this.#getActivatedRoute(\r\n this.#rootRoute,\r\n component\r\n );\r\n\r\n const tab = {\r\n key,\r\n component,\r\n injector: new SdOutletInjector(activatedRoute, injector),\r\n isActive: true,\r\n name: url,\r\n url,\r\n params,\r\n queryParams,\r\n };\r\n\r\n this.tabRouterService.setCurrentTab(tab);\r\n if (\r\n activatedIndex >= 0 &&\r\n currentNavigation?.extras?.state?.replaceTab\r\n ) {\r\n this.tabs.splice(activatedIndex, 1);\r\n }\r\n if (existedIndex >= 0 && !currentNavigation?.extras?.state?.switchTab) {\r\n this.tabs[existedIndex] = tab;\r\n } else {\r\n this.tabs.push(tab);\r\n }\r\n }\r\n\r\n this.tabRouterNav?.checkUI();\r\n if (this.tabs.length > 10) {\r\n this.sdNotifyService.notify.warning(\r\n 'Bạn đã mở quá nhiều tab. Vui lòng tắt các tab không dùng để hệ thống hoạt động tốt hơn.'\r\n );\r\n }\r\n if (this.tabs.length > 12) {\r\n this.tabs.splice(0, this.tabs.length - 10);\r\n }\r\n }\r\n this.cd.markForCheck();\r\n };\r\n\r\n #getActivatedRouteSnapshot = (\r\n activatedRouteSnapshot: ActivatedRouteSnapshot\r\n ): ActivatedRouteSnapshot | null => {\r\n if (!activatedRouteSnapshot) {\r\n return null;\r\n }\r\n while (activatedRouteSnapshot.firstChild) {\r\n activatedRouteSnapshot = activatedRouteSnapshot.firstChild;\r\n }\r\n return activatedRouteSnapshot;\r\n };\r\n\r\n #getActivatedRoute = (\r\n activatedRoute: ActivatedRoute,\r\n component: any\r\n ): ActivatedRoute | null => {\r\n if (!activatedRoute) {\r\n return null;\r\n }\r\n\r\n if (activatedRoute.component && activatedRoute.component === component) {\r\n return activatedRoute;\r\n }\r\n while (activatedRoute.firstChild) {\r\n activatedRoute = activatedRoute.firstChild;\r\n if (activatedRoute.component && activatedRoute.component === component) {\r\n return activatedRoute;\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nclass SdOutletInjector implements Injector {\r\n constructor(\r\n private route: ActivatedRoute | null,\r\n // private childContexts: ChildrenOutletContexts,\r\n private parent: any\r\n ) {}\r\n\r\n get(token: any, notFoundValue?: any): any {\r\n if (token === ActivatedRoute && this.route) {\r\n return this.route;\r\n }\r\n\r\n // if (token === ChildrenOutletContexts) {\r\n // return this.childContexts;\r\n // }\r\n\r\n return this.parent.get(token, notFoundValue);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SdTab, SdTabInfo } from '../models/tab-router.model';\r\nimport { SdTabRouterService } from '../services/tab-router.service';\r\n@Pipe({\r\n name: 'sdTabInfo'\r\n})\r\nexport class SdTabInfoPipe implements PipeTransform {\r\n constructor(private tabRouterService: SdTabRouterService) { }\r\n transform(tab: SdTab): Observable<SdTabInfo> {\r\n return this.tabRouterService.builders.pipe(map(builders => {\r\n const builder = builders.find(e => e.component === tab.component);\r\n if (builder) {\r\n const { url, params, queryParams } = tab;\r\n tab.tabInfo = {\r\n name: typeof (builder.name) === 'function' ?\r\n builder.name({ url, params, queryParams }) : builder.name,\r\n initialName: typeof (builder.initialName) === 'function' ?\r\n builder.initialName({ url, params, queryParams }) : builder.initialName,\r\n tooltip: typeof (builder.tooltip) === 'function' ?\r\n builder.tooltip({ url, params, queryParams }) : builder.tooltip,\r\n color: typeof (builder.color) === 'function' ?\r\n builder.color({ url, params, queryParams }) : builder.color\r\n };\r\n return tab.tabInfo;\r\n }\r\n tab.tabInfo = {\r\n name: tab.url,\r\n initialName: null,\r\n };\r\n return tab.tabInfo;\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { SdTabRouterItemComponent } from './components/tab-router-item/tab-router-item.component';\r\nimport { SdTabRouterNavComponent } from './components/tab-router-nav/tab-router-nav.component';\r\nimport { SdTabRouterOutletComponent } from './components/tab-router-outlet/tab-router-outlet.component';\r\nimport { SdTabInfoPipe } from './pipes/tab-info.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n SdTabRouterItemComponent,\r\n SdTabRouterNavComponent,\r\n SdTabRouterOutletComponent,\r\n SdTabInfoPipe,\r\n ],\r\n imports: [RouterModule, CommonModule, MatIconModule, MatTooltipModule],\r\n exports: [\r\n SdTabRouterItemComponent,\r\n SdTabRouterNavComponent,\r\n SdTabRouterOutletComponent,\r\n ],\r\n providers: [],\r\n})\r\nexport class SdTabRouterModule {}\r\n","import { Type } from '@angular/core';\r\nimport { filter, take, takeWhile } from 'rxjs/operators';\r\nimport { SdTabDecoratorService } from '../services/tab-decorator.service';\r\n\r\nexport declare interface SdTabComponentBuilder {\r\n component: Type<any>;\r\n name: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n initialName: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n tooltip?: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n color?: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n isDetail?: boolean;\r\n}\r\n\r\nexport function SdTabComponent<T>(builder: SdTabComponentBuilder) {\r\n return (constructor: T) => {\r\n SdTabDecoratorService.tabRouterService.pipe(\r\n filter(service => service !== undefined && service !== null),\r\n take(1)).subscribe(service => {\r\n service.addBuilder(builder);\r\n });\r\n };\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/tab-router/src/lib/events/tab-router.event.ts","../../../../projects/sd-core/tab-router/src/lib/services/tab-router.service.ts","../../../../projects/sd-core/tab-router/src/lib/services/tab-decorator.service.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-item/tab-router-item.component.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.ts","../../../../projects/sd-core/tab-router/src/lib/pipes/tab-info.pipe.ts","../../../../projects/sd-core/tab-router/src/lib/directives/router-link-mouse-down.directive.ts","../../../../projects/sd-core/tab-router/src/lib/tab-router.module.ts","../../../../projects/sd-core/tab-router/src/lib/decorators/tab.decorator.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","length","push","__read","o","m","r","i","ar","error","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","SdTabBase","tab","_tab","defineProperty","SdTabActivated","_super","SdTabDeactivated","SdTabRouterService","notifyService","_this","events","BehaviorSubject","actions","builders","currentTabChanges","newTabs","_currentTab","_componentBuilders","addBuilder","builder","some","component","setCurrentTab","pushEvent","Event","setOptions","close","type","_a","key","Injectable","args","providedIn","SdNotifyService","SdTabDecoratorService","tabRouterService","undefined","event","preventDefault","stopPropagation","Component","selector","template","Input","SdTabRouterNavComponent","elementRef","mode","checkUI","nameWidth","tabRouterNav","nativeElement","clientWidth","tabs","onDrop","moveItemInArray","previousIndex","currentIndex","onResize","ElementRef","ViewChild","HostListener","SdTabRouterOutletComponent","router","activatedRoute","cd","injector","compiler","tabDecoratorService","sdNotifyService","_rootRoute","_subscription","Subscription","_firstLoad","_closeTab","isActive","activeKey","activeIndex","findIndex","_k","nextTab","nextUrl","url","nextQueryParams","assign","queryParams","filter","navigate","switchTab","navigateByUrl","markForCheck","_activeRoute","fullUrl","route","params","split","hash","existedIndex","activatedIndex","forEach","index","currentNavigation","getCurrentNavigation","_b","extras","existedTab","_d","_c","parent","routeConfig","loadChildren","module","_l","compileModuleAsync","factory","injector_1","activatedRoute_1","_getActivatedRoute","SdOutletInjector","name","_f","_e","replaceTab","splice","_h","_g","_j","notify","warning","_getActivatedRouteSnapshot","activatedRouteSnapshot","firstChild","add","pipe","RoutesRecognized","NavigationEnd","subscribe","snapshot","routerState","root","urlAfterRedirects","ngOnDestroy","unsubscribe","Router","ActivatedRoute","ChangeDetectorRef","Injector","Compiler","token","notFoundValue","SdTabInfoPipe","transform","tabInfo","of","map","find","initialName","tooltip","color","Pipe","RouterLinkMouseDownDirective","onMouseDown","button","ctrlKey","shiftKey","altKey","metaKey","onClick","RouterLinkWithHref","Directive","NgModule","declarations","SdTabRouterItemComponent","imports","RouterModule","CommonModule","MatIconModule","MatTooltipModule","DragDropModule","exports","providers","service","take"],"mappings":"ulCAgBIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,MAC3EN,EAAGC;;;;;;;;;;;;;;6FAGZS,EAAUV,EAAGC,GACzB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIU,UAAU,uBAAyBC,OAAOX,GAAK,iCAE7D,SAASY,IAAOC,KAAKC,YAAcf,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOc,OAAOf,IAAMY,EAAGN,UAAYN,EAAEM,UAAW,IAAIM,YAyCnEI,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,oBAItDO,EAAYjB,EAASkB,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEZ,KAAMkB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAOpC,OAAU0B,EACvJ,SAASM,EAAKK,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIhB,EAAG,MAAM,IAAI1B,UAAU,mCAC3B,KAAO8B,OACH,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARc,EAAG,GAASf,EAAU,OAAIe,EAAG,GAAKf,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAE9B,KAAK6B,GAAI,GAAKA,EAAEV,SAAWW,EAAIA,EAAE9B,KAAK6B,EAAGe,EAAG,KAAKrB,KAAM,OAAOO,EAE3J,OADID,EAAI,EAAGC,IAAGc,EAAK,CAAS,EAARA,EAAG,GAAQd,EAAEb,QACzB2B,EAAG,IACP,KAAK,EAAG,KAAK,EAAGd,EAAIc,EAAI,MACxB,KAAK,EAAc,OAAXZ,EAAEC,QAAgB,CAAEhB,MAAO2B,EAAG,GAAIrB,MAAM,GAChD,KAAK,EAAGS,EAAEC,QAASJ,EAAIe,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKZ,EAAEI,IAAIS,MAAOb,EAAEG,KAAKU,MAAO,SACxC,QACI,KAAMf,EAAIE,EAAEG,MAAML,EAAIA,EAAEgB,OAAS,GAAKhB,EAAEA,EAAEgB,OAAS,KAAkB,IAAVF,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEZ,EAAI,EAAG,SACjG,GAAc,IAAVY,EAAG,MAAcd,GAAMc,EAAG,GAAKd,EAAE,IAAMc,EAAG,GAAKd,EAAE,IAAM,CAAEE,EAAEC,MAAQW,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYZ,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIc,EAAI,MAC7D,GAAId,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIW,KAAKH,GAAK,MACvDd,EAAE,IAAIE,EAAEI,IAAIS,MAChBb,EAAEG,KAAKU,MAAO,SAEtBD,EAAKjB,EAAK3B,KAAKS,EAASuB,GAC1B,MAAOZ,GAAKwB,EAAK,CAAC,EAAGxB,GAAIS,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARc,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE3B,MAAO2B,EAAG,GAAKA,EAAG,QAAK,EAAQrB,MAAM,GArB9BL,CAAK,CAACwB,EAAGC,MAyBhClD,OAAOc,gBAwBpByC,EAAOC,EAAGP,GACtB,IAAIQ,EAAsB,mBAAXV,QAAyBS,EAAET,OAAOC,UACjD,IAAKS,EAAG,OAAOD,EACf,IAAmBE,EAAY/B,EAA3BgC,EAAIF,EAAElD,KAAKiD,GAAOI,EAAK,GAC3B,IACI,WAAc,IAANX,GAAgBA,KAAM,MAAQS,EAAIC,EAAEjC,QAAQI,MAAM8B,EAAGN,KAAKI,EAAElC,OAExE,MAAOqC,GAASlC,EAAI,CAAEkC,MAAOA,WAEzB,IACQH,IAAMA,EAAE5B,OAAS2B,EAAIE,EAAU,SAAIF,EAAElD,KAAKoD,WAExC,GAAIhC,EAAG,MAAMA,EAAEkC,OAE7B,OAAOD,EAgEX,MAAyB5D,OAAOc,gBAkBhBgD,EAAuBC,EAAUC,EAAOC,EAAM9B,GAC1D,GAAa,MAAT8B,IAAiB9B,EAAG,MAAM,IAAI1B,UAAU,iDAC5C,GAAqB,mBAAVuD,EAAuBD,IAAaC,IAAU7B,GAAK6B,EAAME,IAAIH,GAAW,MAAM,IAAItD,UAAU,4EACvG,MAAgB,MAATwD,EAAe9B,EAAa,MAAT8B,EAAe9B,EAAE5B,KAAKwD,GAAY5B,EAAIA,EAAEX,MAAQwC,EAAMG,IAAIJ,YAGxEK,EAAuBL,EAAUC,EAAOxC,EAAOyC,EAAM9B,GACjE,GAAa,MAAT8B,EAAc,MAAM,IAAIxD,UAAU,kCACtC,GAAa,MAATwD,IAAiB9B,EAAG,MAAM,IAAI1B,UAAU,iDAC5C,GAAqB,mBAAVuD,EAAuBD,IAAaC,IAAU7B,GAAK6B,EAAME,IAAIH,GAAW,MAAM,IAAItD,UAAU,2EACvG,MAAiB,MAATwD,EAAe9B,EAAE5B,KAAKwD,EAAUvC,GAASW,EAAIA,EAAEX,MAAQA,EAAQwC,EAAMK,IAAIN,EAAUvC,GAASA,mBCxOtG,SAAA8C,EAAYC,GAFZC,EAAAH,IAAAzD,UAAA,GAGEwD,EAAAxD,KAAI4D,EAAQD,UAGdvE,OAAAyE,eAAIH,EAAAjE,UAAA,MAAG,KAAP,WACE,OAAAyD,EAAAlD,KAAA4D,6EAIJ,SAAAE,0DAAoClE,EAAAkE,EAAAC,MAAAL,iBAEpC,SAAAM,0DAAsCpE,EAAAoE,EAAAD,MAAAL,gBCGpC,SAAAO,EAAoBC,GAApB,IAAAC,EAAAnE,KAAoBA,KAAAkE,cAAAA,EAPpBlE,KAAAoE,OAAS,IAAIC,EAAAA,gBAA4B,IAAIX,EAAU,OACvD1D,KAAAsE,QAAU,IAAID,EAAAA,gBAAoC,MAClDrE,KAAAuE,SAAW,IAAIF,EAAAA,gBAAyC,IACxDrE,KAAAwE,kBAAoB,IAAIH,EAAAA,gBAAuB,MAC/CrE,KAAAyE,QAAU,IAAIJ,EAAAA,gBAAuB,MACrCK,EAAAjB,IAAAzD,KAA4B,MAC5B2E,EAAAlB,IAAAzD,KAA8C,IAI9CA,KAAA4E,WAAa,SAACC,GACP3B,EAAAiB,EAAAQ,GAAwBG,MAAK,SAAA/D,GAAK,OAAAA,EAAEgE,YAAcF,EAAQE,eAC7D7B,EAAAiB,EAAAQ,GAAwBjC,KAAKmC,GAC7BV,EAAKI,SAASzD,KAAIoC,EAAAiB,EAAAQ,MAkDtB3E,KAAAgF,cAAgB,SAACrB,GACfH,EAAAW,EAAIO,EAAef,GACnBQ,EAAKK,kBAAkB1D,KAAK6C,IAG9B3D,KAAAiF,UAAY,SAACtB,EAAYuB,GACvBf,EAAKC,OAAOtD,KAAK,IAAIoE,EAAMvB,KAG7B3D,KAAAmF,WAAa,aAEbnF,KAAAoF,MAAQ,SAACzB,GACHA,EACFQ,EAAKG,QAAQxD,KAAK,CAChBuE,KAAM,QACN1B,IAAGA,IAEAT,EAAAiB,EAAAO,IACLP,EAAKG,QAAQxD,KAAK,CAChBuE,KAAM,QACN1B,IAAGT,EAAAiB,EAAAO,aAlETtF,OAAAyE,eAAII,EAAAxE,UAAA,aAAU,KAAd,WACE,OAAAyD,EAAAlD,KAAA0E,oCAGFtF,OAAAyE,eAAII,EAAAxE,UAAA,MAAG,KAAP,iBACE,OAAO,QAAA6F,EAAApC,EAAAlD,KAAA0E,UAAA,IAAAY,OAAA,EAAAA,EAAkBC,MAAO,qNA1BnCC,EAAAA,WAAUC,KAAA,CAAC,CACVC,WAAY,oDAJLC,EAAAA,yBCGP,SAAAC,EAAYC,GACVD,EAAsBC,iBAAiB/E,KAAK+E,IAFvCD,EAAAC,iBAAmB,IAAIxB,EAAAA,qBAAoCyB,iIAJnEN,EAAAA,WAAUC,KAAA,CAAC,CACVC,WAAY,oDAFLzB,WCWP,SAAoB4B,GAApB,IAAA1B,EAAAnE,KAAoBA,KAAA6F,iBAAAA,EAEpB7F,KAAAoF,MAAQ,SAACW,GACPA,EAAMC,iBACND,EAAME,kBACN9B,EAAK0B,iBAAiBT,MAAMjB,EAAKR,2BAbpCuC,EAAAA,UAAST,KAAA,CAAC,CACTU,SAAU,qBACVC,SAAA,6rEAJOnC,kCAQNoC,EAAAA,wCCWD,SAAAC,EAAmBC,GAAnB,IAAApC,EAAAnE,KAAmBA,KAAAuG,WAAAA,EAFnBvG,KAAAwG,KAA8B,UAS9BxG,KAAAyG,QAAU,WACR,IACMC,GADQvC,EAAKwC,aAAaC,cAAcC,YACA,GAAnB1C,EAAK2C,KAAKrE,QAAe0B,EAAK2C,KAAKrE,OAE5D0B,EAAKqC,KADHE,GAAa,GACH,UAEA,WAIhB1G,KAAA+G,OAAS,SAAChB,GACRiB,EAAAA,gBAAgB7C,EAAK2C,KAAMf,EAAMkB,cAAelB,EAAMmB,sBAfxDZ,EAAA7G,UAAA0H,SAAA,SAASpB,GACP/F,KAAKyG,oCAfRP,EAAAA,UAAST,KAAA,CAAC,CACTU,SAAU,oBACVC,SAAA,w7BAVAgB,EAAAA,oDAcCC,EAAAA,UAAS5B,KAAA,CAAC,8BAEVY,EAAAA,wBAKAiB,EAAAA,aAAY7B,KAAA,CAAC,gBAAiB,CAAC,+BC2BhC,SAAA8B,EACUC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAhC,EACAiC,GARV,IAAA3D,EAAAnE,KACUA,KAAAwH,OAAAA,EACAxH,KAAAyH,eAAAA,EACAzH,KAAA0H,GAAAA,EACA1H,KAAA2H,SAAAA,EACA3H,KAAA4H,SAAAA,EACA5H,KAAA6H,oBAAAA,EACA7H,KAAA6F,iBAAAA,EACA7F,KAAA8H,gBAAAA,EAbV9H,KAAA8G,KAAgB,GAEhBiB,EAAAtE,IAAAzD,UAAA,GACAgI,EAAAvE,IAAAzD,KAAgB,IAAIiI,EAAAA,cACpBC,EAAAzE,IAAAzD,MAAa,GAyDbmI,EAAA1E,IAAAzD,MAAY,SAAC2D,SACHyE,EAA6BzE,EAAGyE,SAAjBC,EAAc1E,EAAG4B,IAExC,GAAI6C,EAAU,CACZ,IAAME,EAAcnE,EAAK2C,KAAKyB,WAAU,SAACC,GAAY,OAAPA,EAAAjD,MAAe8C,KACvDI,EAAUtE,EAAK2C,KAAKwB,EAAc,IAAMnE,EAAK2C,KAAKwB,EAAc,GACtE,GAAIG,EAAS,CACH,IAAKC,EAAYD,EAAOE,IAC1BC,EAAexJ,OAAAyJ,OAAA,GACfJ,EAAQK,aAAe,IAG7B3E,EAAK2C,KAAO3C,EAAK2C,KAAKiC,QAAO,SAACP,GAAY,OAAPA,EAAAjD,MAAe8C,KAClDlE,EAAKqD,OAAOwB,SAAS,CAACN,GAAU,CAC9BI,YAAaF,EACbxF,MAAO,CACL6F,WAAW,UAIf9E,EAAK2C,KAAO3C,EAAK2C,KAAKiC,QAAO,SAACP,GAAY,OAAPA,EAAAjD,MAAe8C,KAClDlE,EAAKqD,OAAO0B,cAAc,IAAK,CAC7B9F,MAAO,CACL6F,WAAW,UAKjB9E,EAAK2C,KAAO3C,EAAK2C,KAAKiC,QAAO,SAACP,GAAY,OAAPA,EAAAjD,MAAe5B,EAAI4B,OACrC,QAAjBD,EAAAnB,EAAKwC,oBAAY,IAAArB,GAAAA,EAAEmB,UACnBtC,EAAKuD,GAAGyB,kBAIZC,EAAA3F,IAAAzD,MAAe,SACbqJ,EACAC,GAAoC,OAAAnJ,EAAAgE,OAAA,OAAA,GAAA,wHAEpC,OAAKmF,MAAAA,OAAK,EAALA,EAAOvE,YAGNA,EAAYuE,EAAMvE,UAClB+D,EAAW1J,OAAAyJ,OAAA,GACXS,EAAMR,aAAe,IAErBS,EAAMnK,OAAAyJ,OAAA,GACNS,EAAMC,QAAU,IAGhBf,EAAA7F,EAAQ0G,EAAQG,MAAM,KAAI,GAAzBb,EAAGH,EAAA,GACJjD,EAAMkE,EAAAA,QAAK,CAAEd,IAAGA,EAAEG,YAAWA,IAE/BY,GAAgB,EAChBC,GAAkB,EACtB3J,KAAK8G,KAAK8C,SAAQ,SAACjG,EAAYkG,GACzBlG,EAAI4B,MAAQA,GACd5B,EAAIyE,UAAW,EACfsB,EAAeG,IAEXlG,EAAIyE,WACNuB,EAAiBE,EACjB1F,EAAK0B,iBAAiBZ,UAAUtB,EAAKK,IAEvCL,EAAIyE,UAAW,MAIb0B,EAAoB9J,KAAKwH,OAAOuC,uBAClCL,GAAgB,IAAqC,QAApCM,EAA6B,QAA7B1E,EAAIwE,MAAAA,OAAiB,EAAjBA,EAAmBG,cAAM,IAAA3E,OAAA,EAAAA,EAAElC,aAAK,IAAA4G,OAAA,EAAAA,EAAEf,YACnDiB,EAAalK,KAAK8G,KAAK4C,GAC7B1J,KAAK6F,iBAAiBb,cAAckF,GACpClK,KAAK6F,iBAAiBZ,UAAUiF,EAAYpG,UAH1C,CAAA,EAAA,IA7BF,CAAA,gBAkCwD,mBAAnB,QAAjCqG,EAAoB,QAApBC,EAAOd,MAAAA,OAAK,EAALA,EAAOe,cAAM,IAAAD,OAAA,EAAAA,EAAEE,mBAAW,IAAAH,OAAA,EAAAA,EAAEI,cAAnC,CAAA,EAAA,GACa,CAAA,EAAMjB,EAAMe,OAAOC,YAAYC,uBAC9B,OADVC,EAASC,EAAA5I,OACC,CAAA,EAAM7B,KAAK4H,SAAS8C,mBAAmBF,WAAjDG,EAAUF,EAAA5I,OACV+I,EAAWD,EAAQzK,OAAOF,KAAK2H,UAC/BkD,EAAiB3H,EAAAlD,KAAA8K,GAAAnL,KAAAK,KAAIkD,EAAAlD,KAAA+H,GAEzBhD,GAGIpB,EAAM,CACV4B,IAAGA,EACHR,UAASA,EACT4C,SAAU,IAAIoD,EAAiBF,EAAgBD,GAC/CxC,UAAU,EACV4C,KAAMrC,EACNA,IAAGA,EACHY,OAAMA,EACNT,YAAWA,GAGb9I,KAAK6F,iBAAiBb,cAAcrB,GAElCgG,GAAkB,IACc,QADbsB,EACM,QADNC,EACnBpB,MAAAA,OAAiB,EAAjBA,EAAmBG,cAAM,IAAAiB,OAAA,EAAAA,EAAE9H,aAAK,IAAA6H,OAAA,EAAAA,EAAEE,aAElCnL,KAAK8G,KAAKsE,OAAOzB,EAAgB,GAE/BD,GAAgB,KAAsC,QAAjC2B,EAA0B,QAA1BC,EAACxB,MAAAA,OAAiB,EAAjBA,EAAmBG,cAAM,IAAAqB,OAAA,EAAAA,EAAElI,aAAK,IAAAiI,OAAA,EAAAA,EAAEpC,WAC1DjJ,KAAK8G,KAAK4C,GAAgB/F,EAE1B3D,KAAK8G,KAAKpE,KAAKiB,oBAIF,QAAjB4H,EAAAvL,KAAK2G,oBAAY,IAAA4E,GAAAA,EAAE9E,UACfzG,KAAK8G,KAAKrE,OAAS,IACrBzC,KAAK8H,gBAAgB0D,OAAOC,QAC1B,2FAGAzL,KAAK8G,KAAKrE,OAAS,IACrBzC,KAAK8G,KAAKsE,OAAO,EAAGpL,KAAK8G,KAAKrE,OAAS,4BAG3CzC,KAAK0H,GAAGyB,6BAGVuC,EAAAjI,IAAAzD,MAA6B,SAC3B2L,GAEA,IAAKA,EACH,OAAO,KAET,KAAOA,EAAuBC,YAC5BD,EAAyBA,EAAuBC,WAElD,OAAOD,KAGTb,EAAArH,IAAAzD,MAAqB,SACnByH,EACA1C,GAEA,IAAK0C,EACH,OAAO,KAGT,GAAIA,EAAe1C,WAAa0C,EAAe1C,YAAcA,EAC3D,OAAO0C,EAET,KAAOA,EAAemE,YAEpB,IADAnE,EAAiBA,EAAemE,YACb7G,WAAa0C,EAAe1C,YAAcA,EAC3D,OAAO0C,EAGX,OAAO,QAnMPvE,EAAAlD,KAAAgI,GAAmB6D,IACjBrE,EAAOpD,OACJ0H,KACC/C,EAAAA,QACE,SAAChD,GACC,OAAAA,aAAiBgG,EAAAA,kBACjBhG,aAAiBiG,EAAAA,kBAGtBC,WAAU,SAAOlG,GAAuC,OAAA5F,EAAAgE,OAAA,OAAA,GAAA,0EACnDjB,EAAAlD,KAAAkI,IAAmBnC,aAAiBiG,EAAAA,eACtCxI,EAAAxD,KAAIkI,GAAc,GACZoB,EAAQpG,EAAAlD,KAAA0L,GAAA/L,KAAAK,KACZA,KAAKyH,eAAeyE,UAEtB1I,EAAAxD,KAAI+H,EAAc/H,KAAKwH,OAAO2E,YAAYC,MAC1C,CAAA,EAAMlJ,EAAAlD,KAAAoJ,GAAAzJ,KAAAK,KACJ+F,EAAMsG,mBAAqBtG,EAAM4C,IACjCW,KARA,CAAA,EAAA,UAUF,OAJAd,EAAA3G,OAIA,CAAA,iBAEEqB,EAAAlD,KAAAkI,IAAoBnC,aAAiBgG,EAAAA,kBACjCzC,EAAQpG,EAAAlD,KAAA0L,GAAA/L,KAAAK,KAAgC+F,EAAM3C,MAAMgJ,MAC1D5I,EAAAxD,KAAI+H,EAAc/H,KAAKwH,OAAO2E,YAAYC,MAC1C,CAAA,EAAMlJ,EAAAlD,KAAAoJ,GAAAzJ,KAAAK,KACJ+F,EAAMsG,mBAAqBtG,EAAM4C,IACjCW,KALA,CAAA,EAAA,UAGFd,EAAA3G,6CAQRqB,EAAAlD,KAAAgI,GAAmB6D,IACjBhG,EAAiBvB,QAAQ2H,WAAU,SAAClG,GAC9BA,GAAwB,UAAfA,EAAMV,MACjBnC,EAAAiB,EAAAgE,GAAAxI,KAAAwE,EAAe4B,EAAMpC,gBAM7B4D,EAAA9H,UAAA6M,YAAA,WACEpJ,EAAAlD,KAAAgI,GAAmBuE,0IAlEtBrG,EAAAA,UAAST,KAAA,CAAC,CACTU,SAAU,uBACVC,SAAA,q7BApBAoG,EAAAA,cAPAC,EAAAA,sBAXAC,EAAAA,yBAGAC,EAAAA,gBAFAC,EAAAA,gBA+BOhH,SAHA3B,SARA0B,EAAAA,yDAsBN0B,EAAAA,UAAS5B,KAAA,CAAC,mBAuNb,IAAAsF,EAAA,WACE,SAAAA,EACUzB,EAEAe,GAFArK,KAAAsJ,MAAAA,EAEAtJ,KAAAqK,OAAAA,SAGVU,EAAAtL,UAAA8D,IAAA,SAAIsJ,EAAYC,GACd,OAAID,IAAUJ,EAAAA,gBAAkBzM,KAAKsJ,MAC5BtJ,KAAKsJ,MAOPtJ,KAAKqK,OAAO9G,IAAIsJ,EAAOC,MAhBlC,gBC3PE,SAAAC,EAAoBlH,GAAA7F,KAAA6F,iBAAAA,SACpBkH,EAAAtN,UAAAuN,UAAA,SAAUC,EAAoBtJ,GAC5B,OAAIsJ,EACKC,EAAAA,GAAGD,GAELjN,KAAK6F,iBAAiBtB,SAASuH,KAAKqB,EAAAA,KAAI,SAAA5I,GAC7C,IAAMM,EAAUN,EAAS6I,MAAK,SAAArM,GAAK,OAAAA,EAAEgE,YAAcpB,EAAIoB,aACvD,GAAIF,EAAS,CACH,IAAA8D,EAA6BhF,EAAGgF,IAA3BY,EAAwB5F,EAAG4F,OAAnBT,EAAgBnF,EAAGmF,YAWxC,OAVAnF,EAAIsJ,QAAU,CACZjC,KAAgC,mBAAlBnG,EAAY,KACxBA,EAAQmG,KAAK,CAAErC,IAAGA,EAAEY,OAAMA,EAAET,YAAWA,IAAMjE,EAAQmG,KACvDqC,YAA8C,mBAAzBxI,EAAmB,YACtCA,EAAQwI,YAAY,CAAE1E,IAAGA,EAAEY,OAAMA,EAAET,YAAWA,IAAMjE,EAAQwI,YAC9DC,QAAsC,mBAArBzI,EAAe,QAC9BA,EAAQyI,QAAQ,CAAE3E,IAAGA,EAAEY,OAAMA,EAAET,YAAWA,IAAMjE,EAAQyI,QAC1DC,MAAkC,mBAAnB1I,EAAa,MAC1BA,EAAQ0I,MAAM,CAAE5E,IAAGA,EAAEY,OAAMA,EAAET,YAAWA,IAAMjE,EAAQ0I,OAEnD5J,EAAIsJ,QAMb,OAJAtJ,EAAIsJ,QAAU,CACZjC,KAAMrH,EAAIgF,IACV0E,YAAa,MAER1J,EAAIsJ,sCA7BhBO,EAAAA,KAAI/H,KAAA,CAAC,CACJuF,KAAM,yDAFC/G,uBCET,SAAAwJ,0DAAkD7N,EAAA6N,EAAA1J,GAQhD0J,EAAAhO,UAAAiO,YAAA,SACEC,EACAC,EACAC,EACAC,EACAC,GAEA,OAAO/N,KAAKgO,QAAQL,EAAQC,EAASC,EAAUC,EAAQC,OAfTE,EAAAA,wCAHjDC,EAAAA,UAASzI,KAAA,CAAC,CACTU,SAAU,0EAGTmB,EAAAA,aAAY7B,KAAA,CAAC,YAAa,CACzB,gBACA,iBACA,kBACA,gBACA,4BCuBJ,iCAtBC0I,EAAAA,SAAQ1I,KAAA,CAAC,CACR2I,aAAc,CACZC,EACA/H,EACAiB,EACAwF,EACAU,GAEFa,QAAS,CACPC,EAAAA,aACAC,EAAAA,aACAC,EAAAA,cACAC,EAAAA,iBACAC,EAAAA,gBAEFC,QAAS,CACPP,EACA/H,EACAiB,GAEFsH,UAAW,kECpBqBhK,GAChC,OAAO,SAAC5E,GACN2F,EAAsBC,iBAAiBiG,KACrC/C,EAAAA,QAAO,SAAA+F,GAAW,OAAAA,MAAAA,KAClBC,EAAAA,KAAK,IAAI9C,WAAU,SAAA6C,GACjBA,EAAQlK,WAAWC","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 __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 (_) 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 Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\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: n === \"return\" } : 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","import { SdTab } from '../models/tab-router.model';\r\n\r\nexport class SdTabBase {\r\n #tab: SdTab | null;\r\n\r\n constructor(tab: SdTab | null) {\r\n this.#tab = tab;\r\n }\r\n\r\n get tab(): SdTab | null {\r\n return this.#tab;\r\n }\r\n}\r\n\r\nexport class SdTabActivated extends SdTabBase {}\r\n\r\nexport class SdTabDeactivated extends SdTabBase {}\r\n\r\nexport declare type SdTabEvent = SdTabActivated | SdTabDeactivated;\r\n","import { Injectable, Type } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTab, SdTabInfo } from '../models/tab-router.model';\r\nimport { SdTabAction } from '../actions/tab-router.action';\r\nimport { SdTabEvent, SdTabBase } from '../events/tab-router.event';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTabComponentBuilder } from '../decorators/tab.decorator';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SdTabRouterService {\r\n events = new BehaviorSubject<SdTabEvent>(new SdTabBase(null));\r\n actions = new BehaviorSubject<SdTabAction | null>(null);\r\n builders = new BehaviorSubject<SdTabComponentBuilder[]>([]);\r\n currentTabChanges = new BehaviorSubject<SdTab>(null);\r\n newTabs = new BehaviorSubject<SdTab>(null);\r\n #currentTab: SdTab | null = null;\r\n #componentBuilders: SdTabComponentBuilder[] = [];\r\n constructor(private notifyService: SdNotifyService) {\r\n }\r\n\r\n addBuilder = (builder: SdTabComponentBuilder) => {\r\n if (!this.#componentBuilders.some(e => e.component === builder.component)) {\r\n this.#componentBuilders.push(builder);\r\n this.builders.next(this.#componentBuilders);\r\n }\r\n }\r\n\r\n get currentTab() {\r\n return this.#currentTab;\r\n }\r\n\r\n get key() {\r\n return this.#currentTab?.key || null;\r\n }\r\n\r\n // select = (tabOrKey: string | SdTab): void => {\r\n // const tab = this.#tabs.find(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key === tabOrKey;\r\n // }\r\n // return e.key === tabOrKey?.key;\r\n // });\r\n // if (tab) {\r\n // this.#currentTab = tab;\r\n // }\r\n // }\r\n\r\n // add = (tab: SdTab): void => {\r\n // if (!tab.key) {\r\n // this.notifyService.notify.warning('Tab key is required');\r\n // }\r\n // if (!tab.component) {\r\n // this.notifyService.notify.warning('Tab component is required');\r\n // }\r\n // const existedTab = this.#tabs.find(e => e.key === tab.key);\r\n // if (!existedTab) {\r\n // this.#tabs.push(tab);\r\n // this.select(tab);\r\n // } else {\r\n // this.select(existedTab);\r\n // }\r\n // }\r\n\r\n // remove = (tabOrKey: string | SdTab): void => {\r\n // this.#tabs = this.#tabs.filter(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key !== tabOrKey;\r\n // }\r\n // return e.key !== tabOrKey?.key;\r\n // });\r\n // }\r\n\r\n\r\n setCurrentTab = (tab: SdTab): void => {\r\n this.#currentTab = tab;\r\n this.currentTabChanges.next(tab);\r\n }\r\n\r\n pushEvent = (tab: SdTab, Event: Type<SdTabEvent>) => {\r\n this.events.next(new Event(tab));\r\n }\r\n\r\n setOptions = () => { };\r\n\r\n close = (tab?: SdTab) => {\r\n if (tab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab,\r\n });\r\n } else if (this.#currentTab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab: this.#currentTab,\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTabRouterService } from './tab-router.service';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdTabDecoratorService {\r\n static tabRouterService = new BehaviorSubject<SdTabRouterService>(undefined);\r\n constructor(tabRouterService: SdTabRouterService) {\r\n SdTabDecoratorService.tabRouterService.next(tabRouterService);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\nimport { SdTabRouterService } from '../../services/tab-router.service';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-item',\r\n templateUrl: './tab-router-item.component.html',\r\n styleUrls: ['./tab-router-item.component.scss'],\r\n})\r\nexport class SdTabRouterItemComponent {\r\n @Input() tab: SdTab;\r\n\r\n constructor(private tabRouterService: SdTabRouterService) {}\r\n\r\n close = (event: Event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.tabRouterService.close(this.tab);\r\n }\r\n}\r\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-nav',\r\n templateUrl: './tab-router-nav.component.html',\r\n styleUrls: ['./tab-router-nav.component.scss'],\r\n})\r\nexport class SdTabRouterNavComponent {\r\n @ViewChild('tabRouterNav') tabRouterNav: ElementRef;\r\n\r\n @Input() tabs: SdTab[];\r\n mode: 'default' | 'compact' = 'default';\r\n\r\n constructor(public elementRef: ElementRef<any>) {}\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event): void {\r\n this.checkUI();\r\n }\r\n\r\n checkUI = () => {\r\n const width = this.tabRouterNav.nativeElement.clientWidth;\r\n const nameWidth = (width - this.tabs.length * 64) / this.tabs.length;\r\n if (nameWidth <= 20) {\r\n this.mode = 'compact';\r\n } else {\r\n this.mode = 'default';\r\n }\r\n }\r\n\r\n onDrop = (event: CdkDragDrop<SdTab[]>) => {\r\n moveItemInArray(this.tabs, event.previousIndex, event.currentIndex);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Compiler,\r\n Component,\r\n Injector,\r\n NgModuleRef,\r\n OnDestroy,\r\n OnInit,\r\n Type,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot,\r\n ChildrenOutletContexts,\r\n // ChildrenOutletContexts,\r\n Event,\r\n NavigationEnd,\r\n PRIMARY_OUTLET,\r\n Router,\r\n RoutesRecognized,\r\n} from '@angular/router';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport {\r\n SdTabActivated,\r\n SdTabDeactivated,\r\n} from '../../events/tab-router.event';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\nimport { SdTabAction } from '../../actions/tab-router.action';\r\nimport { SdTabRouterService } from '../../services/tab-router.service';\r\nimport { SdTabRouterNavComponent } from '../tab-router-nav/tab-router-nav.component';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdTabDecoratorService } from '../../services/tab-decorator.service';\r\nimport { filter } from 'rxjs/operators';\r\nimport hash from 'object-hash';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-outlet',\r\n templateUrl: './tab-router-outlet.component.html',\r\n styleUrls: ['./tab-router-outlet.component.scss'],\r\n // changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTabRouterOutletComponent implements OnDestroy {\r\n @ViewChild('tabRouterNav') tabRouterNav: SdTabRouterNavComponent;\r\n tabs: SdTab[] = [];\r\n\r\n #rootRoute: ActivatedRoute;\r\n #subscription = new Subscription();\r\n #firstLoad = true;\r\n constructor(\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private cd: ChangeDetectorRef,\r\n private injector: Injector,\r\n private compiler: Compiler,\r\n private tabDecoratorService: SdTabDecoratorService,\r\n private tabRouterService: SdTabRouterService,\r\n private sdNotifyService: SdNotifyService\r\n ) {\r\n this.#subscription.add(\r\n router.events\r\n .pipe(\r\n filter(\r\n (event) =>\r\n event instanceof RoutesRecognized ||\r\n event instanceof NavigationEnd\r\n )\r\n )\r\n .subscribe(async (event: RoutesRecognized | NavigationEnd) => {\r\n if (this.#firstLoad && event instanceof NavigationEnd) {\r\n this.#firstLoad = false;\r\n const route = this.#getActivatedRouteSnapshot(\r\n this.activatedRoute.snapshot\r\n );\r\n this.#rootRoute = this.router.routerState.root;\r\n await this.#activeRoute(\r\n event.urlAfterRedirects || event.url,\r\n route\r\n );\r\n return;\r\n }\r\n if (!this.#firstLoad && event instanceof RoutesRecognized) {\r\n const route = this.#getActivatedRouteSnapshot(event.state.root);\r\n this.#rootRoute = this.router.routerState.root;\r\n await this.#activeRoute(\r\n event.urlAfterRedirects || event.url,\r\n route\r\n );\r\n }\r\n })\r\n );\r\n\r\n this.#subscription.add(\r\n tabRouterService.actions.subscribe((event: SdTabAction | null) => {\r\n if (event && event.type === 'close') {\r\n this.#closeTab(event.tab);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #closeTab = (tab: SdTab) => {\r\n const { isActive, key: activeKey } = tab;\r\n\r\n if (isActive) {\r\n const activeIndex = this.tabs.findIndex(({ key }) => key === activeKey);\r\n const nextTab = this.tabs[activeIndex + 1] || this.tabs[activeIndex - 1];\r\n if (nextTab) {\r\n const { url: nextUrl } = nextTab;\r\n const nextQueryParams = {\r\n ...(nextTab.queryParams || {}),\r\n };\r\n\r\n this.tabs = this.tabs.filter(({ key }) => key !== activeKey);\r\n this.router.navigate([nextUrl], {\r\n queryParams: nextQueryParams,\r\n state: {\r\n switchTab: true,\r\n },\r\n });\r\n } else {\r\n this.tabs = this.tabs.filter(({ key }) => key !== activeKey);\r\n this.router.navigateByUrl('/', {\r\n state: {\r\n switchTab: true,\r\n },\r\n });\r\n }\r\n } else {\r\n this.tabs = this.tabs.filter(({ key }) => key !== tab.key);\r\n this.tabRouterNav?.checkUI();\r\n this.cd.markForCheck();\r\n }\r\n };\r\n\r\n #activeRoute = async (\r\n fullUrl: string,\r\n route: ActivatedRouteSnapshot | null\r\n ) => {\r\n if (!route?.component) {\r\n return;\r\n }\r\n const component = route.component as Type<any>;\r\n const queryParams = {\r\n ...(route.queryParams || {}),\r\n };\r\n const params = {\r\n ...(route.params || {}),\r\n };\r\n\r\n const [url] = fullUrl.split('?');\r\n const key = hash({ url, queryParams });\r\n\r\n let existedIndex = -1;\r\n let activatedIndex = -1;\r\n this.tabs.forEach((tab: SdTab, index: number) => {\r\n if (tab.key === key) {\r\n tab.isActive = true;\r\n existedIndex = index;\r\n } else {\r\n if (tab.isActive) {\r\n activatedIndex = index;\r\n this.tabRouterService.pushEvent(tab, SdTabDeactivated);\r\n }\r\n tab.isActive = false;\r\n }\r\n });\r\n\r\n const currentNavigation = this.router.getCurrentNavigation();\r\n if (existedIndex >= 0 && currentNavigation?.extras?.state?.switchTab) {\r\n const existedTab = this.tabs[existedIndex];\r\n this.tabRouterService.setCurrentTab(existedTab);\r\n this.tabRouterService.pushEvent(existedTab, SdTabActivated);\r\n } else {\r\n if (typeof route?.parent?.routeConfig?.loadChildren === 'function') {\r\n const module = await route.parent.routeConfig.loadChildren();\r\n const factory = await this.compiler.compileModuleAsync(module);\r\n const injector = factory.create(this.injector);\r\n const activatedRoute = this.#getActivatedRoute(\r\n this.#rootRoute,\r\n component\r\n );\r\n\r\n const tab = {\r\n key,\r\n component,\r\n injector: new SdOutletInjector(activatedRoute, injector),\r\n isActive: true,\r\n name: url,\r\n url,\r\n params,\r\n queryParams,\r\n };\r\n\r\n this.tabRouterService.setCurrentTab(tab);\r\n if (\r\n activatedIndex >= 0 &&\r\n currentNavigation?.extras?.state?.replaceTab\r\n ) {\r\n this.tabs.splice(activatedIndex, 1);\r\n }\r\n if (existedIndex >= 0 && !currentNavigation?.extras?.state?.switchTab) {\r\n this.tabs[existedIndex] = tab;\r\n } else {\r\n this.tabs.push(tab);\r\n }\r\n }\r\n\r\n this.tabRouterNav?.checkUI();\r\n if (this.tabs.length > 10) {\r\n this.sdNotifyService.notify.warning(\r\n 'Bạn đã mở quá nhiều tab. Vui lòng tắt các tab không dùng để hệ thống hoạt động tốt hơn.'\r\n );\r\n }\r\n if (this.tabs.length > 12) {\r\n this.tabs.splice(0, this.tabs.length - 10);\r\n }\r\n }\r\n this.cd.markForCheck();\r\n };\r\n\r\n #getActivatedRouteSnapshot = (\r\n activatedRouteSnapshot: ActivatedRouteSnapshot\r\n ): ActivatedRouteSnapshot | null => {\r\n if (!activatedRouteSnapshot) {\r\n return null;\r\n }\r\n while (activatedRouteSnapshot.firstChild) {\r\n activatedRouteSnapshot = activatedRouteSnapshot.firstChild;\r\n }\r\n return activatedRouteSnapshot;\r\n };\r\n\r\n #getActivatedRoute = (\r\n activatedRoute: ActivatedRoute,\r\n component: any\r\n ): ActivatedRoute | null => {\r\n if (!activatedRoute) {\r\n return null;\r\n }\r\n\r\n if (activatedRoute.component && activatedRoute.component === component) {\r\n return activatedRoute;\r\n }\r\n while (activatedRoute.firstChild) {\r\n activatedRoute = activatedRoute.firstChild;\r\n if (activatedRoute.component && activatedRoute.component === component) {\r\n return activatedRoute;\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nclass SdOutletInjector implements Injector {\r\n constructor(\r\n private route: ActivatedRoute | null,\r\n // private childContexts: ChildrenOutletContexts,\r\n private parent: any\r\n ) {}\r\n\r\n get(token: any, notFoundValue?: any): any {\r\n if (token === ActivatedRoute && this.route) {\r\n return this.route;\r\n }\r\n\r\n // if (token === ChildrenOutletContexts) {\r\n // return this.childContexts;\r\n // }\r\n\r\n return this.parent.get(token, notFoundValue);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SdTab, SdTabInfo } from '../models/tab-router.model';\r\nimport { SdTabRouterService } from '../services/tab-router.service';\r\n@Pipe({\r\n name: 'sdTabInfo'\r\n})\r\nexport class SdTabInfoPipe implements PipeTransform {\r\n constructor(private tabRouterService: SdTabRouterService) { }\r\n transform(tabInfo: SdTabInfo, tab: SdTab): Observable<SdTabInfo> {\r\n if (tabInfo) {\r\n return of(tabInfo);\r\n }\r\n return this.tabRouterService.builders.pipe(map(builders => {\r\n const builder = builders.find(e => e.component === tab.component);\r\n if (builder) {\r\n const { url, params, queryParams } = tab;\r\n tab.tabInfo = {\r\n name: typeof (builder.name) === 'function' ?\r\n builder.name({ url, params, queryParams }) : builder.name,\r\n initialName: typeof (builder.initialName) === 'function' ?\r\n builder.initialName({ url, params, queryParams }) : builder.initialName,\r\n tooltip: typeof (builder.tooltip) === 'function' ?\r\n builder.tooltip({ url, params, queryParams }) : builder.tooltip,\r\n color: typeof (builder.color) === 'function' ?\r\n builder.color({ url, params, queryParams }) : builder.color\r\n };\r\n return tab.tabInfo;\r\n }\r\n tab.tabInfo = {\r\n name: tab.url,\r\n initialName: null,\r\n };\r\n return tab.tabInfo;\r\n }));\r\n }\r\n}\r\n","import { Directive, HostListener } from \"@angular/core\";\r\nimport { RouterLinkWithHref } from \"@angular/router\";\r\n\r\n@Directive({\r\n selector: \"a[routerLink],area[routerLink]\",\r\n})\r\nexport class RouterLinkMouseDownDirective extends RouterLinkWithHref {\r\n @HostListener(\"mousedown\", [\r\n \"$event.button\",\r\n \"$event.ctrlKey\",\r\n \"$event.shiftKey\",\r\n \"$event.altKey\",\r\n \"$event.metaKey\",\r\n ])\r\n onMouseDown(\r\n button: number,\r\n ctrlKey: boolean,\r\n shiftKey: boolean,\r\n altKey: boolean,\r\n metaKey: boolean\r\n ): boolean {\r\n return this.onClick(button, ctrlKey, shiftKey, altKey, metaKey);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { SdTabRouterItemComponent } from './components/tab-router-item/tab-router-item.component';\r\nimport { SdTabRouterNavComponent } from './components/tab-router-nav/tab-router-nav.component';\r\nimport { SdTabRouterOutletComponent } from './components/tab-router-outlet/tab-router-outlet.component';\r\nimport { SdTabInfoPipe } from './pipes/tab-info.pipe';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { RouterLinkMouseDownDirective } from './directives/router-link-mouse-down.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n SdTabRouterItemComponent,\r\n SdTabRouterNavComponent,\r\n SdTabRouterOutletComponent,\r\n SdTabInfoPipe,\r\n RouterLinkMouseDownDirective,\r\n ],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n DragDropModule\r\n ],\r\n exports: [\r\n SdTabRouterItemComponent,\r\n SdTabRouterNavComponent,\r\n SdTabRouterOutletComponent,\r\n ],\r\n providers: [],\r\n})\r\nexport class SdTabRouterModule {}\r\n","import { Type } from '@angular/core';\r\nimport { filter, take, takeWhile } from 'rxjs/operators';\r\nimport { SdTabDecoratorService } from '../services/tab-decorator.service';\r\n\r\nexport declare interface SdTabComponentBuilder {\r\n component: Type<any>;\r\n name: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n initialName: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n tooltip?: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n color?: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n isDetail?: boolean;\r\n}\r\n\r\nexport function SdTabComponent<T>(builder: SdTabComponentBuilder) {\r\n return (constructor: T) => {\r\n SdTabDecoratorService.tabRouterService.pipe(\r\n filter(service => service !== undefined && service !== null),\r\n take(1)).subscribe(service => {\r\n service.addBuilder(builder);\r\n });\r\n };\r\n}\r\n"]}
@@ -2,5 +2,6 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './index';
5
+ export { RouterLinkMouseDownDirective as ɵb } from './src/lib/directives/router-link-mouse-down.directive';
5
6
  export { SdTabInfoPipe as ɵa } from './src/lib/pipes/tab-info.pipe';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2QtYW5ndWxhci1jb3JlLXRhYi1yb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3RhYi1yb3V0ZXIvIiwic291cmNlcyI6WyJzZC1hbmd1bGFyLWNvcmUtdGFiLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDO0FBRXhCLE9BQU8sRUFBQyxhQUFhLElBQUksRUFBRSxFQUFDLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuXG5leHBvcnQge1NkVGFiSW5mb1BpcGUgYXMgybVhfSBmcm9tICcuL3NyYy9saWIvcGlwZXMvdGFiLWluZm8ucGlwZSc7Il19
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2QtYW5ndWxhci1jb3JlLXRhYi1yb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3RhYi1yb3V0ZXIvIiwic291cmNlcyI6WyJzZC1hbmd1bGFyLWNvcmUtdGFiLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDO0FBRXhCLE9BQU8sRUFBQyw0QkFBNEIsSUFBSSxFQUFFLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUN6RyxPQUFPLEVBQUMsYUFBYSxJQUFJLEVBQUUsRUFBQyxNQUFNLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcblxuZXhwb3J0IHtSb3V0ZXJMaW5rTW91c2VEb3duRGlyZWN0aXZlIGFzIMm1Yn0gZnJvbSAnLi9zcmMvbGliL2RpcmVjdGl2ZXMvcm91dGVyLWxpbmstbW91c2UtZG93bi5kaXJlY3RpdmUnO1xuZXhwb3J0IHtTZFRhYkluZm9QaXBlIGFzIMm1YX0gZnJvbSAnLi9zcmMvbGliL3BpcGVzL3RhYi1pbmZvLnBpcGUnOyJdfQ==
@@ -13,7 +13,7 @@ export class SdTabRouterItemComponent {
13
13
  SdTabRouterItemComponent.decorators = [
14
14
  { type: Component, args: [{
15
15
  selector: 'sd-tab-router-item',
16
- template: "<a [routerLink]=\"[tab.url]\" [queryParams]=\"tab.queryParams\" [state]=\"{ switchTab: true }\"\r\n class=\"tab-router__item d-flex align-items-center\" [ngClass]=\"{\r\n 'tab-router__item--active': tab.isActive\r\n }\">\r\n <ng-container *ngIf=\"tab | sdTabInfo | async as tabInfo\">\r\n <div class=\"\r\n tab-router__icon\r\n d-flex\r\n align-items-center\r\n justify-content-center\r\n mr-8\r\n \" [ngStyle]=\"{\r\n 'background-color': tabInfo.color\r\n }\" [matTooltip]=\"tabInfo.tooltip || tabInfo.name\" matTooltipPosition=\"below\" matTooltipShowDelay=\"1000\">\r\n {{ tabInfo.initialName || 'SD' }}\r\n </div>\r\n <div class=\"flex-1\">\r\n <div class=\"tab-router__name\" [matTooltip]=\"tabInfo.tooltip || tabInfo.name\" matTooltipPosition=\"below\" matTooltipShowDelay=\"1000\">{{ tabInfo.name }}</div>\r\n </div>\r\n <button type=\"button\" class=\"\r\n tab-router__close\r\n d-flex\r\n align-items-center\r\n justify-content-center\r\n ml-4\r\n \" (click)=\"close($event)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n</a>\r\n",
16
+ template: "<a [routerLink]=\"[tab.url]\" [queryParams]=\"tab.queryParams\" [state]=\"{ switchTab: true }\"\r\n class=\"tab-router__item d-flex align-items-center\" [ngClass]=\"{\r\n 'tab-router__item--active': tab.isActive\r\n }\">\r\n <ng-container *ngIf=\"tab.overrideTabInfo | sdTabInfo:tab | async as tabInfo\">\r\n <div class=\"\r\n tab-router__icon\r\n d-flex\r\n align-items-center\r\n justify-content-center\r\n mr-8\r\n \" [ngStyle]=\"{\r\n 'background-color': tabInfo.color\r\n }\" [matTooltip]=\"tabInfo.tooltip || tabInfo.name\" matTooltipPosition=\"below\" matTooltipShowDelay=\"1000\">\r\n {{ tabInfo.initialName || 'SD' }}\r\n </div>\r\n <div class=\"flex-1\">\r\n <div class=\"tab-router__name\" [matTooltip]=\"tabInfo.tooltip || tabInfo.name\" matTooltipPosition=\"below\" matTooltipShowDelay=\"1000\">{{ tabInfo.name }}</div>\r\n </div>\r\n <button type=\"button\" class=\"\r\n tab-router__close\r\n d-flex\r\n align-items-center\r\n justify-content-center\r\n ml-4\r\n \" (click)=\"close($event)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n</a>\r\n",
17
17
  styles: [":host{flex:1 1 auto;max-width:240px;position:relative}:host:after{background:#dde0e5;bottom:0;content:\"\";height:16px;margin:auto;position:absolute;right:0;top:0;width:1px}:host:last-child:after{content:none}.flex-1{flex:1}.tab-router__icon{background-color:#5c6bc0;border-radius:2px;color:#fff;font-size:10px;height:16px;line-height:1;text-transform:uppercase;width:16px}.tab-router__icon .mat-icon{font-size:10px;height:10px;width:10px}.tab-router__close{background:none;border:0;border-radius:50%;color:#757575;height:16px;outline:none;width:16px}.tab-router__close:hover{background-color:rgba(0,0,0,.12)}.tab-router__close .mat-icon{font-size:12px;height:12px;width:12px}.tab-router__item{background:#f2f3f4;color:inherit;font-size:12px;line-height:16px;padding:16px 16px 8px;text-decoration:none}.tab-router__item:hover{background-color:#fff}.tab-router__name{-webkit-box-orient:vertical;-webkit-line-clamp:1;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.tab-router__item--active{background-color:#fff;border-radius:8px 8px 0 0}"]
18
18
  },] }
19
19
  ];
@@ -23,4 +23,4 @@ SdTabRouterItemComponent.ctorParameters = () => [
23
23
  SdTabRouterItemComponent.propDecorators = {
24
24
  tab: [{ type: Input }]
25
25
  };
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy90YWItcm91dGVyLWl0ZW0vdGFiLXJvdXRlci1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQU92RSxNQUFNLE9BQU8sd0JBQXdCO0lBR25DLFlBQW9CLGdCQUFvQztRQUFwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBRXhELFVBQUssR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3ZCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFBO0lBTjBELENBQUM7OztZQVI3RCxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsbW9DQUErQzs7YUFFaEQ7OztZQU5RLGtCQUFrQjs7O2tCQVF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU2RUYWIgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFiLXJvdXRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkVGFiUm91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RhYi1yb3V0ZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLXRhYi1yb3V0ZXItaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYi1yb3V0ZXItaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFiLXJvdXRlci1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYlJvdXRlckl0ZW1Db21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHRhYjogU2RUYWI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFiUm91dGVyU2VydmljZTogU2RUYWJSb3V0ZXJTZXJ2aWNlKSB7fVxyXG5cclxuICBjbG9zZSA9IChldmVudDogRXZlbnQpID0+IHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5jbG9zZSh0aGlzLnRhYik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy90YWItcm91dGVyLWl0ZW0vdGFiLXJvdXRlci1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQU92RSxNQUFNLE9BQU8sd0JBQXdCO0lBR25DLFlBQW9CLGdCQUFvQztRQUFwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBRXhELFVBQUssR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3ZCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFBO0lBTjBELENBQUM7OztZQVI3RCxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsdXBDQUErQzs7YUFFaEQ7OztZQU5RLGtCQUFrQjs7O2tCQVF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU2RUYWIgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFiLXJvdXRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkVGFiUm91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RhYi1yb3V0ZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLXRhYi1yb3V0ZXItaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYi1yb3V0ZXItaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFiLXJvdXRlci1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYlJvdXRlckl0ZW1Db21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHRhYjogU2RUYWI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFiUm91dGVyU2VydmljZTogU2RUYWJSb3V0ZXJTZXJ2aWNlKSB7fVxyXG5cclxuICBjbG9zZSA9IChldmVudDogRXZlbnQpID0+IHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5jbG9zZSh0aGlzLnRhYik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,6 +1,8 @@
1
- import { Component, HostListener, Input, ViewChild, } from '@angular/core';
1
+ import { moveItemInArray } from '@angular/cdk/drag-drop';
2
+ import { Component, ElementRef, HostListener, Input, ViewChild, } from '@angular/core';
2
3
  export class SdTabRouterNavComponent {
3
- constructor() {
4
+ constructor(elementRef) {
5
+ this.elementRef = elementRef;
4
6
  this.mode = 'default';
5
7
  this.checkUI = () => {
6
8
  const width = this.tabRouterNav.nativeElement.clientWidth;
@@ -12,6 +14,9 @@ export class SdTabRouterNavComponent {
12
14
  this.mode = 'default';
13
15
  }
14
16
  };
17
+ this.onDrop = (event) => {
18
+ moveItemInArray(this.tabs, event.previousIndex, event.currentIndex);
19
+ };
15
20
  }
16
21
  onResize(event) {
17
22
  this.checkUI();
@@ -20,14 +25,16 @@ export class SdTabRouterNavComponent {
20
25
  SdTabRouterNavComponent.decorators = [
21
26
  { type: Component, args: [{
22
27
  selector: 'sd-tab-router-nav',
23
- template: "<div\r\n #tabRouterNav\r\n class=\"tab-router__nav tab-router__nav--{{ mode }} d-flex align-items-center\"\r\n>\r\n <ng-container *ngFor=\"let tab of tabs\">\r\n <sd-tab-router-item [tab]=\"tab\"></sd-tab-router-item>\r\n </ng-container>\r\n</div>\r\n",
28
+ template: "<div\r\n #tabRouterNav\r\n cdkDropList\r\n cdkDropListLockAxis=\"x\"\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"onDrop($event)\"\r\n class=\"tab-router__nav tab-router__nav--{{ mode }} d-flex align-items-center\"\r\n>\r\n <ng-container *ngFor=\"let tab of tabs\">\r\n <sd-tab-router-item [tab]=\"tab\" cdkDrag [cdkDragBoundary]=\"elementRef?.nativeElement\"></sd-tab-router-item>\r\n </ng-container>\r\n</div>\r\n",
24
29
  styles: [".tab-router__nav{background:#f9f9f9}.tab-router__nav--compact::ng-deep .tab-router__name{display:none}.tab-router__nav--compact::ng-deep .tab-router__icon{margin:0!important}.tab-router__nav--compact::ng-deep .tab-router__item--active{min-width:240px}.tab-router__nav--compact::ng-deep .tab-router__item--active .tab-router__icon{margin-right:8px!important}.tab-router__nav--compact::ng-deep .tab-router__item--active .tab-router__name{display:-webkit-box}"]
25
30
  },] }
26
31
  ];
27
- SdTabRouterNavComponent.ctorParameters = () => [];
32
+ SdTabRouterNavComponent.ctorParameters = () => [
33
+ { type: ElementRef }
34
+ ];
28
35
  SdTabRouterNavComponent.propDecorators = {
29
36
  tabRouterNav: [{ type: ViewChild, args: ['tabRouterNav',] }],
30
37
  tabs: [{ type: Input }],
31
38
  onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }]
32
39
  };
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS90YWItcm91dGVyLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL3RhYi1yb3V0ZXItbmF2L3RhYi1yb3V0ZXItbmF2LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBU3ZCLE1BQU0sT0FBTyx1QkFBdUI7SUFNbEM7UUFGQSxTQUFJLEdBQTBCLFNBQVMsQ0FBQztRQVN4QyxZQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ2IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1lBQzFELE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3JFLElBQUksU0FBUyxJQUFJLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7YUFDdkI7UUFDSCxDQUFDLENBQUE7SUFmYyxDQUFDO0lBR2hCLFFBQVEsQ0FBQyxLQUFLO1FBQ1osSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7OztZQWhCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsOFFBQThDOzthQUUvQzs7OzsyQkFFRSxTQUFTLFNBQUMsY0FBYzttQkFFeEIsS0FBSzt1QkFLTCxZQUFZLFNBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU2RUYWIgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFiLXJvdXRlci5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLXRhYi1yb3V0ZXItbmF2JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLXJvdXRlci1uYXYuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYi1yb3V0ZXItbmF2LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYlJvdXRlck5hdkNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgndGFiUm91dGVyTmF2JykgdGFiUm91dGVyTmF2OiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoKSB0YWJzOiBTZFRhYltdO1xyXG4gIG1vZGU6ICdkZWZhdWx0JyB8ICdjb21wYWN0JyA9ICdkZWZhdWx0JztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja1VJKCk7XHJcbiAgfVxyXG5cclxuICBjaGVja1VJID0gKCkgPT4ge1xyXG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLnRhYlJvdXRlck5hdi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xyXG4gICAgY29uc3QgbmFtZVdpZHRoID0gKHdpZHRoIC0gdGhpcy50YWJzLmxlbmd0aCAqIDY0KSAvIHRoaXMudGFicy5sZW5ndGg7XHJcbiAgICBpZiAobmFtZVdpZHRoIDw9IDIwKSB7XHJcbiAgICAgIHRoaXMubW9kZSA9ICdjb21wYWN0JztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9kZSA9ICdkZWZhdWx0JztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS90YWItcm91dGVyLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL3RhYi1yb3V0ZXItbmF2L3RhYi1yb3V0ZXItbmF2LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFTdkIsTUFBTSxPQUFPLHVCQUF1QjtJQU1sQyxZQUFtQixVQUEyQjtRQUEzQixlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUY5QyxTQUFJLEdBQTBCLFNBQVMsQ0FBQztRQVN4QyxZQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ2IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1lBQzFELE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3JFLElBQUksU0FBUyxJQUFJLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7YUFDdkI7UUFDSCxDQUFDLENBQUE7UUFFRCxXQUFNLEdBQUcsQ0FBQyxLQUEyQixFQUFFLEVBQUU7WUFDdkMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFBO0lBbkJnRCxDQUFDO0lBR2xELFFBQVEsQ0FBQyxLQUFLO1FBQ1osSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7OztZQWhCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsOGNBQThDOzthQUUvQzs7O1lBWkMsVUFBVTs7OzJCQWNULFNBQVMsU0FBQyxjQUFjO21CQUV4QixLQUFLO3VCQUtMLFlBQVksU0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFNkVGFiIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYi1yb3V0ZXIubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC10YWItcm91dGVyLW5hdicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYi1yb3V0ZXItbmF2LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWItcm91dGVyLW5hdi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RUYWJSb3V0ZXJOYXZDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYlJvdXRlck5hdicpIHRhYlJvdXRlck5hdjogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgdGFiczogU2RUYWJbXTtcclxuICBtb2RlOiAnZGVmYXVsdCcgfCAnY29tcGFjdCcgPSAnZGVmYXVsdCc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPGFueT4pIHt9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uUmVzaXplKGV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmNoZWNrVUkoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrVUkgPSAoKSA9PiB7XHJcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMudGFiUm91dGVyTmF2Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgICBjb25zdCBuYW1lV2lkdGggPSAod2lkdGggLSB0aGlzLnRhYnMubGVuZ3RoICogNjQpIC8gdGhpcy50YWJzLmxlbmd0aDtcclxuICAgIGlmIChuYW1lV2lkdGggPD0gMjApIHtcclxuICAgICAgdGhpcy5tb2RlID0gJ2NvbXBhY3QnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tb2RlID0gJ2RlZmF1bHQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Ecm9wID0gKGV2ZW50OiBDZGtEcmFnRHJvcDxTZFRhYltdPikgPT4ge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMudGFicywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICB9XHJcbn1cclxuIl19
@@ -8,7 +8,7 @@ import { SdTabRouterService } from '../../services/tab-router.service';
8
8
  import { Subscription } from 'rxjs';
9
9
  import { SdTabDecoratorService } from '../../services/tab-decorator.service';
10
10
  import { filter } from 'rxjs/operators';
11
- import * as hash from 'object-hash';
11
+ import hash from 'object-hash';
12
12
  export class SdTabRouterOutletComponent {
13
13
  constructor(router, activatedRoute, cd, injector, compiler, tabDecoratorService, tabRouterService, sdNotifyService) {
14
14
  this.router = router;
@@ -212,4 +212,4 @@ class SdOutletInjector {
212
212
  return this.parent.get(token, notFoundValue);
213
213
  }
214
214
  }
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS90YWItcm91dGVyLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL3RhYi1yb3V0ZXItb3V0bGV0L3RhYi1yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBS1IsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxjQUFjLEVBS2QsYUFBYSxFQUViLE1BQU0sRUFDTixnQkFBZ0IsR0FDakIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsR0FDakIsTUFBTSwrQkFBK0IsQ0FBQztBQUl2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUV2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssSUFBSSxNQUFNLGFBQWEsQ0FBQztBQVFwQyxNQUFNLE9BQU8sMEJBQTBCO0lBT3JDLFlBQ1UsTUFBYyxFQUNkLGNBQThCLEVBQzlCLEVBQXFCLEVBQ3JCLFFBQWtCLEVBQ2xCLFFBQWtCLEVBQ2xCLG1CQUEwQyxFQUMxQyxnQkFBb0MsRUFDcEMsZUFBZ0M7UUFQaEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtR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QUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21waWxlcixcclxuICBDb21wb25lbnQsXHJcbiAgSW5qZWN0b3IsXHJcbiAgTmdNb2R1bGVSZWYsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBUeXBlLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBY3RpdmF0ZWRSb3V0ZSxcclxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gIENoaWxkcmVuT3V0bGV0Q29udGV4dHMsXHJcbiAgLy8gQ2hpbGRyZW5PdXRsZXRDb250ZXh0cyxcclxuICBFdmVudCxcclxuICBOYXZpZ2F0aW9uRW5kLFxyXG4gIFBSSU1BUllfT1VUTEVULFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXNSZWNvZ25pemVkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFNkTm90aWZ5U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbm90aWZ5JztcclxuaW1wb3J0IHtcclxuICBTZFRhYkFjdGl2YXRlZCxcclxuICBTZFRhYkRlYWN0aXZhdGVkLFxyXG59IGZyb20gJy4uLy4uL2V2ZW50cy90YWItcm91dGVyLmV2ZW50JztcclxuXHJcbmltcG9ydCB7IFNkVGFiIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYi1yb3V0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTZFRhYkFjdGlvbiB9IGZyb20gJy4uLy4uL2FjdGlvbnMvdGFiLXJvdXRlci5hY3Rpb24nO1xyXG5pbXBvcnQgeyBTZFRhYlJvdXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWItcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZFRhYlJvdXRlck5hdkNvbXBvbmVudCB9IGZyb20gJy4uL3RhYi1yb3V0ZXItbmF2L3RhYi1yb3V0ZXItbmF2LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZFRhYkRlY29yYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWItZGVjb3JhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCAqIGFzIGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC10YWItcm91dGVyLW91dGxldCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYi1yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWItcm91dGVyLW91dGxldC5jb21wb25lbnQuc2NzcyddLFxyXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RUYWJSb3V0ZXJPdXRsZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYlJvdXRlck5hdicpIHRhYlJvdXRlck5hdjogU2RUYWJSb3V0ZXJOYXZDb21wb25lbnQ7XHJcbiAgdGFiczogU2RUYWJbXSA9IFtdO1xyXG5cclxuICAjcm9vdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICNmaXJzdExvYWQgPSB0cnVlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyLFxyXG4gICAgcHJpdmF0ZSB0YWJEZWNvcmF0b3JTZXJ2aWNlOiBTZFRhYkRlY29yYXRvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRhYlJvdXRlclNlcnZpY2U6IFNkVGFiUm91dGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgc2ROb3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHJvdXRlci5ldmVudHNcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbHRlcihcclxuICAgICAgICAgICAgKGV2ZW50KSA9PlxyXG4gICAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgUm91dGVzUmVjb2duaXplZCB8fFxyXG4gICAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKGFzeW5jIChldmVudDogUm91dGVzUmVjb2duaXplZCB8IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLiNmaXJzdExvYWQgJiYgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuI2ZpcnN0TG9hZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuI2dldEFjdGl2YXRlZFJvdXRlU25hcHNob3QoXHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLiNyb290Um91dGUgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290O1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLiNhY3RpdmVSb3V0ZShcclxuICAgICAgICAgICAgICBldmVudC51cmxBZnRlclJlZGlyZWN0cyB8fCBldmVudC51cmwsXHJcbiAgICAgICAgICAgICAgcm91dGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCF0aGlzLiNmaXJzdExvYWQgJiYgZXZlbnQgaW5zdGFuY2VvZiBSb3V0ZXNSZWNvZ25pemVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy4jZ2V0QWN0aXZhdGVkUm91dGVTbmFwc2hvdChldmVudC5zdGF0ZS5yb290KTtcclxuICAgICAgICAgICAgdGhpcy4jcm9vdFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUucm9vdDtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy4jYWN0aXZlUm91dGUoXHJcbiAgICAgICAgICAgICAgZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMgfHwgZXZlbnQudXJsLFxyXG4gICAgICAgICAgICAgIHJvdXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGFiUm91dGVyU2VydmljZS5hY3Rpb25zLnN1YnNjcmliZSgoZXZlbnQ6IFNkVGFiQWN0aW9uIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnY2xvc2UnKSB7XHJcbiAgICAgICAgICB0aGlzLiNjbG9zZVRhYihldmVudC50YWIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgI2Nsb3NlVGFiID0gKHRhYjogU2RUYWIpID0+IHtcclxuICAgIGNvbnN0IHsgaXNBY3RpdmUsIGtleTogYWN0aXZlS2V5IH0gPSB0YWI7XHJcblxyXG4gICAgaWYgKGlzQWN0aXZlKSB7XHJcbiAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy50YWJzLmZpbmRJbmRleCgoeyBrZXkgfSkgPT4ga2V5ID09PSBhY3RpdmVLZXkpO1xyXG4gICAgICBjb25zdCBuZXh0VGFiID0gdGhpcy50YWJzW2FjdGl2ZUluZGV4ICsgMV0gfHwgdGhpcy50YWJzW2FjdGl2ZUluZGV4IC0gMV07XHJcbiAgICAgIGlmIChuZXh0VGFiKSB7XHJcbiAgICAgICAgY29uc3QgeyB1cmw6IG5leHRVcmwgfSA9IG5leHRUYWI7XHJcbiAgICAgICAgY29uc3QgbmV4dFF1ZXJ5UGFyYW1zID0ge1xyXG4gICAgICAgICAgLi4uKG5leHRUYWIucXVlcnlQYXJhbXMgfHwge30pLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIoKHsga2V5IH0pID0+IGtleSAhPT0gYWN0aXZlS2V5KTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbmV4dFVybF0sIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBuZXh0UXVlcnlQYXJhbXMsXHJcbiAgICAgICAgICBzdGF0ZToge1xyXG4gICAgICAgICAgICBzd2l0Y2hUYWI6IHRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIoKHsga2V5IH0pID0+IGtleSAhPT0gYWN0aXZlS2V5KTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJywge1xyXG4gICAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgICAgc3dpdGNoVGFiOiB0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLmZpbHRlcigoeyBrZXkgfSkgPT4ga2V5ICE9PSB0YWIua2V5KTtcclxuICAgICAgdGhpcy50YWJSb3V0ZXJOYXY/LmNoZWNrVUkoKTtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjYWN0aXZlUm91dGUgPSBhc3luYyAoXHJcbiAgICBmdWxsVXJsOiBzdHJpbmcsXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGxcclxuICApID0+IHtcclxuICAgIGlmICghcm91dGU/LmNvbXBvbmVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb21wb25lbnQgPSByb3V0ZS5jb21wb25lbnQgYXMgVHlwZTxhbnk+O1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgIC4uLihyb3V0ZS5xdWVyeVBhcmFtcyB8fCB7fSksXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICAuLi4ocm91dGUucGFyYW1zIHx8IHt9KSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgW3VybF0gPSBmdWxsVXJsLnNwbGl0KCc/Jyk7XHJcbiAgICBjb25zdCBrZXkgPSBoYXNoKHsgdXJsLCBxdWVyeVBhcmFtcyB9KTtcclxuXHJcbiAgICBsZXQgZXhpc3RlZEluZGV4ID0gLTE7XHJcbiAgICBsZXQgYWN0aXZhdGVkSW5kZXggPSAtMTtcclxuICAgIHRoaXMudGFicy5mb3JFYWNoKCh0YWI6IFNkVGFiLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmICh0YWIua2V5ID09PSBrZXkpIHtcclxuICAgICAgICB0YWIuaXNBY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGV4aXN0ZWRJbmRleCA9IGluZGV4O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0YWIuaXNBY3RpdmUpIHtcclxuICAgICAgICAgIGFjdGl2YXRlZEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICB0aGlzLnRhYlJvdXRlclNlcnZpY2UucHVzaEV2ZW50KHRhYiwgU2RUYWJEZWFjdGl2YXRlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRhYi5pc0FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbiA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7XHJcbiAgICBpZiAoZXhpc3RlZEluZGV4ID49IDAgJiYgY3VycmVudE5hdmlnYXRpb24/LmV4dHJhcz8uc3RhdGU/LnN3aXRjaFRhYikge1xyXG4gICAgICBjb25zdCBleGlzdGVkVGFiID0gdGhpcy50YWJzW2V4aXN0ZWRJbmRleF07XHJcbiAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5zZXRDdXJyZW50VGFiKGV4aXN0ZWRUYWIpO1xyXG4gICAgICB0aGlzLnRhYlJvdXRlclNlcnZpY2UucHVzaEV2ZW50KGV4aXN0ZWRUYWIsIFNkVGFiQWN0aXZhdGVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0eXBlb2Ygcm91dGU/LnBhcmVudD8ucm91dGVDb25maWc/LmxvYWRDaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IGF3YWl0IHJvdXRlLnBhcmVudC5yb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4oKTtcclxuICAgICAgICBjb25zdCBmYWN0b3J5ID0gYXdhaXQgdGhpcy5jb21waWxlci5jb21waWxlTW9kdWxlQXN5bmMobW9kdWxlKTtcclxuICAgICAgICBjb25zdCBpbmplY3RvciA9IGZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICAgIGNvbnN0IGFjdGl2YXRlZFJvdXRlID0gdGhpcy4jZ2V0QWN0aXZhdGVkUm91dGUoXHJcbiAgICAgICAgICB0aGlzLiNyb290Um91dGUsXHJcbiAgICAgICAgICBjb21wb25lbnRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBjb25zdCB0YWIgPSB7XHJcbiAgICAgICAgICBrZXksXHJcbiAgICAgICAgICBjb21wb25lbnQsXHJcbiAgICAgICAgICBpbmplY3RvcjogbmV3IFNkT3V0bGV0SW5qZWN0b3IoYWN0aXZhdGVkUm91dGUsIGluamVjdG9yKSxcclxuICAgICAgICAgIGlzQWN0aXZlOiB0cnVlLFxyXG4gICAgICAgICAgbmFtZTogdXJsLFxyXG4gICAgICAgICAgdXJsLFxyXG4gICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgcXVlcnlQYXJhbXMsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy50YWJSb3V0ZXJTZXJ2aWNlLnNldEN1cnJlbnRUYWIodGFiKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhY3RpdmF0ZWRJbmRleCA+PSAwICYmXHJcbiAgICAgICAgICBjdXJyZW50TmF2aWdhdGlvbj8uZXh0cmFzPy5zdGF0ZT8ucmVwbGFjZVRhYlxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJzLnNwbGljZShhY3RpdmF0ZWRJbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleGlzdGVkSW5kZXggPj0gMCAmJiAhY3VycmVudE5hdmlnYXRpb24/LmV4dHJhcz8uc3RhdGU/LnN3aXRjaFRhYikge1xyXG4gICAgICAgICAgdGhpcy50YWJzW2V4aXN0ZWRJbmRleF0gPSB0YWI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudGFicy5wdXNoKHRhYik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnRhYlJvdXRlck5hdj8uY2hlY2tVSSgpO1xyXG4gICAgICBpZiAodGhpcy50YWJzLmxlbmd0aCA+IDEwKSB7XHJcbiAgICAgICAgdGhpcy5zZE5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoXHJcbiAgICAgICAgICAnQuG6oW4gxJHDoyBt4bufIHF1w6Egbmhp4buBdSB0YWIuIFZ1aSBsw7JuZyB04bqvdCBjw6FjIHRhYiBraMO0bmcgZMO5bmcgxJHhu4MgaOG7hyB0aOG7kW5nIGhv4bqhdCDEkeG7mW5nIHThu5F0IGjGoW4uJ1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudGFicy5sZW5ndGggPiAxMikge1xyXG4gICAgICAgIHRoaXMudGFicy5zcGxpY2UoMCwgdGhpcy50YWJzLmxlbmd0aCAtIDEwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICB9O1xyXG5cclxuICAjZ2V0QWN0aXZhdGVkUm91dGVTbmFwc2hvdCA9IChcclxuICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3RcclxuICApOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCA9PiB7XHJcbiAgICBpZiAoIWFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkKSB7XHJcbiAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3QgPSBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LmZpcnN0Q2hpbGQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYWN0aXZhdGVkUm91dGVTbmFwc2hvdDtcclxuICB9O1xyXG5cclxuICAjZ2V0QWN0aXZhdGVkUm91dGUgPSAoXHJcbiAgICBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBjb21wb25lbnQ6IGFueVxyXG4gICk6IEFjdGl2YXRlZFJvdXRlIHwgbnVsbCA9PiB7XHJcbiAgICBpZiAoIWFjdGl2YXRlZFJvdXRlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQgJiYgYWN0aXZhdGVkUm91dGUuY29tcG9uZW50ID09PSBjb21wb25lbnQpIHtcclxuICAgICAgcmV0dXJuIGFjdGl2YXRlZFJvdXRlO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKGFjdGl2YXRlZFJvdXRlLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgYWN0aXZhdGVkUm91dGUgPSBhY3RpdmF0ZWRSb3V0ZS5maXJzdENoaWxkO1xyXG4gICAgICBpZiAoYWN0aXZhdGVkUm91dGUuY29tcG9uZW50ICYmIGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGFjdGl2YXRlZFJvdXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9O1xyXG59XHJcblxyXG5jbGFzcyBTZE91dGxldEluamVjdG9yIGltcGxlbWVudHMgSW5qZWN0b3Ige1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUgfCBudWxsLFxyXG4gICAgLy8gcHJpdmF0ZSBjaGlsZENvbnRleHRzOiBDaGlsZHJlbk91dGxldENvbnRleHRzLFxyXG4gICAgcHJpdmF0ZSBwYXJlbnQ6IGFueVxyXG4gICkge31cclxuXHJcbiAgZ2V0KHRva2VuOiBhbnksIG5vdEZvdW5kVmFsdWU/OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRva2VuID09PSBBY3RpdmF0ZWRSb3V0ZSAmJiB0aGlzLnJvdXRlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmICh0b2tlbiA9PT0gQ2hpbGRyZW5PdXRsZXRDb250ZXh0cykge1xyXG4gICAgLy8gICByZXR1cm4gdGhpcy5jaGlsZENvbnRleHRzO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXQodG9rZW4sIG5vdEZvdW5kVmFsdWUpO1xyXG4gIH1cclxufVxyXG4iXX0=
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS90YWItcm91dGVyLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL3RhYi1yb3V0ZXItb3V0bGV0L3RhYi1yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBS1IsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxjQUFjLEVBS2QsYUFBYSxFQUViLE1BQU0sRUFDTixnQkFBZ0IsR0FDakIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsR0FDakIsTUFBTSwrQkFBK0IsQ0FBQztBQUl2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUV2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFRL0IsTUFBTSxPQUFPLDBCQUEwQjtJQU9yQyxZQUNVLE1BQWMsRUFDZCxjQUE4QixFQUM5QixFQUFxQixFQUNyQixRQUFrQixFQUNsQixRQUFrQixFQUNsQixtQkFBMEMsRUFDMUMsZ0JBQW9DLEVBQ3BDLGVBQWdDO1FBUGhDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIs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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcGlsZXIsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEluamVjdG9yLFxyXG4gIE5nTW9kdWxlUmVmLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVHlwZSxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGUsXHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBDaGlsZHJlbk91dGxldENvbnRleHRzLFxyXG4gIC8vIENoaWxkcmVuT3V0bGV0Q29udGV4dHMsXHJcbiAgRXZlbnQsXHJcbiAgTmF2aWdhdGlvbkVuZCxcclxuICBQUklNQVJZX09VVExFVCxcclxuICBSb3V0ZXIsXHJcbiAgUm91dGVzUmVjb2duaXplZCxcclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTZE5vdGlmeVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcbmltcG9ydCB7XHJcbiAgU2RUYWJBY3RpdmF0ZWQsXHJcbiAgU2RUYWJEZWFjdGl2YXRlZCxcclxufSBmcm9tICcuLi8uLi9ldmVudHMvdGFiLXJvdXRlci5ldmVudCc7XHJcblxyXG5pbXBvcnQgeyBTZFRhYiB9IGZyb20gJy4uLy4uL21vZGVscy90YWItcm91dGVyLm1vZGVsJztcclxuaW1wb3J0IHsgU2RUYWJBY3Rpb24gfSBmcm9tICcuLi8uLi9hY3Rpb25zL3RhYi1yb3V0ZXIuYWN0aW9uJztcclxuaW1wb3J0IHsgU2RUYWJSb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFiLXJvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2RUYWJSb3V0ZXJOYXZDb21wb25lbnQgfSBmcm9tICcuLi90YWItcm91dGVyLW5hdi90YWItcm91dGVyLW5hdi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2RUYWJEZWNvcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFiLWRlY29yYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgaGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLXRhYi1yb3V0ZXItb3V0bGV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYi1yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYlJvdXRlck91dGxldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgndGFiUm91dGVyTmF2JykgdGFiUm91dGVyTmF2OiBTZFRhYlJvdXRlck5hdkNvbXBvbmVudDtcclxuICB0YWJzOiBTZFRhYltdID0gW107XHJcblxyXG4gICNyb290Um91dGU6IEFjdGl2YXRlZFJvdXRlO1xyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgI2ZpcnN0TG9hZCA9IHRydWU7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBjb21waWxlcjogQ29tcGlsZXIsXHJcbiAgICBwcml2YXRlIHRhYkRlY29yYXRvclNlcnZpY2U6IFNkVGFiRGVjb3JhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgdGFiUm91dGVyU2VydmljZTogU2RUYWJSb3V0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZE5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgcm91dGVyLmV2ZW50c1xyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnQpID0+XHJcbiAgICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBSb3V0ZXNSZWNvZ25pemVkIHx8XHJcbiAgICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKGV2ZW50OiBSb3V0ZXNSZWNvZ25pemVkIHwgTmF2aWdhdGlvbkVuZCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuI2ZpcnN0TG9hZCAmJiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgICAgdGhpcy4jZmlyc3RMb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy4jZ2V0QWN0aXZhdGVkUm91dGVTbmFwc2hvdChcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuI3Jvb3RSb3V0ZSA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnJvb3Q7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuI2FjdGl2ZVJvdXRlKFxyXG4gICAgICAgICAgICAgIGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzIHx8IGV2ZW50LnVybCxcclxuICAgICAgICAgICAgICByb3V0ZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIXRoaXMuI2ZpcnN0TG9hZCAmJiBldmVudCBpbnN0YW5jZW9mIFJvdXRlc1JlY29nbml6ZWQpIHtcclxuICAgICAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLiNnZXRBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KGV2ZW50LnN0YXRlLnJvb3QpO1xyXG4gICAgICAgICAgICB0aGlzLiNyb290Um91dGUgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290O1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLiNhY3RpdmVSb3V0ZShcclxuICAgICAgICAgICAgICBldmVudC51cmxBZnRlclJlZGlyZWN0cyB8fCBldmVudC51cmwsXHJcbiAgICAgICAgICAgICAgcm91dGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0YWJSb3V0ZXJTZXJ2aWNlLmFjdGlvbnMuc3Vic2NyaWJlKChldmVudDogU2RUYWJBY3Rpb24gfCBudWxsKSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnR5cGUgPT09ICdjbG9zZScpIHtcclxuICAgICAgICAgIHRoaXMuI2Nsb3NlVGFiKGV2ZW50LnRhYik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjY2xvc2VUYWIgPSAodGFiOiBTZFRhYikgPT4ge1xyXG4gICAgY29uc3QgeyBpc0FjdGl2ZSwga2V5OiBhY3RpdmVLZXkgfSA9IHRhYjtcclxuXHJcbiAgICBpZiAoaXNBY3RpdmUpIHtcclxuICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLnRhYnMuZmluZEluZGV4KCh7IGtleSB9KSA9PiBrZXkgPT09IGFjdGl2ZUtleSk7XHJcbiAgICAgIGNvbnN0IG5leHRUYWIgPSB0aGlzLnRhYnNbYWN0aXZlSW5kZXggKyAxXSB8fCB0aGlzLnRhYnNbYWN0aXZlSW5kZXggLSAxXTtcclxuICAgICAgaWYgKG5leHRUYWIpIHtcclxuICAgICAgICBjb25zdCB7IHVybDogbmV4dFVybCB9ID0gbmV4dFRhYjtcclxuICAgICAgICBjb25zdCBuZXh0UXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgICAgICAuLi4obmV4dFRhYi5xdWVyeVBhcmFtcyB8fCB7fSksXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLmZpbHRlcigoeyBrZXkgfSkgPT4ga2V5ICE9PSBhY3RpdmVLZXkpO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtuZXh0VXJsXSwge1xyXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IG5leHRRdWVyeVBhcmFtcyxcclxuICAgICAgICAgIHN0YXRlOiB7XHJcbiAgICAgICAgICAgIHN3aXRjaFRhYjogdHJ1ZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLmZpbHRlcigoeyBrZXkgfSkgPT4ga2V5ICE9PSBhY3RpdmVLZXkpO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nLCB7XHJcbiAgICAgICAgICBzdGF0ZToge1xyXG4gICAgICAgICAgICBzd2l0Y2hUYWI6IHRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRhYnMgPSB0aGlzLnRhYnMuZmlsdGVyKCh7IGtleSB9KSA9PiBrZXkgIT09IHRhYi5rZXkpO1xyXG4gICAgICB0aGlzLnRhYlJvdXRlck5hdj8uY2hlY2tVSSgpO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNhY3RpdmVSb3V0ZSA9IGFzeW5jIChcclxuICAgIGZ1bGxVcmw6IHN0cmluZyxcclxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbFxyXG4gICkgPT4ge1xyXG4gICAgaWYgKCFyb3V0ZT8uY29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHJvdXRlLmNvbXBvbmVudCBhcyBUeXBlPGFueT47XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgLi4uKHJvdXRlLnF1ZXJ5UGFyYW1zIHx8IHt9KSxcclxuICAgIH07XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIC4uLihyb3V0ZS5wYXJhbXMgfHwge30pLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBbdXJsXSA9IGZ1bGxVcmwuc3BsaXQoJz8nKTtcclxuICAgIGNvbnN0IGtleSA9IGhhc2goeyB1cmwsIHF1ZXJ5UGFyYW1zIH0pO1xyXG5cclxuICAgIGxldCBleGlzdGVkSW5kZXggPSAtMTtcclxuICAgIGxldCBhY3RpdmF0ZWRJbmRleCA9IC0xO1xyXG4gICAgdGhpcy50YWJzLmZvckVhY2goKHRhYjogU2RUYWIsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgaWYgKHRhYi5rZXkgPT09IGtleSkge1xyXG4gICAgICAgIHRhYi5pc0FjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgZXhpc3RlZEluZGV4ID0gaW5kZXg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRhYi5pc0FjdGl2ZSkge1xyXG4gICAgICAgICAgYWN0aXZhdGVkSW5kZXggPSBpbmRleDtcclxuICAgICAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5wdXNoRXZlbnQodGFiLCBTZFRhYkRlYWN0aXZhdGVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGFiLmlzQWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnROYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcclxuICAgIGlmIChleGlzdGVkSW5kZXggPj0gMCAmJiBjdXJyZW50TmF2aWdhdGlvbj8uZXh0cmFzPy5zdGF0ZT8uc3dpdGNoVGFiKSB7XHJcbiAgICAgIGNvbnN0IGV4aXN0ZWRUYWIgPSB0aGlzLnRhYnNbZXhpc3RlZEluZGV4XTtcclxuICAgICAgdGhpcy50YWJSb3V0ZXJTZXJ2aWNlLnNldEN1cnJlbnRUYWIoZXhpc3RlZFRhYik7XHJcbiAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5wdXNoRXZlbnQoZXhpc3RlZFRhYiwgU2RUYWJBY3RpdmF0ZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHR5cGVvZiByb3V0ZT8ucGFyZW50Py5yb3V0ZUNvbmZpZz8ubG9hZENoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgY29uc3QgbW9kdWxlID0gYXdhaXQgcm91dGUucGFyZW50LnJvdXRlQ29uZmlnLmxvYWRDaGlsZHJlbigpO1xyXG4gICAgICAgIGNvbnN0IGZhY3RvcnkgPSBhd2FpdCB0aGlzLmNvbXBpbGVyLmNvbXBpbGVNb2R1bGVBc3luYyhtb2R1bGUpO1xyXG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gZmFjdG9yeS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XHJcbiAgICAgICAgY29uc3QgYWN0aXZhdGVkUm91dGUgPSB0aGlzLiNnZXRBY3RpdmF0ZWRSb3V0ZShcclxuICAgICAgICAgIHRoaXMuI3Jvb3RSb3V0ZSxcclxuICAgICAgICAgIGNvbXBvbmVudFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRhYiA9IHtcclxuICAgICAgICAgIGtleSxcclxuICAgICAgICAgIGNvbXBvbmVudCxcclxuICAgICAgICAgIGluamVjdG9yOiBuZXcgU2RPdXRsZXRJbmplY3RvcihhY3RpdmF0ZWRSb3V0ZSwgaW5qZWN0b3IpLFxyXG4gICAgICAgICAgaXNBY3RpdmU6IHRydWUsXHJcbiAgICAgICAgICBuYW1lOiB1cmwsXHJcbiAgICAgICAgICB1cmwsXHJcbiAgICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgICBxdWVyeVBhcmFtcyxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnRhYlJvdXRlclNlcnZpY2Uuc2V0Q3VycmVudFRhYih0YWIpO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGFjdGl2YXRlZEluZGV4ID49IDAgJiZcclxuICAgICAgICAgIGN1cnJlbnROYXZpZ2F0aW9uPy5leHRyYXM/LnN0YXRlPy5yZXBsYWNlVGFiXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYnMuc3BsaWNlKGFjdGl2YXRlZEluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4aXN0ZWRJbmRleCA+PSAwICYmICFjdXJyZW50TmF2aWdhdGlvbj8uZXh0cmFzPy5zdGF0ZT8uc3dpdGNoVGFiKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYnNbZXhpc3RlZEluZGV4XSA9IHRhYjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50YWJzLnB1c2godGFiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudGFiUm91dGVyTmF2Py5jaGVja1VJKCk7XHJcbiAgICAgIGlmICh0aGlzLnRhYnMubGVuZ3RoID4gMTApIHtcclxuICAgICAgICB0aGlzLnNkTm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhcclxuICAgICAgICAgICdC4bqhbiDEkcOjIG3hu58gcXXDoSBuaGnhu4F1IHRhYi4gVnVpIGzDsm5nIHThuq90IGPDoWMgdGFiIGtow7RuZyBkw7luZyDEkeG7gyBo4buHIHRo4buRbmcgaG/huqF0IMSR4buZbmcgdOG7kXQgaMahbi4nXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50YWJzLmxlbmd0aCA+IDEyKSB7XHJcbiAgICAgICAgdGhpcy50YWJzLnNwbGljZSgwLCB0aGlzLnRhYnMubGVuZ3RoIC0gMTApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH07XHJcblxyXG4gICNnZXRBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gKFxyXG4gICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxyXG4gICk6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBudWxsID0+IHtcclxuICAgIGlmICghYWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHdoaWxlIChhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LmZpcnN0Q2hpbGQpIHtcclxuICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdCA9IGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZDtcclxuICAgIH1cclxuICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90O1xyXG4gIH07XHJcblxyXG4gICNnZXRBY3RpdmF0ZWRSb3V0ZSA9IChcclxuICAgIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIGNvbXBvbmVudDogYW55XHJcbiAgKTogQWN0aXZhdGVkUm91dGUgfCBudWxsID0+IHtcclxuICAgIGlmICghYWN0aXZhdGVkUm91dGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCAmJiBhY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xyXG4gICAgICByZXR1cm4gYWN0aXZhdGVkUm91dGU7XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoYWN0aXZhdGVkUm91dGUuZmlyc3RDaGlsZCkge1xyXG4gICAgICBhY3RpdmF0ZWRSb3V0ZSA9IGFjdGl2YXRlZFJvdXRlLmZpcnN0Q2hpbGQ7XHJcbiAgICAgIGlmIChhY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQgJiYgYWN0aXZhdGVkUm91dGUuY29tcG9uZW50ID09PSBjb21wb25lbnQpIHtcclxuICAgICAgICByZXR1cm4gYWN0aXZhdGVkUm91dGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH07XHJcbn1cclxuXHJcbmNsYXNzIFNkT3V0bGV0SW5qZWN0b3IgaW1wbGVtZW50cyBJbmplY3RvciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSB8IG51bGwsXHJcbiAgICAvLyBwcml2YXRlIGNoaWxkQ29udGV4dHM6IENoaWxkcmVuT3V0bGV0Q29udGV4dHMsXHJcbiAgICBwcml2YXRlIHBhcmVudDogYW55XHJcbiAgKSB7fVxyXG5cclxuICBnZXQodG9rZW46IGFueSwgbm90Rm91bmRWYWx1ZT86IGFueSk6IGFueSB7XHJcbiAgICBpZiAodG9rZW4gPT09IEFjdGl2YXRlZFJvdXRlICYmIHRoaXMucm91dGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucm91dGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgKHRva2VuID09PSBDaGlsZHJlbk91dGxldENvbnRleHRzKSB7XHJcbiAgICAvLyAgIHJldHVybiB0aGlzLmNoaWxkQ29udGV4dHM7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmdldCh0b2tlbiwgbm90Rm91bmRWYWx1ZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Directive, HostListener } from "@angular/core";
2
+ import { RouterLinkWithHref } from "@angular/router";
3
+ export class RouterLinkMouseDownDirective extends RouterLinkWithHref {
4
+ onMouseDown(button, ctrlKey, shiftKey, altKey, metaKey) {
5
+ return this.onClick(button, ctrlKey, shiftKey, altKey, metaKey);
6
+ }
7
+ }
8
+ RouterLinkMouseDownDirective.decorators = [
9
+ { type: Directive, args: [{
10
+ selector: "a[routerLink],area[routerLink]",
11
+ },] }
12
+ ];
13
+ RouterLinkMouseDownDirective.propDecorators = {
14
+ onMouseDown: [{ type: HostListener, args: ["mousedown", [
15
+ "$event.button",
16
+ "$event.ctrlKey",
17
+ "$event.shiftKey",
18
+ "$event.altKey",
19
+ "$event.metaKey",
20
+ ],] }]
21
+ };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLWxpbmstbW91c2UtZG93bi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3RhYi1yb3V0ZXIvIiwic291cmNlcyI6WyJzcmMvbGliL2RpcmVjdGl2ZXMvcm91dGVyLWxpbmstbW91c2UtZG93bi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLckQsTUFBTSxPQUFPLDRCQUE2QixTQUFRLGtCQUFrQjtJQVFsRSxXQUFXLENBQ1QsTUFBYyxFQUNkLE9BQWdCLEVBQ2hCLFFBQWlCLEVBQ2pCLE1BQWUsRUFDZixPQUFnQjtRQUVoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xFLENBQUM7OztZQW5CRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdDQUFnQzthQUMzQzs7OzBCQUVFLFlBQVksU0FBQyxXQUFXLEVBQUU7b0JBQ3pCLGVBQWU7b0JBQ2YsZ0JBQWdCO29CQUNoQixpQkFBaUI7b0JBQ2pCLGVBQWU7b0JBQ2YsZ0JBQWdCO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyTGlua1dpdGhIcmVmIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6IFwiYVtyb3V0ZXJMaW5rXSxhcmVhW3JvdXRlckxpbmtdXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb3V0ZXJMaW5rTW91c2VEb3duRGlyZWN0aXZlIGV4dGVuZHMgUm91dGVyTGlua1dpdGhIcmVmIHtcclxuICBASG9zdExpc3RlbmVyKFwibW91c2Vkb3duXCIsIFtcclxuICAgIFwiJGV2ZW50LmJ1dHRvblwiLFxyXG4gICAgXCIkZXZlbnQuY3RybEtleVwiLFxyXG4gICAgXCIkZXZlbnQuc2hpZnRLZXlcIixcclxuICAgIFwiJGV2ZW50LmFsdEtleVwiLFxyXG4gICAgXCIkZXZlbnQubWV0YUtleVwiLFxyXG4gIF0pXHJcbiAgb25Nb3VzZURvd24oXHJcbiAgICBidXR0b246IG51bWJlcixcclxuICAgIGN0cmxLZXk6IGJvb2xlYW4sXHJcbiAgICBzaGlmdEtleTogYm9vbGVhbixcclxuICAgIGFsdEtleTogYm9vbGVhbixcclxuICAgIG1ldGFLZXk6IGJvb2xlYW5cclxuICApOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm9uQ2xpY2soYnV0dG9uLCBjdHJsS2V5LCBzaGlmdEtleSwgYWx0S2V5LCBtZXRhS2V5KTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvbW9kZWxzL3RhYi1yb3V0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RUYWJJbmZvIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgaW5pdGlhbE5hbWU/OiBzdHJpbmc7XHJcbiAgdG9vbHRpcD86IHN0cmluZztcclxuICBjb2xvcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZFRhYiB7XHJcbiAgY29tcG9uZW50OiBUeXBlPGFueT47XHJcbiAgaW5qZWN0b3I/OiBhbnk7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgaXNBY3RpdmU6IGJvb2xlYW47XHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgcGFyYW1zPzoge1xyXG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIH07XHJcbiAgcXVlcnlQYXJhbXM/OiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgfTtcclxuICB0YWJJbmZvPzogU2RUYWJJbmZvO1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvbW9kZWxzL3RhYi1yb3V0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RUYWJJbmZvIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgaW5pdGlhbE5hbWU/OiBzdHJpbmc7XHJcbiAgdG9vbHRpcD86IHN0cmluZztcclxuICBjb2xvcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZFRhYiB7XHJcbiAgY29tcG9uZW50OiBUeXBlPGFueT47XHJcbiAgaW5qZWN0b3I/OiBhbnk7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgaXNBY3RpdmU6IGJvb2xlYW47XHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgcGFyYW1zPzoge1xyXG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIH07XHJcbiAgcXVlcnlQYXJhbXM/OiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgfTtcclxuICBvdmVycmlkZVRhYkluZm8/OiBTZFRhYkluZm87IC8vIE92ZXJyaWRlIHRow7RuZyB0aW4gdGFiSW5mb1xyXG4gIHRhYkluZm8/OiBTZFRhYkluZm87XHJcbn1cclxuIl19
@@ -1,11 +1,15 @@
1
1
  import { Pipe } from '@angular/core';
2
+ import { of } from 'rxjs';
2
3
  import { map } from 'rxjs/operators';
3
4
  import { SdTabRouterService } from '../services/tab-router.service';
4
5
  export class SdTabInfoPipe {
5
6
  constructor(tabRouterService) {
6
7
  this.tabRouterService = tabRouterService;
7
8
  }
8
- transform(tab) {
9
+ transform(tabInfo, tab) {
10
+ if (tabInfo) {
11
+ return of(tabInfo);
12
+ }
9
13
  return this.tabRouterService.builders.pipe(map(builders => {
10
14
  const builder = builders.find(e => e.component === tab.component);
11
15
  if (builder) {
@@ -38,4 +42,4 @@ SdTabInfoPipe.decorators = [
38
42
  SdTabInfoPipe.ctorParameters = () => [
39
43
  { type: SdTabRouterService }
40
44
  ];
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWluZm8ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvcGlwZXMvdGFiLWluZm8ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEUsTUFBTSxPQUFPLGFBQWE7SUFDeEIsWUFBb0IsZ0JBQW9DO1FBQXBDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7SUFBSSxDQUFDO0lBQzdELFNBQVMsQ0FBQyxHQUFVO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3hELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsRSxJQUFJLE9BQU8sRUFBRTtnQkFDWCxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7Z0JBQ3pDLEdBQUcsQ0FBQyxPQUFPLEdBQUc7b0JBQ1osSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUM7d0JBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJO29CQUMzRCxXQUFXLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQzt3QkFDeEQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVc7b0JBQ3pFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO3dCQUNoRCxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTztvQkFDakUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUM7d0JBQzVDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLO2lCQUM5RCxDQUFDO2dCQUNGLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQzthQUNwQjtZQUNELEdBQUcsQ0FBQyxPQUFPLEdBQUc7Z0JBQ1osSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHO2dCQUNiLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUM7WUFDRixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7OztZQTVCRixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFdBQVc7YUFDbEI7OztZQUhRLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNkVGFiLCBTZFRhYkluZm8gfSBmcm9tICcuLi9tb2RlbHMvdGFiLXJvdXRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkVGFiUm91dGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYi1yb3V0ZXIuc2VydmljZSc7XHJcbkBQaXBlKHtcclxuICBuYW1lOiAnc2RUYWJJbmZvJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RUYWJJbmZvUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFiUm91dGVyU2VydmljZTogU2RUYWJSb3V0ZXJTZXJ2aWNlKSB7IH1cclxuICB0cmFuc2Zvcm0odGFiOiBTZFRhYik6IE9ic2VydmFibGU8U2RUYWJJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJSb3V0ZXJTZXJ2aWNlLmJ1aWxkZXJzLnBpcGUobWFwKGJ1aWxkZXJzID0+IHtcclxuICAgICAgY29uc3QgYnVpbGRlciA9IGJ1aWxkZXJzLmZpbmQoZSA9PiBlLmNvbXBvbmVudCA9PT0gdGFiLmNvbXBvbmVudCk7XHJcbiAgICAgIGlmIChidWlsZGVyKSB7XHJcbiAgICAgICAgY29uc3QgeyB1cmwsIHBhcmFtcywgcXVlcnlQYXJhbXMgfSA9IHRhYjtcclxuICAgICAgICB0YWIudGFiSW5mbyA9IHtcclxuICAgICAgICAgIG5hbWU6IHR5cGVvZiAoYnVpbGRlci5uYW1lKSA9PT0gJ2Z1bmN0aW9uJyA/XHJcbiAgICAgICAgICAgIGJ1aWxkZXIubmFtZSh7IHVybCwgcGFyYW1zLCBxdWVyeVBhcmFtcyB9KSA6IGJ1aWxkZXIubmFtZSxcclxuICAgICAgICAgIGluaXRpYWxOYW1lOiB0eXBlb2YgKGJ1aWxkZXIuaW5pdGlhbE5hbWUpID09PSAnZnVuY3Rpb24nID9cclxuICAgICAgICAgICAgYnVpbGRlci5pbml0aWFsTmFtZSh7IHVybCwgcGFyYW1zLCBxdWVyeVBhcmFtcyB9KSA6IGJ1aWxkZXIuaW5pdGlhbE5hbWUsXHJcbiAgICAgICAgICB0b29sdGlwOiB0eXBlb2YgKGJ1aWxkZXIudG9vbHRpcCkgPT09ICdmdW5jdGlvbicgP1xyXG4gICAgICAgICAgICBidWlsZGVyLnRvb2x0aXAoeyB1cmwsIHBhcmFtcywgcXVlcnlQYXJhbXMgfSkgOiBidWlsZGVyLnRvb2x0aXAsXHJcbiAgICAgICAgICBjb2xvcjogdHlwZW9mIChidWlsZGVyLmNvbG9yKSA9PT0gJ2Z1bmN0aW9uJyA/XHJcbiAgICAgICAgICAgIGJ1aWxkZXIuY29sb3IoeyB1cmwsIHBhcmFtcywgcXVlcnlQYXJhbXMgfSkgOiBidWlsZGVyLmNvbG9yXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGFiLnRhYkluZm87XHJcbiAgICAgIH1cclxuICAgICAgdGFiLnRhYkluZm8gPSB7XHJcbiAgICAgICAgbmFtZTogdGFiLnVybCxcclxuICAgICAgICBpbml0aWFsTmFtZTogbnVsbCxcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIHRhYi50YWJJbmZvO1xyXG4gICAgfSkpO1xyXG4gIH1cclxufVxyXG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWluZm8ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvcGlwZXMvdGFiLWluZm8ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUlwRSxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUFvQixnQkFBb0M7UUFBcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtJQUFJLENBQUM7SUFDN0QsU0FBUyxDQUFDLE9BQWtCLEVBQUUsR0FBVTtRQUN0QyxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3BCO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksT0FBTyxFQUFFO2dCQUNYLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQztnQkFDekMsR0FBRyxDQUFDLE9BQU8sR0FBRztvQkFDWixJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQzt3QkFDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUk7b0JBQzNELFdBQVcsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO3dCQUN4RCxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVztvQkFDekUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUM7d0JBQ2hELE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPO29CQUNqRSxLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQzt3QkFDNUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUs7aUJBQzlELENBQUM7Z0JBQ0YsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDO2FBQ3BCO1lBQ0QsR0FBRyxDQUFDLE9BQU8sR0FBRztnQkFDWixJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUc7Z0JBQ2IsV0FBVyxFQUFFLElBQUk7YUFDbEIsQ0FBQztZQUNGLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzs7O1lBL0JGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsV0FBVzthQUNsQjs7O1lBSFEsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNkVGFiLCBTZFRhYkluZm8gfSBmcm9tICcuLi9tb2RlbHMvdGFiLXJvdXRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkVGFiUm91dGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYi1yb3V0ZXIuc2VydmljZSc7XHJcbkBQaXBlKHtcclxuICBuYW1lOiAnc2RUYWJJbmZvJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RUYWJJbmZvUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFiUm91dGVyU2VydmljZTogU2RUYWJSb3V0ZXJTZXJ2aWNlKSB7IH1cclxuICB0cmFuc2Zvcm0odGFiSW5mbzogU2RUYWJJbmZvLCB0YWI6IFNkVGFiKTogT2JzZXJ2YWJsZTxTZFRhYkluZm8+IHtcclxuICAgIGlmICh0YWJJbmZvKSB7XHJcbiAgICAgIHJldHVybiBvZih0YWJJbmZvKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnRhYlJvdXRlclNlcnZpY2UuYnVpbGRlcnMucGlwZShtYXAoYnVpbGRlcnMgPT4ge1xyXG4gICAgICBjb25zdCBidWlsZGVyID0gYnVpbGRlcnMuZmluZChlID0+IGUuY29tcG9uZW50ID09PSB0YWIuY29tcG9uZW50KTtcclxuICAgICAgaWYgKGJ1aWxkZXIpIHtcclxuICAgICAgICBjb25zdCB7IHVybCwgcGFyYW1zLCBxdWVyeVBhcmFtcyB9ID0gdGFiO1xyXG4gICAgICAgIHRhYi50YWJJbmZvID0ge1xyXG4gICAgICAgICAgbmFtZTogdHlwZW9mIChidWlsZGVyLm5hbWUpID09PSAnZnVuY3Rpb24nID9cclxuICAgICAgICAgICAgYnVpbGRlci5uYW1lKHsgdXJsLCBwYXJhbXMsIHF1ZXJ5UGFyYW1zIH0pIDogYnVpbGRlci5uYW1lLFxyXG4gICAgICAgICAgaW5pdGlhbE5hbWU6IHR5cGVvZiAoYnVpbGRlci5pbml0aWFsTmFtZSkgPT09ICdmdW5jdGlvbicgP1xyXG4gICAgICAgICAgICBidWlsZGVyLmluaXRpYWxOYW1lKHsgdXJsLCBwYXJhbXMsIHF1ZXJ5UGFyYW1zIH0pIDogYnVpbGRlci5pbml0aWFsTmFtZSxcclxuICAgICAgICAgIHRvb2x0aXA6IHR5cGVvZiAoYnVpbGRlci50b29sdGlwKSA9PT0gJ2Z1bmN0aW9uJyA/XHJcbiAgICAgICAgICAgIGJ1aWxkZXIudG9vbHRpcCh7IHVybCwgcGFyYW1zLCBxdWVyeVBhcmFtcyB9KSA6IGJ1aWxkZXIudG9vbHRpcCxcclxuICAgICAgICAgIGNvbG9yOiB0eXBlb2YgKGJ1aWxkZXIuY29sb3IpID09PSAnZnVuY3Rpb24nID9cclxuICAgICAgICAgICAgYnVpbGRlci5jb2xvcih7IHVybCwgcGFyYW1zLCBxdWVyeVBhcmFtcyB9KSA6IGJ1aWxkZXIuY29sb3JcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0YWIudGFiSW5mbztcclxuICAgICAgfVxyXG4gICAgICB0YWIudGFiSW5mbyA9IHtcclxuICAgICAgICBuYW1lOiB0YWIudXJsLFxyXG4gICAgICAgIGluaXRpYWxOYW1lOiBudWxsLFxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gdGFiLnRhYkluZm87XHJcbiAgICB9KSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -12,6 +12,8 @@ export class SdTabRouterService {
12
12
  this.events = new BehaviorSubject(new SdTabBase(null));
13
13
  this.actions = new BehaviorSubject(null);
14
14
  this.builders = new BehaviorSubject([]);
15
+ this.currentTabChanges = new BehaviorSubject(null);
16
+ this.newTabs = new BehaviorSubject(null);
15
17
  _currentTab.set(this, null);
16
18
  _componentBuilders.set(this, []);
17
19
  this.addBuilder = (builder) => {
@@ -56,6 +58,7 @@ export class SdTabRouterService {
56
58
  // }
57
59
  this.setCurrentTab = (tab) => {
58
60
  __classPrivateFieldSet(this, _currentTab, tab);
61
+ this.currentTabChanges.next(tab);
59
62
  };
60
63
  this.pushEvent = (tab, Event) => {
61
64
  this.events.next(new Event(tab));
@@ -94,4 +97,4 @@ SdTabRouterService.decorators = [
94
97
  SdTabRouterService.ctorParameters = () => [
95
98
  { type: SdNotifyService }
96
99
  ];
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS90YWItcm91dGVyLyIsInNvdXJjZXMiOlsic3JjL2xpYi9zZXJ2aWNlcy90YWItcm91dGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdkMsT0FBTyxFQUFjLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBTTFELE1BQU0sT0FBTyxrQkFBa0I7SUFPN0IsWUFBb0IsYUFBOEI7UUFBOUIsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBTmxELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBYSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7UUFDeEQsYUFBUSxHQUFHLElBQUksZUFBZSxDQUEwQixFQUFFLENBQUMsQ0FBQztRQUU1RCxzQkFBNEIsSUFBSSxFQUFDO1FBQ2pDLDZCQUE4QyxFQUFFLEVBQUM7UUFJakQsZUFBVSxHQUFHLENBQUMsT0FBOEIsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxpREFBd0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3pFLGlEQUF3QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxrREFBeUIsQ0FBQzthQUM3QztRQUNILENBQUMsQ0FBQTtRQVVELGlEQUFpRDtRQUNqRCx1Q0FBdUM7UUFDdkMsNENBQTRDO1FBQzVDLG1DQUFtQztRQUNuQyxRQUFRO1FBQ1Isc0NBQXNDO1FBQ3RDLFFBQVE7UUFDUixlQUFlO1FBQ2YsOEJBQThCO1FBQzlCLE1BQU07UUFDTixJQUFJO1FBRUosZ0NBQWdDO1FBQ2hDLG9CQUFvQjtRQUNwQixnRUFBZ0U7UUFDaEUsTUFBTTtRQUNOLDBCQUEwQjtRQUMxQixzRUFBc0U7UUFDdEUsTUFBTTtRQUNOLGdFQUFnRTtRQUNoRSx1QkFBdUI7UUFDdkIsNEJBQTRCO1FBQzVCLHdCQUF3QjtRQUN4QixhQUFhO1FBQ2IsK0JBQStCO1FBQy9CLE1BQU07UUFDTixJQUFJO1FBRUosaURBQWlEO1FBQ2pELDBDQUEwQztRQUMxQyw0Q0FBNEM7UUFDNUMsbUNBQW1DO1FBQ25DLFFBQVE7UUFDUixzQ0FBc0M7UUFDdEMsUUFBUTtRQUNSLElBQUk7UUFFSixrQkFBYSxHQUFHLENBQUMsR0FBVSxFQUFRLEVBQUU7WUFDbkMsdUJBQUEsSUFBSSxlQUFlLEdBQUcsRUFBQztRQUN6QixDQUFDLENBQUE7UUFFRCxjQUFTLEdBQUcsQ0FBQyxHQUFVLEVBQUUsS0FBdUIsRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFBO1FBRUQsZUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV2QixVQUFLLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUN0QixJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDaEIsSUFBSSxFQUFFLE9BQU87b0JBQ2IsR0FBRztpQkFDSixDQUFDLENBQUM7YUFDSjtpQkFBTSwrQ0FBc0I7Z0JBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNoQixJQUFJLEVBQUUsT0FBTztvQkFDYixHQUFHLDJDQUFrQjtpQkFDdEIsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUE7SUE1RUQsQ0FBQztJQVNELElBQUksVUFBVTtRQUNaLGlEQUF3QjtJQUMxQixDQUFDO0lBRUQsSUFBSSxHQUFHOztRQUNMLE9BQU8sMEZBQWtCLEdBQUcsS0FBSSxJQUFJLENBQUM7SUFDdkMsQ0FBQzs7Ozs7WUExQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFMUSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2RUYWIgfSBmcm9tICcuLi9tb2RlbHMvdGFiLXJvdXRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkVGFiQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy90YWItcm91dGVyLmFjdGlvbic7XHJcbmltcG9ydCB7IFNkVGFiRXZlbnQsIFNkVGFiQmFzZSB9IGZyb20gJy4uL2V2ZW50cy90YWItcm91dGVyLmV2ZW50JztcclxuaW1wb3J0IHsgU2ROb3RpZnlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQgeyBTZFRhYkNvbXBvbmVudEJ1aWxkZXIgfSBmcm9tICcuLi9kZWNvcmF0b3JzL3RhYi5kZWNvcmF0b3InO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkVGFiUm91dGVyU2VydmljZSB7XHJcbiAgZXZlbnRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZFRhYkV2ZW50PihuZXcgU2RUYWJCYXNlKG51bGwpKTtcclxuICBhY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZFRhYkFjdGlvbiB8IG51bGw+KG51bGwpO1xyXG4gIGJ1aWxkZXJzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZFRhYkNvbXBvbmVudEJ1aWxkZXJbXT4oW10pO1xyXG5cclxuICAjY3VycmVudFRhYjogU2RUYWIgfCBudWxsID0gbnVsbDtcclxuICAjY29tcG9uZW50QnVpbGRlcnM6IFNkVGFiQ29tcG9uZW50QnVpbGRlcltdID0gW107XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGFkZEJ1aWxkZXIgPSAoYnVpbGRlcjogU2RUYWJDb21wb25lbnRCdWlsZGVyKSA9PiB7XHJcbiAgICBpZiAoIXRoaXMuI2NvbXBvbmVudEJ1aWxkZXJzLnNvbWUoZSA9PiBlLmNvbXBvbmVudCA9PT0gYnVpbGRlci5jb21wb25lbnQpKSB7XHJcbiAgICAgIHRoaXMuI2NvbXBvbmVudEJ1aWxkZXJzLnB1c2goYnVpbGRlcik7XHJcbiAgICAgIHRoaXMuYnVpbGRlcnMubmV4dCh0aGlzLiNjb21wb25lbnRCdWlsZGVycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudFRhYigpIHtcclxuICAgIHJldHVybiB0aGlzLiNjdXJyZW50VGFiO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGtleSgpIHtcclxuICAgIHJldHVybiB0aGlzLiNjdXJyZW50VGFiPy5rZXkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdCA9ICh0YWJPcktleTogc3RyaW5nIHwgU2RUYWIpOiB2b2lkID0+IHtcclxuICAvLyAgIGNvbnN0IHRhYiA9IHRoaXMuI3RhYnMuZmluZChlID0+IHtcclxuICAvLyAgICAgaWYgKHR5cGVvZiAodGFiT3JLZXkpID09PSAnc3RyaW5nJykge1xyXG4gIC8vICAgICAgIHJldHVybiBlLmtleSA9PT0gdGFiT3JLZXk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgcmV0dXJuIGUua2V5ID09PSB0YWJPcktleT8ua2V5O1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICBpZiAodGFiKSB7XHJcbiAgLy8gICAgIHRoaXMuI2N1cnJlbnRUYWIgPSB0YWI7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBhZGQgPSAodGFiOiBTZFRhYik6IHZvaWQgPT4ge1xyXG4gIC8vICAgaWYgKCF0YWIua2V5KSB7XHJcbiAgLy8gICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZygnVGFiIGtleSBpcyByZXF1aXJlZCcpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgaWYgKCF0YWIuY29tcG9uZW50KSB7XHJcbiAgLy8gICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZygnVGFiIGNvbXBvbmVudCBpcyByZXF1aXJlZCcpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgY29uc3QgZXhpc3RlZFRhYiA9IHRoaXMuI3RhYnMuZmluZChlID0+IGUua2V5ID09PSB0YWIua2V5KTtcclxuICAvLyAgIGlmICghZXhpc3RlZFRhYikge1xyXG4gIC8vICAgICB0aGlzLiN0YWJzLnB1c2godGFiKTtcclxuICAvLyAgICAgdGhpcy5zZWxlY3QodGFiKTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHRoaXMuc2VsZWN0KGV4aXN0ZWRUYWIpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gcmVtb3ZlID0gKHRhYk9yS2V5OiBzdHJpbmcgfCBTZFRhYik6IHZvaWQgPT4ge1xyXG4gIC8vICAgdGhpcy4jdGFicyA9IHRoaXMuI3RhYnMuZmlsdGVyKGUgPT4ge1xyXG4gIC8vICAgICBpZiAodHlwZW9mICh0YWJPcktleSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIGUua2V5ICE9PSB0YWJPcktleTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICByZXR1cm4gZS5rZXkgIT09IHRhYk9yS2V5Py5rZXk7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHNldEN1cnJlbnRUYWIgPSAodGFiOiBTZFRhYik6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy4jY3VycmVudFRhYiA9IHRhYjtcclxuICB9XHJcblxyXG4gIHB1c2hFdmVudCA9ICh0YWI6IFNkVGFiLCBFdmVudDogVHlwZTxTZFRhYkV2ZW50PikgPT4ge1xyXG4gICAgdGhpcy5ldmVudHMubmV4dChuZXcgRXZlbnQodGFiKSk7XHJcbiAgfVxyXG5cclxuICBzZXRPcHRpb25zID0gKCkgPT4geyB9O1xyXG5cclxuICBjbG9zZSA9ICh0YWI/OiBTZFRhYikgPT4ge1xyXG4gICAgaWYgKHRhYikge1xyXG4gICAgICB0aGlzLmFjdGlvbnMubmV4dCh7XHJcbiAgICAgICAgdHlwZTogJ2Nsb3NlJyxcclxuICAgICAgICB0YWIsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLiNjdXJyZW50VGFiKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9ucy5uZXh0KHtcclxuICAgICAgICB0eXBlOiAnY2xvc2UnLFxyXG4gICAgICAgIHRhYjogdGhpcy4jY3VycmVudFRhYixcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS90YWItcm91dGVyLyIsInNvdXJjZXMiOlsic3JjL2xpYi9zZXJ2aWNlcy90YWItcm91dGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdkMsT0FBTyxFQUFjLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBTTFELE1BQU0sT0FBTyxrQkFBa0I7SUFRN0IsWUFBb0IsYUFBOEI7UUFBOUIsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBUGxELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBYSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7UUFDeEQsYUFBUSxHQUFHLElBQUksZUFBZSxDQUEwQixFQUFFLENBQUMsQ0FBQztRQUM1RCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBUSxJQUFJLENBQUMsQ0FBQztRQUNyRCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVEsSUFBSSxDQUFDLENBQUM7UUFDM0Msc0JBQTRCLElBQUksRUFBQztRQUNqQyw2QkFBOEMsRUFBRSxFQUFDO1FBSWpELGVBQVUsR0FBRyxDQUFDLE9BQThCLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsaURBQXdCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUN6RSxpREFBd0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksa0RBQXlCLENBQUM7YUFDN0M7UUFDSCxDQUFDLENBQUE7UUFVRCxpREFBaUQ7UUFDakQsdUNBQXVDO1FBQ3ZDLDRDQUE0QztRQUM1QyxtQ0FBbUM7UUFDbkMsUUFBUTtRQUNSLHNDQUFzQztRQUN0QyxRQUFRO1FBQ1IsZUFBZTtRQUNmLDhCQUE4QjtRQUM5QixNQUFNO1FBQ04sSUFBSTtRQUVKLGdDQUFnQztRQUNoQyxvQkFBb0I7UUFDcEIsZ0VBQWdFO1FBQ2hFLE1BQU07UUFDTiwwQkFBMEI7UUFDMUIsc0VBQXNFO1FBQ3RFLE1BQU07UUFDTixnRUFBZ0U7UUFDaEUsdUJBQXVCO1FBQ3ZCLDRCQUE0QjtRQUM1Qix3QkFBd0I7UUFDeEIsYUFBYTtRQUNiLCtCQUErQjtRQUMvQixNQUFNO1FBQ04sSUFBSTtRQUVKLGlEQUFpRDtRQUNqRCwwQ0FBMEM7UUFDMUMsNENBQTRDO1FBQzVDLG1DQUFtQztRQUNuQyxRQUFRO1FBQ1Isc0NBQXNDO1FBQ3RDLFFBQVE7UUFDUixJQUFJO1FBR0osa0JBQWEsR0FBRyxDQUFDLEdBQVUsRUFBUSxFQUFFO1lBQ25DLHVCQUFBLElBQUksZUFBZSxHQUFHLEVBQUM7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUE7UUFFRCxjQUFTLEdBQUcsQ0FBQyxHQUFVLEVBQUUsS0FBdUIsRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFBO1FBRUQsZUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV2QixVQUFLLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUN0QixJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDaEIsSUFBSSxFQUFFLE9BQU87b0JBQ2IsR0FBRztpQkFDSixDQUFDLENBQUM7YUFDSjtpQkFBTSwrQ0FBc0I7Z0JBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNoQixJQUFJLEVBQUUsT0FBTztvQkFDYixHQUFHLDJDQUFrQjtpQkFDdEIsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUE7SUE5RUQsQ0FBQztJQVNELElBQUksVUFBVTtRQUNaLGlEQUF3QjtJQUMxQixDQUFDO0lBRUQsSUFBSSxHQUFHOztRQUNMLE9BQU8sMEZBQWtCLEdBQUcsS0FBSSxJQUFJLENBQUM7SUFDdkMsQ0FBQzs7Ozs7WUEzQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFMUSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2RUYWIsIFNkVGFiSW5mbyB9IGZyb20gJy4uL21vZGVscy90YWItcm91dGVyLm1vZGVsJztcclxuaW1wb3J0IHsgU2RUYWJBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zL3RhYi1yb3V0ZXIuYWN0aW9uJztcclxuaW1wb3J0IHsgU2RUYWJFdmVudCwgU2RUYWJCYXNlIH0gZnJvbSAnLi4vZXZlbnRzL3RhYi1yb3V0ZXIuZXZlbnQnO1xyXG5pbXBvcnQgeyBTZE5vdGlmeVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcbmltcG9ydCB7IFNkVGFiQ29tcG9uZW50QnVpbGRlciB9IGZyb20gJy4uL2RlY29yYXRvcnMvdGFiLmRlY29yYXRvcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RUYWJSb3V0ZXJTZXJ2aWNlIHtcclxuICBldmVudHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNkVGFiRXZlbnQ+KG5ldyBTZFRhYkJhc2UobnVsbCkpO1xyXG4gIGFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNkVGFiQWN0aW9uIHwgbnVsbD4obnVsbCk7XHJcbiAgYnVpbGRlcnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNkVGFiQ29tcG9uZW50QnVpbGRlcltdPihbXSk7XHJcbiAgY3VycmVudFRhYkNoYW5nZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNkVGFiPihudWxsKTtcclxuICBuZXdUYWJzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZFRhYj4obnVsbCk7XHJcbiAgI2N1cnJlbnRUYWI6IFNkVGFiIHwgbnVsbCA9IG51bGw7XHJcbiAgI2NvbXBvbmVudEJ1aWxkZXJzOiBTZFRhYkNvbXBvbmVudEJ1aWxkZXJbXSA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBhZGRCdWlsZGVyID0gKGJ1aWxkZXI6IFNkVGFiQ29tcG9uZW50QnVpbGRlcikgPT4ge1xyXG4gICAgaWYgKCF0aGlzLiNjb21wb25lbnRCdWlsZGVycy5zb21lKGUgPT4gZS5jb21wb25lbnQgPT09IGJ1aWxkZXIuY29tcG9uZW50KSkge1xyXG4gICAgICB0aGlzLiNjb21wb25lbnRCdWlsZGVycy5wdXNoKGJ1aWxkZXIpO1xyXG4gICAgICB0aGlzLmJ1aWxkZXJzLm5leHQodGhpcy4jY29tcG9uZW50QnVpbGRlcnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRUYWIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy4jY3VycmVudFRhYjtcclxuICB9XHJcblxyXG4gIGdldCBrZXkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy4jY3VycmVudFRhYj8ua2V5IHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBzZWxlY3QgPSAodGFiT3JLZXk6IHN0cmluZyB8IFNkVGFiKTogdm9pZCA9PiB7XHJcbiAgLy8gICBjb25zdCB0YWIgPSB0aGlzLiN0YWJzLmZpbmQoZSA9PiB7XHJcbiAgLy8gICAgIGlmICh0eXBlb2YgKHRhYk9yS2V5KSA9PT0gJ3N0cmluZycpIHtcclxuICAvLyAgICAgICByZXR1cm4gZS5rZXkgPT09IHRhYk9yS2V5O1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIHJldHVybiBlLmtleSA9PT0gdGFiT3JLZXk/LmtleTtcclxuICAvLyAgIH0pO1xyXG4gIC8vICAgaWYgKHRhYikge1xyXG4gIC8vICAgICB0aGlzLiNjdXJyZW50VGFiID0gdGFiO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gYWRkID0gKHRhYjogU2RUYWIpOiB2b2lkID0+IHtcclxuICAvLyAgIGlmICghdGFiLmtleSkge1xyXG4gIC8vICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoJ1RhYiBrZXkgaXMgcmVxdWlyZWQnKTtcclxuICAvLyAgIH1cclxuICAvLyAgIGlmICghdGFiLmNvbXBvbmVudCkge1xyXG4gIC8vICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoJ1RhYiBjb21wb25lbnQgaXMgcmVxdWlyZWQnKTtcclxuICAvLyAgIH1cclxuICAvLyAgIGNvbnN0IGV4aXN0ZWRUYWIgPSB0aGlzLiN0YWJzLmZpbmQoZSA9PiBlLmtleSA9PT0gdGFiLmtleSk7XHJcbiAgLy8gICBpZiAoIWV4aXN0ZWRUYWIpIHtcclxuICAvLyAgICAgdGhpcy4jdGFicy5wdXNoKHRhYik7XHJcbiAgLy8gICAgIHRoaXMuc2VsZWN0KHRhYik7XHJcbiAgLy8gICB9IGVsc2Uge1xyXG4gIC8vICAgICB0aGlzLnNlbGVjdChleGlzdGVkVGFiKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIHJlbW92ZSA9ICh0YWJPcktleTogc3RyaW5nIHwgU2RUYWIpOiB2b2lkID0+IHtcclxuICAvLyAgIHRoaXMuI3RhYnMgPSB0aGlzLiN0YWJzLmZpbHRlcihlID0+IHtcclxuICAvLyAgICAgaWYgKHR5cGVvZiAodGFiT3JLZXkpID09PSAnc3RyaW5nJykge1xyXG4gIC8vICAgICAgIHJldHVybiBlLmtleSAhPT0gdGFiT3JLZXk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgcmV0dXJuIGUua2V5ICE9PSB0YWJPcktleT8ua2V5O1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuXHJcbiAgc2V0Q3VycmVudFRhYiA9ICh0YWI6IFNkVGFiKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLiNjdXJyZW50VGFiID0gdGFiO1xyXG4gICAgdGhpcy5jdXJyZW50VGFiQ2hhbmdlcy5uZXh0KHRhYik7XHJcbiAgfVxyXG5cclxuICBwdXNoRXZlbnQgPSAodGFiOiBTZFRhYiwgRXZlbnQ6IFR5cGU8U2RUYWJFdmVudD4pID0+IHtcclxuICAgIHRoaXMuZXZlbnRzLm5leHQobmV3IEV2ZW50KHRhYikpO1xyXG4gIH1cclxuXHJcbiAgc2V0T3B0aW9ucyA9ICgpID0+IHsgfTtcclxuXHJcbiAgY2xvc2UgPSAodGFiPzogU2RUYWIpID0+IHtcclxuICAgIGlmICh0YWIpIHtcclxuICAgICAgdGhpcy5hY3Rpb25zLm5leHQoe1xyXG4gICAgICAgIHR5cGU6ICdjbG9zZScsXHJcbiAgICAgICAgdGFiLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy4jY3VycmVudFRhYikge1xyXG4gICAgICB0aGlzLmFjdGlvbnMubmV4dCh7XHJcbiAgICAgICAgdHlwZTogJ2Nsb3NlJyxcclxuICAgICAgICB0YWI6IHRoaXMuI2N1cnJlbnRUYWIsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=