react-native-cross-components
Version:
Beautiful React-Native components using RN Paper by Callstack
88 lines • 14.7 kB
JavaScript
"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=