UNPKG

react-native-cross-components

Version:
88 lines 14.7 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(require("react")); const react_native_1 = require("react-native"); const styles_1 = require("../../styles"); const react_native_modal_1 = __importDefault(require("react-native-modal")); const CrossSpinner_1 = require("../animations/CrossSpinner"); const styles_2 = __importDefault(require("../../styles")); /** * @description * Displays a modal with busy indicator (spinner) and message when {@link IBusyIndicatorProps.isBusy} is `true` * * Properties are {@link IBusyIndicatorProps} * * Also supports cancelling the modal using properties * {@link IBusyIndicatorProps.isCancelButtonVisible}, * {@link IBusyIndicatorProps.cancelText} and * {@link IBusyIndicatorProps.onCancel}. * This does however not hide the modal. * * @example <caption>Modal with cancel</caption> * <CrossBusyIndicator * key="busy1" * testID="busy1" * isBusy={this.state.isBusy} * type={CrossSpinnerType.PacmanIndicator} * isCancelButtonVisible={true} * message="Loading.." * onCancel={() => this.setState({ isBusy: false })} * /> * * @example <caption>Non cancellable and custom styles</caption> * <CrossBusyIndicator * key="busy2" * testID="busy2" * spinnerProps={{ * color: 'red', * type: CrossSpinnerType.WaveIndicator * }} * messageStyle={{color: 'red'}} * isBusy={this.state.isBusy2} * isCancelButtonVisible={false} * message="Resistance is futile" * /> */ class CrossBusyIndicator extends react_1.default.Component { constructor(props) { super(props); this.onCancel = this.onCancel.bind(this); } onCancel() { if (!this.props.isCancelButtonVisible) { return; } if (this.props.onCancel) { this.props.onCancel(); } } render() { return (react_1.default.createElement(react_native_1.View, { testID: this.props.testID || '1' }, react_1.default.createElement(react_native_modal_1.default, { style: this.props.modalStyle ? [styles_2.default.absoluteCentered, this.props.modalStyle] : styles_2.default.absoluteCentered, isVisible: this.props.isBusy, onDismiss: this.onCancel }, react_1.default.createElement(react_native_1.View, { style: this.props.innerViewStyle ? [ styles_2.default.container, styles_2.default.paddingDefault, this.props.innerViewStyle, ] : [styles_2.default.container, styles_2.default.paddingDefault] }, react_1.default.createElement(react_native_1.View, { style: [styles_2.default.columnContentTopCenter] }, react_1.default.createElement(CrossSpinner_1.CrossSpinner, Object.assign({ type: this.props.type || 'MaterialIndicator', style: styles_2.default.spinner }, this.props.spinnerProps))), react_1.default.createElement(react_native_1.View, { style: [styles_2.default.columnContentTopCenter] }, react_1.default.createElement(react_native_1.Text, { style: [styles_2.default.textSpinner, this.props.messageStyle] }, this.props.message || ''), this.props.isCancelButtonVisible ? (react_1.default.createElement(react_native_1.TouchableOpacity, { onPress: this.onCancel }, react_1.default.createElement(react_native_1.Text, { testID: 'cancelText', style: [ styles_2.default.textSpinner, { color: styles_1.Colors.CancelButton }, this.props.cancelTextStyle, ] }, this.props.cancelText || 'Cancel'))) : null))))); } } exports.CrossBusyIndicator = CrossBusyIndicator; exports.default = CrossBusyIndicator; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJmaWxlIjoiL1VzZXJzL3Rob21hcy9Tb3VyY2UvcmVhY3QtbmF0aXZlLWNvcmUvc291cmNlL2NvbXBvbmVudHMvbW9kYWxzL0Nyb3NzQnVzeUluZGljYXRvci50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsK0NBT3NCO0FBQ3RCLHlDQUFzQztBQUN0Qyw0RUFBdUM7QUFDdkMsNkRBSW9DO0FBQ3BDLDBEQUFrQztBQXlFbEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9DRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsZUFBSyxDQUFDLFNBQThCO0lBQzFFLFlBQVksS0FBMEI7UUFDcEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFO1lBQ3JDLE9BQU87U0FDUjtRQUVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxDQUNMLDhCQUFDLG1CQUFJLElBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUc7WUFDcEMsOEJBQUMsNEJBQUssSUFDSixLQUFLLEVBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO29CQUNuQixDQUFDLENBQUMsQ0FBQyxnQkFBTSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO29CQUNsRCxDQUFDLENBQUMsZ0JBQU0sQ0FBQyxnQkFBZ0IsRUFFN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUM1QixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBRXhCLDhCQUFDLG1CQUFJLElBQ0gsS0FBSyxFQUNILElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYzt3QkFDdkIsQ0FBQyxDQUFDOzRCQUNFLGdCQUFNLENBQUMsU0FBUzs0QkFDaEIsZ0JBQU0sQ0FBQyxjQUFjOzRCQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWM7eUJBQzFCO3dCQUNILENBQUMsQ0FBQyxDQUFDLGdCQUFNLENBQUMsU0FBUyxFQUFFLGdCQUFNLENBQUMsY0FBYyxDQUFDO29CQUcvQyw4QkFBQyxtQkFBSSxJQUFDLEtBQUssRUFBRSxDQUFDLGdCQUFNLENBQUMsc0JBQXNCLENBQUM7d0JBQzFDLDhCQUFDLDJCQUFZLGtCQUNYLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxtQkFBbUIsRUFDNUMsS0FBSyxFQUFFLGdCQUFNLENBQUMsT0FBTyxJQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDM0IsQ0FDRztvQkFFUCw4QkFBQyxtQkFBSSxJQUFDLEtBQUssRUFBRSxDQUFDLGdCQUFNLENBQUMsc0JBQXNCLENBQUM7d0JBQzFDLDhCQUFDLG1CQUFJLElBQUMsS0FBSyxFQUFFLENBQUMsZ0JBQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFDdkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUNwQjt3QkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUNsQyw4QkFBQywrQkFBZ0IsSUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVE7NEJBQ3RDLDhCQUFDLG1CQUFJLElBQ0gsTUFBTSxFQUFDLFlBQVksRUFDbkIsS0FBSyxFQUFFO29DQUNMLGdCQUFNLENBQUMsV0FBVztvQ0FDbEIsRUFBRSxLQUFLLEVBQUUsZUFBTSxDQUFDLFlBQVksRUFBRTtvQ0FDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlO2lDQUMzQixJQUVBLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FDN0IsQ0FDVSxDQUNwQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ0gsQ0FDRixDQUNELENBQ0gsQ0FDUixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdkVELGdEQXVFQztBQUVELGtCQUFlLGtCQUFrQixDQUFDIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi9Vc2Vycy90aG9tYXMvU291cmNlL3JlYWN0LW5hdGl2ZS1jb3JlL3NvdXJjZS9jb21wb25lbnRzL21vZGFscy9Dcm9zc0J1c3lJbmRpY2F0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBWaWV3LFxuICBUZXh0LFxuICBUb3VjaGFibGVPcGFjaXR5LFxuICBTdHlsZVByb3AsXG4gIFZpZXdTdHlsZSxcbiAgVGV4dFN0eWxlLFxufSBmcm9tICdyZWFjdC1uYXRpdmUnO1xuaW1wb3J0IHsgQ29sb3JzIH0gZnJvbSAnLi4vLi4vc3R5bGVzJztcbmltcG9ydCBNb2RhbCBmcm9tICdyZWFjdC1uYXRpdmUtbW9kYWwnO1xuaW1wb3J0IHtcbiAgQ3Jvc3NTcGlubmVyVHlwZSxcbiAgQ3Jvc3NTcGlubmVyLFxuICBJQ3Jvc3NTcGlubmVyUHJvcHMsXG59IGZyb20gJy4uL2FuaW1hdGlvbnMvQ3Jvc3NTcGlubmVyJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi4vLi4vc3R5bGVzJztcblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIHByb3BzIGZvciB7QGxpbmsgQ3Jvc3NCdXN5SW5kaWNhdG9yfVxuICpcbiAqIEBleHBvcnRcbiAqIEBpbnRlcmZhY2UgSUJ1c3lJbmRpY2F0b3JQcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElCdXN5SW5kaWNhdG9yUHJvcHMge1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgaW5kaWNhdG9yIGlzIHZpc2libGVcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBJQnVzeUluZGljYXRvclByb3BzXG4gICAqL1xuICBpc0J1c3k6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXNzYWdlIHRvIHNob3cgd2hpbGUgYnVzeS4gRGVmYXVsdHMgdG8gZW1wdHkgc3RyaW5nLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgSUJ1c3lJbmRpY2F0b3JQcm9wc1xuICAgKi9cbiAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFR5cGUgb2Ygc3Bpbm5lciB0byB1c2VcbiAgICpcbiAgICogQHR5cGUge0Nyb3NzU3Bpbm5lclR5cGV9XG4gICAqIEBtZW1iZXJvZiBJQnVzeUluZGljYXRvclByb3BzXG4gICAqL1xuICB0eXBlPzogQ3Jvc3NTcGlubmVyVHlwZSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRlc3QgaWQgdG8gYXNzaWduIHRoaXMgY29tcG9uZW50LiBEZWZhdWx0IGlzIFwiMVwiXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBJQnVzeUluZGljYXRvclByb3BzXG4gICAqL1xuICB0ZXN0SUQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBtb2RhbCBpcyBjYW5jZWxsYWJsZS4gT3RoZXJ3aXNlIHZpc2liaWxpdHkgaXMgY29udHJvbGxlZCBieSB7QGxpbmsgaXNCdXN5fVxuICAgKi9cbiAgaXNDYW5jZWxCdXR0b25WaXNpYmxlOiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9uYWwgY2FsbGJhY2sgZm9yIHVzZXIgY2FuY2VsIGV2ZW50LlxuICAgKi9cbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogVGV4dCBmb3IgY2FuY2VsIGJ1dHRvbi4gRGVmYXVsdCBpcyBcIkNhbmNlbFwiXG4gICAqL1xuICBjYW5jZWxUZXh0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogT3B0aW9uYWwgY3VzdG9tIHN0eWxlIGZvciB0aGUge0BsaW5rIGNhbmNlbFRleHR9XG4gICAqL1xuICBjYW5jZWxUZXh0U3R5bGU/OiBTdHlsZVByb3A8VGV4dFN0eWxlPiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGN1c3RvbSBzdHlsZSBmb3IgdGhlIG1vZGFsIHZpZXdcbiAgICovXG4gIG1vZGFsU3R5bGU/OiBTdHlsZVByb3A8Vmlld1N0eWxlPiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGN1c3RvbSBzdHlsZSBmb3IgdGhlIGlubmVyIHZpZXcsIGNvbnRhaW5lZCBpbiB0aGUgbW9kYWxcbiAgICovXG4gIGlubmVyVmlld1N0eWxlPzogU3R5bGVQcm9wPFZpZXdTdHlsZT4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBjdXN0b20gc3R5bGUgZm9yIHRoZSB7QGxpbmsgbWVzc2FnZX1cbiAgICovXG4gIG1lc3NhZ2VTdHlsZT86IFN0eWxlUHJvcDxUZXh0U3R5bGU+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogT3B0aW9uYWwgcHJvcGVydGllcyB0byBjb25maWd1cmUgdGhlIHNwaW5uZXJcbiAgICpcbiAgICogU2VlIHtAbGluayBJQ3Jvc3NTcGlubmVyUHJvcHN9XG4gICAqL1xuICBzcGlubmVyUHJvcHM/OiBJQ3Jvc3NTcGlubmVyUHJvcHMgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBEaXNwbGF5cyBhIG1vZGFsIHdpdGggYnVzeSBpbmRpY2F0b3IgKHNwaW5uZXIpIGFuZCBtZXNzYWdlIHdoZW4ge0BsaW5rIElCdXN5SW5kaWNhdG9yUHJvcHMuaXNCdXN5fSBpcyBgdHJ1ZWBcbiAqXG4gKiBQcm9wZXJ0aWVzIGFyZSB7QGxpbmsgSUJ1c3lJbmRpY2F0b3JQcm9wc31cbiAqXG4gKiBBbHNvIHN1cHBvcnRzIGNhbmNlbGxpbmcgdGhlIG1vZGFsIHVzaW5nIHByb3BlcnRpZXNcbiAqIHtAbGluayBJQnVzeUluZGljYXRvclByb3BzLmlzQ2FuY2VsQnV0dG9uVmlzaWJsZX0sXG4gKiB7QGxpbmsgSUJ1c3lJbmRpY2F0b3JQcm9wcy5jYW5jZWxUZXh0fSBhbmRcbiAqIHtAbGluayBJQnVzeUluZGljYXRvclByb3BzLm9uQ2FuY2VsfS5cbiAqIFRoaXMgZG9lcyBob3dldmVyIG5vdCBoaWRlIHRoZSBtb2RhbC5cbiAqXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5Nb2RhbCB3aXRoIGNhbmNlbDwvY2FwdGlvbj5cbiAqICA8Q3Jvc3NCdXN5SW5kaWNhdG9yXG4gKiAgICAgICAgIGtleT1cImJ1c3kxXCJcbiAqICAgICAgICAgdGVzdElEPVwiYnVzeTFcIlxuICogICAgICAgICBpc0J1c3k9e3RoaXMuc3RhdGUuaXNCdXN5fVxuICogICAgICAgICB0eXBlPXtDcm9zc1NwaW5uZXJUeXBlLlBhY21hbkluZGljYXRvcn1cbiAqICAgICAgICAgaXNDYW5jZWxCdXR0b25WaXNpYmxlPXt0cnVlfVxuICogICAgICAgICBtZXNzYWdlPVwiTG9hZGluZy4uXCJcbiAqICAgICAgICAgb25DYW5jZWw9eygpID0+IHRoaXMuc2V0U3RhdGUoeyBpc0J1c3k6IGZhbHNlIH0pfVxuICogICAgICAgLz5cbiAqXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5Ob24gY2FuY2VsbGFibGUgYW5kIGN1c3RvbSBzdHlsZXM8L2NhcHRpb24+XG4gKiAgICAgICA8Q3Jvc3NCdXN5SW5kaWNhdG9yXG4gKiAgICAgICAgICBrZXk9XCJidXN5MlwiXG4gKiAgICAgICAgICB0ZXN0SUQ9XCJidXN5MlwiXG4gKiAgICAgICAgICBzcGlubmVyUHJvcHM9e3tcbiAqICAgICAgICAgICAgY29sb3I6ICdyZWQnLFxuICogICAgICAgICAgICB0eXBlOiBDcm9zc1NwaW5uZXJUeXBlLldhdmVJbmRpY2F0b3JcbiAqICAgICAgICAgIH19XG4gKiAgICAgICAgICBtZXNzYWdlU3R5bGU9e3tjb2xvcjogJ3JlZCd9fVxuICogICAgICAgICAgaXNCdXN5PXt0aGlzLnN0YXRlLmlzQnVzeTJ9XG4gKiAgICAgICAgICBpc0NhbmNlbEJ1dHRvblZpc2libGU9e2ZhbHNlfVxuICogICAgICAgICAgbWVzc2FnZT1cIlJlc2lzdGFuY2UgaXMgZnV0aWxlXCJcbiAqICAgICAgICAvPlxuICovXG5leHBvcnQgY2xhc3MgQ3Jvc3NCdXN5SW5kaWNhdG9yIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElCdXN5SW5kaWNhdG9yUHJvcHM+IHtcbiAgY29uc3RydWN0b3IocHJvcHM6IElCdXN5SW5kaWNhdG9yUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5vbkNhbmNlbCA9IHRoaXMub25DYW5jZWwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCkge1xuICAgIGlmICghdGhpcy5wcm9wcy5pc0NhbmNlbEJ1dHRvblZpc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vbkNhbmNlbCkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNhbmNlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgdGVzdElEPXt0aGlzLnByb3BzLnRlc3RJRCB8fCAnMSd9PlxuICAgICAgICA8TW9kYWxcbiAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICB0aGlzLnByb3BzLm1vZGFsU3R5bGVcbiAgICAgICAgICAgICAgPyBbc3R5bGVzLmFic29sdXRlQ2VudGVyZWQsIHRoaXMucHJvcHMubW9kYWxTdHlsZV1cbiAgICAgICAgICAgICAgOiBzdHlsZXMuYWJzb2x1dGVDZW50ZXJlZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpc1Zpc2libGU9e3RoaXMucHJvcHMuaXNCdXN5fVxuICAgICAgICAgIG9uRGlzbWlzcz17dGhpcy5vbkNhbmNlbH1cbiAgICAgICAgPlxuICAgICAgICAgIDxWaWV3XG4gICAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICAgIHRoaXMucHJvcHMuaW5uZXJWaWV3U3R5bGVcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVzLmNvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVzLnBhZGRpbmdEZWZhdWx0LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmlubmVyVmlld1N0eWxlLFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW3N0eWxlcy5jb250YWluZXIsIHN0eWxlcy5wYWRkaW5nRGVmYXVsdF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8VmlldyBzdHlsZT17W3N0eWxlcy5jb2x1bW5Db250ZW50VG9wQ2VudGVyXX0+XG4gICAgICAgICAgICAgIDxDcm9zc1NwaW5uZXJcbiAgICAgICAgICAgICAgICB0eXBlPXt0aGlzLnByb3BzLnR5cGUgfHwgJ01hdGVyaWFsSW5kaWNhdG9yJ31cbiAgICAgICAgICAgICAgICBzdHlsZT17c3R5bGVzLnNwaW5uZXJ9XG4gICAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMuc3Bpbm5lclByb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9WaWV3PlxuXG4gICAgICAgICAgICA8VmlldyBzdHlsZT17W3N0eWxlcy5jb2x1bW5Db250ZW50VG9wQ2VudGVyXX0+XG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtbc3R5bGVzLnRleHRTcGlubmVyLCB0aGlzLnByb3BzLm1lc3NhZ2VTdHlsZV19PlxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLm1lc3NhZ2UgfHwgJyd9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAge3RoaXMucHJvcHMuaXNDYW5jZWxCdXR0b25WaXNpYmxlID8gKFxuICAgICAgICAgICAgICAgIDxUb3VjaGFibGVPcGFjaXR5IG9uUHJlc3M9e3RoaXMub25DYW5jZWx9PlxuICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgdGVzdElEPSdjYW5jZWxUZXh0J1xuICAgICAgICAgICAgICAgICAgICBzdHlsZT17W1xuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlcy50ZXh0U3Bpbm5lcixcbiAgICAgICAgICAgICAgICAgICAgICB7IGNvbG9yOiBDb2xvcnMuQ2FuY2VsQnV0dG9uIH0sXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jYW5jZWxUZXh0U3R5bGUsXG4gICAgICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmNhbmNlbFRleHQgfHwgJ0NhbmNlbCd9XG4gICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgPC9Ub3VjaGFibGVPcGFjaXR5PlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDwvTW9kYWw+XG4gICAgICA8L1ZpZXc+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDcm9zc0J1c3lJbmRpY2F0b3I7XG4iXSwidmVyc2lvbiI6M30=