smart-webcomponents-angular
Version:
[](https://jqwidgets.com/license/)
169 lines • 27.8 kB
JavaScript
import { Directive, Input } from '@angular/core';
import { BaseElement } from './smart.element';
import * as i0 from "@angular/core";
export { Smart } from './smart.element';
export class RibbonItemComponent extends BaseElement {
constructor(ref) {
super(ref);
this.eventHandlers = [];
this.nativeElement = ref.nativeElement;
}
/** @description Creates the component on demand.
* @param properties An optional object of properties, which will be added to the template binded ones.
*/
createComponent(properties = {}) {
this.nativeElement = document.createElement('smart-ribbon-item');
for (let propertyName in properties) {
this.nativeElement[propertyName] = properties[propertyName];
}
return this.nativeElement;
}
/** @description Specifies whether the ribbon item is disabled and unresponsive to user interactions. If set to 'true', the ribbon item will appear visually inactive and cannot be clicked or selected by the user. If 'false', the item remains enabled and fully interactive. */
get disabled() {
return this.nativeElement ? this.nativeElement.disabled : undefined;
}
set disabled(value) {
this.nativeElement ? this.nativeElement.disabled = value : undefined;
}
/** @description Specifies the text displayed as the label on the ribbon item, providing users with a clear description or name for the ribbon element. */
get label() {
return this.nativeElement ? this.nativeElement.label : undefined;
}
set label(value) {
this.nativeElement ? this.nativeElement.label = value : undefined;
}
/** @description Specifies the category or function of the ribbon item, such as button, dropdown, separator, or other UI element types. This property helps define how the ribbon item behaves and is displayed within the ribbon interface. */
get type() {
return this.nativeElement ? this.nativeElement.type : undefined;
}
set type(value) {
this.nativeElement ? this.nativeElement.type = value : undefined;
}
/** @description Specifies the template used to render the ribbon item. This property accepts one of the following:- An HTMLTemplateElement instance.- The id (string) of an existing HTMLTemplateElement in the DOM.- A function that returns either a template string or an HTML element.This allows you to customize the appearance and content of the ribbon item by providing a static template, referencing a template by id, or generating templates dynamically through a function. */
get template() {
return this.nativeElement ? this.nativeElement.template : undefined;
}
set template(value) {
this.nativeElement ? this.nativeElement.template = value : undefined;
}
/** @description Specifies the dimensions or size configuration (such as small, medium, or large) for the ribbon item, affecting its visual appearance and layout within the ribbon interface. */
get size() {
return this.nativeElement ? this.nativeElement.size : undefined;
}
set size(value) {
this.nativeElement ? this.nativeElement.size = value : undefined;
}
/** @description */
get sizeChanged() {
return this.nativeElement ? this.nativeElement.sizeChanged : undefined;
}
set sizeChanged(value) {
this.nativeElement ? this.nativeElement.sizeChanged = value : undefined;
}
/** @description Specifies the permissible dimensions (such as small, medium, or large) that the ribbon item can be displayed in. This setting controls which size options are available for the ribbon item’s appearance within the user interface. */
get allowedSizes() {
return this.nativeElement ? this.nativeElement.allowedSizes : undefined;
}
set allowedSizes(value) {
this.nativeElement ? this.nativeElement.allowedSizes = value : undefined;
}
/** @description Specifies the icon displayed on the ribbon item. This property sets the visual symbol or graphic that represents the ribbon item in the user interface, allowing users to quickly identify its function. The icon can typically be defined using an icon name, image URL, or SVG markup, depending on the framework or library in use. */
get icon() {
return this.nativeElement ? this.nativeElement.icon : undefined;
}
set icon(value) {
this.nativeElement ? this.nativeElement.icon = value : undefined;
}
/** @description Controls the configuration options for the ribbon item. When the ribbon item is designated as a Smart Element, these settings are applied as its properties, allowing for dynamic customization of its appearance and behavior within the ribbon interface. */
get settings() {
return this.nativeElement ? this.nativeElement.settings : undefined;
}
set settings(value) {
this.nativeElement ? this.nativeElement.settings = value : undefined;
}
/** @description Specifies the CSS class or classes to be applied to the ribbon item, allowing for customized styling and appearance. This property enables developers to control the visual presentation of individual ribbon items by assigning one or more class names. */
get cssClass() {
return this.nativeElement ? this.nativeElement.cssClass : undefined;
}
set cssClass(value) {
this.nativeElement ? this.nativeElement.cssClass = value : undefined;
}
/** @description Assigns a custom function to be executed when the ribbon item is clicked, enabling the implementation of specific actions or behaviors in response to user interaction. */
get onItemClick() {
return this.nativeElement ? this.nativeElement.onItemClick : undefined;
}
set onItemClick(value) {
this.nativeElement ? this.nativeElement.onItemClick = value : undefined;
}
/** @description Registers a handler function that will be triggered when the ribbon item's value or state changes, allowing you to respond dynamically to user interactions or programmatic updates. */
get onItemChange() {
return this.nativeElement ? this.nativeElement.onItemChange : undefined;
}
set onItemChange(value) {
this.nativeElement ? this.nativeElement.onItemChange = value : undefined;
}
/** @description Specifies the text that appears as a tooltip when users hover over the ribbon item, providing additional information or guidance about its function. */
get tooltip() {
return this.nativeElement ? this.nativeElement.tooltip : undefined;
}
set tooltip(value) {
this.nativeElement ? this.nativeElement.tooltip = value : undefined;
}
get isRendered() {
return this.nativeElement ? this.nativeElement.isRendered : false;
}
ngOnInit() {
}
ngAfterViewInit() {
const that = this;
that.onCreate.emit(that.nativeElement);
this.nativeElement.classList.add('smart-angular');
if (this.nativeElement.whenRendered)
this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });
}
ngOnDestroy() { }
ngOnChanges(changes) {
if (this.nativeElement && this.nativeElement.isRendered) {
for (const propName in changes) {
if (changes.hasOwnProperty(propName)) {
this.nativeElement[propName] = changes[propName].currentValue;
}
}
}
}
}
RibbonItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: RibbonItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
RibbonItemComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.6", type: RibbonItemComponent, selector: "smart-ribbon-item, [smart-ribbon-item]", inputs: { disabled: "disabled", label: "label", type: "type", template: "template", size: "size", sizeChanged: "sizeChanged", allowedSizes: "allowedSizes", icon: "icon", settings: "settings", cssClass: "cssClass", onItemClick: "onItemClick", onItemChange: "onItemChange", tooltip: "tooltip" }, exportAs: ["smart-ribbon-item"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: RibbonItemComponent, decorators: [{
type: Directive,
args: [{
exportAs: 'smart-ribbon-item', selector: 'smart-ribbon-item, [smart-ribbon-item]'
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { disabled: [{
type: Input
}], label: [{
type: Input
}], type: [{
type: Input
}], template: [{
type: Input
}], size: [{
type: Input
}], sizeChanged: [{
type: Input
}], allowedSizes: [{
type: Input
}], icon: [{
type: Input
}], settings: [{
type: Input
}], cssClass: [{
type: Input
}], onItemClick: [{
type: Input
}], onItemChange: [{
type: Input
}], tooltip: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQucmliYm9uaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3JpYmJvbi9zcmMvc21hcnQucmliYm9uaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWEsU0FBUyxFQUE2QixLQUFLLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBQ3BJLE9BQU8sRUFBRSxXQUFXLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUXhDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUFXO0lBQ25ELFlBQVksR0FBMkI7UUFDdEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBSUosa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFIakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsYUFBMkIsQ0FBQztJQUN0RCxDQUFDO0lBS0Q7O09BRUc7SUFDSSxlQUFlLENBQUMsVUFBVSxHQUFHLEVBQUU7UUFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBZSxRQUFRLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDaEYsS0FBSyxJQUFJLFlBQVksSUFBSSxVQUFVLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDN0Q7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDM0IsQ0FBQztJQUNELG1SQUFtUjtJQUNuUixJQUNJLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDckUsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FB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QyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4SCxDQUFDO0lBRUQsV0FBVyxLQUFLLENBQUM7SUFFakIsV0FBVyxDQUFDLE9BQXNCO1FBQ2pDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRTtZQUN4RCxLQUFLLE1BQU0sUUFBUSxJQUFJLE9BQU8sRUFBRTtnQkFDL0IsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUM7aUJBQzlEO2FBQ0Q7U0FDRDtJQUNGLENBQUM7O2dIQXBLVyxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsd0NBQXdDO2lCQUNqRjtpR0F1QkksUUFBUTtzQkFEWCxLQUFLO2dCQVVGLEtBQUs7c0JBRFIsS0FBSztnQkFVRixJQUFJO3NCQURQLEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLElBQUk7c0JBRFAsS0FBSztnQkFVRixXQUFXO3NCQURkLEtBQUs7Z0JBVUYsWUFBWTtzQkFEZixLQUFLO2dCQVVGLElBQUk7c0JBRFAsS0FBSztnQkFVRixRQUFRO3NCQURYLEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLFdBQVc7c0JBRGQsS0FBSztnQkFVRixZQUFZO3NCQURmLEtBQUs7Z0JBVUYsT0FBTztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmliYm9uSXRlbSB9IGZyb20gJy4vLi4vaW5kZXgnO1xuaW1wb3J0IHsgUmliYm9uSXRlbVR5cGUsIFJpYmJvbkl0ZW1TaXplLCBSaWJib25JdGVtU2V0dGluZ3MsIEVsZW1lbnRSZW5kZXJNb2RlfSBmcm9tICcuLy4uL2luZGV4JztcbmltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlLCBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUVsZW1lbnQsIFNtYXJ0IH0gZnJvbSAnLi9zbWFydC5lbGVtZW50JztcbmV4cG9ydCB7IFJpYmJvbkl0ZW1UeXBlLCBSaWJib25JdGVtU2l6ZSwgUmliYm9uSXRlbVNldHRpbmdzLCBFbGVtZW50UmVuZGVyTW9kZX0gZnJvbSAnLi8uLi9pbmRleCc7XG5leHBvcnQgeyBTbWFydCB9IGZyb20gJy4vc21hcnQuZWxlbWVudCc7XG5leHBvcnQgeyBSaWJib25JdGVtIH0gZnJvbSAnLi8uLi9pbmRleCc7XG5cblxuQERpcmVjdGl2ZSh7XG5cdGV4cG9ydEFzOiAnc21hcnQtcmliYm9uLWl0ZW0nLFx0c2VsZWN0b3I6ICdzbWFydC1yaWJib24taXRlbSwgW3NtYXJ0LXJpYmJvbi1pdGVtXSdcbn0pXG5cbmV4cG9ydCBjbGFzcyBSaWJib25JdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZUVsZW1lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblx0Y29uc3RydWN0b3IocmVmOiBFbGVtZW50UmVmPFJpYmJvbkl0ZW0+KSB7XG5cdFx0c3VwZXIocmVmKTtcblx0XHR0aGlzLm5hdGl2ZUVsZW1lbnQgPSByZWYubmF0aXZlRWxlbWVudCBhcyBSaWJib25JdGVtO1xuXHR9XG5cblx0cHJpdmF0ZSBldmVudEhhbmRsZXJzOiBhbnlbXSA9IFtdO1xuXG5cdHB1YmxpYyBkZWNsYXJlIG5hdGl2ZUVsZW1lbnQ6IFJpYmJvbkl0ZW07XG5cdC8qKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyB0aGUgY29tcG9uZW50IG9uIGRlbWFuZC5cblx0ICogQHBhcmFtIHByb3BlcnRpZXMgQW4gb3B0aW9uYWwgb2JqZWN0IG9mIHByb3BlcnRpZXMsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIGJpbmRlZCBvbmVzLlxuXHQgKi9cblx0cHVibGljIGNyZWF0ZUNvbXBvbmVudChwcm9wZXJ0aWVzID0ge30pOiBhbnkge1xuICAgIFx0dGhpcy5uYXRpdmVFbGVtZW50ID0gPFJpYmJvbkl0ZW0+ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc21hcnQtcmliYm9uLWl0ZW0nKTtcblx0XHRmb3IgKGxldCBwcm9wZXJ0eU5hbWUgaW4gcHJvcGVydGllcykgeyBcbiBcdFx0XHR0aGlzLm5hdGl2ZUVsZW1lbnRbcHJvcGVydHlOYW1lXSA9IHByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudDtcblx0fVxuXHQvKiogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyB3aGV0aGVyIHRoZSByaWJib24gaXRlbSBpcyBkaXNhYmxlZCBhbmQgdW5yZXNwb25zaXZlIHRvIHVzZXIgaW50ZXJhY3Rpb25zLiBJZiBzZXQgdG8gJ3RydWUnLCB0aGUgcmliYm9uIGl0ZW0gd2lsbCBhcHBlYXIgdmlzdWFsbHkgaW5hY3RpdmUgYW5kIGNhbm5vdCBiZSBjbGlja2VkIG9yIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLiBJZiAnZmFsc2UnLCB0aGUgaXRlbSByZW1haW5zIGVuYWJsZWQgYW5kIGZ1bGx5IGludGVyYWN0aXZlLiAqL1xuXHRASW5wdXQoKVxuXHRnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA6IHVuZGVmaW5lZDtcblx0fVxuXHRzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcblx0XHR0aGlzLm5hdGl2ZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSB2YWx1ZSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKiBAZGVzY3JpcHRpb24gU3BlY2lmaWVzIHRoZSB0ZXh0IGRpc3BsYXllZCBhcyB0aGUgbGFiZWwgb24gdGhlIHJpYmJvbiBpdGVtLCBwcm92aWRpbmcgdXNlcnMgd2l0aCBhIGNsZWFyIGRlc2NyaXB0aW9uIG9yIG5hbWUgZm9yIHRoZSByaWJib24gZWxlbWVudC4gKi9cblx0QElucHV0KClcblx0Z2V0IGxhYmVsKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5sYWJlbCA6IHVuZGVmaW5lZDtcblx0fVxuXHRzZXQgbGFiZWwodmFsdWU6IHN0cmluZykge1xuXHRcdHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5sYWJlbCA9IHZhbHVlIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgdGhlIGNhdGVnb3J5IG9yIGZ1bmN0aW9uIG9mIHRoZSByaWJib24gaXRlbSwgc3VjaCBhcyBidXR0b24sIGRyb3Bkb3duLCBzZXBhcmF0b3IsIG9yIG90aGVyIFVJIGVsZW1lbnQgdHlwZXMuIFRoaXMgcHJvcGVydHkgaGVscHMgZGVmaW5lIGhvdyB0aGUgcmliYm9uIGl0ZW0gYmVoYXZlcyBhbmQgaXMgZGlzcGxheWVkIHdpdGhpbiB0aGUgcmliYm9uIGludGVyZmFjZS4gKi9cblx0QElucHV0KClcblx0Z2V0IHR5cGUoKTogUmliYm9uSXRlbVR5cGUgfCBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUVsZW1lbnQudHlwZSA6IHVuZGVmaW5lZDtcblx0fVxuXHRzZXQgdHlwZSh2YWx1ZTogUmliYm9uSXRlbVR5cGUgfCBzdHJpbmcpIHtcblx0XHR0aGlzLm5hdGl2ZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUVsZW1lbnQudHlwZSA9IHZhbHVlIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIHRoZSByaWJib24gaXRlbS4gVGhpcyBwcm9wZXJ0eSBhY2NlcHRzIG9uZSBvZiB0aGUgZm9sbG93aW5nOi0gQW4gSFRNTFRlbXBsYXRlRWxlbWVudCBpbnN0YW5jZS4tIFRoZSBpZCAoc3RyaW5nKSBvZiBhbiBleGlzdGluZyBIVE1MVGVtcGxhdGVFbGVtZW50IGluIHRoZSBET00uLSBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBlaXRoZXIgYSB0ZW1wbGF0ZSBzdHJpbmcgb3IgYW4gSFRNTCBlbGVtZW50LlRoaXMgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgdGhlIGFwcGVhcmFuY2UgYW5kIGNvbnRlbnQgb2YgdGhlIHJpYmJvbiBpdGVtIGJ5IHByb3ZpZGluZyBhIHN0YXRpYyB0ZW1wbGF0ZSwgcmVmZXJlbmNpbmcgYSB0ZW1wbGF0ZSBieSBpZCwgb3IgZ2VuZXJhdGluZyB0ZW1wbGF0ZXMgZHluYW1pY2FsbHkgdGhyb3VnaCBhIGZ1bmN0aW9uLiAqL1xuXHRASW5wdXQoKVxuXHRnZXQgdGVtcGxhdGUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LnRlbXBsYXRlIDogdW5kZWZpbmVkO1xuXHR9XG5cdHNldCB0ZW1wbGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LnRlbXBsYXRlID0gdmFsdWUgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKiogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyB0aGUgZGltZW5zaW9ucyBvciBzaXplIGNvbmZpZ3VyYXRpb24gKHN1Y2ggYXMgc21hbGwsIG1lZGl1bSwgb3IgbGFyZ2UpIGZvciB0aGUgcmliYm9uIGl0ZW0sIGFmZmVjdGluZyBpdHMgdmlzdWFsIGFwcGVhcmFuY2UgYW5kIGxheW91dCB3aXRoaW4gdGhlIHJpYmJvbiBpbnRlcmZhY2UuICovXG5cdEBJbnB1dCgpXG5cdGdldCBzaXplKCk6IFJpYmJvbkl0ZW1TaXplIHwgc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LnNpemUgOiB1bmRlZmluZWQ7XG5cdH1cblx0c2V0IHNpemUodmFsdWU6IFJpYmJvbkl0ZW1TaXplIHwgc3RyaW5nKSB7XG5cdFx0dGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LnNpemUgPSB2YWx1ZSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKiBAZGVzY3JpcHRpb24gICovXG5cdEBJbnB1dCgpXG5cdGdldCBzaXplQ2hhbmdlZCgpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUVsZW1lbnQuc2l6ZUNoYW5nZWQgOiB1bmRlZmluZWQ7XG5cdH1cblx0c2V0IHNpemVDaGFuZ2VkKHZhbHVlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUVsZW1lbnQuc2l6ZUNoYW5nZWQgPSB2YWx1ZSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKiBAZGVzY3JpcHRpb24gU3BlY2lmaWVzIHRoZSBwZXJtaXNzaWJsZSBkaW1lbnNpb25zIChzdWNoIGFzIHNtYWxsLCBtZWRpdW0sIG9yIGxhcmdlKSB0aGF0IHRoZSByaWJib24gaXRlbSBjYW4gYmUgZGlzcGxheWVkIGluLiBUaGlzIHNldHRpbmcgY29udHJvbHMgd2hpY2ggc2l6ZSBvcHRpb25zIGFyZSBhdmFpbGFibGUgZm9yIHRoZSByaWJib24gaXRlbeKAmXMgYXBwZWFyYW5jZSB3aXRoaW4gdGhlIHVzZXIgaW50ZXJmYWNlLiAqL1xuXHRASW5wdXQoKVxuXHRnZXQgYWxsb3dlZFNpemVzKCk6IGFueSB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5hbGxvd2VkU2l6ZXMgOiB1bmRlZmluZWQ7XG5cdH1cblx0c2V0IGFsbG93ZWRTaXplcyh2YWx1ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LmFsbG93ZWRTaXplcyA9IHZhbHVlIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgdGhlIGljb24gZGlzcGxheWVkIG9uIHRoZSByaWJib24gaXRlbS4gVGhpcyBwcm9wZXJ0eSBzZXRzIHRoZSB2aXN1YWwgc3ltYm9sIG9yIGdyYXBoaWMgdGhhdCByZXByZXNlbnRzIHRoZSByaWJib24gaXRlbSBpbiB0aGUgdXNlciBpbnRlcmZhY2UsIGFsbG93aW5nIHVzZXJzIHRvIHF1aWNrbHkgaWRlbnRpZnkgaXRzIGZ1bmN0aW9uLiBUaGUgaWNvbiBjYW4gdHlwaWNhbGx5IGJlIGRlZmluZWQgdXNpbmcgYW4gaWNvbiBuYW1lLCBpbWFnZSBVUkwsIG9yIFNWRyBtYXJrdXAsIGRlcGVuZGluZyBvbiB0aGUgZnJhbWV3b3JrIG9yIGxpYnJhcnkgaW4gdXNlLiAqL1xuXHRASW5wdXQoKVxuXHRnZXQgaWNvbigpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUVsZW1lbnQuaWNvbiA6IHVuZGVmaW5lZDtcblx0fVxuXHRzZXQgaWNvbih2YWx1ZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50Lmljb24gPSB2YWx1ZSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHJpYmJvbiBpdGVtLiBXaGVuIHRoZSByaWJib24gaXRlbSBpcyBkZXNpZ25hdGVkIGFzIGEgU21hcnQgRWxlbWVudCwgdGhlc2Ugc2V0dGluZ3MgYXJlIGFwcGxpZWQgYXMgaXRzIHByb3BlcnRpZXMsIGFsbG93aW5nIGZvciBkeW5hbWljIGN1c3RvbWl6YXRpb24gb2YgaXRzIGFwcGVhcmFuY2UgYW5kIGJlaGF2aW9yIHdpdGhpbiB0aGUgcmliYm9uIGludGVyZmFjZS4gKi9cblx0QElucHV0KClcblx0Z2V0IHNldHRpbmdzKCk6IFJpYmJvbkl0ZW1TZXR0aW5ncyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5zZXR0aW5ncyA6IHVuZGVmaW5lZDtcblx0fVxuXHRzZXQgc2V0dGluZ3ModmFsdWU6IFJpYmJvbkl0ZW1TZXR0aW5ncykge1xuXHRcdHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5zZXR0aW5ncyA9IHZhbHVlIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgdGhlIENTUyBjbGFzcyBvciBjbGFzc2VzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHJpYmJvbiBpdGVtLCBhbGxvd2luZyBmb3IgY3VzdG9taXplZCBzdHlsaW5nIGFuZCBhcHBlYXJhbmNlLiBUaGlzIHByb3BlcnR5IGVuYWJsZXMgZGV2ZWxvcGVycyB0byBjb250cm9sIHRoZSB2aXN1YWwgcHJlc2VudGF0aW9uIG9mIGluZGl2aWR1YWwgcmliYm9uIGl0ZW1zIGJ5IGFzc2lnbmluZyBvbmUgb3IgbW9yZSBjbGFzcyBuYW1lcy4gKi9cblx0QElucHV0KClcblx0Z2V0IGNzc0NsYXNzKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5jc3NDbGFzcyA6IHVuZGVmaW5lZDtcblx0fVxuXHRzZXQgY3NzQ2xhc3ModmFsdWU6IHN0cmluZykge1xuXHRcdHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5jc3NDbGFzcyA9IHZhbHVlIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqIEBkZXNjcmlwdGlvbiBBc3NpZ25zIGEgY3VzdG9tIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHJpYmJvbiBpdGVtIGlzIGNsaWNrZWQsIGVuYWJsaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzcGVjaWZpYyBhY3Rpb25zIG9yIGJlaGF2aW9ycyBpbiByZXNwb25zZSB0byB1c2VyIGludGVyYWN0aW9uLiAqL1xuXHRASW5wdXQoKVxuXHRnZXQgb25JdGVtQ2xpY2soKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50Lm9uSXRlbUNsaWNrIDogdW5kZWZpbmVkO1xuXHR9XG5cdHNldCBvbkl0ZW1DbGljayh2YWx1ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50Lm9uSXRlbUNsaWNrID0gdmFsdWUgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKiogQGRlc2NyaXB0aW9uIFJlZ2lzdGVycyBhIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSByaWJib24gaXRlbSdzIHZhbHVlIG9yIHN0YXRlIGNoYW5nZXMsIGFsbG93aW5nIHlvdSB0byByZXNwb25kIGR5bmFtaWNhbGx5IHRvIHVzZXIgaW50ZXJhY3Rpb25zIG9yIHByb2dyYW1tYXRpYyB1cGRhdGVzLiAqL1xuXHRASW5wdXQoKVxuXHRnZXQgb25JdGVtQ2hhbmdlKCk6IGFueSB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC5vbkl0ZW1DaGFuZ2UgOiB1bmRlZmluZWQ7XG5cdH1cblx0c2V0IG9uSXRlbUNoYW5nZSh2YWx1ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50Lm9uSXRlbUNoYW5nZSA9IHZhbHVlIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgdGhlIHRleHQgdGhhdCBhcHBlYXJzIGFzIGEgdG9vbHRpcCB3aGVuIHVzZXJzIGhvdmVyIG92ZXIgdGhlIHJpYmJvbiBpdGVtLCBwcm92aWRpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvciBndWlkYW5jZSBhYm91dCBpdHMgZnVuY3Rpb24uICovXG5cdEBJbnB1dCgpXG5cdGdldCB0b29sdGlwKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudCA/IHRoaXMubmF0aXZlRWxlbWVudC50b29sdGlwIDogdW5kZWZpbmVkO1xuXHR9XG5cdHNldCB0b29sdGlwKHZhbHVlOiBzdHJpbmcpIHtcblx0XHR0aGlzLm5hdGl2ZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUVsZW1lbnQudG9vbHRpcCA9IHZhbHVlIDogdW5kZWZpbmVkO1xuXHR9XG5cblxuXHRnZXQgaXNSZW5kZXJlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50ID8gdGhpcy5uYXRpdmVFbGVtZW50LmlzUmVuZGVyZWQgOiBmYWxzZTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHR9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICBjb25zdCB0aGF0ID0gdGhpcztcblxuICAgICAgdGhhdC5vbkNyZWF0ZS5lbWl0KHRoYXQubmF0aXZlRWxlbWVudCk7XG5cblx0XHR0aGlzLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnc21hcnQtYW5ndWxhcicpO1xuXG5cdFx0aWYgKHRoaXMubmF0aXZlRWxlbWVudC53aGVuUmVuZGVyZWQpIHRoaXMubmF0aXZlRWxlbWVudC53aGVuUmVuZGVyZWQoKCkgPT4geyB0aGF0Lm9uUmVhZHkuZW1pdCh0aGF0Lm5hdGl2ZUVsZW1lbnQpOyB9KTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1x0fVxuXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcblx0XHRpZiAodGhpcy5uYXRpdmVFbGVtZW50ICYmIHRoaXMubmF0aXZlRWxlbWVudC5pc1JlbmRlcmVkKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHByb3BOYW1lIGluIGNoYW5nZXMpIHtcblx0XHRcdFx0aWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG5cdFx0XHRcdFx0dGhpcy5uYXRpdmVFbGVtZW50W3Byb3BOYW1lXSA9IGNoYW5nZXNbcHJvcE5hbWVdLmN1cnJlbnRWYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG59XG4iXX0=