UNPKG

@uiw/react-native

Version:
214 lines (184 loc) 22.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _reactNative = require("react-native"); var _Icon = _interopRequireDefault(require("../Icon")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const noop = () => {}; function normalizeValue(value) { if (typeof value === 'undefined' || value === null) { return ''; } return value; } class Input extends _react.default.Component { constructor(...args) { super(...args); this.inputRef = void 0; this.onChange = text => { const { onChange, type } = this.props; const maxLength = this.props.maxLength; switch (type) { case 'bankCard': text = text.replace(/\D/g, ''); if (maxLength > 0) { text = text.substring(0, maxLength); } text = text.replace(/\D/g, '').replace(/(....)(?=.)/g, '$1 '); break; case 'phone': text = text.replace(/\D/g, '').substring(0, 11); const valueLen = text.length; if (valueLen > 3 && valueLen < 8) { text = `${text.substr(0, 3)} ${text.substr(3)}`; } else if (valueLen >= 8) { text = `${text.substr(0, 3)} ${text.substr(3, 4)} ${text.substr(7)}`; } break; case 'password': break; default: break; } if (onChange) { onChange(text); } }; this.onInputClear = () => { if (this.inputRef) { this.inputRef.clear(); } this.onChange(''); }; } render() { const android = _reactNative.Platform.OS === 'android'; const { type, editable, clear, // eslint-disable-next-line @typescript-eslint/no-unused-vars children, error, extra, // eslint-disable-next-line @typescript-eslint/no-unused-vars last, onExtraClick, onErrorClick, disabled, ...restProps } = this.props; const { value, defaultValue, style } = restProps; let valueProps; if ('value' in this.props) { valueProps = { value: normalizeValue(value) }; } else { valueProps = { defaultValue }; } const keyboardTypeArray = ['default', 'email-address', 'numeric', 'phone-pad', 'ascii-capable', 'numbers-and-punctuation', 'url', 'number-pad', 'name-phone-pad', 'decimal-pad', 'twitter', 'web-search']; let keyboardType = 'default'; if (type === 'number') { keyboardType = 'numeric'; } else if (type === 'bankCard') { keyboardType = 'number-pad'; // 不带小数点 } else if (type === 'phone') { keyboardType = 'phone-pad'; } else if (type && keyboardTypeArray.indexOf(type) > -1) { keyboardType = type; } const disabledStyle = disabled ? inputStyles.disabledStyle : {}; const extraStyle = { width: typeof extra === 'string' && extra.length > 0 ? extra.length * 17 : 0 }; return <_reactNative.View style={inputStyles.container}> <_reactNative.TextInput editable={!disabled && editable} clearButtonMode={clear ? 'while-editing' : 'never'} underlineColorAndroid="transparent" ref={el => this.inputRef = el} {...restProps} {...valueProps} style={[inputStyles.input, error ? inputStyles.inputErrorColor : null, disabledStyle, // 支持自定义样式 style]} keyboardType={keyboardType} onChange={event => this.onChange(event.nativeEvent.text)} secureTextEntry={type === 'password'} /> {editable && clear && value && android ? <_reactNative.TouchableOpacity style={[inputStyles.clear]} onPress={this.onInputClear} hitSlop={{ top: 5, left: 5, bottom: 5, right: 5 }}> <_Icon.default name="circle-close" color="#fff" /> </_reactNative.TouchableOpacity> : null} {extra ? <_reactNative.TouchableWithoutFeedback onPress={onExtraClick}> <_reactNative.View> {typeof extra === 'string' ? <_reactNative.Text style={[inputStyles.extra, extraStyle]}>{extra}</_reactNative.Text> : extra} </_reactNative.View> </_reactNative.TouchableWithoutFeedback> : null} {error && <_reactNative.TouchableWithoutFeedback onPress={onErrorClick}> <_reactNative.View style={[inputStyles.errorIcon]}> <_Icon.default name="circle-close" color="#dc3545" /> </_reactNative.View> </_reactNative.TouchableWithoutFeedback>} </_reactNative.View>; } } exports.default = Input; Input.defaultProps = { type: 'text', editable: true, clear: false, onChange: noop, onBlur: noop, onFocus: noop, extra: '', onExtraClick: noop, error: false, onErrorClick: noop, last: false }; const inputStyles = _reactNative.StyleSheet.create({ container: { height: 30, borderBottomWidth: 1, borderBottomColor: '#ccc', marginTop: 0, marginBottom: 0, flexDirection: 'row', alignItems: 'center' }, input: { flex: 1, backgroundColor: 'transparent', color: '#000', fontSize: 17 }, inputErrorColor: { color: '#f50' }, disabledStyle: { color: '#ccc' }, errorIcon: { marginLeft: 5, width: 20, height: 20 }, extra: { color: '#888888', marginLeft: 5, fontSize: 15 }, clear: { backgroundColor: '#ccc', borderRadius: 15, padding: 2 } }); module.exports = exports.default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9JbnB1dC9pbmRleC50c3giXSwibmFtZXMiOlsibm9vcCIsIm5vcm1hbGl6ZVZhbHVlIiwidmFsdWUiLCJJbnB1dCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiaW5wdXRSZWYiLCJvbkNoYW5nZSIsInRleHQiLCJ0eXBlIiwicHJvcHMiLCJtYXhMZW5ndGgiLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwidmFsdWVMZW4iLCJsZW5ndGgiLCJzdWJzdHIiLCJvbklucHV0Q2xlYXIiLCJjbGVhciIsInJlbmRlciIsImFuZHJvaWQiLCJQbGF0Zm9ybSIsIk9TIiwiZWRpdGFibGUiLCJjaGlsZHJlbiIsImVycm9yIiwiZXh0cmEiLCJsYXN0Iiwib25FeHRyYUNsaWNrIiwib25FcnJvckNsaWNrIiwiZGlzYWJsZWQiLCJyZXN0UHJvcHMiLCJkZWZhdWx0VmFsdWUiLCJzdHlsZSIsInZhbHVlUHJvcHMiLCJrZXlib2FyZFR5cGVBcnJheSIsImtleWJvYXJkVHlwZSIsImluZGV4T2YiLCJkaXNhYmxlZFN0eWxlIiwiaW5wdXRTdHlsZXMiLCJleHRyYVN0eWxlIiwid2lkdGgiLCJjb250YWluZXIiLCJlbCIsImlucHV0IiwiaW5wdXRFcnJvckNvbG9yIiwiZXZlbnQiLCJuYXRpdmVFdmVudCIsInRvcCIsImxlZnQiLCJib3R0b20iLCJyaWdodCIsImVycm9ySWNvbiIsImRlZmF1bHRQcm9wcyIsIm9uQmx1ciIsIm9uRm9jdXMiLCJTdHlsZVNoZWV0IiwiY3JlYXRlIiwiaGVpZ2h0IiwiYm9yZGVyQm90dG9tV2lkdGgiLCJib3JkZXJCb3R0b21Db2xvciIsIm1hcmdpblRvcCIsIm1hcmdpbkJvdHRvbSIsImZsZXhEaXJlY3Rpb24iLCJhbGlnbkl0ZW1zIiwiZmxleCIsImJhY2tncm91bmRDb2xvciIsImNvbG9yIiwiZm9udFNpemUiLCJtYXJnaW5MZWZ0IiwiYm9yZGVyUmFkaXVzIiwicGFkZGluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztB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QUFBQSxPQUFPLEVBQUU7QUFISjtBQWhDNkIsQ0FBbEIsQ0FBcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgVGV4dElucHV0LFxuICBUZXh0SW5wdXRQcm9wZXJ0aWVzLFxuICBHZXN0dXJlUmVzcG9uZGVyRXZlbnQsXG4gIFZpZXcsXG4gIFN0eWxlU2hlZXQsXG4gIFBsYXRmb3JtLFxuICBUb3VjaGFibGVXaXRob3V0RmVlZGJhY2ssXG4gIFRleHQsXG4gIFRvdWNoYWJsZU9wYWNpdHksXG59IGZyb20gJ3JlYWN0LW5hdGl2ZSc7XG5pbXBvcnQgSWNvbiBmcm9tICcuLi9JY29uJztcbmltcG9ydCB7IElucHV0SXRlbVByb3BzVHlwZSB9IGZyb20gJy4vUHJvcHNUeXBlJztcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZT86IHN0cmluZykge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRQcm9wcyBleHRlbmRzIE9taXQ8VGV4dElucHV0UHJvcGVydGllcywgJ29uQ2hhbmdlJyB8ICdvbkZvY3VzJyB8ICdvbkJsdXInPiwgSW5wdXRJdGVtUHJvcHNUeXBlIHtcbiAgbGFzdD86IGJvb2xlYW47XG4gIG9uRXh0cmFDbGljaz86IChldmVudDogR2VzdHVyZVJlc3BvbmRlckV2ZW50KSA9PiB2b2lkO1xuICBvbkVycm9yQ2xpY2s/OiAoZXZlbnQ6IEdlc3R1cmVSZXNwb25kZXJFdmVudCkgPT4gdm9pZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBvbkNoYW5nZT86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnB1dCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJbnB1dFByb3BzLCBhbnk+IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgZWRpdGFibGU6IHRydWUsXG4gICAgY2xlYXI6IGZhbHNlLFxuICAgIG9uQ2hhbmdlOiBub29wLFxuICAgIG9uQmx1cjogbm9vcCxcbiAgICBvbkZvY3VzOiBub29wLFxuICAgIGV4dHJhOiAnJyxcbiAgICBvbkV4dHJhQ2xpY2s6IG5vb3AsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIG9uRXJyb3JDbGljazogbm9vcCxcbiAgICBsYXN0OiBmYWxzZSxcbiAgfTtcblxuICBpbnB1dFJlZjogVGV4dElucHV0IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBvbkNoYW5nZSA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB7IG9uQ2hhbmdlLCB0eXBlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IG1heExlbmd0aCA9IHRoaXMucHJvcHMubWF4TGVuZ3RoIGFzIG51bWJlcjtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2JhbmtDYXJkJzpcbiAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICAgICAgaWYgKG1heExlbmd0aCA+IDApIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMCwgbWF4TGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXEQvZywgJycpLnJlcGxhY2UoLyguLi4uKSg/PS4pL2csICckMSAnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwaG9uZSc6XG4gICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1xcRC9nLCAnJykuc3Vic3RyaW5nKDAsIDExKTtcbiAgICAgICAgY29uc3QgdmFsdWVMZW4gPSB0ZXh0Lmxlbmd0aDtcbiAgICAgICAgaWYgKHZhbHVlTGVuID4gMyAmJiB2YWx1ZUxlbiA8IDgpIHtcbiAgICAgICAgICB0ZXh0ID0gYCR7dGV4dC5zdWJzdHIoMCwgMyl9ICR7dGV4dC5zdWJzdHIoMyl9YDtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZUxlbiA+PSA4KSB7XG4gICAgICAgICAgdGV4dCA9IGAke3RleHQuc3Vic3RyKDAsIDMpfSAke3RleHQuc3Vic3RyKDMsIDQpfSAke3RleHQuc3Vic3RyKDcpfWA7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwYXNzd29yZCc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgb25DaGFuZ2UodGV4dCk7XG4gICAgfVxuICB9O1xuICBvbklucHV0Q2xlYXIgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuaW5wdXRSZWYpIHtcbiAgICAgIHRoaXMuaW5wdXRSZWYuY2xlYXIoKTtcbiAgICB9XG4gICAgdGhpcy5vbkNoYW5nZSgnJyk7XG4gIH07XG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBhbmRyb2lkID0gUGxhdGZvcm0uT1MgPT09ICdhbmRyb2lkJztcbiAgICBjb25zdCB7XG4gICAgICB0eXBlLFxuICAgICAgZWRpdGFibGUsXG4gICAgICBjbGVhcixcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgZXJyb3IsXG4gICAgICBleHRyYSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGxhc3QsXG4gICAgICBvbkV4dHJhQ2xpY2ssXG4gICAgICBvbkVycm9yQ2xpY2ssXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIC4uLnJlc3RQcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgdmFsdWUsIGRlZmF1bHRWYWx1ZSwgc3R5bGUgfSA9IHJlc3RQcm9wcztcbiAgICBsZXQgdmFsdWVQcm9wczogYW55O1xuICAgIGlmICgndmFsdWUnIGluIHRoaXMucHJvcHMpIHtcbiAgICAgIHZhbHVlUHJvcHMgPSB7XG4gICAgICAgIHZhbHVlOiBub3JtYWxpemVWYWx1ZSh2YWx1ZSksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZVByb3BzID0ge1xuICAgICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBrZXlib2FyZFR5cGVBcnJheSA9IFtcbiAgICAgICdkZWZhdWx0JyxcbiAgICAgICdlbWFpbC1hZGRyZXNzJyxcbiAgICAgICdudW1lcmljJyxcbiAgICAgICdwaG9uZS1wYWQnLFxuICAgICAgJ2FzY2lpLWNhcGFibGUnLFxuICAgICAgJ251bWJlcnMtYW5kLXB1bmN0dWF0aW9uJyxcbiAgICAgICd1cmwnLFxuICAgICAgJ251bWJlci1wYWQnLFxuICAgICAgJ25hbWUtcGhvbmUtcGFkJyxcbiAgICAgICdkZWNpbWFsLXBhZCcsXG4gICAgICAndHdpdHRlcicsXG4gICAgICAnd2ViLXNlYXJjaCcsXG4gICAgXTtcblxuICAgIGxldCBrZXlib2FyZFR5cGU6IGFueSA9ICdkZWZhdWx0JztcblxuICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xuICAgICAga2V5Ym9hcmRUeXBlID0gJ251bWVyaWMnO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2JhbmtDYXJkJykge1xuICAgICAga2V5Ym9hcmRUeXBlID0gJ251bWJlci1wYWQnOyAvLyDkuI3luKblsI/mlbDngrlcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdwaG9uZScpIHtcbiAgICAgIGtleWJvYXJkVHlwZSA9ICdwaG9uZS1wYWQnO1xuICAgIH0gZWxzZSBpZiAodHlwZSAmJiBrZXlib2FyZFR5cGVBcnJheS5pbmRleE9mKHR5cGUpID4gLTEpIHtcbiAgICAgIGtleWJvYXJkVHlwZSA9IHR5cGU7XG4gICAgfVxuICAgIGNvbnN0IGRpc2FibGVkU3R5bGUgPSBkaXNhYmxlZCA/IGlucHV0U3R5bGVzLmRpc2FibGVkU3R5bGUgOiB7fTtcbiAgICBjb25zdCBleHRyYVN0eWxlID0ge1xuICAgICAgd2lkdGg6IHR5cGVvZiBleHRyYSA9PT0gJ3N0cmluZycgJiYgKGV4dHJhIGFzIHN0cmluZykubGVuZ3RoID4gMCA/IChleHRyYSBhcyBzdHJpbmcpLmxlbmd0aCAqIDE3IDogMCxcbiAgICB9O1xuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBzdHlsZT17aW5wdXRTdHlsZXMuY29udGFpbmVyfT5cbiAgICAgICAgPFRleHRJbnB1dFxuICAgICAgICAgIGVkaXRhYmxlPXshZGlzYWJsZWQgJiYgZWRpdGFibGV9XG4gICAgICAgICAgY2xlYXJCdXR0b25Nb2RlPXtjbGVhciA/ICd3aGlsZS1lZGl0aW5nJyA6ICduZXZlcid9XG4gICAgICAgICAgdW5kZXJsaW5lQ29sb3JBbmRyb2lkPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgIHJlZj17KGVsKSA9PiAodGhpcy5pbnB1dFJlZiA9IGVsKX1cbiAgICAgICAgICB7Li4ucmVzdFByb3BzfVxuICAgICAgICAgIHsuLi52YWx1ZVByb3BzfVxuICAgICAgICAgIHN0eWxlPXtbXG4gICAgICAgICAgICBpbnB1dFN0eWxlcy5pbnB1dCxcbiAgICAgICAgICAgIGVycm9yID8gaW5wdXRTdHlsZXMuaW5wdXRFcnJvckNvbG9yIDogbnVsbCxcbiAgICAgICAgICAgIGRpc2FibGVkU3R5bGUsXG4gICAgICAgICAgICAvLyDmlK/mjIHoh6rlrprkuYnmoLflvI9cbiAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgIF19XG4gICAgICAgICAga2V5Ym9hcmRUeXBlPXtrZXlib2FyZFR5cGV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhldmVudCkgPT4gdGhpcy5vbkNoYW5nZShldmVudC5uYXRpdmVFdmVudC50ZXh0KX1cbiAgICAgICAgICBzZWN1cmVUZXh0RW50cnk9e3R5cGUgPT09ICdwYXNzd29yZCd9XG4gICAgICAgIC8+XG4gICAgICAgIHtlZGl0YWJsZSAmJiBjbGVhciAmJiB2YWx1ZSAmJiBhbmRyb2lkID8gKFxuICAgICAgICAgIDxUb3VjaGFibGVPcGFjaXR5XG4gICAgICAgICAgICBzdHlsZT17W2lucHV0U3R5bGVzLmNsZWFyXX1cbiAgICAgICAgICAgIG9uUHJlc3M9e3RoaXMub25JbnB1dENsZWFyfVxuICAgICAgICAgICAgaGl0U2xvcD17eyB0b3A6IDUsIGxlZnQ6IDUsIGJvdHRvbTogNSwgcmlnaHQ6IDUgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbiBuYW1lPVwiY2lyY2xlLWNsb3NlXCIgY29sb3I9XCIjZmZmXCIgLz5cbiAgICAgICAgICA8L1RvdWNoYWJsZU9wYWNpdHk+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7ZXh0cmEgPyAoXG4gICAgICAgICAgPFRvdWNoYWJsZVdpdGhvdXRGZWVkYmFjayBvblByZXNzPXtvbkV4dHJhQ2xpY2t9PlxuICAgICAgICAgICAgPFZpZXc+XG4gICAgICAgICAgICAgIHt0eXBlb2YgZXh0cmEgPT09ICdzdHJpbmcnID8gPFRleHQgc3R5bGU9e1tpbnB1dFN0eWxlcy5leHRyYSwgZXh0cmFTdHlsZV19PntleHRyYX08L1RleHQ+IDogZXh0cmF9XG4gICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgPC9Ub3VjaGFibGVXaXRob3V0RmVlZGJhY2s+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7ZXJyb3IgJiYgKFxuICAgICAgICAgIDxUb3VjaGFibGVXaXRob3V0RmVlZGJhY2sgb25QcmVzcz17b25FcnJvckNsaWNrfT5cbiAgICAgICAgICAgIDxWaWV3IHN0eWxlPXtbaW5wdXRTdHlsZXMuZXJyb3JJY29uXX0+XG4gICAgICAgICAgICAgIDxJY29uIG5hbWU9XCJjaXJjbGUtY2xvc2VcIiBjb2xvcj1cIiNkYzM1NDVcIiAvPlxuICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIDwvVG91Y2hhYmxlV2l0aG91dEZlZWRiYWNrPlxuICAgICAgICApfVxuICAgICAgPC9WaWV3PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgaW5wdXRTdHlsZXMgPSBTdHlsZVNoZWV0LmNyZWF0ZSh7XG4gIGNvbnRhaW5lcjoge1xuICAgIGhlaWdodDogMzAsXG4gICAgYm9yZGVyQm90dG9tV2lkdGg6IDEsXG4gICAgYm9yZGVyQm90dG9tQ29sb3I6ICcjY2NjJyxcbiAgICBtYXJnaW5Ub3A6IDAsXG4gICAgbWFyZ2luQm90dG9tOiAwLFxuICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9LFxuICBpbnB1dDoge1xuICAgIGZsZXg6IDEsXG4gICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgIGNvbG9yOiAnIzAwMCcsXG4gICAgZm9udFNpemU6IDE3LFxuICB9LFxuICBpbnB1dEVycm9yQ29sb3I6IHtcbiAgICBjb2xvcjogJyNmNTAnLFxuICB9LFxuICBkaXNhYmxlZFN0eWxlOiB7XG4gICAgY29sb3I6ICcjY2NjJyxcbiAgfSxcbiAgZXJyb3JJY29uOiB7XG4gICAgbWFyZ2luTGVmdDogNSxcbiAgICB3aWR0aDogMjAsXG4gICAgaGVpZ2h0OiAyMCxcbiAgfSxcbiAgZXh0cmE6IHtcbiAgICBjb2xvcjogJyM4ODg4ODgnLFxuICAgIG1hcmdpbkxlZnQ6IDUsXG4gICAgZm9udFNpemU6IDE1LFxuICB9LFxuICBjbGVhcjoge1xuICAgIGJhY2tncm91bmRDb2xvcjogJyNjY2MnLFxuICAgIGJvcmRlclJhZGl1czogMTUsXG4gICAgcGFkZGluZzogMixcbiAgfSxcbn0pO1xuIl19