dcl-ui-toolkit
Version:
A collection of UI helpers to make it easier to build a Decentraland scene using the SDK 7.
119 lines • 18.5 kB
JavaScript
import ReactEcs, { Label, UiEntity } from '@dcl/sdk/react-ecs';
import { Color4 } from '@dcl/sdk/math';
import { InPromptUIObject } from '../../InPromptUIObject';
import { getImageAtlasMapping } from '../../../../../utils/imageUtils';
import { AtlasTheme, sourcesComponentsCoordinates } from '../../../../../constants/resources';
import { defaultFont } from '../../../../../constants/font';
const promptCheckboxInitialConfig = {
startHidden: false,
text: '',
xPosition: 0,
yPosition: 0,
onCheck: () => { },
onUncheck: () => { },
large: false,
startChecked: false,
};
export class PromptCheckbox extends InPromptUIObject {
constructor({ parent, startHidden = promptCheckboxInitialConfig.startHidden, text = promptCheckboxInitialConfig.text, xPosition = promptCheckboxInitialConfig.xPosition, yPosition = promptCheckboxInitialConfig.yPosition, large = promptCheckboxInitialConfig.large, startChecked = promptCheckboxInitialConfig.startChecked, onUncheck = promptCheckboxInitialConfig.onUncheck, onCheck = promptCheckboxInitialConfig.onCheck, }) {
super({
startHidden,
parent,
});
this._click = () => {
if (!this._checked) {
this.check();
this.onCheck();
}
else {
this.uncheck();
this.onUncheck();
}
this.imageElement.onMouseDown?.();
};
this.text = text;
this.xPosition = xPosition;
this.yPosition = yPosition;
this.large = large;
this.startChecked = startChecked;
this.onUncheck = onUncheck;
this.onCheck = onCheck;
this._checked = this.startChecked;
this.onCheck = onCheck;
this.onUncheck = onUncheck;
this.imageElement = {
uiTransform: {
margin: {
right: 5,
},
},
uiBackground: {
textureMode: 'stretch',
texture: {
src: AtlasTheme.ATLAS_PATH_LIGHT,
},
},
};
this.labelElement = {
uiTransform: {
maxWidth: '100%',
height: '100%',
},
textAlign: 'middle-left',
font: defaultFont,
fontSize: 20,
};
}
uncheck() {
this._checked = false;
}
check() {
this._checked = true;
}
render(key) {
this._xPosition = this.promptWidth / -2 + this.promptWidth / 2 + this.xPosition;
this._yPosition = this.promptHeight / 2 + 32 / -2 + this.yPosition;
return (ReactEcs.createElement(UiEntity, { key: key, uiTransform: {
display: this.visible ? 'flex' : 'none',
width: '100%',
height: 32,
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
positionType: 'absolute',
position: { bottom: this._yPosition, right: this._xPosition * -1 },
} },
ReactEcs.createElement(UiEntity, { ...this.imageElement, uiBackground: {
...this.imageElement.uiBackground,
uvs: getImageAtlasMapping({
...sourcesComponentsCoordinates.checkboxes[this._getImageStyle()],
atlasHeight: sourcesComponentsCoordinates.atlasHeight,
atlasWidth: sourcesComponentsCoordinates.atlasWidth,
}),
}, uiTransform: {
...this.imageElement.uiTransform,
width: this.large ? 32 : 24,
height: this.large ? 32 : 24,
}, onMouseDown: this._click }),
ReactEcs.createElement(Label, { ...this.labelElement, value: String(this.text), color: this.labelElement.color || (this.isDarkTheme ? Color4.White() : Color4.Black()) })));
}
_getImageStyle() {
if (this.isDarkTheme) {
if (this.large) {
return !this._checked ? 'wLargeOff' : 'wLargeOn';
}
else {
return !this._checked ? 'wOff' : 'wOn';
}
}
else {
if (this.large) {
return !this._checked ? 'dLargeOff' : 'dLargeOn';
}
else {
return !this._checked ? 'dOff' : 'dOn';
}
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdWktZW50aXRpZXMvcHJvbXB0cy9Qcm9tcHQvY29tcG9uZW50cy9DaGVja2JveC9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUl0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQTBCLE1BQU0sd0JBQXdCLENBQUE7QUFFakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFFdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQXNCM0QsTUFBTSwyQkFBMkIsR0FBbUQ7SUFDbEYsV0FBVyxFQUFFLEtBQUs7SUFDbEIsSUFBSSxFQUFFLEVBQUU7SUFDUixTQUFTLEVBQUUsQ0FBQztJQUNaLFNBQVMsRUFBRSxDQUFDO0lBQ1osT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7SUFDakIsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7SUFDbkIsS0FBSyxFQUFFLEtBQUs7SUFDWixZQUFZLEVBQUUsS0FBSztDQUNYLENBQUE7QUFjVixNQUFNLE9BQU8sY0FBZSxTQUFRLGdCQUFnQjtJQWdCbEQsWUFBWSxFQUNWLE1BQU0sRUFDTixXQUFXLEdBQUcsMkJBQTJCLENBQUMsV0FBVyxFQUNyRCxJQUFJLEdBQUcsMkJBQTJCLENBQUMsSUFBSSxFQUN2QyxTQUFTLEdBQUcsMkJBQTJCLENBQUMsU0FBUyxFQUNqRCxTQUFTLEdBQUcsMkJBQTJCLENBQUMsU0FBUyxFQUNqRCxLQUFLLEdBQUcsMkJBQTJCLENBQUMsS0FB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QUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQTthQUNqRDtpQkFBTTtnQkFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7YUFDdkM7U0FDRjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQTthQUNqRDtpQkFBTTtnQkFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7YUFDdkM7U0FDRjtJQUNILENBQUM7Q0FhRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdEVjcywgeyBMYWJlbCwgVWlFbnRpdHkgfSBmcm9tICdAZGNsL3Nkay9yZWFjdC1lY3MnXG5pbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHsgRW50aXR5UHJvcFR5cGVzIH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MvZGlzdC9jb21wb25lbnRzL3R5cGVzJ1xuaW1wb3J0IHsgVWlMYWJlbFByb3BzIH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MvZGlzdC9jb21wb25lbnRzL0xhYmVsL3R5cGVzJ1xuXG5pbXBvcnQgeyBJblByb21wdFVJT2JqZWN0LCBJblByb21wdFVJT2JqZWN0Q29uZmlnIH0gZnJvbSAnLi4vLi4vSW5Qcm9tcHRVSU9iamVjdCdcblxuaW1wb3J0IHsgZ2V0SW1hZ2VBdGxhc01hcHBpbmcgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscy9pbWFnZVV0aWxzJ1xuXG5pbXBvcnQgeyBBdGxhc1RoZW1lLCBzb3VyY2VzQ29tcG9uZW50c0Nvb3JkaW5hdGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29uc3RhbnRzL3Jlc291cmNlcydcbmltcG9ydCB7IGRlZmF1bHRGb250IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29uc3RhbnRzL2ZvbnQnXG5cbmV4cG9ydCB0eXBlIFByb21wdENoZWNrYm94TGFiZWxFbGVtZW50UHJvcHMgPSBFbnRpdHlQcm9wVHlwZXMgJiBPbWl0PFVpTGFiZWxQcm9wcywgJ3ZhbHVlJz5cblxuZXhwb3J0IHR5cGUgUHJvbXB0Q2hlY2tib3hJbWFnZUVsZW1lbnRQcm9wcyA9IE9taXQ8XG4gIEVudGl0eVByb3BUeXBlcyxcbiAgJ3VpVHJhbnNmb3JtJyB8ICd1aUJhY2tncm91bmQnXG4+ICYge1xuICB1aVRyYW5zZm9ybT86IE9taXQ8Tm9uTnVsbGFibGU8RW50aXR5UHJvcFR5cGVzWyd1aVRyYW5zZm9ybSddPiwgJ3dpZHRoJyB8ICdoZWlnaHQnPlxuICB1aUJhY2tncm91bmQ/OiBPbWl0PE5vbk51bGxhYmxlPEVudGl0eVByb3BUeXBlc1sndWlCYWNrZ3JvdW5kJ10+LCAndXZzJz5cbn1cblxuZXhwb3J0IHR5cGUgUHJvbXB0Q2hlY2tib3hDb25maWcgPSBJblByb21wdFVJT2JqZWN0Q29uZmlnICYge1xuICB0ZXh0OiBzdHJpbmcgfCBudW1iZXJcbiAgeFBvc2l0aW9uOiBudW1iZXJcbiAgeVBvc2l0aW9uOiBudW1iZXJcbiAgb25DaGVjaz86ICgpID0+IHZvaWRcbiAgb25VbmNoZWNrPzogKCkgPT4gdm9pZFxuICBsYXJnZT86IGJvb2xlYW5cbiAgc3RhcnRDaGVja2VkPzogYm9vbGVhblxufVxuXG5jb25zdCBwcm9tcHRDaGVja2JveEluaXRpYWxDb25maWc6IE9taXQ8UmVxdWlyZWQ8UHJvbXB0Q2hlY2tib3hDb25maWc+LCAncGFyZW50Jz4gPSB7XG4gIHN0YXJ0SGlkZGVuOiBmYWxzZSxcbiAgdGV4dDogJycsXG4gIHhQb3NpdGlvbjogMCxcbiAgeVBvc2l0aW9uOiAwLFxuICBvbkNoZWNrOiAoKSA9PiB7fSxcbiAgb25VbmNoZWNrOiAoKSA9PiB7fSxcbiAgbGFyZ2U6IGZhbHNlLFxuICBzdGFydENoZWNrZWQ6IGZhbHNlLFxufSBhcyBjb25zdFxuXG4vKipcbiAqIFByb21wdCBjaGVja2JveFxuICogQHBhcmFtIHtib29sZWFufSBbc3RhcnRIaWRkZW49ZmFsc2VdIHN0YXJ0aW5nIGhpZGRlblxuICogQHBhcmFtIHtzdHJpbmd9IFt0ZXh0PScnXSBUZXh0IHRvIGRpc3BsYXkgb24gdGhlIHJpZ2h0IG9mIHRoZSBib3hcbiAqIEBwYXJhbSB7bnVtYmVyfSBbeFBvc2l0aW9uPTBdIFBvc2l0aW9uIG9uIFggb24gdGhlIHByb21wdCwgY291bnRpbmcgZnJvbSB0aGUgY2VudGVyIG9mIHRoZSBwcm9tcHRcbiAqIEBwYXJhbSB7bnVtYmVyfSBbeVBvc2l0aW9uPTBdIFBvc2l0aW9uIG9uIFkgb24gdGhlIHByb21wdCwgY291bnRpbmcgZnJvbSB0aGUgY2VudGVyIG9mIHRoZSBwcm9tcHRcbiAqIEBwYXJhbSB7KCkgPT4gdm9pZH0gb25DaGVjayBGdW5jdGlvbiB0byBjYWxsIGV2ZXJ5IHRpbWUgdGhlIGJveCBpcyBjaGVja2VkXG4gKiBAcGFyYW0geygpID0+IHZvaWR9IG9uVW5jaGVjayBGdW5jdGlvbiB0byBjYWxsIGV2ZXJ5IHRpbWUgdGhlIGJveCBpcyB1bmNoZWNrZWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2xhcmdlPWZhbHNlXSBNYWtlcyB0aGUgY2hlY2tib3ggc2lnbmlmaWNhbnRseSBsYXJnZXJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3N0YXJ0Q2hlY2tlZD1mYWxzZV0gU3RhcnRzIHRoZSBjaGVja2JveCBpbiBhIGRlZmF1bHQgc3RhdGUgb2YgYWxyZWFkeSBjaGVja2VkXG4gKlxuICovXG5leHBvcnQgY2xhc3MgUHJvbXB0Q2hlY2tib3ggZXh0ZW5kcyBJblByb21wdFVJT2JqZWN0IHtcbiAgcHVibGljIGltYWdlRWxlbWVudDogUHJvbXB0Q2hlY2tib3hJbWFnZUVsZW1lbnRQcm9wc1xuICBwdWJsaWMgbGFiZWxFbGVtZW50OiBQcm9tcHRDaGVja2JveExhYmVsRWxlbWVudFByb3BzXG5cbiAgcHVibGljIHRleHQ6IHN0cmluZyB8IG51bWJlclxuICBwdWJsaWMgeFBvc2l0aW9uOiBudW1iZXJcbiAgcHVibGljIHlQb3NpdGlvbjogbnVtYmVyXG4gIHB1YmxpYyBsYXJnZTogYm9vbGVhblxuICBwdWJsaWMgc3RhcnRDaGVja2VkOiBib29sZWFuXG4gIHB1YmxpYyBvblVuY2hlY2s6ICgpID0+IHZvaWRcbiAgcHVibGljIG9uQ2hlY2s6ICgpID0+IHZvaWRcblxuICBwcml2YXRlIF9jaGVja2VkOiBib29sZWFuXG4gIHByaXZhdGUgX3hQb3NpdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX3lQb3NpdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIHBhcmVudCxcbiAgICBzdGFydEhpZGRlbiA9IHByb21wdENoZWNrYm94SW5pdGlhbENvbmZpZy5zdGFydEhpZGRlbixcbiAgICB0ZXh0ID0gcHJvbXB0Q2hlY2tib3hJbml0aWFsQ29uZmlnLnRleHQsXG4gICAgeFBvc2l0aW9uID0gcHJvbXB0Q2hlY2tib3hJbml0aWFsQ29uZmlnLnhQb3NpdGlvbixcbiAgICB5UG9zaXRpb24gPSBwcm9tcHRDaGVja2JveEluaXRpYWxDb25maWcueVBvc2l0aW9uLFxuICAgIGxhcmdlID0gcHJvbXB0Q2hlY2tib3hJbml0aWFsQ29uZmlnLmxhcmdlLFxuICAgIHN0YXJ0Q2hlY2tlZCA9IHByb21wdENoZWNrYm94SW5pdGlhbENvbmZpZy5zdGFydENoZWNrZWQsXG4gICAgb25VbmNoZWNrID0gcHJvbXB0Q2hlY2tib3hJbml0aWFsQ29uZmlnLm9uVW5jaGVjayxcbiAgICBvbkNoZWNrID0gcHJvbXB0Q2hlY2tib3hJbml0aWFsQ29uZmlnLm9uQ2hlY2ssXG4gIH06IFByb21wdENoZWNrYm94Q29uZmlnKSB7XG4gICAgc3VwZXIoe1xuICAgICAgc3RhcnRIaWRkZW4sXG4gICAgICBwYXJlbnQsXG4gICAgfSlcblxuICAgIHRoaXMudGV4dCA9IHRleHRcbiAgICB0aGlzLnhQb3NpdGlvbiA9IHhQb3NpdGlvblxuICAgIHRoaXMueVBvc2l0aW9uID0geVBvc2l0aW9uXG4gICAgdGhpcy5sYXJnZSA9IGxhcmdlXG4gICAgdGhpcy5zdGFydENoZWNrZWQgPSBzdGFydENoZWNrZWRcbiAgICB0aGlzLm9uVW5jaGVjayA9IG9uVW5jaGVja1xuICAgIHRoaXMub25DaGVjayA9IG9uQ2hlY2tcblxuICAgIHRoaXMuX2NoZWNrZWQgPSB0aGlzLnN0YXJ0Q2hlY2tlZFxuXG4gICAgdGhpcy5vbkNoZWNrID0gb25DaGVja1xuICAgIHRoaXMub25VbmNoZWNrID0gb25VbmNoZWNrXG5cbiAgICB0aGlzLmltYWdlRWxlbWVudCA9IHtcbiAgICAgIHVpVHJhbnNmb3JtOiB7XG4gICAgICAgIG1hcmdpbjoge1xuICAgICAgICAgIHJpZ2h0OiA1LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHVpQmFja2dyb3VuZDoge1xuICAgICAgICB0ZXh0dXJlTW9kZTogJ3N0cmV0Y2gnLFxuICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgc3JjOiBBdGxhc1RoZW1lLkFUTEFTX1BBVEhfTElHSFQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cblxuICAgIHRoaXMubGFiZWxFbGVtZW50ID0ge1xuICAgICAgdWlUcmFuc2Zvcm06IHtcbiAgICAgICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICB9LFxuICAgICAgdGV4dEFsaWduOiAnbWlkZGxlLWxlZnQnLFxuICAgICAgZm9udDogZGVmYXVsdEZvbnQsXG4gICAgICBmb250U2l6ZTogMjAsXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGJveCBzdGF0ZSB0byB1bmNoZWNrZWQuXG4gICAqL1xuICBwdWJsaWMgdW5jaGVjaygpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGVja2VkID0gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBib3ggc3RhdGUgdG8gY2hlY2tlZC5cbiAgICovXG4gIHB1YmxpYyBjaGVjaygpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGVja2VkID0gdHJ1ZVxuICB9XG5cbiAgcHVibGljIHJlbmRlcihrZXk/OiBzdHJpbmcpOiBSZWFjdEVjcy5KU1guRWxlbWVudCB7XG4gICAgdGhpcy5feFBvc2l0aW9uID0gdGhpcy5wcm9tcHRXaWR0aCAvIC0yICsgdGhpcy5wcm9tcHRXaWR0aCAvIDIgKyB0aGlzLnhQb3NpdGlvblxuICAgIHRoaXMuX3lQb3NpdGlvbiA9IHRoaXMucHJvbXB0SGVpZ2h0IC8gMiArIDMyIC8gLTIgKyB0aGlzLnlQb3NpdGlvblxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxVaUVudGl0eVxuICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICBkaXNwbGF5OiB0aGlzLnZpc2libGUgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBoZWlnaHQ6IDMyLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBwb3NpdGlvblR5cGU6ICdhYnNvbHV0ZScsXG4gICAgICAgICAgcG9zaXRpb246IHsgYm90dG9tOiB0aGlzLl95UG9zaXRpb24sIHJpZ2h0OiB0aGlzLl94UG9zaXRpb24gKiAtMSB9LFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICB7Li4udGhpcy5pbWFnZUVsZW1lbnR9XG4gICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAuLi50aGlzLmltYWdlRWxlbWVudC51aUJhY2tncm91bmQsXG4gICAgICAgICAgICB1dnM6IGdldEltYWdlQXRsYXNNYXBwaW5nKHtcbiAgICAgICAgICAgICAgLi4uc291cmNlc0NvbXBvbmVudHNDb29yZGluYXRlcy5jaGVja2JveGVzW3RoaXMuX2dldEltYWdlU3R5bGUoKV0sXG4gICAgICAgICAgICAgIGF0bGFzSGVpZ2h0OiBzb3VyY2VzQ29tcG9uZW50c0Nvb3JkaW5hdGVzLmF0bGFzSGVpZ2h0LFxuICAgICAgICAgICAgICBhdGxhc1dpZHRoOiBzb3VyY2VzQ29tcG9uZW50c0Nvb3JkaW5hdGVzLmF0bGFzV2lkdGgsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAuLi50aGlzLmltYWdlRWxlbWVudC51aVRyYW5zZm9ybSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLmxhcmdlID8gMzIgOiAyNCxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5sYXJnZSA/IDMyIDogMjQsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbk1vdXNlRG93bj17dGhpcy5fY2xpY2t9XG4gICAgICAgIC8+XG4gICAgICAgIDxMYWJlbFxuICAgICAgICAgIHsuLi50aGlzLmxhYmVsRWxlbWVudH1cbiAgICAgICAgICB2YWx1ZT17U3RyaW5nKHRoaXMudGV4dCl9XG4gICAgICAgICAgY29sb3I9e3RoaXMubGFiZWxFbGVtZW50LmNvbG9yIHx8ICh0aGlzLmlzRGFya1RoZW1lID8gQ29sb3I0LldoaXRlKCkgOiBDb2xvcjQuQmxhY2soKSl9XG4gICAgICAgIC8+XG4gICAgICA8L1VpRW50aXR5PlxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgX2dldEltYWdlU3R5bGUoKTpcbiAgICB8ICd3TGFyZ2VPZmYnXG4gICAgfCAnd0xhcmdlT24nXG4gICAgfCAnd09mZidcbiAgICB8ICd3T24nXG4gICAgfCAnZExhcmdlT2ZmJ1xuICAgIHwgJ2RMYXJnZU9uJ1xuICAgIHwgJ2RPZmYnXG4gICAgfCAnZE9uJyB7XG4gICAgaWYgKHRoaXMuaXNEYXJrVGhlbWUpIHtcbiAgICAgIGlmICh0aGlzLmxhcmdlKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5fY2hlY2tlZCA/ICd3TGFyZ2VPZmYnIDogJ3dMYXJnZU9uJ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLl9jaGVja2VkID8gJ3dPZmYnIDogJ3dPbidcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMubGFyZ2UpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLl9jaGVja2VkID8gJ2RMYXJnZU9mZicgOiAnZExhcmdlT24nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gIXRoaXMuX2NoZWNrZWQgPyAnZE9mZicgOiAnZE9uJ1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NsaWNrID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICghdGhpcy5fY2hlY2tlZCkge1xuICAgICAgdGhpcy5jaGVjaygpXG4gICAgICB0aGlzLm9uQ2hlY2soKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVuY2hlY2soKVxuICAgICAgdGhpcy5vblVuY2hlY2soKVxuICAgIH1cblxuICAgIHRoaXMuaW1hZ2VFbGVtZW50Lm9uTW91c2VEb3duPy4oKVxuICB9XG59XG4iXX0=