UNPKG

dcl-ui-toolkit

Version:

A collection of UI helpers to make it easier to build a Decentraland scene using the SDK 7.

118 lines 17.6 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'; export var PromptSwitchStyles; (function (PromptSwitchStyles) { PromptSwitchStyles["ROUNDGREEN"] = "roundGreen"; PromptSwitchStyles["ROUNDRED"] = "roundRed"; PromptSwitchStyles["SQUAREGREEN"] = "squareGreen"; PromptSwitchStyles["SQUARERED"] = "squareRed"; })(PromptSwitchStyles || (PromptSwitchStyles = {})); const promptSwitchInitialConfig = { startHidden: false, text: '', xPosition: 0, yPosition: 0, onCheck: () => { }, onUncheck: () => { }, startChecked: false, style: PromptSwitchStyles.ROUNDGREEN, }; export class PromptSwitch extends InPromptUIObject { constructor({ parent, startHidden = promptSwitchInitialConfig.startHidden, text = promptSwitchInitialConfig.text, xPosition = promptSwitchInitialConfig.xPosition, yPosition = promptSwitchInitialConfig.yPosition, onCheck = promptSwitchInitialConfig.onCheck, onUncheck = promptSwitchInitialConfig.onUncheck, startChecked = promptSwitchInitialConfig.startChecked, style = promptSwitchInitialConfig.style, }) { 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.style = style; this.startChecked = startChecked; this.onUncheck = onUncheck; this.onCheck = onCheck; this._checked = startChecked; this.imageElement = { uiTransform: { width: 64, height: 32, 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.switches[this._getImageStyle()], atlasHeight: sourcesComponentsCoordinates.atlasHeight, atlasWidth: sourcesComponentsCoordinates.atlasWidth, }), }, 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._checked) { return this.style; } else { if (this.style == PromptSwitchStyles.ROUNDGREEN || this.style == PromptSwitchStyles.ROUNDRED) { return 'roundOff'; } else { return 'squareOff'; } } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdWktZW50aXRpZXMvcHJvbXB0cy9Qcm9tcHQvY29tcG9uZW50cy9Td2l0Y2gvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFJdEMsT0FBTyxFQUFFLGdCQUFnQixFQUEwQixNQUFNLHdCQUF3QixDQUFBO0FBRWpGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBRXRFLE9BQU8sRUFBRSxVQUFVLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUM3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFRM0QsTUFBTSxDQUFOLElBQVksa0JBS1g7QUFMRCxXQUFZLGtCQUFrQjtJQUM1QiwrQ0FBeUIsQ0FBQTtJQUN6QiwyQ0FBcUIsQ0FBQTtJQUNyQixpREFBMkIsQ0FBQTtJQUMzQiw2Q0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUs3QjtBQVlELE1BQU0seUJBQXlCLEdBQWlEO0lBQzlFLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLElBQUksRUFBRSxFQUFFO0lBQ1IsU0FBUyxFQUFFLENBQUM7SUFDWixTQUFTLEVBQUUsQ0FBQztJQUNaLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO0lBQ2pCLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO0lBQ25CLFlBQVksRUFBRSxLQUFLO0lBQ25CLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxVQUFVO0NBQzVCLENBQUE7QUFhVixNQUFNLE9BQU8sWUFBYSxTQUFRLGdCQUFnQjtJQWdCaEQsWUFBWSxFQUNW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QUFLLElBQUksa0JBQWtCLENBQUMsUUFBUSxFQUN6QztnQkFDQSxPQUFPLFVBQVUsQ0FBQTthQUNsQjtpQkFBTTtnQkFDTCxPQUFPLFdBQVcsQ0FBQTthQUNuQjtTQUNGO0lBQ0gsQ0FBQztDQWFGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0RWNzLCB7IExhYmVsLCBVaUVudGl0eSB9IGZyb20gJ0BkY2wvc2RrL3JlYWN0LWVjcydcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnXG5pbXBvcnQgeyBFbnRpdHlQcm9wVHlwZXMgfSBmcm9tICdAZGNsL3JlYWN0LWVjcy9kaXN0L2NvbXBvbmVudHMvdHlwZXMnXG5pbXBvcnQgeyBVaUxhYmVsUHJvcHMgfSBmcm9tICdAZGNsL3JlYWN0LWVjcy9kaXN0L2NvbXBvbmVudHMvTGFiZWwvdHlwZXMnXG5cbmltcG9ydCB7IEluUHJvbXB0VUlPYmplY3QsIEluUHJvbXB0VUlPYmplY3RDb25maWcgfSBmcm9tICcuLi8uLi9JblByb21wdFVJT2JqZWN0J1xuXG5pbXBvcnQgeyBnZXRJbWFnZUF0bGFzTWFwcGluZyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWxzL2ltYWdlVXRpbHMnXG5cbmltcG9ydCB7IEF0bGFzVGhlbWUsIHNvdXJjZXNDb21wb25lbnRzQ29vcmRpbmF0ZXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb25zdGFudHMvcmVzb3VyY2VzJ1xuaW1wb3J0IHsgZGVmYXVsdEZvbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb25zdGFudHMvZm9udCdcblxuZXhwb3J0IHR5cGUgUHJvbXB0U3dpdGNoTGFiZWxFbGVtZW50UHJvcHMgPSBFbnRpdHlQcm9wVHlwZXMgJiBPbWl0PFVpTGFiZWxQcm9wcywgJ3ZhbHVlJz5cblxuZXhwb3J0IHR5cGUgUHJvbXB0U3dpdGNoSW1hZ2VFbGVtZW50UHJvcHMgPSBPbWl0PEVudGl0eVByb3BUeXBlcywgJ3VpQmFja2dyb3VuZCc+ICYge1xuICB1aUJhY2tncm91bmQ/OiBPbWl0PE5vbk51bGxhYmxlPEVudGl0eVByb3BUeXBlc1sndWlCYWNrZ3JvdW5kJ10+LCAndXZzJz5cbn1cblxuZXhwb3J0IGVudW0gUHJvbXB0U3dpdGNoU3R5bGVzIHtcbiAgUk9VTkRHUkVFTiA9IGByb3VuZEdyZWVuYCxcbiAgUk9VTkRSRUQgPSBgcm91bmRSZWRgLFxuICBTUVVBUkVHUkVFTiA9IGBzcXVhcmVHcmVlbmAsXG4gIFNRVUFSRVJFRCA9IGBzcXVhcmVSZWRgLFxufVxuXG5leHBvcnQgdHlwZSBQcm9tcHRTd2l0Y2hDb25maWcgPSBJblByb21wdFVJT2JqZWN0Q29uZmlnICYge1xuICB0ZXh0OiBzdHJpbmcgfCBudW1iZXJcbiAgeFBvc2l0aW9uOiBudW1iZXJcbiAgeVBvc2l0aW9uOiBudW1iZXJcbiAgb25DaGVjaz86ICgpID0+IHZvaWRcbiAgb25VbmNoZWNrPzogKCkgPT4gdm9pZFxuICBzdGFydENoZWNrZWQ/OiBib29sZWFuXG4gIHN0eWxlPzogUHJvbXB0U3dpdGNoU3R5bGVzXG59XG5cbmNvbnN0IHByb21wdFN3aXRjaEluaXRpYWxDb25maWc6IE9taXQ8UmVxdWlyZWQ8UHJvbXB0U3dpdGNoQ29uZmlnPiwgJ3BhcmVudCc+ID0ge1xuICBzdGFydEhpZGRlbjogZmFsc2UsXG4gIHRleHQ6ICcnLFxuICB4UG9zaXRpb246IDAsXG4gIHlQb3NpdGlvbjogMCxcbiAgb25DaGVjazogKCkgPT4ge30sXG4gIG9uVW5jaGVjazogKCkgPT4ge30sXG4gIHN0YXJ0Q2hlY2tlZDogZmFsc2UsXG4gIHN0eWxlOiBQcm9tcHRTd2l0Y2hTdHlsZXMuUk9VTkRHUkVFTixcbn0gYXMgY29uc3RcblxuLyoqXG4gKiBQcm9tcHQgc3dpdGNoXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtzdGFydEhpZGRlbj1mYWxzZV0gc3RhcnRpbmcgaGlkZGVuXG4gKiBAcGFyYW0ge3N0cmluZ30gW3RleHQ9JyddIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgcmlnaHQgb2YgdGhlIGJveFxuICogQHBhcmFtIHtudW1iZXJ9IFt4UG9zaXRpb249MF0gUG9zaXRpb24gb24gWCBvbiB0aGUgcHJvbXB0LCBjb3VudGluZyBmcm9tIHRoZSBjZW50ZXIgb2YgdGhlIHByb21wdFxuICogQHBhcmFtIHtudW1iZXJ9IFt5UG9zaXRpb249MF0gUG9zaXRpb24gb24gWSBvbiB0aGUgcHJvbXB0LCBjb3VudGluZyBmcm9tIHRoZSBjZW50ZXIgb2YgdGhlIHByb21wdFxuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBvbkNoZWNrIEZ1bmN0aW9uIHRvIGNhbGwgZXZlcnkgdGltZSB0aGUgYm94IGlzIGNoZWNrZWRcbiAqIEBwYXJhbSB7KCkgPT4gdm9pZH0gb25VbmNoZWNrIEZ1bmN0aW9uIHRvIGNhbGwgZXZlcnkgdGltZSB0aGUgYm94IGlzIHVuY2hlY2tlZFxuICogQHBhcmFtIHtib29sZWFufSBbc3RhcnRDaGVja2VkPWZhbHNlXSBTdGFydHMgdGhlIGNoZWNrYm94IGluIGEgZGVmYXVsdCBzdGF0ZSBvZiBhbHJlYWR5IGNoZWNrZWRcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9tcHRTd2l0Y2ggZXh0ZW5kcyBJblByb21wdFVJT2JqZWN0IHtcbiAgcHVibGljIGltYWdlRWxlbWVudDogUHJvbXB0U3dpdGNoSW1hZ2VFbGVtZW50UHJvcHNcbiAgcHVibGljIGxhYmVsRWxlbWVudDogUHJvbXB0U3dpdGNoTGFiZWxFbGVtZW50UHJvcHNcblxuICBwdWJsaWMgdGV4dDogc3RyaW5nIHwgbnVtYmVyXG4gIHB1YmxpYyB4UG9zaXRpb246IG51bWJlclxuICBwdWJsaWMgeVBvc2l0aW9uOiBudW1iZXJcbiAgcHVibGljIHN0eWxlOiBQcm9tcHRTd2l0Y2hTdHlsZXNcbiAgcHVibGljIHN0YXJ0Q2hlY2tlZDogYm9vbGVhblxuICBwdWJsaWMgb25VbmNoZWNrOiAoKSA9PiB2b2lkXG4gIHB1YmxpYyBvbkNoZWNrOiAoKSA9PiB2b2lkXG5cbiAgcHJpdmF0ZSBfY2hlY2tlZDogYm9vbGVhblxuICBwcml2YXRlIF94UG9zaXRpb246IG51bWJlciB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF95UG9zaXRpb246IG51bWJlciB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBwYXJlbnQsXG4gICAgc3RhcnRIaWRkZW4gPSBwcm9tcHRTd2l0Y2hJbml0aWFsQ29uZmlnLnN0YXJ0SGlkZGVuLFxuICAgIHRleHQgPSBwcm9tcHRTd2l0Y2hJbml0aWFsQ29uZmlnLnRleHQsXG4gICAgeFBvc2l0aW9uID0gcHJvbXB0U3dpdGNoSW5pdGlhbENvbmZpZy54UG9zaXRpb24sXG4gICAgeVBvc2l0aW9uID0gcHJvbXB0U3dpdGNoSW5pdGlhbENvbmZpZy55UG9zaXRpb24sXG4gICAgb25DaGVjayA9IHByb21wdFN3aXRjaEluaXRpYWxDb25maWcub25DaGVjayxcbiAgICBvblVuY2hlY2sgPSBwcm9tcHRTd2l0Y2hJbml0aWFsQ29uZmlnLm9uVW5jaGVjayxcbiAgICBzdGFydENoZWNrZWQgPSBwcm9tcHRTd2l0Y2hJbml0aWFsQ29uZmlnLnN0YXJ0Q2hlY2tlZCxcbiAgICBzdHlsZSA9IHByb21wdFN3aXRjaEluaXRpYWxDb25maWcuc3R5bGUsXG4gIH06IFByb21wdFN3aXRjaENvbmZpZykge1xuICAgIHN1cGVyKHtcbiAgICAgIHN0YXJ0SGlkZGVuLFxuICAgICAgcGFyZW50LFxuICAgIH0pXG5cbiAgICB0aGlzLnRleHQgPSB0ZXh0XG4gICAgdGhpcy54UG9zaXRpb24gPSB4UG9zaXRpb25cbiAgICB0aGlzLnlQb3NpdGlvbiA9IHlQb3NpdGlvblxuICAgIHRoaXMuc3R5bGUgPSBzdHlsZVxuICAgIHRoaXMuc3RhcnRDaGVja2VkID0gc3RhcnRDaGVja2VkXG4gICAgdGhpcy5vblVuY2hlY2sgPSBvblVuY2hlY2tcbiAgICB0aGlzLm9uQ2hlY2sgPSBvbkNoZWNrXG5cbiAgICB0aGlzLl9jaGVja2VkID0gc3RhcnRDaGVja2VkXG5cbiAgICB0aGlzLmltYWdlRWxlbWVudCA9IHtcbiAgICAgIHVpVHJhbnNmb3JtOiB7XG4gICAgICAgIHdpZHRoOiA2NCxcbiAgICAgICAgaGVpZ2h0OiAzMixcbiAgICAgICAgbWFyZ2luOiB7XG4gICAgICAgICAgcmlnaHQ6IDUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdWlCYWNrZ3JvdW5kOiB7XG4gICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgIHRleHR1cmU6IHtcbiAgICAgICAgICBzcmM6IEF0bGFzVGhlbWUuQVRMQVNfUEFUSF9MSUdIVCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgdGhpcy5sYWJlbEVsZW1lbnQgPSB7XG4gICAgICB1aVRyYW5zZm9ybToge1xuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIH0sXG4gICAgICB0ZXh0QWxpZ246ICdtaWRkbGUtbGVmdCcsXG4gICAgICBmb250OiBkZWZhdWx0Rm9udCxcbiAgICAgIGZvbnRTaXplOiAyMCxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYm94IHN0YXRlIHRvIHVuY2hlY2tlZC5cbiAgICovXG4gIHB1YmxpYyB1bmNoZWNrKCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrZWQgPSBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGJveCBzdGF0ZSB0byBjaGVja2VkLlxuICAgKi9cbiAgcHVibGljIGNoZWNrKCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrZWQgPSB0cnVlXG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKGtleT86IHN0cmluZyk6IFJlYWN0RWNzLkpTWC5FbGVtZW50IHtcbiAgICB0aGlzLl94UG9zaXRpb24gPSB0aGlzLnByb21wdFdpZHRoIC8gLTIgKyB0aGlzLnByb21wdFdpZHRoIC8gMiArIHRoaXMueFBvc2l0aW9uXG4gICAgdGhpcy5feVBvc2l0aW9uID0gdGhpcy5wcm9tcHRIZWlnaHQgLyAyICsgMzIgLyAtMiArIHRoaXMueVBvc2l0aW9uXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIGtleT17a2V5fVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIGRpc3BsYXk6IHRoaXMudmlzaWJsZSA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIGhlaWdodDogMzIsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIHBvc2l0aW9uVHlwZTogJ2Fic29sdXRlJyxcbiAgICAgICAgICBwb3NpdGlvbjogeyBib3R0b206IHRoaXMuX3lQb3NpdGlvbiwgcmlnaHQ6IHRoaXMuX3hQb3NpdGlvbiAqIC0xIH0sXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgIHsuLi50aGlzLmltYWdlRWxlbWVudH1cbiAgICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgIC4uLnRoaXMuaW1hZ2VFbGVtZW50LnVpQmFja2dyb3VuZCxcbiAgICAgICAgICAgIHV2czogZ2V0SW1hZ2VBdGxhc01hcHBpbmcoe1xuICAgICAgICAgICAgICAuLi5zb3VyY2VzQ29tcG9uZW50c0Nvb3JkaW5hdGVzLnN3aXRjaGVzW3RoaXMuX2dldEltYWdlU3R5bGUoKV0sXG4gICAgICAgICAgICAgIGF0bGFzSGVpZ2h0OiBzb3VyY2VzQ29tcG9uZW50c0Nvb3JkaW5hdGVzLmF0bGFzSGVpZ2h0LFxuICAgICAgICAgICAgICBhdGxhc1dpZHRoOiBzb3VyY2VzQ29tcG9uZW50c0Nvb3JkaW5hdGVzLmF0bGFzV2lkdGgsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLl9jbGlja31cbiAgICAgICAgLz5cbiAgICAgICAgPExhYmVsXG4gICAgICAgICAgey4uLnRoaXMubGFiZWxFbGVtZW50fVxuICAgICAgICAgIHZhbHVlPXtTdHJpbmcodGhpcy50ZXh0KX1cbiAgICAgICAgICBjb2xvcj17dGhpcy5sYWJlbEVsZW1lbnQuY29sb3IgfHwgKHRoaXMuaXNEYXJrVGhlbWUgPyBDb2xvcjQuV2hpdGUoKSA6IENvbG9yNC5CbGFjaygpKX1cbiAgICAgICAgLz5cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SW1hZ2VTdHlsZSgpOiBQcm9tcHRTd2l0Y2hTdHlsZXMgfCAncm91bmRPZmYnIHwgJ3NxdWFyZU9mZicge1xuICAgIGlmICh0aGlzLl9jaGVja2VkKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdHlsZVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuc3R5bGUgPT0gUHJvbXB0U3dpdGNoU3R5bGVzLlJPVU5ER1JFRU4gfHxcbiAgICAgICAgdGhpcy5zdHlsZSA9PSBQcm9tcHRTd2l0Y2hTdHlsZXMuUk9VTkRSRURcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gJ3JvdW5kT2ZmJ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICdzcXVhcmVPZmYnXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xpY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLl9jaGVja2VkKSB7XG4gICAgICB0aGlzLmNoZWNrKClcbiAgICAgIHRoaXMub25DaGVjaygpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5jaGVjaygpXG4gICAgICB0aGlzLm9uVW5jaGVjaygpXG4gICAgfVxuXG4gICAgdGhpcy5pbWFnZUVsZW1lbnQub25Nb3VzZURvd24/LigpXG4gIH1cbn1cbiJdfQ==