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>

179 lines (152 loc) 24.7 kB
var _excluded = ["banner", "className", "children", "defaultValue", "disabled", "gutter", "onChange", "size", "value"]; function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _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(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } import React, { forwardRef, useContext, useEffect, useImperativeHandle, useRef, useState } from "react"; import PropTypes from "prop-types"; import classNames from "classnames"; import { useIsInitialRender } from "../_util/hooks/use-is-initial-render"; import { ConfigContext, getComputedSize } from "../config-provider"; import ResizeObserver from "../resize-observer"; import Tab from "./Tab"; import { TabsContext } from "./Context"; import "./style"; import { BOUNCE_DISTANCE } from "../_util/motion"; var prefix = "adui-tabs"; var Tabs = forwardRef(function (_ref, ref) { var _classNames; 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 = useIsInitialRender(); var indicatorRef = useRef(null); var _useState = 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 = useRef(null); var _useContext = useContext(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, _indicatorRef$current2; var lastOffsetLeft = ((_indicatorRef$current = indicatorRef.current) === null || _indicatorRef$current === void 0 ? void 0 : (_indicatorRef$current2 = _indicatorRef$current.style.transform.match(/translate3d\((\d+)px/)) === null || _indicatorRef$current2 === void 0 ? void 0 : _indicatorRef$current2[1]) || 0; var clientWidth = theActiveTab.clientWidth, offsetLeft = theActiveTab.offsetLeft; var delta = Math.abs(offsetLeft - Number(lastOffsetLeft)); var transition = delta < 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); }; 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); } }; useEffect(function () { updateIndicatorStyle(); }); var classSet = classNames(className, "".concat(prefix, "-base"), "".concat(prefix, "-").concat(getComputedSize(size, sizeContext)), (_classNames = {}, _defineProperty(_classNames, "".concat(prefix, "-banner"), banner), _defineProperty(_classNames, "".concat(prefix, "-base_disabled"), disabled), _classNames)); return React.createElement(TabsContext.Provider, { value: { disabled: disabled, gutter: gutter, handleTabsValueChange: handleTabsValueChange, value: value } }, React.createElement(ResizeObserver, { onResize: function onResize() { if (!initial) { updateIndicatorStyle(); } } }, React.createElement("div", _extends({ className: classSet, "data-value": value, ref: tabsRef }, otherProps), React.createElement("div", { ref: indicatorRef, className: "".concat(prefix, "-indicator") }), children))); }); Tabs.Tab = Tab; Tabs.displayName = "Tabs"; Tabs.propTypes = { banner: PropTypes.bool, children: PropTypes.node.isRequired, className: PropTypes.string, defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), disabled: PropTypes.bool, gutter: PropTypes.number, onChange: PropTypes.func, size: PropTypes.oneOf(["mini", "small", "medium", "large"]), value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]) }; Tabs.defaultProps = { banner: false, className: undefined, defaultValue: null, disabled: false, gutter: undefined, onChange: function onChange() {}, size: "small", value: null }; export default Tabs; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZvcndhcmRSZWYiLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsInVzZVJlZiIsInVzZVN0YXRlIiwiUHJvcFR5cGVzIiwiY2xhc3NOYW1lcyIsInVzZUlzSW5pdGlhbFJlbmRlciIsIkNvbmZpZ0NvbnRleHQiLCJnZXRDb21wdXRlZFNpemUiLCJSZXNpemVPYnNlcnZlciIsIlRhYiIsIlRhYnNDb250ZXh0IiwiQk9VTkNFX0RJU1RBTkNFIiwicHJlZml4IiwiVGFicyIsInJlZiIsImJhbm5lciIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiZGVmYXVsdFZhbHVlIiwiZGlzYWJsZWQiLCJndXR0ZXIiLCJvbkNoYW5nZSIsInNpemUiLCJ2YWx1ZVByb3AiLCJ2YWx1ZSIsIm90aGVyUHJvcHMiLCJpbml0aWFsIiwiaW5kaWNhdG9yUmVmIiwidmFsIiwidW5kZWZpbmVkIiwic2V0VmFsdWUiLCJ0YWJzUmVmIiwic2l6ZUNvbnRleHQiLCJzZXRJbmRpY2F0b3JTdHlsZSIsInN0eWxlcyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwiY3VycmVudCIsInN0eWxlIiwidXBkYXRlSW5kaWNhdG9yU3R5bGUiLCJzZXRUaW1lb3V0IiwidGhlQWN0aXZlVGFiIiwicXVlcnlTZWxlY3RvciIsImxhc3RPZmZzZXRMZWZ0IiwidHJhbnNmb3JtIiwibWF0Y2giLCJjbGllbnRXaWR0aCIsIm9mZnNldExlZnQiLCJkZWx0YSIsIk1hdGgiLCJhYnMiLCJOdW1iZXIiLCJ0cmFuc2l0aW9uIiwiZmxvb3IiLCJ3aWR0aCIsIm9wYWNpdHkiLCJnZXREb21Ob2RlIiwiaGFuZGxlVGFic1ZhbHVlQ2hhbmdlIiwiY2xhc3NTZXQiLCJkaXNwbGF5TmFtZSIsInByb3BUeXBlcyIsImJvb2wiLCJub2RlIiwiaXNSZXF1aXJlZCIsInN0cmluZyIsIm9uZU9mVHlwZSIsIm51bWJlciIsImZ1bmMiLCJvbmVPZiIsImRlZmF1bHRQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvdGFicy9UYWJzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgUmVhY3QsIHtcbiAgZm9yd2FyZFJlZixcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VJbXBlcmF0aXZlSGFuZGxlLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgeyB1c2VJc0luaXRpYWxSZW5kZXIgfSBmcm9tIFwiLi4vX3V0aWwvaG9va3MvdXNlLWlzLWluaXRpYWwtcmVuZGVyXCJcbmltcG9ydCB7IENvbmZpZ0NvbnRleHQsIGdldENvbXB1dGVkU2l6ZSB9IGZyb20gXCIuLi9jb25maWctcHJvdmlkZXJcIlxuaW1wb3J0IFJlc2l6ZU9ic2VydmVyIGZyb20gXCIuLi9yZXNpemUtb2JzZXJ2ZXJcIlxuaW1wb3J0IFRhYiBmcm9tIFwiLi9UYWJcIlxuaW1wb3J0IHsgVGFic0NvbnRleHQgfSBmcm9tIFwiLi9Db250ZXh0XCJcbmltcG9ydCBcIi4vc3R5bGVcIlxuaW1wb3J0IHsgQk9VTkNFX0RJU1RBTkNFIH0gZnJvbSBcIi4uL191dGlsL21vdGlvblwiXG5cbmNvbnN0IHByZWZpeCA9IFwiYWR1aS10YWJzXCJcblxuZXhwb3J0IGludGVyZmFjZSBJVGFic1Byb3BzIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG4gIC8qKlxuICAgKiDmmK/lkKbpgJrmoI/liIbphY3lrr3luqbvvIhmbGV4OiAxO++8iVxuICAgKi9cbiAgYmFubmVyPzogYm9vbGVhblxuICAvKipcbiAgICog5a2Q6IqC54K5XG4gICAqL1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICog6buY6K6k55qE5bey6YCJ5Lit6aG5XG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiBSZWFjdC5SZWFjdFRleHQgfCBudWxsXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICAvKipcbiAgICogdGFiIOeahOmXtOi3nSBtYXJnaW5cbiAgICovXG4gIGd1dHRlcj86IG51bWJlclxuICAvKipcbiAgICog5YC85Y+Y5YyW5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBSZWFjdC5SZWFjdFRleHQpID0+IHZvaWRcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZT86IFwibWluaVwiIHwgXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIlxuICAvKipcbiAgICog5bey6YCJ5Lit6aG5XG4gICAqL1xuICB2YWx1ZT86IFJlYWN0LlJlYWN0VGV4dCB8IG51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFic1xuICBleHRlbmRzIFJlYWN0LkZvcndhcmRSZWZFeG90aWNDb21wb25lbnQ8XG4gICAgSVRhYnNQcm9wcyAmIFJlYWN0LlJlZkF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4gID4ge1xuICBUYWI6IHR5cGVvZiBUYWJcbn1cblxuLyoqXG4gKiDlr7zoiKrpobXnrb7vvIzpobbpg6jmqKrlkJHlr7zoiKrnmoTlhoXlrrnvvIznlKjkuo7liIfmjaLpobXpnaLkuK3lkIzkuIDlsYLnuqfnmoTlhoXlrrnjgIJcbiAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgVGFiczogSVRhYnMgPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgYmFubmVyLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGd1dHRlcixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgc2l6ZSxcbiAgICAgIHZhbHVlOiB2YWx1ZVByb3AsXG4gICAgICAuLi5vdGhlclByb3BzXG4gICAgfTogSVRhYnNQcm9wcyxcbiAgICByZWY6IGFueVxuICApID0+IHtcbiAgICBjb25zdCBpbml0aWFsID0gdXNlSXNJbml0aWFsUmVuZGVyKClcbiAgICBjb25zdCBpbmRpY2F0b3JSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG5cbiAgICAvKipcbiAgICAgKiDliJ3lp4vljJYgdmFsdWUgc3RhdGVcbiAgICAgKiAxLiDkvJjlhYjliKTmlq0gUHJvcCB2YWx1Ze+8jOWmguaenOWtmOWcqCBQcm9wIHZhbHVl77yM5YiZIFRhYnMg5a6M5YWo5Lqk55Sx5aSW6YOo5o6n5Yi277yM5YaF6YOo54q25oCB5peg5pWI77ybXG4gICAgICogMi4g5YaN5Yik5patIFByb3AgZGVmYXVsdFZhbHVl77yM5aaC5p6c5a2Y5Zyo6buY6K6k5YC877yM5YiZIFRhYnMg54q25oCB5Li65q2k6buY6K6k5YC877ybXG4gICAgICogMy4g5aaC5p6c6YO95rKh5pyJ77yM5YiZ5Y+WIFRhYiBjaGlsZHJlbiDnrKwgMCDpobnnmoQgdmFsdWXvvIzlsIbnrKwgMCDpobnorr7nva7kuLrlvZPliY3pobnjgIJcbiAgICAgKlxuICAgICAqIOS7peS4iuS4ieS4quWIpOaWreWPr+iDveWtmOWcqOWGsueqge+8jOaJgOS7peWcqOatpOivtOaYjuadoeS7tuWIpOaWreeahOS8mOWFiOe6p+OAglxuICAgICAqL1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoKCkgPT4ge1xuICAgICAgbGV0IHZhbFxuICAgICAgaWYgKHZhbHVlUHJvcCAhPT0gbnVsbCAmJiB2YWx1ZVByb3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWwgPSB2YWx1ZVByb3BcbiAgICAgIH0gZWxzZSBpZiAoZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhbCA9IGRlZmF1bHRWYWx1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbFxuICAgIH0pXG5cbiAgICAvLyDnm7jlvZPkuo7nlJ/lkb3lkajmnJ8gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXG4gICAgaWYgKHZhbHVlUHJvcCAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdmFsdWVQcm9wKSB7XG4gICAgICBzZXRWYWx1ZSh2YWx1ZVByb3ApXG4gICAgfVxuXG4gICAgY29uc3QgdGFic1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICAgIGNvbnN0IHsgc2l6ZTogc2l6ZUNvbnRleHQgfSA9IHVzZUNvbnRleHQoQ29uZmlnQ29udGV4dClcblxuICAgIGNvbnN0IHNldEluZGljYXRvclN0eWxlID0gKHN0eWxlczogUmVhY3QuQ1NTUHJvcGVydGllcykgPT4ge1xuICAgICAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKChrZXk6IGtleW9mIFJlYWN0LkNTU1Byb3BlcnRpZXMpID0+IHtcbiAgICAgICAgaWYgKGluZGljYXRvclJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGluZGljYXRvclJlZi5jdXJyZW50LnN0eWxlW2tleV0gPSBzdHlsZXNba2V5XVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZUluZGljYXRvclN0eWxlID0gKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0YWJzUmVmICYmIHRhYnNSZWYuY3VycmVudCkge1xuICAgICAgICAgIGNvbnN0IHRoZUFjdGl2ZVRhYiA9IHRhYnNSZWYuY3VycmVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgJ1thcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSdcbiAgICAgICAgICApIGFzIEhUTUxEaXZFbGVtZW50XG4gICAgICAgICAgaWYgKHRoZUFjdGl2ZVRhYikge1xuICAgICAgICAgICAgY29uc3QgbGFzdE9mZnNldExlZnQgPVxuICAgICAgICAgICAgICBpbmRpY2F0b3JSZWYuY3VycmVudD8uc3R5bGUudHJhbnNmb3JtLm1hdGNoKFxuICAgICAgICAgICAgICAgIC90cmFuc2xhdGUzZFxcKChcXGQrKXB4L1xuICAgICAgICAgICAgICApPy5bMV0gfHwgMFxuICAgICAgICAgICAgY29uc3QgeyBjbGllbnRXaWR0aCwgb2Zmc2V0TGVmdCB9ID0gdGhlQWN0aXZlVGFiXG4gICAgICAgICAgICBjb25zdCBkZWx0YSA9IE1hdGguYWJzKG9mZnNldExlZnQgLSBOdW1iZXIobGFzdE9mZnNldExlZnQpKVxuICAgICAgICAgICAgY29uc3QgdHJhbnNpdGlvbiA9XG4gICAgICAgICAgICAgIGRlbHRhIDwgQk9VTkNFX0RJU1RBTkNFXG4gICAgICAgICAgICAgICAgPyBcImFsbCB2YXIoLS1hZHVpLW1vdGlvbi1kdXJhdGlvbi1iYXNlKSB2YXIoLS1hZHVpLW1vdGlvbi1lYXNlLWJhc2UpXCJcbiAgICAgICAgICAgICAgICA6IFwiYWxsIDAuMzVzIGxpbmVhcigwLDAuMDAyLDAuMDA2LDAuMDE0LDAuMDI1IDIuNSUsMC4wNTYgMy44JSwwLjEsMC4xNDQsMC4xOTggOCUsMC40MzYgMTMuOSUsMC41NDQsMC42NDUgMTkuNiUsMC42OSwwLjczMSwwLjc2OSwwLjgwMywwLjgzNCwwLjg2MiwwLjg4OCwwLjkxMSwwLjkzMSwwLjk0OSwwLjk2NCwwLjk3NiwwLjk4NywwLjk5NiwxLjAwMywxLjAwOSwxLjAxMyA0Ny4zJSwxLjAxNSA0OS43JSwxLjAxNyA1MyUsMS4wMTYgNTYuOSUsMS4wMDYgNzIuNiUsMS4wMDIgODEuNCUsMS4wMDEgODkuNyUsMSlcIlxuXG4gICAgICAgICAgICBzZXRJbmRpY2F0b3JTdHlsZSh7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZTNkKCR7TWF0aC5mbG9vcihvZmZzZXRMZWZ0KX1weCwgMCwgMClgLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBpbml0aWFsID8gXCJcIiA6IHRyYW5zaXRpb24sXG4gICAgICAgICAgICAgIHdpZHRoOiBgJHtjbGllbnRXaWR0aH1weGAsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRJbmRpY2F0b3JTdHlsZSh7IG9wYWNpdHk6IDAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XG4gICAgICB1cGRhdGVJbmRpY2F0b3JTdHlsZSxcbiAgICAgIGdldERvbU5vZGU6ICgpID0+IHRhYnNSZWYuY3VycmVudCxcbiAgICB9KSlcblxuICAgIGNvbnN0IGhhbmRsZVRhYnNWYWx1ZUNoYW5nZSA9ICh2YWw6IFJlYWN0LlJlYWN0VGV4dCkgPT4ge1xuICAgICAgaWYgKHZhbHVlUHJvcCA9PT0gbnVsbCkge1xuICAgICAgICBzZXRWYWx1ZSh2YWwpXG4gICAgICB9XG4gICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UodmFsKVxuICAgICAgfVxuICAgIH1cblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICB1cGRhdGVJbmRpY2F0b3JTdHlsZSgpXG4gICAgfSlcblxuICAgIGNvbnN0IGNsYXNzU2V0ID0gY2xhc3NOYW1lcyhcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGAke3ByZWZpeH0tYmFzZWAsXG4gICAgICBgJHtwcmVmaXh9LSR7Z2V0Q29tcHV0ZWRTaXplKHNpemUsIHNpemVDb250ZXh0KX1gLFxuICAgICAge1xuICAgICAgICBbYCR7cHJlZml4fS1iYW5uZXJgXTogYmFubmVyLFxuICAgICAgICBbYCR7cHJlZml4fS1iYXNlX2Rpc2FibGVkYF06IGRpc2FibGVkLFxuICAgICAgfVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8VGFic0NvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgdmFsdWU9e3sgZGlzYWJsZWQsIGd1dHRlciwgaGFuZGxlVGFic1ZhbHVlQ2hhbmdlLCB2YWx1ZSB9fVxuICAgICAgPlxuICAgICAgICA8UmVzaXplT2JzZXJ2ZXJcbiAgICAgICAgICBvblJlc2l6ZT17KCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpbml0aWFsKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZUluZGljYXRvclN0eWxlKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc1NldH1cbiAgICAgICAgICAgIGRhdGEtdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgcmVmPXt0YWJzUmVmfVxuICAgICAgICAgICAgey4uLm90aGVyUHJvcHN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiByZWY9e2luZGljYXRvclJlZn0gY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWluZGljYXRvcmB9IC8+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvUmVzaXplT2JzZXJ2ZXI+XG4gICAgICA8L1RhYnNDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfVxuKVxuXG5UYWJzLlRhYiA9IFRhYlxuXG5UYWJzLmRpc3BsYXlOYW1lID0gXCJUYWJzXCJcblxuVGFicy5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiDmmK/lkKbpgJrmoI/liIbphY3lrr3luqbvvIhmbGV4OiAxO++8iVxuICAgKi9cbiAgYmFubmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOWtkOiKgueCuVxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIOm7mOiupOeahOW3sumAieS4remhuVxuICAgKi9cbiAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSksXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIHRhYiDnmoTpl7Tot50gbWFyZ2luXG4gICAqL1xuICBndXR0ZXI6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiDlgLzlj5jljJbml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICog6K6+572u5bC65a+4XG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMub25lT2YoW1wibWluaVwiLCBcInNtYWxsXCIsIFwibWVkaXVtXCIsIFwibGFyZ2VcIl0pLFxuICAvKipcbiAgICog5bey6YCJ5Lit6aG5XG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxufVxuXG5UYWJzLmRlZmF1bHRQcm9wcyA9IHtcbiAgYmFubmVyOiBmYWxzZSxcbiAgY2xhc3NOYW1lOiB1bmRlZmluZWQsXG4gIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBndXR0ZXI6IHVuZGVmaW5lZCxcbiAgb25DaGFuZ2U6ICgpID0+IHt9LFxuICBzaXplOiBcInNtYWxsXCIsXG4gIHZhbHVlOiBudWxsLFxufVxuXG5leHBvcnQgZGVmYXVsdCBUYWJzXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPQSxLQUFQLElBQ0VDLFVBREYsRUFFRUMsVUFGRixFQUdFQyxTQUhGLEVBSUVDLG1CQUpGLEVBS0VDLE1BTEYsRUFNRUMsUUFORixRQU9PLE9BUFA7QUFRQSxPQUFPQyxTQUFQLE1BQXNCLFlBQXRCO0FBQ0EsT0FBT0MsVUFBUCxNQUF1QixZQUF2QjtBQUNBLFNBQVNDLGtCQUFULFFB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