react-film
Version:
React component for showing carousel just like a film strip
275 lines (251 loc) • 26 kB
JavaScript
"use strict";
require("core-js/modules/es.object.keys.js");
require("core-js/modules/es.symbol.js");
require("core-js/modules/es.array.filter.js");
require("core-js/modules/es.object.get-own-property-descriptor.js");
require("core-js/modules/es.array.for-each.js");
require("core-js/modules/web.dom-collections.for-each.js");
require("core-js/modules/es.object.get-own-property-descriptors.js");
require("core-js/modules/es.object.define-properties.js");
require("core-js/modules/es.object.define-property.js");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = createBasicStyleSet;
require("core-js/modules/es.array.join.js");
require("core-js/modules/es.array.map.js");
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _patchStyleOptions = _interopRequireDefault(require("./patchStyleOptions"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
var createDotsStyle = function createDotsStyle(_ref) {
var dotBoxSize = _ref.dotBoxSize;
return {
'& .react-film__dots': {
alignItems: 'center',
bottom: 0,
display: 'flex',
height: dotBoxSize,
justifyContent: 'center',
listStyleType: 'none',
margin: 0,
padding: 0,
width: '100%'
}
};
};
var createDotStyle = function createDotStyle(_ref2) {
var cursor = _ref2.cursor,
dotBoxSize = _ref2.dotBoxSize,
dotSize = _ref2.dotSize;
return {
'& .react-film__dot': {
alignItems: 'center',
display: 'flex',
height: dotBoxSize,
justifyContent: 'center',
position: 'relative',
width: dotBoxSize,
'& .react-film__dot__input': _objectSpread(_objectSpread({}, cursor ? {
cursor: cursor
} : {}), {}, {
height: '100%',
left: 0,
margin: 0,
opacity: 0,
position: 'absolute',
top: 0,
touchAction: 'none',
userSelect: 'none',
width: '100%'
}),
'& .react-film__dot__handle': {
background: 'rgba(0, 0, 0, .2)',
borderRadius: dotSize / 2,
height: dotSize,
width: dotSize
},
'&:hover .react-film__dot__handle, & .react-film__dot__input:focus + .react-film__dot__handle': {
background: 'rgba(0, 0, 0, .4)'
},
'& .react-film__dot__input:active + .react-film__dot__handle': {
background: 'rgba(0, 0, 0, .8)'
},
'& .react-film__dot__input:checked:not(:active) + .react-film__dot__handle': {
background: 'rgba(0, 0, 0, .6)'
}
}
};
};
var createFlipperStyle = function createFlipperStyle(_ref3) {
var cursor = _ref3.cursor,
flipperBoxWidth = _ref3.flipperBoxWidth,
flipperSize = _ref3.flipperSize;
return {
'& .react-film__flipper': _objectSpread(_objectSpread({}, cursor ? {
cursor: cursor
} : {}), {}, {
background: 'Transparent',
border: 0,
height: '100%',
outline: 0,
overflow: 'hidden',
position: 'absolute',
top: 0,
touchAction: 'none',
userSelect: 'none',
width: flipperBoxWidth,
zIndex: 1,
'&.react-film__flipper--left': {
left: 0,
'& .react-film__flipper__slider': {
left: 0
}
},
'&.react-film__flipper--right': {
right: 0,
'& .react-film__flipper__slider': {
right: 0
}
},
'& .react-film__flipper__slider': {
alignItems: 'center',
display: 'flex',
height: '100%',
justifyContent: 'center',
position: 'absolute',
top: 0,
width: '100%'
},
'& .react-film__flipper__body': {
backgroundColor: 'rgba(0, 0, 0, .6)',
borderRadius: '50%',
color: 'rgba(255, 255, 255, .6)',
fontFamily: ['Consolas', 'monospace'].map(function (font) {
return "'".concat(font, "'");
}).join(', '),
fontSize: 16,
height: flipperSize,
lineHeight: "".concat(flipperSize, "px"),
overflow: 'hidden',
position: 'relative',
transitionDuration: '100ms',
transitionProperty: 'background-color',
width: flipperSize
},
'&:hover, &:focus': {
'& .react-film__flipper__body': {
backgroundColor: 'rgba(0, 0, 0, .8)',
color: 'rgba(255, 255, 255, .8)',
transitionDuration: 0
}
},
'&:active .react-film__flipper__body': {
backgroundColor: 'Black',
color: 'White',
transitionDuration: 0
}
})
};
};
var createFilmstripStyle = function createFilmstripStyle() {
return {
'& .react-film__filmstrip': {
MsOverflowStyle: 'none',
overflowX: 'scroll',
overflowY: 'hidden',
overscrollBehaviorX: 'contain',
position: 'relative',
touchAction: 'manipulation',
zIndex: 0,
'&::-webkit-scrollbar': {
display: 'none'
},
'& .react-film__filmstrip__list': {
display: 'flex',
listStyleType: 'none',
margin: 0,
padding: 0
}
}
};
};
var createScrollBarStyle = function createScrollBarStyle(_ref4) {
var autoHide = _ref4.autoHide,
scrollBarHeight = _ref4.scrollBarHeight,
scrollBarMargin = _ref4.scrollBarMargin;
return {
'& .react-film__scroll-bar': {
bottom: autoHide ? -30 : 0,
boxSizing: 'border-box',
padding: scrollBarMargin,
position: 'absolute',
transitionDelay: '1s',
transitionDuration: '300ms',
transitionProperty: 'bottom',
width: '100%',
'& .react-film__scroll-bar__handle': {
backdropFilter: 'blur(4px)',
background: 'rgba(255, 255, 255, .4)',
borderRadius: scrollBarHeight / 2,
height: scrollBarHeight
}
}
};
};
var createRootStyle = function createRootStyle(_ref5) {
var autoHide = _ref5.autoHide,
autoHideFlipperOnEdge = _ref5.autoHideFlipperOnEdge,
flipperBoxWidth = _ref5.flipperBoxWidth,
flipperSize = _ref5.flipperSize;
return {
'& .react-film__main': _objectSpread({
overflow: 'hidden',
position: 'relative'
}, autoHide ? {
'&:hover, &.react-film__main--scrolling': {
'& .react-film__main__slider': {
transitionDelay: '0s',
'&.react-film__main__slider--bottom': {
bottom: 0
},
'&.react-film__main__slider--left': (0, _defineProperty2["default"])({}, autoHideFlipperOnEdge ? '&:not(.react-film__main__slider--hide)' : '&', {
left: 0
}),
'&.react-film__main__slider--right': (0, _defineProperty2["default"])({}, autoHideFlipperOnEdge ? '&:not(.react-film__main__slider--hide)' : '&', {
right: 0
})
}
},
'& .react-film__main__overlay:focus .react-film__main__slider:not(.react-film__main__slider--hide)': {
transitionDelay: '0s',
'&.react-film__main__slider--left': {
left: 0
},
'&.react-film__main__slider--right': {
right: 0
}
},
'& .react-film__main__slider': {
transitionDelay: '1s',
transitionDuration: '300ms',
'&.react-film__main__slider--left': {
left: (flipperBoxWidth + flipperSize) / -2,
transitionProperty: 'left'
},
'&.react-film__main__slider--right': {
right: (flipperBoxWidth + flipperSize) / -2,
transitionProperty: 'right'
}
}
} : {})
};
};
function createBasicStyleSet(styleOptions) {
styleOptions = (0, _patchStyleOptions["default"])(styleOptions);
return {
root: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, createDotsStyle(styleOptions)), createDotStyle(styleOptions)), createFilmstripStyle(styleOptions)), createFlipperStyle(styleOptions)), createRootStyle(styleOptions)), createScrollBarStyle(styleOptions))
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVCYXNpY1N0eWxlU2V0LmpzIl0sIm5hbWVzIjpbImNyZWF0ZURvdHNTdHlsZSIsImRvdEJveFNpemUiLCJhbGlnbkl0ZW1zIiwiYm90dG9tIiwiZGlzcGxheSIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwibGlzdFN0eWxlVHlwZSIsIm1hcmdpbiIsInBhZGRpbmciLCJ3aWR0aCIsImNyZWF0ZURvdFN0eWxlIiwiY3Vyc29yIiwiZG90U2l6ZSIsInBvc2l0aW9uIiwibGVmdCIsIm9wYWNpdHkiLCJ0b3AiLCJ0b3VjaEFjdGlvbiIsInVzZXJTZWxlY3QiLCJiYWNrZ3JvdW5kIiwiYm9yZGVyUmFkaXVzIiwiY3JlYXRlRmxpcHBlclN0eWxlIiwiZmxpcHBlckJveFdpZHRoIiwiZmxpcHBlclNpemUiLCJib3JkZXIiLCJvdXRsaW5lIiwib3ZlcmZsb3ciLCJ6SW5kZXgiLCJyaWdodCIsImJhY2tncm91bmRDb2xvciIsImNvbG9yIiwiZm9udEZhbWlseSIsIm1hcCIsImZvbnQiLCJqb2luIiwiZm9udFNpemUiLCJsaW5lSGVpZ2h0IiwidHJhbnNpdGlvbkR1cmF0aW9uIiwidHJhbnNpdGlvblByb3BlcnR5IiwiY3JlYXRlRmlsbXN0cmlwU3R5bGUiLCJNc092ZXJmbG93U3R5bGUiLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJvdmVyc2Nyb2xsQmVoYXZpb3JYIiwiY3JlYXRlU2Nyb2xsQmFyU3R5bGUiLCJhdXRvSGlkZSIsInNjcm9sbEJhckhlaWdodCIsInNjcm9sbEJhck1hcmdpbiIsImJveFNpemluZyIsInRyYW5zaXRpb25EZWxheSIsImJhY2tkcm9wRmlsdGVyIiwiY3JlYXRlUm9vdFN0eWxlIiwiYXV0b0hpZGVGbGlwcGVyT25FZGdlIiwiY3JlYXRlQmFzaWNTdHlsZVNldCIsInN0eWxlT3B0aW9ucyIsInJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7QUFFQSxJ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OiBcIm9mZlwiICovXG5cbmltcG9ydCBwYXRjaFN0eWxlT3B0aW9ucyBmcm9tICcuL3BhdGNoU3R5bGVPcHRpb25zJztcblxuY29uc3QgY3JlYXRlRG90c1N0eWxlID0gKHsgZG90Qm94U2l6ZSB9KSA9PiAoe1xuICAnJiAucmVhY3QtZmlsbV9fZG90cyc6IHtcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBib3R0b206IDAsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGhlaWdodDogZG90Qm94U2l6ZSxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIG1hcmdpbjogMCxcbiAgICBwYWRkaW5nOiAwLFxuICAgIHdpZHRoOiAnMTAwJSdcbiAgfVxufSk7XG5cbmNvbnN0IGNyZWF0ZURvdFN0eWxlID0gKHsgY3Vyc29yLCBkb3RCb3hTaXplLCBkb3RTaXplIH0pID0+ICh7XG4gICcmIC5yZWFjdC1maWxtX19kb3QnOiB7XG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGhlaWdodDogZG90Qm94U2l6ZSxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgd2lkdGg6IGRvdEJveFNpemUsXG5cbiAgICAnJiAucmVhY3QtZmlsbV9fZG90X19pbnB1dCc6IHtcbiAgICAgIC4uLihjdXJzb3IgPyB7IGN1cnNvciB9IDoge30pLFxuXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICBtYXJnaW46IDAsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB0b3A6IDAsXG4gICAgICB0b3VjaEFjdGlvbjogJ25vbmUnLFxuICAgICAgdXNlclNlbGVjdDogJ25vbmUnLFxuICAgICAgd2lkdGg6ICcxMDAlJ1xuICAgIH0sXG5cbiAgICAnJiAucmVhY3QtZmlsbV9fZG90X19oYW5kbGUnOiB7XG4gICAgICBiYWNrZ3JvdW5kOiAncmdiYSgwLCAwLCAwLCAuMiknLFxuICAgICAgYm9yZGVyUmFkaXVzOiBkb3RTaXplIC8gMixcbiAgICAgIGhlaWdodDogZG90U2l6ZSxcbiAgICAgIHdpZHRoOiBkb3RTaXplXG4gICAgfSxcblxuICAgICcmOmhvdmVyIC5yZWFjdC1maWxtX19kb3RfX2hhbmRsZSwgJiAucmVhY3QtZmlsbV9fZG90X19pbnB1dDpmb2N1cyArIC5yZWFjdC1maWxtX19kb3RfX2hhbmRsZSc6IHtcbiAgICAgIGJhY2tncm91bmQ6ICdyZ2JhKDAsIDAsIDAsIC40KSdcbiAgICB9LFxuXG4gICAgJyYgLnJlYWN0LWZpbG1fX2RvdF9faW5wdXQ6YWN0aXZlICsgLnJlYWN0LWZpbG1fX2RvdF9faGFuZGxlJzoge1xuICAgICAgYmFja2dyb3VuZDogJ3JnYmEoMCwgMCwgMCwgLjgpJ1xuICAgIH0sXG5cbiAgICAnJiAucmVhY3QtZmlsbV9fZG90X19pbnB1dDpjaGVja2VkOm5vdCg6YWN0aXZlKSArIC5yZWFjdC1maWxtX19kb3RfX2hhbmRsZSc6IHtcbiAgICAgIGJhY2tncm91bmQ6ICdyZ2JhKDAsIDAsIDAsIC42KSdcbiAgICB9XG4gIH1cbn0pO1xuXG5jb25zdCBjcmVhdGVGbGlwcGVyU3R5bGUgPSAoeyBjdXJzb3IsIGZsaXBwZXJCb3hXaWR0aCwgZmxpcHBlclNpemUgfSkgPT4gKHtcbiAgJyYgLnJlYWN0LWZpbG1fX2ZsaXBwZXInOiB7XG4gICAgLi4uKGN1cnNvciA/IHsgY3Vyc29yIH0gOiB7fSksXG5cbiAgICBiYWNrZ3JvdW5kOiAnVHJhbnNwYXJlbnQnLFxuICAgIGJvcmRlcjogMCxcbiAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICBvdXRsaW5lOiAwLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6IDAsXG4gICAgdG91Y2hBY3Rpb246ICdub25lJyxcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgd2lkdGg6IGZsaXBwZXJCb3hXaWR0aCxcbiAgICB6SW5kZXg6IDEsXG5cbiAgICAnJi5yZWFjdC1maWxtX19mbGlwcGVyLS1sZWZ0Jzoge1xuICAgICAgbGVmdDogMCxcblxuICAgICAgJyYgLnJlYWN0LWZpbG1fX2ZsaXBwZXJfX3NsaWRlcic6IHtcbiAgICAgICAgbGVmdDogMFxuICAgICAgfVxuICAgIH0sXG5cbiAgICAnJi5yZWFjdC1maWxtX19mbGlwcGVyLS1yaWdodCc6IHtcbiAgICAgIHJpZ2h0OiAwLFxuXG4gICAgICAnJiAucmVhY3QtZmlsbV9fZmxpcHBlcl9fc2xpZGVyJzoge1xuICAgICAgICByaWdodDogMFxuICAgICAgfVxuICAgIH0sXG5cbiAgICAnJiAucmVhY3QtZmlsbV9fZmxpcHBlcl9fc2xpZGVyJzoge1xuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdG9wOiAwLFxuICAgICAgd2lkdGg6ICcxMDAlJ1xuICAgIH0sXG5cbiAgICAnJiAucmVhY3QtZmlsbV9fZmxpcHBlcl9fYm9keSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwgMCwgMCwgLjYpJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzUwJScsXG4gICAgICBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgLjYpJyxcbiAgICAgIGZvbnRGYW1pbHk6IFsnQ29uc29sYXMnLCAnbW9ub3NwYWNlJ10ubWFwKGZvbnQgPT4gYCcke2ZvbnR9J2ApLmpvaW4oJywgJyksXG4gICAgICBmb250U2l6ZTogMTYsXG4gICAgICBoZWlnaHQ6IGZsaXBwZXJTaXplLFxuICAgICAgbGluZUhlaWdodDogYCR7ZmxpcHBlclNpemV9cHhgLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICB0cmFuc2l0aW9uRHVyYXRpb246ICcxMDBtcycsXG4gICAgICB0cmFuc2l0aW9uUHJvcGVydHk6ICdiYWNrZ3JvdW5kLWNvbG9yJyxcbiAgICAgIHdpZHRoOiBmbGlwcGVyU2l6ZVxuICAgIH0sXG5cbiAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICcmIC5yZWFjdC1maWxtX19mbGlwcGVyX19ib2R5Jzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIC44KScsXG4gICAgICAgIGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAuOCknLFxuICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb246IDBcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJyY6YWN0aXZlIC5yZWFjdC1maWxtX19mbGlwcGVyX19ib2R5Jzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAnQmxhY2snLFxuICAgICAgY29sb3I6ICdXaGl0ZScsXG4gICAgICB0cmFuc2l0aW9uRHVyYXRpb246IDBcbiAgICB9XG4gIH1cbn0pO1xuXG5jb25zdCBjcmVhdGVGaWxtc3RyaXBTdHlsZSA9ICgpID0+ICh7XG4gICcmIC5yZWFjdC1maWxtX19maWxtc3RyaXAnOiB7XG4gICAgTXNPdmVyZmxvd1N0eWxlOiAnbm9uZScsXG4gICAgb3ZlcmZsb3dYOiAnc2Nyb2xsJyxcbiAgICBvdmVyZmxvd1k6ICdoaWRkZW4nLFxuICAgIG92ZXJzY3JvbGxCZWhhdmlvclg6ICdjb250YWluJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0b3VjaEFjdGlvbjogJ21hbmlwdWxhdGlvbicsXG4gICAgekluZGV4OiAwLFxuXG4gICAgJyY6Oi13ZWJraXQtc2Nyb2xsYmFyJzoge1xuICAgICAgZGlzcGxheTogJ25vbmUnXG4gICAgfSxcblxuICAgICcmIC5yZWFjdC1maWxtX19maWxtc3RyaXBfX2xpc3QnOiB7XG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgICBtYXJnaW46IDAsXG4gICAgICBwYWRkaW5nOiAwXG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgY3JlYXRlU2Nyb2xsQmFyU3R5bGUgPSAoeyBhdXRvSGlkZSwgc2Nyb2xsQmFySGVpZ2h0LCBzY3JvbGxCYXJNYXJnaW4gfSkgPT4gKHtcbiAgJyYgLnJlYWN0LWZpbG1fX3Njcm9sbC1iYXInOiB7XG4gICAgYm90dG9tOiBhdXRvSGlkZSA/IC0zMCA6IDAsXG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgcGFkZGluZzogc2Nyb2xsQmFyTWFyZ2luLFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRyYW5zaXRpb25EZWxheTogJzFzJyxcbiAgICB0cmFuc2l0aW9uRHVyYXRpb246ICczMDBtcycsXG4gICAgdHJhbnNpdGlvblByb3BlcnR5OiAnYm90dG9tJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuXG4gICAgJyYgLnJlYWN0LWZpbG1fX3Njcm9sbC1iYXJfX2hhbmRsZSc6IHtcbiAgICAgIGJhY2tkcm9wRmlsdGVyOiAnYmx1cig0cHgpJyxcbiAgICAgIGJhY2tncm91bmQ6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIC40KScsXG4gICAgICBib3JkZXJSYWRpdXM6IHNjcm9sbEJhckhlaWdodCAvIDIsXG4gICAgICBoZWlnaHQ6IHNjcm9sbEJhckhlaWdodFxuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IGNyZWF0ZVJvb3RTdHlsZSA9ICh7IGF1dG9IaWRlLCBhdXRvSGlkZUZsaXBwZXJPbkVkZ2UsIGZsaXBwZXJCb3hXaWR0aCwgZmxpcHBlclNpemUgfSkgPT4gKHtcbiAgJyYgLnJlYWN0LWZpbG1fX21haW4nOiB7XG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuXG4gICAgLi4uKGF1dG9IaWRlXG4gICAgICA/IHtcbiAgICAgICAgICAnJjpob3ZlciwgJi5yZWFjdC1maWxtX19tYWluLS1zY3JvbGxpbmcnOiB7XG4gICAgICAgICAgICAnJiAucmVhY3QtZmlsbV9fbWFpbl9fc2xpZGVyJzoge1xuICAgICAgICAgICAgICB0cmFuc2l0aW9uRGVsYXk6ICcwcycsXG5cbiAgICAgICAgICAgICAgJyYucmVhY3QtZmlsbV9fbWFpbl9fc2xpZGVyLS1ib3R0b20nOiB7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAwXG4gICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgJyYucmVhY3QtZmlsbV9fbWFpbl9fc2xpZGVyLS1sZWZ0Jzoge1xuICAgICAgICAgICAgICAgIFthdXRvSGlkZUZsaXBwZXJPbkVkZ2UgPyAnJjpub3QoLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlci0taGlkZSknIDogJyYnXToge1xuICAgICAgICAgICAgICAgICAgbGVmdDogMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAnJi5yZWFjdC1maWxtX19tYWluX19zbGlkZXItLXJpZ2h0Jzoge1xuICAgICAgICAgICAgICAgIFthdXRvSGlkZUZsaXBwZXJPbkVkZ2UgPyAnJjpub3QoLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlci0taGlkZSknIDogJyYnXToge1xuICAgICAgICAgICAgICAgICAgcmlnaHQ6IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgJyYgLnJlYWN0LWZpbG1fX21haW5fX292ZXJsYXk6Zm9jdXMgLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlcjpub3QoLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlci0taGlkZSknOiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uRGVsYXk6ICcwcycsXG5cbiAgICAgICAgICAgICcmLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlci0tbGVmdCc6IHtcbiAgICAgICAgICAgICAgbGVmdDogMFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgJyYucmVhY3QtZmlsbV9fbWFpbl9fc2xpZGVyLS1yaWdodCc6IHtcbiAgICAgICAgICAgICAgcmlnaHQ6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgJyYgLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlcic6IHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25EZWxheTogJzFzJyxcbiAgICAgICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogJzMwMG1zJyxcblxuICAgICAgICAgICAgJyYucmVhY3QtZmlsbV9fbWFpbl9fc2xpZGVyLS1sZWZ0Jzoge1xuICAgICAgICAgICAgICBsZWZ0OiAoZmxpcHBlckJveFdpZHRoICsgZmxpcHBlclNpemUpIC8gLTIsXG4gICAgICAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogJ2xlZnQnXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAnJi5yZWFjdC1maWxtX19tYWluX19zbGlkZXItLXJpZ2h0Jzoge1xuICAgICAgICAgICAgICByaWdodDogKGZsaXBwZXJCb3hXaWR0aCArIGZsaXBwZXJTaXplKSAvIC0yLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHk6ICdyaWdodCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDoge30pXG4gIH1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVCYXNpY1N0eWxlU2V0KHN0eWxlT3B0aW9ucykge1xuICBzdHlsZU9wdGlvbnMgPSBwYXRjaFN0eWxlT3B0aW9ucyhzdHlsZU9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgcm9vdDoge1xuICAgICAgLi4uY3JlYXRlRG90c1N0eWxlKHN0eWxlT3B0aW9ucyksXG4gICAgICAuLi5jcmVhdGVEb3RTdHlsZShzdHlsZU9wdGlvbnMpLFxuICAgICAgLi4uY3JlYXRlRmlsbXN0cmlwU3R5bGUoc3R5bGVPcHRpb25zKSxcbiAgICAgIC4uLmNyZWF0ZUZsaXBwZXJTdHlsZShzdHlsZU9wdGlvbnMpLFxuICAgICAgLi4uY3JlYXRlUm9vdFN0eWxlKHN0eWxlT3B0aW9ucyksXG4gICAgICAuLi5jcmVhdGVTY3JvbGxCYXJTdHlsZShzdHlsZU9wdGlvbnMpXG4gICAgfVxuICB9O1xufVxuIl19