You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
263 lines
28 KiB
263 lines
28 KiB
/**
|
|
* @license
|
|
* Copyright Google LLC All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
import { ContentChild, Directive, ElementRef, Inject, Input, Optional, TemplateRef, } from '@angular/core';
|
|
import { mixinHasStickyInput } from './can-stick';
|
|
import { CDK_TABLE } from './tokens';
|
|
/**
|
|
* Cell definition for a CDK table.
|
|
* Captures the template of a column's data row cell as well as cell-specific properties.
|
|
*/
|
|
import * as ɵngcc0 from '@angular/core';
|
|
export class CdkCellDef {
|
|
constructor(/** @docs-private */ template) {
|
|
this.template = template;
|
|
}
|
|
}
|
|
CdkCellDef.ɵfac = function CdkCellDef_Factory(t) { return new (t || CdkCellDef)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };
|
|
CdkCellDef.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkCellDef, selectors: [["", "cdkCellDef", ""]] });
|
|
CdkCellDef.ctorParameters = () => [
|
|
{ type: TemplateRef }
|
|
];
|
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkCellDef, [{
|
|
type: Directive,
|
|
args: [{ selector: '[cdkCellDef]' }]
|
|
}], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();
|
|
/**
|
|
* Header cell definition for a CDK table.
|
|
* Captures the template of a column's header cell and as well as cell-specific properties.
|
|
*/
|
|
export class CdkHeaderCellDef {
|
|
constructor(/** @docs-private */ template) {
|
|
this.template = template;
|
|
}
|
|
}
|
|
CdkHeaderCellDef.ɵfac = function CdkHeaderCellDef_Factory(t) { return new (t || CdkHeaderCellDef)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };
|
|
CdkHeaderCellDef.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkHeaderCellDef, selectors: [["", "cdkHeaderCellDef", ""]] });
|
|
CdkHeaderCellDef.ctorParameters = () => [
|
|
{ type: TemplateRef }
|
|
];
|
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkHeaderCellDef, [{
|
|
type: Directive,
|
|
args: [{ selector: '[cdkHeaderCellDef]' }]
|
|
}], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();
|
|
/**
|
|
* Footer cell definition for a CDK table.
|
|
* Captures the template of a column's footer cell and as well as cell-specific properties.
|
|
*/
|
|
export class CdkFooterCellDef {
|
|
constructor(/** @docs-private */ template) {
|
|
this.template = template;
|
|
}
|
|
}
|
|
CdkFooterCellDef.ɵfac = function CdkFooterCellDef_Factory(t) { return new (t || CdkFooterCellDef)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };
|
|
CdkFooterCellDef.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkFooterCellDef, selectors: [["", "cdkFooterCellDef", ""]] });
|
|
CdkFooterCellDef.ctorParameters = () => [
|
|
{ type: TemplateRef }
|
|
];
|
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkFooterCellDef, [{
|
|
type: Directive,
|
|
args: [{ selector: '[cdkFooterCellDef]' }]
|
|
}], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();
|
|
// Boilerplate for applying mixins to CdkColumnDef.
|
|
/** @docs-private */
|
|
class CdkColumnDefBase {
|
|
}
|
|
const _CdkColumnDefBase = mixinHasStickyInput(CdkColumnDefBase);
|
|
/**
|
|
* Column definition for the CDK table.
|
|
* Defines a set of cells available for a table column.
|
|
*/
|
|
export class CdkColumnDef extends _CdkColumnDefBase {
|
|
constructor(_table) {
|
|
super();
|
|
this._table = _table;
|
|
this._stickyEnd = false;
|
|
}
|
|
/** Unique name for this column. */
|
|
get name() { return this._name; }
|
|
set name(name) { this._setNameInput(name); }
|
|
/**
|
|
* Whether this column should be sticky positioned on the end of the row. Should make sure
|
|
* that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value
|
|
* has been changed.
|
|
*/
|
|
get stickyEnd() {
|
|
return this._stickyEnd;
|
|
}
|
|
set stickyEnd(v) {
|
|
const prevValue = this._stickyEnd;
|
|
this._stickyEnd = coerceBooleanProperty(v);
|
|
this._hasStickyChanged = prevValue !== this._stickyEnd;
|
|
}
|
|
/**
|
|
* Overridable method that sets the css classes that will be added to every cell in this
|
|
* column.
|
|
* In the future, columnCssClassName will change from type string[] to string and this
|
|
* will set a single string value.
|
|
* @docs-private
|
|
*/
|
|
_updateColumnCssClassName() {
|
|
this._columnCssClassName = [`cdk-column-${this.cssClassFriendlyName}`];
|
|
}
|
|
/**
|
|
* This has been extracted to a util because of TS 4 and VE.
|
|
* View Engine doesn't support property rename inheritance.
|
|
* TS 4.0 doesn't allow properties to override accessors or vice-versa.
|
|
* @docs-private
|
|
*/
|
|
_setNameInput(value) {
|
|
// If the directive is set without a name (updated programmatically), then this setter will
|
|
// trigger with an empty string and should not overwrite the programmatically set value.
|
|
if (value) {
|
|
this._name = value;
|
|
this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/ig, '-');
|
|
this._updateColumnCssClassName();
|
|
}
|
|
}
|
|
}
|
|
CdkColumnDef.ɵfac = function CdkColumnDef_Factory(t) { return new (t || CdkColumnDef)(ɵngcc0.ɵɵdirectiveInject(CDK_TABLE, 8)); };
|
|
CdkColumnDef.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkColumnDef, selectors: [["", "cdkColumnDef", ""]], contentQueries: function CdkColumnDef_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
ɵngcc0.ɵɵcontentQuery(dirIndex, CdkCellDef, 5);
|
|
ɵngcc0.ɵɵcontentQuery(dirIndex, CdkHeaderCellDef, 5);
|
|
ɵngcc0.ɵɵcontentQuery(dirIndex, CdkFooterCellDef, 5);
|
|
} if (rf & 2) {
|
|
let _t;
|
|
ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.cell = _t.first);
|
|
ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerCell = _t.first);
|
|
ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerCell = _t.first);
|
|
} }, inputs: { sticky: "sticky", name: ["cdkColumnDef", "name"], stickyEnd: "stickyEnd" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }]), ɵngcc0.ɵɵInheritDefinitionFeature] });
|
|
CdkColumnDef.ctorParameters = () => [
|
|
{ type: undefined, decorators: [{ type: Inject, args: [CDK_TABLE,] }, { type: Optional }] }
|
|
];
|
|
CdkColumnDef.propDecorators = {
|
|
name: [{ type: Input, args: ['cdkColumnDef',] }],
|
|
stickyEnd: [{ type: Input, args: ['stickyEnd',] }],
|
|
cell: [{ type: ContentChild, args: [CdkCellDef,] }],
|
|
headerCell: [{ type: ContentChild, args: [CdkHeaderCellDef,] }],
|
|
footerCell: [{ type: ContentChild, args: [CdkFooterCellDef,] }]
|
|
};
|
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkColumnDef, [{
|
|
type: Directive,
|
|
args: [{
|
|
selector: '[cdkColumnDef]',
|
|
inputs: ['sticky'],
|
|
providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }]
|
|
}]
|
|
}], function () { return [{ type: undefined, decorators: [{
|
|
type: Inject,
|
|
args: [CDK_TABLE]
|
|
}, {
|
|
type: Optional
|
|
}] }]; }, { name: [{
|
|
type: Input,
|
|
args: ['cdkColumnDef']
|
|
}], stickyEnd: [{
|
|
type: Input,
|
|
args: ['stickyEnd']
|
|
}], cell: [{
|
|
type: ContentChild,
|
|
args: [CdkCellDef]
|
|
}], headerCell: [{
|
|
type: ContentChild,
|
|
args: [CdkHeaderCellDef]
|
|
}], footerCell: [{
|
|
type: ContentChild,
|
|
args: [CdkFooterCellDef]
|
|
}] }); })();
|
|
/** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */
|
|
export class BaseCdkCell {
|
|
constructor(columnDef, elementRef) {
|
|
// If IE 11 is dropped before we switch to setting a single class name, change to multi param
|
|
// with destructuring.
|
|
const classList = elementRef.nativeElement.classList;
|
|
for (const className of columnDef._columnCssClassName) {
|
|
classList.add(className);
|
|
}
|
|
}
|
|
}
|
|
/** Header cell template container that adds the right classes and role. */
|
|
export class CdkHeaderCell extends BaseCdkCell {
|
|
constructor(columnDef, elementRef) {
|
|
super(columnDef, elementRef);
|
|
}
|
|
}
|
|
CdkHeaderCell.ɵfac = function CdkHeaderCell_Factory(t) { return new (t || CdkHeaderCell)(ɵngcc0.ɵɵdirectiveInject(CdkColumnDef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };
|
|
CdkHeaderCell.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkHeaderCell, selectors: [["cdk-header-cell"], ["th", "cdk-header-cell", ""]], hostAttrs: ["role", "columnheader", 1, "cdk-header-cell"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });
|
|
CdkHeaderCell.ctorParameters = () => [
|
|
{ type: CdkColumnDef },
|
|
{ type: ElementRef }
|
|
];
|
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkHeaderCell, [{
|
|
type: Directive,
|
|
args: [{
|
|
selector: 'cdk-header-cell, th[cdk-header-cell]',
|
|
host: {
|
|
'class': 'cdk-header-cell',
|
|
'role': 'columnheader'
|
|
}
|
|
}]
|
|
}], function () { return [{ type: CdkColumnDef }, { type: ɵngcc0.ElementRef }]; }, null); })();
|
|
/** Footer cell template container that adds the right classes and role. */
|
|
export class CdkFooterCell extends BaseCdkCell {
|
|
constructor(columnDef, elementRef) {
|
|
var _a;
|
|
super(columnDef, elementRef);
|
|
if (((_a = columnDef._table) === null || _a === void 0 ? void 0 : _a._elementRef.nativeElement.nodeType) === 1) {
|
|
const tableRole = columnDef._table._elementRef.nativeElement
|
|
.getAttribute('role');
|
|
const role = (tableRole === 'grid' || tableRole === 'treegrid') ? 'gridcell' : 'cell';
|
|
elementRef.nativeElement.setAttribute('role', role);
|
|
}
|
|
}
|
|
}
|
|
CdkFooterCell.ɵfac = function CdkFooterCell_Factory(t) { return new (t || CdkFooterCell)(ɵngcc0.ɵɵdirectiveInject(CdkColumnDef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };
|
|
CdkFooterCell.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkFooterCell, selectors: [["cdk-footer-cell"], ["td", "cdk-footer-cell", ""]], hostAttrs: [1, "cdk-footer-cell"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });
|
|
CdkFooterCell.ctorParameters = () => [
|
|
{ type: CdkColumnDef },
|
|
{ type: ElementRef }
|
|
];
|
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkFooterCell, [{
|
|
type: Directive,
|
|
args: [{
|
|
selector: 'cdk-footer-cell, td[cdk-footer-cell]',
|
|
host: {
|
|
'class': 'cdk-footer-cell'
|
|
}
|
|
}]
|
|
}], function () { return [{ type: CdkColumnDef }, { type: ɵngcc0.ElementRef }]; }, null); })();
|
|
/** Cell template container that adds the right classes and role. */
|
|
export class CdkCell extends BaseCdkCell {
|
|
constructor(columnDef, elementRef) {
|
|
var _a;
|
|
super(columnDef, elementRef);
|
|
if (((_a = columnDef._table) === null || _a === void 0 ? void 0 : _a._elementRef.nativeElement.nodeType) === 1) {
|
|
const tableRole = columnDef._table._elementRef.nativeElement
|
|
.getAttribute('role');
|
|
const role = (tableRole === 'grid' || tableRole === 'treegrid') ? 'gridcell' : 'cell';
|
|
elementRef.nativeElement.setAttribute('role', role);
|
|
}
|
|
}
|
|
}
|
|
CdkCell.ɵfac = function CdkCell_Factory(t) { return new (t || CdkCell)(ɵngcc0.ɵɵdirectiveInject(CdkColumnDef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };
|
|
CdkCell.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkCell, selectors: [["cdk-cell"], ["td", "cdk-cell", ""]], hostAttrs: [1, "cdk-cell"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });
|
|
CdkCell.ctorParameters = () => [
|
|
{ type: CdkColumnDef },
|
|
{ type: ElementRef }
|
|
];
|
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkCell, [{
|
|
type: Directive,
|
|
args: [{
|
|
selector: 'cdk-cell, td[cdk-cell]',
|
|
host: {
|
|
'class': 'cdk-cell'
|
|
}
|
|
}]
|
|
}], function () { return [{ type: CdkColumnDef }, { type: ɵngcc0.ElementRef }]; }, null); })();
|
|
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay90YWJsZS9jZWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFFSCxPQUFPLEVBQWUscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUIsbUJBQW1CLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDeEUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQVFuQztBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILE1BQU0sT0FBTyxVQUFVO0FBQUcsSUFDeEIsWUFBWSxvQkFBb0IsQ0FBUSxRQUEwQjtBQUFJLFFBQTlCLGFBQVEsR0FBUixRQUFRLENBQWtCO0FBQUMsSUFBRSxDQUFDO0FBQ3hFO3NDQUhDLFNBQVMsU0FBQyxFQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUM7b0hBQ2hDO0FBQUM7QUFBb0MsWUFoQnhDLFdBQVc7QUFDWjs7Ozs0RUFBRTtBQW1CSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtBQUFHLElBQzlCLFlBQVksb0JBQW9CLENBQVEsUUFBMEI7QUFBSSxRQUE5QixhQUFRLEdBQVIsUUFBUSxDQUFrQjtBQUFDLElBQUUsQ0FBQztBQUN4RTs0Q0FIQyxTQUFTLFNBQUMsRUFBQyxRQUFRLEVBQUUsb0JBQW9CLEVBQUM7c0lBQ3RDO0FBQUM7QUFBMEMsWUF6QjlDLFdBQVc7QUFDWjs7Ozs0RUFBRTtBQTRCSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtBQUFHLElBQzlCLFlBQVksb0JBQW9CLENBQVEsUUFBMEI7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O0FBQ0g7bUNBaEJDLFNBQVMsU0FBQyxrQkFDVCxRQUFRLEVBQUUsd0JBQXdCLGtCQUNsQyxJQUFJLEVBQUUsc0JBQ0osT0FBTztBQUFFLFVBQVUsbUJBQ3BCLGVBQ0YsMkpBQ0k7QUFBQztBQUFpQyxZQUNkLFlBQVk7QUFBSSxZQTlMdkMsVUFBVTtBQUNYOzs7Ozs7Ozs7bUdBQUU7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9wdGlvbmFsLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NhblN0aWNrLCBDYW5TdGlja0N0b3IsIG1peGluSGFzU3RpY2t5SW5wdXR9IGZyb20gJy4vY2FuLXN0aWNrJztcbmltcG9ydCB7Q0RLX1RBQkxFfSBmcm9tICcuL3Rva2Vucyc7XG5cblxuLyoqIEJhc2UgaW50ZXJmYWNlIGZvciBhIGNlbGwgZGVmaW5pdGlvbi4gQ2FwdHVyZXMgYSBjb2x1bW4ncyBjZWxsIHRlbXBsYXRlIGRlZmluaXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxEZWYge1xuICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pjtcbn1cblxuLyoqXG4gKiBDZWxsIGRlZmluaXRpb24gZm9yIGEgQ0RLIHRhYmxlLlxuICogQ2FwdHVyZXMgdGhlIHRlbXBsYXRlIG9mIGEgY29sdW1uJ3MgZGF0YSByb3cgY2VsbCBhcyB3ZWxsIGFzIGNlbGwtc3BlY2lmaWMgcHJvcGVydGllcy5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbY2RrQ2VsbERlZl0nfSlcbmV4cG9ydCBjbGFzcyBDZGtDZWxsRGVmIGltcGxlbWVudHMgQ2VsbERlZiB7XG4gIGNvbnN0cnVjdG9yKC8qKiBAZG9jcy1wcml2YXRlICovIHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuLyoqXG4gKiBIZWFkZXIgY2VsbCBkZWZpbml0aW9uIGZvciBhIENESyB0YWJsZS5cbiAqIENhcHR1cmVzIHRoZSB0ZW1wbGF0ZSBvZiBhIGNvbHVtbidzIGhlYWRlciBjZWxsIGFuZCBhcyB3ZWxsIGFzIGNlbGwtc3BlY2lmaWMgcHJvcGVydGllcy5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbY2RrSGVhZGVyQ2VsbERlZl0nfSlcbmV4cG9ydCBjbGFzcyBDZGtIZWFkZXJDZWxsRGVmIGltcGxlbWVudHMgQ2VsbERlZiB7XG4gIGNvbnN0cnVjdG9yKC8qKiBAZG9jcy1wcml2YXRlICovIHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuLyoqXG4gKiBGb290ZXIgY2VsbCBkZWZpbml0aW9uIGZvciBhIENESyB0YWJsZS5cbiAqIENhcHR1cmVzIHRoZSB0ZW1wbGF0ZSBvZiBhIGNvbHVtbidzIGZvb3RlciBjZWxsIGFuZCBhcyB3ZWxsIGFzIGNlbGwtc3BlY2lmaWMgcHJvcGVydGllcy5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbY2RrRm9vdGVyQ2VsbERlZl0nfSlcbmV4cG9ydCBjbGFzcyBDZGtGb290ZXJDZWxsRGVmIGltcGxlbWVudHMgQ2VsbERlZiB7XG4gIGNvbnN0cnVjdG9yKC8qKiBAZG9jcy1wcml2YXRlICovIHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuLy8gQm9pbGVycGxhdGUgZm9yIGFwcGx5aW5nIG1peGlucyB0byBDZGtDb2x1bW5EZWYuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuY2xhc3MgQ2RrQ29sdW1uRGVmQmFzZSB7fVxuY29uc3QgX0Nka0NvbHVtbkRlZkJhc2U6IENhblN0aWNrQ3RvciZ0eXBlb2YgQ2RrQ29sdW1uRGVmQmFzZSA9XG4gICAgbWl4aW5IYXNTdGlja3lJbnB1dChDZGtDb2x1bW5EZWZCYXNlKTtcblxuLyoqXG4gKiBDb2x1bW4gZGVmaW5pdGlvbiBmb3IgdGhlIENESyB0YWJsZS5cbiAqIERlZmluZXMgYSBzZXQgb2YgY2VsbHMgYXZhaWxhYmxlIGZvciBhIHRhYmxlIGNvbHVtbi5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Nka0NvbHVtbkRlZl0nLFxuICBpbnB1dHM6IFsnc3RpY2t5J10sXG4gIHByb3ZpZGVyczogW3twcm92aWRlOiAnTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYnLCB1c2VFeGlzdGluZzogQ2RrQ29sdW1uRGVmfV0sXG59KVxuZXhwb3J0IGNsYXNzIENka0NvbHVtbkRlZiBleHRlbmRzIF9DZGtDb2x1bW5EZWZCYXNlIGltcGxlbWVudHMgQ2FuU3RpY2sge1xuICAvKiogVW5pcXVlIG5hbWUgZm9yIHRoaXMgY29sdW1uLiAqL1xuICBASW5wdXQoJ2Nka0NvbHVtbkRlZicpXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9uYW1lOyB9XG4gIHNldCBuYW1lKG5hbWU6IHN0cmluZykgeyB0aGlzLl9zZXROYW1lSW5wdXQobmFtZSk7IH1cbiAgcHJvdGVjdGVkIF9uYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBjb2x1bW4gc2hvdWxkIGJlIHN0aWNreSBwb3NpdGlvbmVkIG9uIHRoZSBlbmQgb2YgdGhlIHJvdy4gU2hvdWxkIG1ha2Ugc3VyZVxuICAgKiB0aGF0IGl0IG1pbWljcyB0aGUgYENhblN0aWNrYCBtaXhpbiBzdWNoIHRoYXQgYF9oYXNTdGlja3lDaGFuZ2VkYCBpcyBzZXQgdG8gdHJ1ZSBpZiB0aGUgdmFsdWVcbiAgICogaGFzIGJlZW4gY2hhbmdlZC5cbiAgICovXG4gIEBJbnB1dCgnc3RpY2t5RW5kJylcbiAgZ2V0IHN0aWNreUVuZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RpY2t5RW5kO1xuICB9XG4gIHNldCBzdGlja3lFbmQodjogYm9vbGVhbikge1xuICAgIGNvbnN0IHByZXZWYWx1ZSA9IHRoaXMuX3N0aWNreUVuZDtcbiAgICB0aGlzLl9zdGlja3lFbmQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgdGhpcy5faGFzU3RpY2t5Q2hhbmdlZCA9IHByZXZWYWx1ZSAhPT0gdGhpcy5fc3RpY2t5RW5kO1xuICB9XG4gIF9zdGlja3lFbmQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICBAQ29udGVudENoaWxkKENka0NlbGxEZWYpIGNlbGw6IENka0NlbGxEZWY7XG5cbiAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgQENvbnRlbnRDaGlsZChDZGtIZWFkZXJDZWxsRGVmKSBoZWFkZXJDZWxsOiBDZGtIZWFkZXJDZWxsRGVmO1xuXG4gIC8qKiBAZG9jcy1wcml2YXRlICovXG4gIEBDb250ZW50Q2hpbGQoQ2RrRm9vdGVyQ2VsbERlZikgZm9vdGVyQ2VsbDogQ2RrRm9vdGVyQ2VsbERlZjtcblxuICAvKipcbiAgICogVHJhbnNmb3JtZWQgdmVyc2lvbiBvZiB0aGUgY29sdW1uIG5hbWUgdGhhdCBjYW4gYmUgdXNlZCBhcyBwYXJ0IG9mIGEgQ1NTIGNsYXNzbmFtZS4gRXhjbHVkZXNcbiAgICogYWxsIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdGhlIHNwZWNpYWwgY2hhcmFjdGVycyAnLScgYW5kICdfJy4gQW55IGNoYXJhY3RlcnMgdGhhdFxuICAgKiBkbyBub3QgbWF0Y2ggYXJlIHJlcGxhY2VkIGJ5IHRoZSAnLScgY2hhcmFjdGVyLlxuICAgKi9cbiAgY3NzQ2xhc3NGcmllbmRseU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQ2xhc3MgbmFtZSBmb3IgY2VsbHMgaW4gdGhpcyBjb2x1bW4uXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIF9jb2x1bW5Dc3NDbGFzc05hbWU6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ0RLX1RBQkxFKSBAT3B0aW9uYWwoKSBwdWJsaWMgX3RhYmxlPzogYW55KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkYWJsZSBtZXRob2QgdGhhdCBzZXRzIHRoZSBjc3MgY2xhc3NlcyB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gZXZlcnkgY2VsbCBpbiB0aGlzXG4gICAqIGNvbHVtbi5cbiAgICogSW4gdGhlIGZ1dHVyZSwgY29sdW1uQ3NzQ2xhc3NOYW1lIHdpbGwgY2hhbmdlIGZyb20gdHlwZSBzdHJpbmdbXSB0byBzdHJpbmcgYW5kIHRoaXNcbiAgICogd2lsbCBzZXQgYSBzaW5nbGUgc3RyaW5nIHZhbHVlLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBwcm90ZWN0ZWQgX3VwZGF0ZUNvbHVtbkNzc0NsYXNzTmFtZSgpIHtcbiAgICB0aGlzLl9jb2x1bW5Dc3NDbGFzc05hbWUgPSBbYGNkay1jb2x1bW4tJHt0aGlzLmNzc0NsYXNzRnJpZW5kbHlOYW1lfWBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaGFzIGJlZW4gZXh0cmFjdGVkIHRvIGEgdXRpbCBiZWNhdXNlIG9mIFRTIDQgYW5kIFZFLlxuICAgKiBWaWV3IEVuZ2luZSBkb2Vzbid0IHN1cHBvcnQgcHJvcGVydHkgcmVuYW1lIGluaGVyaXRhbmNlLlxuICAgKiBUUyA0LjAgZG9lc24ndCBhbGxvdyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGFjY2Vzc29ycyBvciB2aWNlLXZlcnNhLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBwcm90ZWN0ZWQgX3NldE5hbWVJbnB1dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gSWYgdGhlIGRpcmVjdGl2ZSBpcyBzZXQgd2l0aG91dCBhIG5hbWUgKHVwZGF0ZWQgcHJvZ3JhbW1hdGljYWxseSksIHRoZW4gdGhpcyBzZXR0ZXIgd2lsbFxuICAgIC8vIHRyaWdnZXIgd2l0aCBhbiBlbXB0eSBzdHJpbmcgYW5kIHNob3VsZCBub3Qgb3ZlcndyaXRlIHRoZSBwcm9ncmFtbWF0aWNhbGx5IHNldCB2YWx1ZS5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX25hbWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY3NzQ2xhc3NGcmllbmRseU5hbWUgPSB2YWx1ZS5yZXBsYWNlKC9bXmEtejAtOV8tXS9pZywgJy0nKTtcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbkNzc0NsYXNzTmFtZSgpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zdGlja3k6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3N0aWNreUVuZDogQm9vbGVhbklucHV0O1xufVxuXG4vKiogQmFzZSBjbGFzcyBmb3IgdGhlIGNlbGxzLiBBZGRzIGEgQ1NTIGNsYXNzbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIGNvbHVtbiBpdCByZW5kZXJzIGluLiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VDZGtDZWxsIHtcbiAgY29uc3RydWN0b3IoY29sdW1uRGVmOiBDZGtDb2x1bW5EZWYsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAvLyBJZiBJRSAxMSBpcyBkcm9wcGVkIGJlZm9yZSB3ZSBzd2l0Y2ggdG8gc2V0dGluZyBhIHNpbmdsZSBjbGFzcyBuYW1lLCBjaGFuZ2UgdG8gbXVsdGkgcGFyYW1cbiAgICAvLyB3aXRoIGRlc3RydWN0dXJpbmcuXG4gICAgY29uc3QgY2xhc3NMaXN0ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdDtcbiAgICBmb3IgKGNvbnN0IGNsYXNzTmFtZSBvZiBjb2x1bW5EZWYuX2NvbHVtbkNzc0NsYXNzTmFtZSkge1xuICAgICAgY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgIH1cbiAgfVxufVxuXG4vKiogSGVhZGVyIGNlbGwgdGVtcGxhdGUgY29udGFpbmVyIHRoYXQgYWRkcyB0aGUgcmlnaHQgY2xhc3NlcyBhbmQgcm9sZS4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2Nkay1oZWFkZXItY2VsbCwgdGhbY2RrLWhlYWRlci1jZWxsXScsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnY2RrLWhlYWRlci1jZWxsJyxcbiAgICAncm9sZSc6ICdjb2x1bW5oZWFkZXInLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDZGtIZWFkZXJDZWxsIGV4dGVuZHMgQmFzZUNka0NlbGwge1xuICBjb25zdHJ1Y3Rvcihjb2x1bW5EZWY6IENka0NvbHVtbkRlZiwgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKGNvbHVtbkRlZiwgZWxlbWVudFJlZik7XG4gIH1cbn1cblxuLyoqIEZvb3RlciBjZWxsIHRlbXBsYXRlIGNvbnRhaW5lciB0aGF0IGFkZHMgdGhlIHJpZ2h0IGNsYXNzZXMgYW5kIHJvbGUuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdjZGstZm9vdGVyLWNlbGwsIHRkW2Nkay1mb290ZXItY2VsbF0nLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ2Nkay1mb290ZXItY2VsbCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENka0Zvb3RlckNlbGwgZXh0ZW5kcyBCYXNlQ2RrQ2VsbCB7XG4gIGNvbnN0cnVjdG9yKGNvbHVtbkRlZjogQ2RrQ29sdW1uRGVmLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoY29sdW1uRGVmLCBlbGVtZW50UmVmKTtcbiAgICBpZiAoY29sdW1uRGVmLl90YWJsZT8uX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgY29uc3QgdGFibGVSb2xlID0gY29sdW1uRGVmLl90YWJsZS5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgIC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKTtcbiAgICAgIGNvbnN0IHJvbGUgPSAodGFibGVSb2xlID09PSAnZ3JpZCcgfHwgdGFibGVSb2xlID09PSAndHJlZWdyaWQnKSA/ICdncmlkY2VsbCcgOiAnY2VsbCc7XG4gICAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdyb2xlJywgcm9sZSk7XG4gICAgfVxuICB9XG59XG5cbi8qKiBDZWxsIHRlbXBsYXRlIGNvbnRhaW5lciB0aGF0IGFkZHMgdGhlIHJpZ2h0IGNsYXNzZXMgYW5kIHJvbGUuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdjZGstY2VsbCwgdGRbY2RrLWNlbGxdJyxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdjZGstY2VsbCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENka0NlbGwgZXh0ZW5kcyBCYXNlQ2RrQ2VsbCB7XG4gIGNvbnN0cnVjdG9yKGNvbHVtbkRlZjogQ2RrQ29sdW1uRGVmLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoY29sdW1uRGVmLCBlbGVtZW50UmVmKTtcbiAgICBpZiAoY29sdW1uRGVmLl90YWJsZT8uX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgY29uc3QgdGFibGVSb2xlID0gY29sdW1uRGVmLl90YWJsZS5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgIC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKTtcbiAgICAgIGNvbnN0IHJvbGUgPSAodGFibGVSb2xlID09PSAnZ3JpZCcgfHwgdGFibGVSb2xlID09PSAndHJlZWdyaWQnKSA/ICdncmlkY2VsbCcgOiAnY2VsbCc7XG4gICAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdyb2xlJywgcm9sZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|