UNPKG

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
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=