ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
189 lines • 21.2 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { Injectable, Injector } from '@angular/core';
import { ModalServiceComponent } from './modal.component';
import { ModalBaseOptions, ModalOptions } from './modal-options.provider';
import { PopupService } from 'ng-zorro-antd-mobile/core';
import * as i0 from "@angular/core";
let ModalService = class ModalService extends PopupService {
constructor() {
super(...arguments);
this.modalRef = null;
}
_open(props) {
const childInjector = Injector.create({
providers: [{ provide: ModalOptions, useValue: props }]
});
this.modalRef = this.showPopup(ModalServiceComponent, childInjector);
return this.modalRef && this.modalRef.instance;
}
closeWithAnimation() {
const options = new ModalBaseOptions();
this.modalRef.instance.transitionName = `${options.transitionName}-leave ${options.transitionName}-leave-active`;
this.modalRef.instance.maskTransitionName = `${options.maskTransitionName}-leave ${options.maskTransitionName}-leave-active`;
setTimeout(() => {
this.close();
}, 200);
}
alert(title, message, actions, platform) {
const options = new ModalOptions();
const footer = getFooter.call(this, actions);
const defaultOptions = {
visible: true,
transparent: true,
closable: false,
maskClosable: false,
platform: platform || 'ios',
title: title || '',
message: message || '',
footer,
actions: footer,
close: () => {
this.closeWithAnimation();
},
closeWithAnimation: () => {
this.closeWithAnimation();
}
};
const props = {
...options,
...defaultOptions
};
return this._open(props);
}
prompt(title, message, callbackOrActions, type, defaultValue, placeholders, platform) {
const options = new ModalOptions();
function getArgs(self, func) {
let text, password;
if (self.modalRef) {
text = self.modalRef.instance.data.text || options.defaultValue[0];
password = self.modalRef.instance.data.password || options.defaultValue[1];
}
else {
text = options.defaultValue[0];
password = options.defaultValue[1];
}
if (type === 'login-password') {
return func(text, password);
}
else if (type === 'secure-text') {
return func(password);
}
return func(text);
}
const actions = typeof callbackOrActions === 'function'
? [
{ text: 'Cancel' },
{
text: 'OK',
onPress: () => {
getArgs(this, callbackOrActions);
}
}
]
: callbackOrActions.map(item => {
return {
text: item.text,
onPress: () => {
if (item.onPress) {
return getArgs(this, item.onPress);
}
}
};
});
const footer = getFooter.call(this, actions);
const defaultOptions = {
visible: true,
transparent: true,
closable: false,
maskClosable: false,
operation: true,
className: 'm-modal-alert-content',
defaultValue: defaultValue || ['', ''],
placeholders: placeholders || [],
type: type || 'default',
title: title || '',
message: message || '',
footer,
actions: footer,
platform: platform ? platform : 'ios',
close: () => {
this.closeWithAnimation();
},
closeWithAnimation: () => {
this.closeWithAnimation();
}
};
const props = {
...options,
...defaultOptions
};
return this._open(props);
}
operation(actions, platform, customOptions) {
const options = new ModalOptions();
const footer = getFooter.call(this, actions);
const defaultOptions = {
visible: true,
transparent: true,
closable: false,
maskClosable: false,
operation: true,
className: 'am-modal-operation',
footer,
platform: platform ? platform : 'ios',
close: () => {
this.closeWithAnimation();
},
closeWithAnimation: () => {
this.closeWithAnimation();
}
};
const props = {
...options,
...defaultOptions,
...customOptions
};
return this._open(props);
}
close() {
this.hidePopup();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ModalService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ModalService, providedIn: 'root' }); }
};
ModalService = __decorate([
Injectable()
], ModalService);
export { ModalService };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ModalService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}, {
type: Injectable
}] });
function getFooter(actions) {
let _actions = actions ? actions : [{ text: 'OK', onPress: () => { } }];
return _actions.map((button) => {
const originPress = button.onPress || function () { };
button.onPress = () => {
const res = originPress();
if (res && res.then) {
res.then(() => {
this.closeWithAnimation();
});
}
else {
this.closeWithAnimation();
}
};
return button;
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBNkIsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBcUMsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBTWxELElBQU0sWUFBWSxHQUFsQixNQUFNLFlBQWEsU0FBUSxZQUFZO0lBQXZDOztRQUNMLGFBQVEsR0FBd0MsSUFBSSxDQUFDO0tBeUt0RDtJQXZLQyxLQUFLLENBQUMsS0FBdUI7UUFDM0IsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNwQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3hELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNyRSxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDakQsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixNQUFNLE9BQU8sR0FBcUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxjQUFjLFVBQVUsT0FBTyxDQUFDLGNBQWMsZUFBZSxDQUFDO1FBQ2pILElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFD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QVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztrQkFDQSxVQUFVOztBQTZLWCxTQUFTLFNBQVMsQ0FBQyxPQUFPO0lBQ3hCLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV2RSxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFjLEVBQUUsRUFBRTtRQUNyQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLGNBQVksQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ3BCLE1BQU0sR0FBRyxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQzFCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNaLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUM1QixDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzNCO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIENvbXBvbmVudFJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxCYXNlT3B0aW9ucywgTW9kYWxPcHRpb25zLCBNb2RhbFNlcnZpY2VDdXN0b21PcHRpb25zLCBBY3Rpb24gfSBmcm9tICcuL21vZGFsLW9wdGlvbnMucHJvdmlkZXInO1xuaW1wb3J0IHsgUG9wdXBTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC1tb2JpbGUvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSBleHRlbmRzIFBvcHVwU2VydmljZSB7XG4gIG1vZGFsUmVmOiBDb21wb25lbnRSZWY8TW9kYWxTZXJ2aWNlQ29tcG9uZW50PiA9IG51bGw7XG5cbiAgX29wZW4ocHJvcHM6IE1vZGFsQmFzZU9wdGlvbnMpOiBhbnkge1xuICAgIGNvbnN0IGNoaWxkSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNb2RhbE9wdGlvbnMsIHVzZVZhbHVlOiBwcm9wcyB9XVxuICAgIH0pO1xuXG4gICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMuc2hvd1BvcHVwKE1vZGFsU2VydmljZUNvbXBvbmVudCwgY2hpbGRJbmplY3Rvcik7XG4gICAgcmV0dXJuIHRoaXMubW9kYWxSZWYgJiYgdGhpcy5tb2RhbFJlZi5pbnN0YW5jZTtcbiAgfVxuXG4gIGNsb3NlV2l0aEFuaW1hdGlvbigpIHtcbiAgICBjb25zdCBvcHRpb25zOiBNb2RhbEJhc2VPcHRpb25zID0gbmV3IE1vZGFsQmFzZU9wdGlvbnMoKTtcbiAgICB0aGlzLm1vZGFsUmVmLmluc3RhbmNlLnRyYW5zaXRpb25OYW1lID0gYCR7b3B0aW9ucy50cmFuc2l0aW9uTmFtZX0tbGVhdmUgJHtvcHRpb25zLnRyYW5zaXRpb25OYW1lfS1sZWF2ZS1hY3RpdmVgO1xuICAgIHRoaXMubW9kYWxSZWYuaW5zdGFuY2UubWFza1RyYW5zaXRpb25OYW1lID0gYCR7b3B0aW9ucy5tYXNrVHJhbnNpdGlvbk5hbWV9LWxlYXZlICR7b3B0aW9ucy5tYXNrVHJhbnNpdGlvbk5hbWV9LWxlYXZlLWFjdGl2ZWA7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIGFsZXJ0KFxuICAgIHRpdGxlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PixcbiAgICBtZXNzYWdlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PixcbiAgICBhY3Rpb25zPzogQXJyYXk8YW55PixcbiAgICBwbGF0Zm9ybT86IHN0cmluZ1xuICApOiBhbnkge1xuICAgIGNvbnN0IG9wdGlvbnM6IE1vZGFsT3B0aW9ucyA9IG5ldyBNb2RhbE9wdGlvbnMoKTtcbiAgICBjb25zdCBmb290ZXIgPSBnZXRGb290ZXIuY2FsbCh0aGlzLCBhY3Rpb25zKTtcbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICB0cmFuc3BhcmVudDogdHJ1ZSxcbiAgICAgIGNsb3NhYmxlOiBmYWxzZSxcbiAgICAgIG1hc2tDbG9zYWJsZTogZmFsc2UsXG4gICAgICBwbGF0Zm9ybTogcGxhdGZvcm0gfHwgJ2lvcycsXG4gICAgICB0aXRsZTogdGl0bGUgfHwgJycsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8ICcnLFxuICAgICAgZm9vdGVyLFxuICAgICAgYWN0aW9uczogZm9vdGVyLFxuICAgICAgY2xvc2U6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZVdpdGhBbmltYXRpb24oKTtcbiAgICAgIH0sXG4gICAgICBjbG9zZVdpdGhBbmltYXRpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZVdpdGhBbmltYXRpb24oKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgLi4uZGVmYXVsdE9wdGlvbnNcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuX29wZW4ocHJvcHMpO1xuICB9XG5cbiAgcHJvbXB0KFxuICAgIHRpdGxlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PixcbiAgICBtZXNzYWdlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PixcbiAgICBjYWxsYmFja09yQWN0aW9ucz86IGFueSxcbiAgICB0eXBlPzogc3RyaW5nLFxuICAgIGRlZmF1bHRWYWx1ZT86IEFycmF5PHN0cmluZz4sXG4gICAgcGxhY2Vob2xkZXJzPzogQXJyYXk8YW55PixcbiAgICBwbGF0Zm9ybT86IHN0cmluZ1xuICApOiBhbnkge1xuICAgIGNvbnN0IG9wdGlvbnM6IE1vZGFsT3B0aW9ucyA9IG5ldyBNb2RhbE9wdGlvbnMoKTtcblxuICAgIGZ1bmN0aW9uIGdldEFyZ3Moc2VsZjogYW55LCBmdW5jOiBhbnkpIHtcbiAgICAgIGxldCB0ZXh0OiBhbnksIHBhc3N3b3JkOiBhbnk7XG4gICAgICBpZiAoc2VsZi5tb2RhbFJlZikge1xuICAgICAgICB0ZXh0ID0gc2VsZi5tb2RhbFJlZi5pbnN0YW5jZS5kYXRhLnRleHQgfHwgb3B0aW9ucy5kZWZhdWx0VmFsdWVbMF07XG4gICAgICAgIHBhc3N3b3JkID0gc2VsZi5tb2RhbFJlZi5pbnN0YW5jZS5kYXRhLnBhc3N3b3JkIHx8IG9wdGlvbnMuZGVmYXVsdFZhbHVlWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGV4dCA9IG9wdGlvbnMuZGVmYXVsdFZhbHVlWzBdO1xuICAgICAgICBwYXNzd29yZCA9IG9wdGlvbnMuZGVmYXVsdFZhbHVlWzFdO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gJ2xvZ2luLXBhc3N3b3JkJykge1xuICAgICAgICByZXR1cm4gZnVuYyh0ZXh0LCBwYXNzd29yZCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzZWN1cmUtdGV4dCcpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMocGFzc3dvcmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmModGV4dCk7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aW9ucyA9XG4gICAgICB0eXBlb2YgY2FsbGJhY2tPckFjdGlvbnMgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7IHRleHQ6ICdDYW5jZWwnIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRleHQ6ICdPSycsXG4gICAgICAgICAgICAgIG9uUHJlc3M6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBnZXRBcmdzKHRoaXMsIGNhbGxiYWNrT3JBY3Rpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgOiBjYWxsYmFja09yQWN0aW9ucy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgIG9uUHJlc3M6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5vblByZXNzKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0QXJncyh0aGlzLCBpdGVtLm9uUHJlc3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcblxuICAgIGNvbnN0IGZvb3RlciA9IGdldEZvb3Rlci5jYWxsKHRoaXMsIGFjdGlvbnMpO1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgIHRyYW5zcGFyZW50OiB0cnVlLFxuICAgICAgY2xvc2FibGU6IGZhbHNlLFxuICAgICAgbWFza0Nsb3NhYmxlOiBmYWxzZSxcbiAgICAgIG9wZXJhdGlvbjogdHJ1ZSxcbiAgICAgIGNsYXNzTmFtZTogJ20tbW9kYWwtYWxlcnQtY29udGVudCcsXG4gICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSB8fCBbJycsICcnXSxcbiAgICAgIHBsYWNlaG9sZGVyczogcGxhY2Vob2xkZXJzIHx8IFtdLFxuICAgICAgdHlwZTogdHlwZSB8fCAnZGVmYXVsdCcsXG4gICAgICB0aXRsZTogdGl0bGUgfHwgJycsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8ICcnLFxuICAgICAgZm9vdGVyLFxuICAgICAgYWN0aW9uczogZm9vdGVyLFxuICAgICAgcGxhdGZvcm06IHBsYXRmb3JtID8gcGxhdGZvcm0gOiAnaW9zJyxcbiAgICAgIGNsb3NlOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VXaXRoQW5pbWF0aW9uKCk7XG4gICAgICB9LFxuICAgICAgY2xvc2VXaXRoQW5pbWF0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VXaXRoQW5pbWF0aW9uKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIC4uLmRlZmF1bHRPcHRpb25zXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLl9vcGVuKHByb3BzKTtcbiAgfVxuXG4gIG9wZXJhdGlvbihhY3Rpb25zPzogYW55LCBwbGF0Zm9ybT86IHN0cmluZywgY3VzdG9tT3B0aW9ucz86IE1vZGFsU2VydmljZUN1c3RvbU9wdGlvbnMpOiBhbnkge1xuICAgIGNvbnN0IG9wdGlvbnM6IE1vZGFsT3B0aW9ucyA9IG5ldyBNb2RhbE9wdGlvbnMoKTtcbiAgICBjb25zdCBmb290ZXIgPSBnZXRGb290ZXIuY2FsbCh0aGlzLCBhY3Rpb25zKTtcbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICB0cmFuc3BhcmVudDogdHJ1ZSxcbiAgICAgIGNsb3NhYmxlOiBmYWxzZSxcbiAgICAgIG1hc2tDbG9zYWJsZTogZmFsc2UsXG4gICAgICBvcGVyYXRpb246IHRydWUsXG4gICAgICBjbGFzc05hbWU6ICdhbS1tb2RhbC1vcGVyYXRpb24nLFxuICAgICAgZm9vdGVyLFxuICAgICAgcGxhdGZvcm06IHBsYXRmb3JtID8gcGxhdGZvcm0gOiAnaW9zJyxcbiAgICAgIGNsb3NlOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VXaXRoQW5pbWF0aW9uKCk7XG4gICAgICB9LFxuICAgICAgY2xvc2VXaXRoQW5pbWF0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VXaXRoQW5pbWF0aW9uKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgICAgLi4uY3VzdG9tT3B0aW9uc1xuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5fb3Blbihwcm9wcyk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmhpZGVQb3B1cCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEZvb3RlcihhY3Rpb25zKSB7XG4gIGxldCBfYWN0aW9ucyA9IGFjdGlvbnMgPyBhY3Rpb25zIDogW3sgdGV4dDogJ09LJywgb25QcmVzczogKCkgPT4ge30gfV07XG5cbiAgcmV0dXJuIF9hY3Rpb25zLm1hcCgoYnV0dG9uOiBBY3Rpb24pID0+IHtcbiAgICBjb25zdCBvcmlnaW5QcmVzcyA9IGJ1dHRvbi5vblByZXNzIHx8IGZ1bmN0aW9uKCkge307XG4gICAgYnV0dG9uLm9uUHJlc3MgPSAoKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBvcmlnaW5QcmVzcygpO1xuICAgICAgaWYgKHJlcyAmJiByZXMudGhlbikge1xuICAgICAgICByZXMudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jbG9zZVdpdGhBbmltYXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb3NlV2l0aEFuaW1hdGlvbigpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGJ1dHRvbjtcbiAgfSk7XG59XG4iXX0=