react-native-cross-components
Version:
Beautiful React-Native components using RN Paper by Callstack
90 lines • 17.3 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}.
*
* Customize the modal through {@link IBusyIndicatorProps.modalProps}.
*
* 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, Object.assign({}, this.props.modalProps, { 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,eyJmaWxlIjoiL1VzZXJzL3Rob21hcy9Tb3VyY2UvcmVhY3QtbmF0aXZlLWNvcmUvc291cmNlL2NvbXBvbmVudHMvbW9kYWxzL0Nyb3NzQnVzeUluZGljYXRvci50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsK0NBT3NCO0FBQ3RCLHlDQUFzQztBQUN0Qyw0RUFBdUM7QUFDdkMsNkRBSW9DO0FBQ3BDLDBEQUFrQztBQWtJbEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxlQUFLLENBQUMsU0FBOEI7SUFDMUUsWUFBWSxLQUEwQjtRQUNwQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUU7WUFDckMsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLENBQ0wsOEJBQUMsbUJBQUksSUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRztZQUNwQyw4QkFBQyw0QkFBSyxvQkFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFDekIsS0FBSyxFQUNILElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtvQkFDbkIsQ0FBQyxDQUFDLENBQUMsZ0JBQU0sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztvQkFDbEQsQ0FBQyxDQUFDLGdCQUFNLENBQUMsZ0JBQWdCLEVBRTdCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFDNUIsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUV4Qiw4QkFBQyxtQkFBSSxJQUNILEtBQUssRUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWM7d0JBQ3ZCLENBQUMsQ0FBQzs0QkFDRSxnQkFBTSxDQUFDLFNBQVM7NEJBQ2hCLGdCQUFNLENBQUMsY0FBYzs0QkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjO3lCQUMxQjt3QkFDSCxDQUFDLENBQUMsQ0FBQyxnQkFBTSxDQUFDLFNBQVMsRUFBRSxnQkFBTSxDQUFDLGNBQWMsQ0FBQztvQkFHL0MsOEJBQUMsbUJBQUksSUFBQyxLQUFLLEVBQUUsQ0FBQyxnQkFBTSxDQUFDLHNCQUFzQixDQUFDO3dCQUMxQyw4QkFBQywyQkFBWSxrQkFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksbUJBQW1CLEVBQzVDLEtBQUssRUFBRSxnQkFBTSxDQUFDLE9BQU8sSUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzNCLENBQ0c7b0JBRVAsOEJBQUMsbUJBQUksSUFBQyxLQUFLLEVBQUUsQ0FBQyxnQkFBTSxDQUFDLHNCQUFzQixDQUFDO3dCQUMxQyw4QkFBQyxtQkFBSSxJQUFDLEtBQUssRUFBRSxDQUFDLGdCQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQ3ZELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FDcEI7d0JBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FDbEMsOEJBQUMsK0JBQWdCLElBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFROzRCQUN0Qyw4QkFBQyxtQkFBSSxJQUNILE1BQU0sRUFBQyxZQUFZLEVBQ25CLEtBQUssRUFBRTtvQ0FDTCxnQkFBTSxDQUFDLFdBQVc7b0NBQ2xCLEVBQUUsS0FBSyxFQUFFLGVBQU0sQ0FBQyxZQUFZLEVBQUU7b0NBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZTtpQ0FDM0IsSUFFQSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQzdCLENBQ1UsQ0FDcEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNILENBQ0YsQ0FDRCxDQUNILENBQ1IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXhFRCxnREF3RUM7QUFFRCxrQkFBZSxrQkFBa0IsQ0FBQyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIvVXNlcnMvdGhvbWFzL1NvdXJjZS9yZWFjdC1uYXRpdmUtY29yZS9zb3VyY2UvY29tcG9uZW50cy9tb2RhbHMvQ3Jvc3NCdXN5SW5kaWNhdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgVmlldyxcbiAgVGV4dCxcbiAgVG91Y2hhYmxlT3BhY2l0eSxcbiAgU3R5bGVQcm9wLFxuICBWaWV3U3R5bGUsXG4gIFRleHRTdHlsZSxcbn0gZnJvbSAncmVhY3QtbmF0aXZlJztcbmltcG9ydCB7IENvbG9ycyB9IGZyb20gJy4uLy4uL3N0eWxlcyc7XG5pbXBvcnQgTW9kYWwgZnJvbSAncmVhY3QtbmF0aXZlLW1vZGFsJztcbmltcG9ydCB7XG4gIENyb3NzU3Bpbm5lclR5cGUsXG4gIENyb3NzU3Bpbm5lcixcbiAgSUNyb3NzU3Bpbm5lclByb3BzLFxufSBmcm9tICcuLi9hbmltYXRpb25zL0Nyb3NzU3Bpbm5lcic7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4uLy4uL3N0eWxlcyc7XG5cbmV4cG9ydCB0eXBlIEFuaW1hdGlvbkNvbmZpZyA9IHN0cmluZyB8IHsgZnJvbTogT2JqZWN0OyB0bzogT2JqZWN0IH07XG5cbmV4cG9ydCB0eXBlIE9yaWVudGF0aW9uID1cbiAgfCAncG9ydHJhaXQnXG4gIHwgJ3BvcnRyYWl0LXVwc2lkZS1kb3duJ1xuICB8ICdsYW5kc2NhcGUnXG4gIHwgJ2xhbmRzY2FwZS1sZWZ0J1xuICB8ICdsYW5kc2NhcGUtcmlnaHQnO1xuXG4vKipcbiAqIFJlcHJlc2VudGF0aW9uIG9mIHJlYWN0LW5hdGl2ZS1tb2RhbCBwcm9wcy4gQWxsIHByb3BzIGV4Y2VwdCBgaXNWaXNpYmxlYCBhbmQgYGNoaWxkcmVuYCBmcm9tOlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1uYXRpdmUtY29tbXVuaXR5L3JlYWN0LW5hdGl2ZS1tb2RhbCNhdmFpbGFibGUtcHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTW9kYWxQcm9wcyB7XG4gIGFuaW1hdGlvbkluPzogQW5pbWF0aW9uQ29uZmlnO1xuICBhbmltYXRpb25JblRpbWluZz86IG51bWJlcjtcbiAgYW5pbWF0aW9uT3V0PzogQW5pbWF0aW9uQ29uZmlnO1xuICBhbmltYXRpb25PdXRUaW1pbmc/OiBudW1iZXI7XG4gIGF2b2lkS2V5Ym9hcmQ/OiBib29sZWFuO1xuICBiYWNrZHJvcENvbG9yPzogc3RyaW5nO1xuICBiYWNrZHJvcE9wYWNpdHk/OiBudW1iZXI7XG4gIGJhY2tkcm9wVHJhbnNpdGlvbkluVGltaW5nPzogbnVtYmVyO1xuICBiYWNrZHJvcFRyYW5zaXRpb25PdXRUaW1pbmc/OiBudW1iZXI7XG4gIHVzZU5hdGl2ZURyaXZlcj86IGJvb2xlYW47XG4gIGRldmljZUhlaWdodD86IG51bWJlcjtcbiAgZGV2aWNlV2lkdGg/OiBudW1iZXI7XG4gIGhpZGVNb2RhbENvbnRlbnRXaGlsZUFuaW1hdGluZz86IGJvb2xlYW47XG4gIG9uTW9kYWxTaG93PzogKCkgPT4gdm9pZDtcbiAgb25Nb2RhbEhpZGU/OiAoKSA9PiB2b2lkO1xuICBvbkJhY2tCdXR0b25QcmVzcz86ICgpID0+IHZvaWQ7XG4gIG9uQmFja2Ryb3BQcmVzcz86ICgpID0+IHZvaWQ7XG4gIG9uU3dpcGU/OiAoKSA9PiB2b2lkO1xuICBzd2lwZVRocmVzaG9sZD86IG51bWJlcjtcbiAgc3R5bGU/OiBTdHlsZVByb3A8Vmlld1N0eWxlPjtcbiAgc3dpcGVEaXJlY3Rpb24/OiAndXAnIHwgJ2Rvd24nIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgc2Nyb2xsVG8/OiAoZTogYW55KSA9PiB2b2lkO1xuICBzY3JvbGxPZmZzZXQ/OiBudW1iZXI7XG4gIHNjcm9sbE9mZnNldE1heD86IG51bWJlcjtcbiAgc3VwcG9ydGVkT3JpZW50YXRpb25zPzogT3JpZW50YXRpb25bXTtcbiAgb25EaXNtaXNzPzogKCkgPT4gdm9pZDtcbiAgb25TaG93PzogKCkgPT4gdm9pZDtcbiAgaGFyZHdhcmVBY2NlbGVyYXRlZD86IGJvb2xlYW47XG4gIG9uT3JpZW50YXRpb25DaGFuZ2U/OiAob3JpZW50YXRpb246ICdwb3J0cmFpdCcgfCAnbGFuZHNjYXBlJykgPT4gdm9pZDtcbiAgcHJlc2VudGF0aW9uU3R5bGU/OlxuICAgIHwgJ2Z1bGxTY3JlZW4nXG4gICAgfCAncGFnZVNoZWV0J1xuICAgIHwgJ2Zvcm1TaGVldCdcbiAgICB8ICdvdmVyRnVsbFNjcmVlbic7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBwcm9wcyBmb3Ige0BsaW5rIENyb3NzQnVzeUluZGljYXRvcn1cbiAqXG4gKiBAZXhwb3J0XG4gKiBAaW50ZXJmYWNlIElCdXN5SW5kaWNhdG9yUHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQnVzeUluZGljYXRvclByb3BzIHtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGluZGljYXRvciBpcyB2aXNpYmxlXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgSUJ1c3lJbmRpY2F0b3JQcm9wc1xuICAgKi9cbiAgaXNCdXN5OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9uYWwgbWVzc2FnZSB0byBzaG93IHdoaWxlIGJ1c3kuIERlZmF1bHRzIHRvIGVtcHR5IHN0cmluZy5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIElCdXN5SW5kaWNhdG9yUHJvcHNcbiAgICovXG4gIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUeXBlIG9mIHNwaW5uZXIgdG8gdXNlXG4gICAqXG4gICAqIEB0eXBlIHtDcm9zc1NwaW5uZXJUeXBlfVxuICAgKiBAbWVtYmVyb2YgSUJ1c3lJbmRpY2F0b3JQcm9wc1xuICAgKi9cbiAgdHlwZT86IENyb3NzU3Bpbm5lclR5cGUgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBPcHRpb25hbCB0ZXN0IGlkIHRvIGFzc2lnbiB0aGlzIGNvbXBvbmVudC4gRGVmYXVsdCBpcyBcIjFcIlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgSUJ1c3lJbmRpY2F0b3JQcm9wc1xuICAgKi9cbiAgdGVzdElEPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgbW9kYWwgaXMgY2FuY2VsbGFibGUuIE90aGVyd2lzZSB2aXNpYmlsaXR5IGlzIGNvbnRyb2xsZWQgYnkge0BsaW5rIGlzQnVzeX1cbiAgICovXG4gIGlzQ2FuY2VsQnV0dG9uVmlzaWJsZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNhbGxiYWNrIGZvciB1c2VyIGNhbmNlbCBldmVudC5cbiAgICovXG4gIG9uQ2FuY2VsPzogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFRleHQgZm9yIGNhbmNlbCBidXR0b24uIERlZmF1bHQgaXMgXCJDYW5jZWxcIlxuICAgKi9cbiAgY2FuY2VsVGV4dD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGN1c3RvbSBzdHlsZSBmb3IgdGhlIHtAbGluayBjYW5jZWxUZXh0fVxuICAgKi9cbiAgY2FuY2VsVGV4dFN0eWxlPzogU3R5bGVQcm9wPFRleHRTdHlsZT4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBjdXN0b20gc3R5bGUgZm9yIHRoZSBtb2RhbCB2aWV3XG4gICAqL1xuICBtb2RhbFN0eWxlPzogU3R5bGVQcm9wPFZpZXdTdHlsZT4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBjdXN0b20gc3R5bGUgZm9yIHRoZSBpbm5lciB2aWV3LCBjb250YWluZWQgaW4gdGhlIG1vZGFsXG4gICAqL1xuICBpbm5lclZpZXdTdHlsZT86IFN0eWxlUHJvcDxWaWV3U3R5bGU+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogT3B0aW9uYWwgY3VzdG9tIHN0eWxlIGZvciB0aGUge0BsaW5rIG1lc3NhZ2V9XG4gICAqL1xuICBtZXNzYWdlU3R5bGU/OiBTdHlsZVByb3A8VGV4dFN0eWxlPiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHByb3BlcnRpZXMgdG8gY29uZmlndXJlIHRoZSBzcGlubmVyXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgSUNyb3NzU3Bpbm5lclByb3BzfVxuICAgKi9cbiAgc3Bpbm5lclByb3BzPzogSUNyb3NzU3Bpbm5lclByb3BzIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogT3B0aW9uYWwgcHJvcGVydGllcyB0byBjdXN0b21pemUgdGhlIG1vZGFsLiBBbGwgcHJvcHMgZXhjZXB0IGBpc1Zpc2libGVgIGFuZCBgY2hpbGRyZW5gIGZyb21cbiAgICpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LW5hdGl2ZS1jb21tdW5pdHkvcmVhY3QtbmF0aXZlLW1vZGFsI2F2YWlsYWJsZS1wcm9wc1xuICAgKi9cbiAgbW9kYWxQcm9wcz86IElNb2RhbFByb3BzIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogRGlzcGxheXMgYSBtb2RhbCB3aXRoIGJ1c3kgaW5kaWNhdG9yIChzcGlubmVyKSBhbmQgbWVzc2FnZSB3aGVuIHtAbGluayBJQnVzeUluZGljYXRvclByb3BzLmlzQnVzeX0gaXMgYHRydWVgLlxuICpcbiAqIFByb3BlcnRpZXMgYXJlIHtAbGluayBJQnVzeUluZGljYXRvclByb3BzfS5cbiAqXG4gKiBDdXN0b21pemUgdGhlIG1vZGFsIHRocm91Z2gge0BsaW5rIElCdXN5SW5kaWNhdG9yUHJvcHMubW9kYWxQcm9wc30uXG4gKlxuICogQWxzbyBzdXBwb3J0cyBjYW5jZWxsaW5nIHRoZSBtb2RhbCB1c2luZyBwcm9wZXJ0aWVzXG4gKiB7QGxpbmsgSUJ1c3lJbmRpY2F0b3JQcm9wcy5pc0NhbmNlbEJ1dHRvblZpc2libGV9LFxuICoge0BsaW5rIElCdXN5SW5kaWNhdG9yUHJvcHMuY2FuY2VsVGV4dH0gYW5kXG4gKiB7QGxpbmsgSUJ1c3lJbmRpY2F0b3JQcm9wcy5vbkNhbmNlbH0uXG4gKiBUaGlzIGRvZXMgaG93ZXZlciBub3QgaGlkZSB0aGUgbW9kYWwuXG4gKlxuICogQGV4YW1wbGUgPGNhcHRpb24+TW9kYWwgd2l0aCBjYW5jZWw8L2NhcHRpb24+XG4gKiAgPENyb3NzQnVzeUluZGljYXRvclxuICogICAgICAgICBrZXk9XCJidXN5MVwiXG4gKiAgICAgICAgIHRlc3RJRD1cImJ1c3kxXCJcbiAqICAgICAgICAgaXNCdXN5PXt0aGlzLnN0YXRlLmlzQnVzeX1cbiAqICAgICAgICAgdHlwZT17Q3Jvc3NTcGlubmVyVHlwZS5QYWNtYW5JbmRpY2F0b3J9XG4gKiAgICAgICAgIGlzQ2FuY2VsQnV0dG9uVmlzaWJsZT17dHJ1ZX1cbiAqICAgICAgICAgbWVzc2FnZT1cIkxvYWRpbmcuLlwiXG4gKiAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB0aGlzLnNldFN0YXRlKHsgaXNCdXN5OiBmYWxzZSB9KX1cbiAqICAgICAgIC8+XG4gKlxuICogQGV4YW1wbGUgPGNhcHRpb24+Tm9uIGNhbmNlbGxhYmxlIGFuZCBjdXN0b20gc3R5bGVzPC9jYXB0aW9uPlxuICogICAgICAgPENyb3NzQnVzeUluZGljYXRvclxuICogICAgICAgICAga2V5PVwiYnVzeTJcIlxuICogICAgICAgICAgdGVzdElEPVwiYnVzeTJcIlxuICogICAgICAgICAgc3Bpbm5lclByb3BzPXt7XG4gKiAgICAgICAgICAgIGNvbG9yOiAncmVkJyxcbiAqICAgICAgICAgICAgdHlwZTogQ3Jvc3NTcGlubmVyVHlwZS5XYXZlSW5kaWNhdG9yXG4gKiAgICAgICAgICB9fVxuICogICAgICAgICAgbWVzc2FnZVN0eWxlPXt7Y29sb3I6ICdyZWQnfX1cbiAqICAgICAgICAgIGlzQnVzeT17dGhpcy5zdGF0ZS5pc0J1c3kyfVxuICogICAgICAgICAgaXNDYW5jZWxCdXR0b25WaXNpYmxlPXtmYWxzZX1cbiAqICAgICAgICAgIG1lc3NhZ2U9XCJSZXNpc3RhbmNlIGlzIGZ1dGlsZVwiXG4gKiAgICAgICAgLz5cbiAqL1xuZXhwb3J0IGNsYXNzIENyb3NzQnVzeUluZGljYXRvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJQnVzeUluZGljYXRvclByb3BzPiB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBJQnVzeUluZGljYXRvclByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMub25DYW5jZWwgPSB0aGlzLm9uQ2FuY2VsLmJpbmQodGhpcyk7XG4gIH1cblxuICBvbkNhbmNlbCgpIHtcbiAgICBpZiAoIXRoaXMucHJvcHMuaXNDYW5jZWxCdXR0b25WaXNpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25DYW5jZWwpIHtcbiAgICAgIHRoaXMucHJvcHMub25DYW5jZWwoKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3IHRlc3RJRD17dGhpcy5wcm9wcy50ZXN0SUQgfHwgJzEnfT5cbiAgICAgICAgPE1vZGFsXG4gICAgICAgICAgey4uLnRoaXMucHJvcHMubW9kYWxQcm9wc31cbiAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICB0aGlzLnByb3BzLm1vZGFsU3R5bGVcbiAgICAgICAgICAgICAgPyBbc3R5bGVzLmFic29sdXRlQ2VudGVyZWQsIHRoaXMucHJvcHMubW9kYWxTdHlsZV1cbiAgICAgICAgICAgICAgOiBzdHlsZXMuYWJzb2x1dGVDZW50ZXJlZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpc1Zpc2libGU9e3RoaXMucHJvcHMuaXNCdXN5fVxuICAgICAgICAgIG9uRGlzbWlzcz17dGhpcy5vbkNhbmNlbH1cbiAgICAgICAgPlxuICAgICAgICAgIDxWaWV3XG4gICAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICAgIHRoaXMucHJvcHMuaW5uZXJWaWV3U3R5bGVcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVzLmNvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVzLnBhZGRpbmdEZWZhdWx0LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmlubmVyVmlld1N0eWxlLFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW3N0eWxlcy5jb250YWluZXIsIHN0eWxlcy5wYWRkaW5nRGVmYXVsdF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8VmlldyBzdHlsZT17W3N0eWxlcy5jb2x1bW5Db250ZW50VG9wQ2VudGVyXX0+XG4gICAgICAgICAgICAgIDxDcm9zc1NwaW5uZXJcbiAgICAgICAgICAgICAgICB0eXBlPXt0aGlzLnByb3BzLnR5cGUgfHwgJ01hdGVyaWFsSW5kaWNhdG9yJ31cbiAgICAgICAgICAgICAgICBzdHlsZT17c3R5bGVzLnNwaW5uZXJ9XG4gICAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMuc3Bpbm5lclByb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9WaWV3PlxuXG4gICAgICAgICAgICA8VmlldyBzdHlsZT17W3N0eWxlcy5jb2x1bW5Db250ZW50VG9wQ2VudGVyXX0+XG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtbc3R5bGVzLnRleHRTcGlubmVyLCB0aGlzLnByb3BzLm1lc3NhZ2VTdHlsZV19PlxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLm1lc3NhZ2UgfHwgJyd9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAge3RoaXMucHJvcHMuaXNDYW5jZWxCdXR0b25WaXNpYmxlID8gKFxuICAgICAgICAgICAgICAgIDxUb3VjaGFibGVPcGFjaXR5IG9uUHJlc3M9e3RoaXMub25DYW5jZWx9PlxuICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgdGVzdElEPSdjYW5jZWxUZXh0J1xuICAgICAgICAgICAgICAgICAgICBzdHlsZT17W1xuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlcy50ZXh0U3Bpbm5lcixcbiAgICAgICAgICAgICAgICAgICAgICB7IGNvbG9yOiBDb2xvcnMuQ2FuY2VsQnV0dG9uIH0sXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jYW5jZWxUZXh0U3R5bGUsXG4gICAgICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmNhbmNlbFRleHQgfHwgJ0NhbmNlbCd9XG4gICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgPC9Ub3VjaGFibGVPcGFjaXR5PlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDwvTW9kYWw+XG4gICAgICA8L1ZpZXc+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDcm9zc0J1c3lJbmRpY2F0b3I7XG4iXSwidmVyc2lvbiI6M30=