UNPKG

adui

Version:

<div> <img src="https://wxa.wxs.qq.com/mpweb/delivery/legacy/wxadtouch/upload/t1/od834zef_52939fc6.png" style="margin:40px 0 0 -8px; background-color: #fcfcfc; box-shadow: none;" /> </div>

163 lines (162 loc) 34 kB
"use strict"; function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _useIsInitialRender = require("../_util/hooks/use-is-initial-render"); var _configProvider = require("../config-provider"); var _resizeObserver = _interopRequireDefault(require("../resize-observer")); var _Tab = _interopRequireDefault(require("./Tab")); var _Context = require("./Context"); require("./style"); var _motion = require("../_util/motion"); var _excluded = ["banner", "className", "children", "defaultValue", "disabled", "gutter", "onChange", "size", "value"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; } var prefix = "adui-tabs"; var Tabs = (0, _react.forwardRef)(function (_ref, ref) { var banner = _ref.banner, className = _ref.className, children = _ref.children, defaultValue = _ref.defaultValue, disabled = _ref.disabled, gutter = _ref.gutter, onChange = _ref.onChange, size = _ref.size, valueProp = _ref.value, otherProps = _objectWithoutProperties(_ref, _excluded); var initial = (0, _useIsInitialRender.useIsInitialRender)(); var indicatorRef = (0, _react.useRef)(null); var _useState = (0, _react.useState)(function () { var val; if (valueProp !== null && valueProp !== undefined) { val = valueProp; } else if (defaultValue !== null && defaultValue !== undefined) { val = defaultValue; } return val; }), _useState2 = _slicedToArray(_useState, 2), value = _useState2[0], setValue = _useState2[1]; if (valueProp !== null && value !== valueProp) { setValue(valueProp); } var tabsRef = (0, _react.useRef)(null); var _useContext = (0, _react.useContext)(_configProvider.ConfigContext), sizeContext = _useContext.size; var setIndicatorStyle = function setIndicatorStyle(styles) { Object.keys(styles).forEach(function (key) { if (indicatorRef.current) { indicatorRef.current.style[key] = styles[key]; } }); }; var updateIndicatorStyle = function updateIndicatorStyle() { setTimeout(function () { if (tabsRef && tabsRef.current) { var theActiveTab = tabsRef.current.querySelector('[aria-selected="true"]'); if (theActiveTab) { var _indicatorRef$current; var lastOffsetLeft = ((_indicatorRef$current = indicatorRef.current) === null || _indicatorRef$current === void 0 || (_indicatorRef$current = _indicatorRef$current.style.transform.match(/translate3d\((\d+)px/)) === null || _indicatorRef$current === void 0 ? void 0 : _indicatorRef$current[1]) || 0; var clientWidth = theActiveTab.clientWidth, offsetLeft = theActiveTab.offsetLeft; var delta = Math.abs(offsetLeft - Number(lastOffsetLeft)); var transition = delta < _motion.BOUNCE_DISTANCE ? "all var(--adui-motion-duration-base) var(--adui-motion-ease-base)" : "all 0.35s linear(0,0.002,0.006,0.014,0.025 2.5%,0.056 3.8%,0.1,0.144,0.198 8%,0.436 13.9%,0.544,0.645 19.6%,0.69,0.731,0.769,0.803,0.834,0.862,0.888,0.911,0.931,0.949,0.964,0.976,0.987,0.996,1.003,1.009,1.013 47.3%,1.015 49.7%,1.017 53%,1.016 56.9%,1.006 72.6%,1.002 81.4%,1.001 89.7%,1)"; setIndicatorStyle({ transform: "translate3d(".concat(Math.floor(offsetLeft), "px, 0, 0)"), transition: initial ? "" : transition, width: "".concat(clientWidth, "px") }); } else { setIndicatorStyle({ opacity: 0 }); } } }, 0); }; (0, _react.useImperativeHandle)(ref, function () { return { updateIndicatorStyle: updateIndicatorStyle, getDomNode: function getDomNode() { return tabsRef.current; } }; }); var handleTabsValueChange = function handleTabsValueChange(val) { if (valueProp === null) { setValue(val); } if (onChange) { onChange(val); } }; (0, _react.useEffect)(function () { updateIndicatorStyle(); }); var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-base"), "".concat(prefix, "-").concat((0, _configProvider.getComputedSize)(size, sizeContext)), _defineProperty(_defineProperty({}, "".concat(prefix, "-banner"), banner), "".concat(prefix, "-base_disabled"), disabled)); return _react["default"].createElement(_Context.TabsContext.Provider, { value: { disabled: disabled, gutter: gutter, handleTabsValueChange: handleTabsValueChange, value: value } }, _react["default"].createElement(_resizeObserver["default"], { onResize: function onResize() { if (!initial) { updateIndicatorStyle(); } } }, _react["default"].createElement("div", _extends({ className: classSet, "data-value": value, ref: tabsRef }, otherProps), _react["default"].createElement("div", { ref: indicatorRef, className: "".concat(prefix, "-indicator") }), children))); }); Tabs.Tab = _Tab["default"]; Tabs.displayName = "Tabs"; Tabs.propTypes = { banner: _propTypes["default"].bool, children: _propTypes["default"].node.isRequired, className: _propTypes["default"].string, defaultValue: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]), disabled: _propTypes["default"].bool, gutter: _propTypes["default"].number, onChange: _propTypes["default"].func, size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]), value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]) }; Tabs.defaultProps = { banner: false, className: undefined, defaultValue: null, disabled: false, gutter: undefined, onChange: function onChange() {}, size: "small", value: null }; var _default = exports["default"] = Tabs; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX3VzZUlzSW5pdGlhbFJlbmRlciIsIl9jb25maWdQcm92aWRlciIsIl9yZXNpemVPYnNlcnZlciIsIl9UYWIiLCJfQ29udGV4dCIsIl9tb3Rpb24iLCJfZXhjbHVkZWQiLCJlIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJyIiwidCIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIl9kZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsIiwiaXRlcmF0b3IiLCJmIiwibyIsIm5leHQiLCJkb25lIiwicHVzaCIsImlzQXJyYXkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInMiLCJpbmNsdWRlcyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwicHJlZml4IiwiVGFicyIsImZvcndhcmRSZWYiLCJfcmVmIiwicmVmIiwiYmFubmVyIiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iLCJkZWZhdWx0VmFsdWUiLCJkaXNhYmxlZCIsImd1dHRlciIsIm9uQ2hhbmdlIiwic2l6ZSIsInZhbHVlUHJvcCIsIm90aGVyUHJvcHMiLCJpbml0aWFsIiwidXNlSXNJbml0aWFsUmVuZGVyIiwiaW5kaWNhdG9yUmVmIiwidXNlUmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJ2YWwiLCJ1bmRlZmluZWQiLCJfdXNlU3RhdGUyIiwic2V0VmFsdWUiLCJ0YWJzUmVmIiwiX3VzZUNvbnRleHQiLCJ1c2VDb250ZXh0IiwiQ29uZmlnQ29udGV4dCIsInNpemVDb250ZXh0Iiwic2V0SW5kaWNhdG9yU3R5bGUiLCJzdHlsZXMiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImN1cnJlbnQiLCJzdHlsZSIsInVwZGF0ZUluZGljYXRvclN0eWxlIiwic2V0VGltZW91dCIsInRoZUFjdGl2ZVRhYiIsInF1ZXJ5U2VsZWN0b3IiLCJfaW5kaWNhdG9yUmVmJGN1cnJlbnQiLCJsYXN0T2Zmc2V0TGVmdCIsInRyYW5zZm9ybSIsIm1hdGNoIiwiY2xpZW50V2lkdGgiLCJvZmZzZXRMZWZ0IiwiZGVsdGEiLCJNYXRoIiwiYWJzIiwidHJhbnNpdGlvbiIsIkJPVU5DRV9ESVNUQU5DRSIsImNvbmNhdCIsImZsb29yIiwid2lkdGgiLCJvcGFjaXR5IiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsImdldERvbU5vZGUiLCJoYW5kbGVUYWJzVmFsdWVDaGFuZ2UiLCJ1c2VFZmZlY3QiLCJjbGFzc1NldCIsImNsYXNzTmFtZXMiLCJnZXRDb21wdXRlZFNpemUiLCJjcmVhdGVFbGVtZW50IiwiVGFic0NvbnRleHQiLCJQcm92aWRlciIsIm9uUmVzaXplIiwiVGFiIiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJib29sIiwibm9kZSIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJvbmVPZlR5cGUiLCJudW1iZXIiLCJmdW5jIiwib25lT2YiLCJkZWZhdWx0UHJvcHMiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9jb21wb25lbnRzL3RhYnMvVGFicy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0IFJlYWN0LCB7XG4gIGZvcndhcmRSZWYsXG4gIHVzZUNvbnRleHQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHsgdXNlSXNJbml0aWFsUmVuZGVyIH0gZnJvbSBcIi4uL191dGlsL2hvb2tzL3VzZS1pcy1pbml0aWFsLXJlbmRlclwiXG5pbXBvcnQgeyBDb25maWdDb250ZXh0LCBnZXRDb21wdXRlZFNpemUgfSBmcm9tIFwiLi4vY29uZmlnLXByb3ZpZGVyXCJcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tIFwiLi4vcmVzaXplLW9ic2VydmVyXCJcbmltcG9ydCBUYWIgZnJvbSBcIi4vVGFiXCJcbmltcG9ydCB7IFRhYnNDb250ZXh0IH0gZnJvbSBcIi4vQ29udGV4dFwiXG5pbXBvcnQgXCIuL3N0eWxlXCJcbmltcG9ydCB7IEJPVU5DRV9ESVNUQU5DRSB9IGZyb20gXCIuLi9fdXRpbC9tb3Rpb25cIlxuXG5jb25zdCBwcmVmaXggPSBcImFkdWktdGFic1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYnNQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICAvKipcbiAgICog5piv5ZCm6YCa5qCP5YiG6YWN5a695bqm77yIZmxleDogMTvvvIlcbiAgICovXG4gIGJhbm5lcj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOWtkOiKgueCuVxuICAgKi9cbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOm7mOiupOeahOW3sumAieS4remhuVxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogUmVhY3QuUmVhY3RUZXh0IHwgbnVsbFxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIHRhYiDnmoTpl7Tot50gbWFyZ2luXG4gICAqL1xuICBndXR0ZXI/OiBudW1iZXJcbiAgLyoqXG4gICAqIOWAvOWPmOWMluaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZT86ICh2YWx1ZTogUmVhY3QuUmVhY3RUZXh0KSA9PiB2b2lkXG4gIC8qKlxuICAgKiDorr7nva7lsLrlr7hcbiAgICovXG4gIHNpemU/OiBcIm1pbmlcIiB8IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCJcbiAgLyoqXG4gICAqIOW3sumAieS4remhuVxuICAgKi9cbiAgdmFsdWU/OiBSZWFjdC5SZWFjdFRleHQgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYnNcbiAgZXh0ZW5kcyBSZWFjdC5Gb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50PFxuICAgIElUYWJzUHJvcHMgJiBSZWFjdC5SZWZBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PlxuICA+IHtcbiAgVGFiOiB0eXBlb2YgVGFiXG59XG5cbi8qKlxuICog5a+86Iiq6aG1562+77yM6aG26YOo5qiq5ZCR5a+86Iiq55qE5YaF5a6577yM55So5LqO5YiH5o2i6aG16Z2i5Lit5ZCM5LiA5bGC57qn55qE5YaF5a6544CCXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IFRhYnM6IElUYWJzID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIGJhbm5lcixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBndXR0ZXIsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIHNpemUsXG4gICAgICB2YWx1ZTogdmFsdWVQcm9wLFxuICAgICAgLi4ub3RoZXJQcm9wc1xuICAgIH06IElUYWJzUHJvcHMsXG4gICAgcmVmOiBhbnlcbiAgKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbCA9IHVzZUlzSW5pdGlhbFJlbmRlcigpXG4gICAgY29uc3QgaW5kaWNhdG9yUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gICAgLyoqXG4gICAgICog5Yid5aeL5YyWIHZhbHVlIHN0YXRlXG4gICAgICogMS4g5LyY5YWI5Yik5patIFByb3AgdmFsdWXvvIzlpoLmnpzlrZjlnKggUHJvcCB2YWx1Ze+8jOWImSBUYWJzIOWujOWFqOS6pOeUseWklumDqOaOp+WItu+8jOWGhemDqOeKtuaAgeaXoOaViO+8m1xuICAgICAqIDIuIOWGjeWIpOaWrSBQcm9wIGRlZmF1bHRWYWx1Ze+8jOWmguaenOWtmOWcqOm7mOiupOWAvO+8jOWImSBUYWJzIOeKtuaAgeS4uuatpOm7mOiupOWAvO+8m1xuICAgICAqIDMuIOWmguaenOmDveayoeacie+8jOWImeWPliBUYWIgY2hpbGRyZW4g56ysIDAg6aG555qEIHZhbHVl77yM5bCG56ysIDAg6aG56K6+572u5Li65b2T5YmN6aG544CCXG4gICAgICpcbiAgICAgKiDku6XkuIrkuInkuKrliKTmlq3lj6/og73lrZjlnKjlhrLnqoHvvIzmiYDku6XlnKjmraTor7TmmI7mnaHku7bliKTmlq3nmoTkvJjlhYjnuqfjgIJcbiAgICAgKi9cbiAgICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCgpID0+IHtcbiAgICAgIGxldCB2YWxcbiAgICAgIGlmICh2YWx1ZVByb3AgIT09IG51bGwgJiYgdmFsdWVQcm9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFsID0gdmFsdWVQcm9wXG4gICAgICB9IGVsc2UgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWwgPSBkZWZhdWx0VmFsdWVcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWxcbiAgICB9KVxuXG4gICAgLy8g55u45b2T5LqO55Sf5ZG95ZGo5pyfIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1xuICAgIGlmICh2YWx1ZVByb3AgIT09IG51bGwgJiYgdmFsdWUgIT09IHZhbHVlUHJvcCkge1xuICAgICAgc2V0VmFsdWUodmFsdWVQcm9wKVxuICAgIH1cblxuICAgIGNvbnN0IHRhYnNSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG5cbiAgICBjb25zdCB7IHNpemU6IHNpemVDb250ZXh0IH0gPSB1c2VDb250ZXh0KENvbmZpZ0NvbnRleHQpXG5cbiAgICBjb25zdCBzZXRJbmRpY2F0b3JTdHlsZSA9IChzdHlsZXM6IFJlYWN0LkNTU1Byb3BlcnRpZXMpID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHN0eWxlcykuZm9yRWFjaCgoa2V5OiBrZXlvZiBSZWFjdC5DU1NQcm9wZXJ0aWVzKSA9PiB7XG4gICAgICAgIGlmIChpbmRpY2F0b3JSZWYuY3VycmVudCkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBpbmRpY2F0b3JSZWYuY3VycmVudC5zdHlsZVtrZXldID0gc3R5bGVzW2tleV1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVJbmRpY2F0b3JTdHlsZSA9ICgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGFic1JlZiAmJiB0YWJzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBjb25zdCB0aGVBY3RpdmVUYWIgPSB0YWJzUmVmLmN1cnJlbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICdbYXJpYS1zZWxlY3RlZD1cInRydWVcIl0nXG4gICAgICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudFxuICAgICAgICAgIGlmICh0aGVBY3RpdmVUYWIpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RPZmZzZXRMZWZ0ID1cbiAgICAgICAgICAgICAgaW5kaWNhdG9yUmVmLmN1cnJlbnQ/LnN0eWxlLnRyYW5zZm9ybS5tYXRjaChcbiAgICAgICAgICAgICAgICAvdHJhbnNsYXRlM2RcXCgoXFxkKylweC9cbiAgICAgICAgICAgICAgKT8uWzFdIHx8IDBcbiAgICAgICAgICAgIGNvbnN0IHsgY2xpZW50V2lkdGgsIG9mZnNldExlZnQgfSA9IHRoZUFjdGl2ZVRhYlxuICAgICAgICAgICAgY29uc3QgZGVsdGEgPSBNYXRoLmFicyhvZmZzZXRMZWZ0IC0gTnVtYmVyKGxhc3RPZmZzZXRMZWZ0KSlcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zaXRpb24gPVxuICAgICAgICAgICAgICBkZWx0YSA8IEJPVU5DRV9ESVNUQU5DRVxuICAgICAgICAgICAgICAgID8gXCJhbGwgdmFyKC0tYWR1aS1tb3Rpb24tZHVyYXRpb24tYmFzZSkgdmFyKC0tYWR1aS1tb3Rpb24tZWFzZS1iYXNlKVwiXG4gICAgICAgICAgICAgICAgOiBcImFsbCAwLjM1cyBsaW5lYXIoMCwwLjAwMiwwLjAwNiwwLjAxNCwwLjAyNSAyLjUlLDAuMDU2IDMuOCUsMC4xLDAuMTQ0LDAuMTk4IDglLDAuNDM2IDEzLjklLDAuNTQ0LDAuNjQ1IDE5LjYlLDAuNjksMC43MzEsMC43NjksMC44MDMsMC44MzQsMC44NjIsMC44ODgsMC45MTEsMC45MzEsMC45NDksMC45NjQsMC45NzYsMC45ODcsMC45OTYsMS4wMDMsMS4wMDksMS4wMTMgNDcuMyUsMS4wMTUgNDkuNyUsMS4wMTcgNTMlLDEuMDE2IDU2LjklLDEuMDA2IDcyLjYlLDEuMDAyIDgxLjQlLDEuMDAxIDg5LjclLDEpXCJcblxuICAgICAgICAgICAgc2V0SW5kaWNhdG9yU3R5bGUoe1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGUzZCgke01hdGguZmxvb3Iob2Zmc2V0TGVmdCl9cHgsIDAsIDApYCxcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbjogaW5pdGlhbCA/IFwiXCIgOiB0cmFuc2l0aW9uLFxuICAgICAgICAgICAgICB3aWR0aDogYCR7Y2xpZW50V2lkdGh9cHhgLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0SW5kaWNhdG9yU3R5bGUoeyBvcGFjaXR5OiAwIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgdXBkYXRlSW5kaWNhdG9yU3R5bGUsXG4gICAgICBnZXREb21Ob2RlOiAoKSA9PiB0YWJzUmVmLmN1cnJlbnQsXG4gICAgfSkpXG5cbiAgICBjb25zdCBoYW5kbGVUYWJzVmFsdWVDaGFuZ2UgPSAodmFsOiBSZWFjdC5SZWFjdFRleHQpID0+IHtcbiAgICAgIGlmICh2YWx1ZVByb3AgPT09IG51bGwpIHtcbiAgICAgICAgc2V0VmFsdWUodmFsKVxuICAgICAgfVxuICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgIG9uQ2hhbmdlKHZhbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgdXBkYXRlSW5kaWNhdG9yU3R5bGUoKVxuICAgIH0pXG5cbiAgICBjb25zdCBjbGFzc1NldCA9IGNsYXNzTmFtZXMoXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBgJHtwcmVmaXh9LWJhc2VgLFxuICAgICAgYCR7cHJlZml4fS0ke2dldENvbXB1dGVkU2l6ZShzaXplLCBzaXplQ29udGV4dCl9YCxcbiAgICAgIHtcbiAgICAgICAgW2Ake3ByZWZpeH0tYmFubmVyYF06IGJhbm5lcixcbiAgICAgICAgW2Ake3ByZWZpeH0tYmFzZV9kaXNhYmxlZGBdOiBkaXNhYmxlZCxcbiAgICAgIH1cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFRhYnNDb250ZXh0LlByb3ZpZGVyXG4gICAgICAgIHZhbHVlPXt7IGRpc2FibGVkLCBndXR0ZXIsIGhhbmRsZVRhYnNWYWx1ZUNoYW5nZSwgdmFsdWUgfX1cbiAgICAgID5cbiAgICAgICAgPFJlc2l6ZU9ic2VydmVyXG4gICAgICAgICAgb25SZXNpemU9eygpID0+IHtcbiAgICAgICAgICAgIGlmICghaW5pdGlhbCkge1xuICAgICAgICAgICAgICB1cGRhdGVJbmRpY2F0b3JTdHlsZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NTZXR9XG4gICAgICAgICAgICBkYXRhLXZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgIHJlZj17dGFic1JlZn1cbiAgICAgICAgICAgIHsuLi5vdGhlclByb3BzfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgcmVmPXtpbmRpY2F0b3JSZWZ9IGNsYXNzTmFtZT17YCR7cHJlZml4fS1pbmRpY2F0b3JgfSAvPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L1Jlc2l6ZU9ic2VydmVyPlxuICAgICAgPC9UYWJzQ29udGV4dC5Qcm92aWRlcj5cbiAgICApXG4gIH1cbilcblxuVGFicy5UYWIgPSBUYWJcblxuVGFicy5kaXNwbGF5TmFtZSA9IFwiVGFic1wiXG5cblRhYnMucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICog5piv5ZCm6YCa5qCP5YiG6YWN5a695bqm77yIZmxleDogMTvvvIlcbiAgICovXG4gIGJhbm5lcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDlrZDoioLngrlcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiDpu5jorqTnmoTlt7LpgInkuK3poblcbiAgICovXG4gIGRlZmF1bHRWYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiB0YWIg55qE6Ze06LedIG1hcmdpblxuICAgKi9cbiAgZ3V0dGVyOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICog5YC85Y+Y5YyW5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mKFtcIm1pbmlcIiwgXCJzbWFsbFwiLCBcIm1lZGl1bVwiLCBcImxhcmdlXCJdKSxcbiAgLyoqXG4gICAqIOW3sumAieS4remhuVxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKSxcbn1cblxuVGFicy5kZWZhdWx0UHJvcHMgPSB7XG4gIGJhbm5lcjogZmFsc2UsXG4gIGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgZ3V0dGVyOiB1bmRlZmluZWQsXG4gIG9uQ2hhbmdlOiAoKSA9PiB7fSxcbiAgc2l6ZTogXCJzbWFsbFwiLFxuICB2YWx1ZTogbnVsbCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgVGFic1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxP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