react-film
Version:
React component for showing carousel just like a film strip
256 lines (246 loc) • 25.8 kB
JavaScript
import "core-js/modules/es.object.keys.js";
import "core-js/modules/es.symbol.js";
import "core-js/modules/es.array.filter.js";
import "core-js/modules/es.object.get-own-property-descriptor.js";
import "core-js/modules/es.array.for-each.js";
import "core-js/modules/web.dom-collections.for-each.js";
import "core-js/modules/es.object.get-own-property-descriptors.js";
import "core-js/modules/es.object.define-properties.js";
import "core-js/modules/es.object.define-property.js";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import "core-js/modules/es.array.join.js";
import "core-js/modules/es.array.map.js";
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) { _defineProperty(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; }
/* eslint no-magic-numbers: "off" */
import patchStyleOptions from './patchStyleOptions';
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': _defineProperty({}, autoHideFlipperOnEdge ? '&:not(.react-film__main__slider--hide)' : '&', {
left: 0
}),
'&.react-film__main__slider--right': _defineProperty({}, 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'
}
}
} : {})
};
};
export default function createBasicStyleSet(styleOptions) {
styleOptions = patchStyleOptions(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jcmVhdGVCYXNpY1N0eWxlU2V0LmpzIl0sIm5hbWVzIjpbInBhdGNoU3R5bGVPcHRpb25zIiwiY3JlYXRlRG90c1N0eWxlIiwiZG90Qm94U2l6ZSIsImFsaWduSXRlbXMiLCJib3R0b20iLCJkaXNwbGF5IiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJsaXN0U3R5bGVUeXBlIiwibWFyZ2luIiwicGFkZGluZyIsIndpZHRoIiwiY3JlYXRlRG90U3R5bGUiLCJjdXJzb3IiLCJkb3RTaXplIiwicG9zaXRpb24iLCJsZWZ0Iiwib3BhY2l0eSIsInRvcCIsInRvdWNoQWN0aW9uIiwidXNlclNlbGVjdCIsImJhY2tncm91bmQiLCJib3JkZXJSYWRpdXMiLCJjcmVhdGVGbGlwcGVyU3R5bGUiLCJmbGlwcGVyQm94V2lkdGgiLCJmbGlwcGVyU2l6ZSIsImJvcmRlciIsIm91dGxpbmUiLCJvdmVyZmxvdyIsInpJbmRleCIsInJpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwiY29sb3IiLCJmb250RmFtaWx5IiwibWFwIiwiZm9udCIsImpvaW4iLCJmb250U2l6ZSIsImxpbmVIZWlnaHQiLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJ0cmFuc2l0aW9uUHJvcGVydHkiLCJjcmVhdGVGaWxtc3RyaXBTdHlsZSIsIk1zT3ZlcmZsb3dTdHlsZSIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsIm92ZXJzY3JvbGxCZWhhdmlvclgiLCJjcmVhdGVTY3JvbGxCYXJTdHlsZSIsImF1dG9IaWRlIiwic2Nyb2xsQmFySGVpZ2h0Iiwic2Nyb2xsQmFyTWFyZ2luIiwiYm94U2l6aW5nIiwidHJhbnNpdGlvbkRlbGF5IiwiYmFja2Ryb3BGaWx0ZXIiLCJjcmVhdGVSb290U3R5bGUiLCJhdXRvSGlkZUZsaXBwZXJPbkVkZ2UiLCJjcmVhdGVCYXNpY1N0eWxlU2V0Iiwic3R5bGVPcHRpb25zIiwicm9vdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUVB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LCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tbWFnaWMtbnVtYmVyczogXCJvZmZcIiAqL1xuXG5pbXBvcnQgcGF0Y2hTdHlsZU9wdGlvbnMgZnJvbSAnLi9wYXRjaFN0eWxlT3B0aW9ucyc7XG5cbmNvbnN0IGNyZWF0ZURvdHNTdHlsZSA9ICh7IGRvdEJveFNpemUgfSkgPT4gKHtcbiAgJyYgLnJlYWN0LWZpbG1fX2RvdHMnOiB7XG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgYm90dG9tOiAwLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBoZWlnaHQ6IGRvdEJveFNpemUsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIGxpc3RTdHlsZVR5cGU6ICdub25lJyxcbiAgICBtYXJnaW46IDAsXG4gICAgcGFkZGluZzogMCxcbiAgICB3aWR0aDogJzEwMCUnXG4gIH1cbn0pO1xuXG5jb25zdCBjcmVhdGVEb3RTdHlsZSA9ICh7IGN1cnNvciwgZG90Qm94U2l6ZSwgZG90U2l6ZSB9KSA9PiAoe1xuICAnJiAucmVhY3QtZmlsbV9fZG90Jzoge1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBoZWlnaHQ6IGRvdEJveFNpemUsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHdpZHRoOiBkb3RCb3hTaXplLFxuXG4gICAgJyYgLnJlYWN0LWZpbG1fX2RvdF9faW5wdXQnOiB7XG4gICAgICAuLi4oY3Vyc29yID8geyBjdXJzb3IgfSA6IHt9KSxcblxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgbWFyZ2luOiAwLFxuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdG9wOiAwLFxuICAgICAgdG91Y2hBY3Rpb246ICdub25lJyxcbiAgICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICAgIHdpZHRoOiAnMTAwJSdcbiAgICB9LFxuXG4gICAgJyYgLnJlYWN0LWZpbG1fX2RvdF9faGFuZGxlJzoge1xuICAgICAgYmFja2dyb3VuZDogJ3JnYmEoMCwgMCwgMCwgLjIpJyxcbiAgICAgIGJvcmRlclJhZGl1czogZG90U2l6ZSAvIDIsXG4gICAgICBoZWlnaHQ6IGRvdFNpemUsXG4gICAgICB3aWR0aDogZG90U2l6ZVxuICAgIH0sXG5cbiAgICAnJjpob3ZlciAucmVhY3QtZmlsbV9fZG90X19oYW5kbGUsICYgLnJlYWN0LWZpbG1fX2RvdF9faW5wdXQ6Zm9jdXMgKyAucmVhY3QtZmlsbV9fZG90X19oYW5kbGUnOiB7XG4gICAgICBiYWNrZ3JvdW5kOiAncmdiYSgwLCAwLCAwLCAuNCknXG4gICAgfSxcblxuICAgICcmIC5yZWFjdC1maWxtX19kb3RfX2lucHV0OmFjdGl2ZSArIC5yZWFjdC1maWxtX19kb3RfX2hhbmRsZSc6IHtcbiAgICAgIGJhY2tncm91bmQ6ICdyZ2JhKDAsIDAsIDAsIC44KSdcbiAgICB9LFxuXG4gICAgJyYgLnJlYWN0LWZpbG1fX2RvdF9faW5wdXQ6Y2hlY2tlZDpub3QoOmFjdGl2ZSkgKyAucmVhY3QtZmlsbV9fZG90X19oYW5kbGUnOiB7XG4gICAgICBiYWNrZ3JvdW5kOiAncmdiYSgwLCAwLCAwLCAuNiknXG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgY3JlYXRlRmxpcHBlclN0eWxlID0gKHsgY3Vyc29yLCBmbGlwcGVyQm94V2lkdGgsIGZsaXBwZXJTaXplIH0pID0+ICh7XG4gICcmIC5yZWFjdC1maWxtX19mbGlwcGVyJzoge1xuICAgIC4uLihjdXJzb3IgPyB7IGN1cnNvciB9IDoge30pLFxuXG4gICAgYmFja2dyb3VuZDogJ1RyYW5zcGFyZW50JyxcbiAgICBib3JkZXI6IDAsXG4gICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgb3V0bGluZTogMCxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdG9wOiAwLFxuICAgIHRvdWNoQWN0aW9uOiAnbm9uZScsXG4gICAgdXNlclNlbGVjdDogJ25vbmUnLFxuICAgIHdpZHRoOiBmbGlwcGVyQm94V2lkdGgsXG4gICAgekluZGV4OiAxLFxuXG4gICAgJyYucmVhY3QtZmlsbV9fZmxpcHBlci0tbGVmdCc6IHtcbiAgICAgIGxlZnQ6IDAsXG5cbiAgICAgICcmIC5yZWFjdC1maWxtX19mbGlwcGVyX19zbGlkZXInOiB7XG4gICAgICAgIGxlZnQ6IDBcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJyYucmVhY3QtZmlsbV9fZmxpcHBlci0tcmlnaHQnOiB7XG4gICAgICByaWdodDogMCxcblxuICAgICAgJyYgLnJlYWN0LWZpbG1fX2ZsaXBwZXJfX3NsaWRlcic6IHtcbiAgICAgICAgcmlnaHQ6IDBcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJyYgLnJlYWN0LWZpbG1fX2ZsaXBwZXJfX3NsaWRlcic6IHtcbiAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHRvcDogMCxcbiAgICAgIHdpZHRoOiAnMTAwJSdcbiAgICB9LFxuXG4gICAgJyYgLnJlYWN0LWZpbG1fX2ZsaXBwZXJfX2JvZHknOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIC42KScsXG4gICAgICBib3JkZXJSYWRpdXM6ICc1MCUnLFxuICAgICAgY29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIC42KScsXG4gICAgICBmb250RmFtaWx5OiBbJ0NvbnNvbGFzJywgJ21vbm9zcGFjZSddLm1hcChmb250ID0+IGAnJHtmb250fSdgKS5qb2luKCcsICcpLFxuICAgICAgZm9udFNpemU6IDE2LFxuICAgICAgaGVpZ2h0OiBmbGlwcGVyU2l6ZSxcbiAgICAgIGxpbmVIZWlnaHQ6IGAke2ZsaXBwZXJTaXplfXB4YCxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiAnMTAwbXMnLFxuICAgICAgdHJhbnNpdGlvblByb3BlcnR5OiAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICB3aWR0aDogZmxpcHBlclNpemVcbiAgICB9LFxuXG4gICAgJyY6aG92ZXIsICY6Zm9jdXMnOiB7XG4gICAgICAnJiAucmVhY3QtZmlsbV9fZmxpcHBlcl9fYm9keSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAuOCknLFxuICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgLjgpJyxcbiAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiAwXG4gICAgICB9XG4gICAgfSxcblxuICAgICcmOmFjdGl2ZSAucmVhY3QtZmlsbV9fZmxpcHBlcl9fYm9keSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ0JsYWNrJyxcbiAgICAgIGNvbG9yOiAnV2hpdGUnLFxuICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiAwXG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgY3JlYXRlRmlsbXN0cmlwU3R5bGUgPSAoKSA9PiAoe1xuICAnJiAucmVhY3QtZmlsbV9fZmlsbXN0cmlwJzoge1xuICAgIE1zT3ZlcmZsb3dTdHlsZTogJ25vbmUnLFxuICAgIG92ZXJmbG93WDogJ3Njcm9sbCcsXG4gICAgb3ZlcmZsb3dZOiAnaGlkZGVuJyxcbiAgICBvdmVyc2Nyb2xsQmVoYXZpb3JYOiAnY29udGFpbicsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgdG91Y2hBY3Rpb246ICdtYW5pcHVsYXRpb24nLFxuICAgIHpJbmRleDogMCxcblxuICAgICcmOjotd2Via2l0LXNjcm9sbGJhcic6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJ1xuICAgIH0sXG5cbiAgICAnJiAucmVhY3QtZmlsbV9fZmlsbXN0cmlwX19saXN0Jzoge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgICAgbWFyZ2luOiAwLFxuICAgICAgcGFkZGluZzogMFxuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IGNyZWF0ZVNjcm9sbEJhclN0eWxlID0gKHsgYXV0b0hpZGUsIHNjcm9sbEJhckhlaWdodCwgc2Nyb2xsQmFyTWFyZ2luIH0pID0+ICh7XG4gICcmIC5yZWFjdC1maWxtX19zY3JvbGwtYmFyJzoge1xuICAgIGJvdHRvbTogYXV0b0hpZGUgPyAtMzAgOiAwLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIHBhZGRpbmc6IHNjcm9sbEJhck1hcmdpbixcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0cmFuc2l0aW9uRGVsYXk6ICcxcycsXG4gICAgdHJhbnNpdGlvbkR1cmF0aW9uOiAnMzAwbXMnLFxuICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogJ2JvdHRvbScsXG4gICAgd2lkdGg6ICcxMDAlJyxcblxuICAgICcmIC5yZWFjdC1maWxtX19zY3JvbGwtYmFyX19oYW5kbGUnOiB7XG4gICAgICBiYWNrZHJvcEZpbHRlcjogJ2JsdXIoNHB4KScsXG4gICAgICBiYWNrZ3JvdW5kOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAuNCknLFxuICAgICAgYm9yZGVyUmFkaXVzOiBzY3JvbGxCYXJIZWlnaHQgLyAyLFxuICAgICAgaGVpZ2h0OiBzY3JvbGxCYXJIZWlnaHRcbiAgICB9XG4gIH1cbn0pO1xuXG5jb25zdCBjcmVhdGVSb290U3R5bGUgPSAoeyBhdXRvSGlkZSwgYXV0b0hpZGVGbGlwcGVyT25FZGdlLCBmbGlwcGVyQm94V2lkdGgsIGZsaXBwZXJTaXplIH0pID0+ICh7XG4gICcmIC5yZWFjdC1maWxtX19tYWluJzoge1xuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcblxuICAgIC4uLihhdXRvSGlkZVxuICAgICAgPyB7XG4gICAgICAgICAgJyY6aG92ZXIsICYucmVhY3QtZmlsbV9fbWFpbi0tc2Nyb2xsaW5nJzoge1xuICAgICAgICAgICAgJyYgLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlcic6IHtcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbkRlbGF5OiAnMHMnLFxuXG4gICAgICAgICAgICAgICcmLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlci0tYm90dG9tJzoge1xuICAgICAgICAgICAgICAgIGJvdHRvbTogMFxuICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICcmLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlci0tbGVmdCc6IHtcbiAgICAgICAgICAgICAgICBbYXV0b0hpZGVGbGlwcGVyT25FZGdlID8gJyY6bm90KC5yZWFjdC1maWxtX19tYWluX19zbGlkZXItLWhpZGUpJyA6ICcmJ106IHtcbiAgICAgICAgICAgICAgICAgIGxlZnQ6IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgJyYucmVhY3QtZmlsbV9fbWFpbl9fc2xpZGVyLS1yaWdodCc6IHtcbiAgICAgICAgICAgICAgICBbYXV0b0hpZGVGbGlwcGVyT25FZGdlID8gJyY6bm90KC5yZWFjdC1maWxtX19tYWluX19zbGlkZXItLWhpZGUpJyA6ICcmJ106IHtcbiAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcblxuICAgICAgICAgICcmIC5yZWFjdC1maWxtX19tYWluX19vdmVybGF5OmZvY3VzIC5yZWFjdC1maWxtX19tYWluX19zbGlkZXI6bm90KC5yZWFjdC1maWxtX19tYWluX19zbGlkZXItLWhpZGUpJzoge1xuICAgICAgICAgICAgdHJhbnNpdGlvbkRlbGF5OiAnMHMnLFxuXG4gICAgICAgICAgICAnJi5yZWFjdC1maWxtX19tYWluX19zbGlkZXItLWxlZnQnOiB7XG4gICAgICAgICAgICAgIGxlZnQ6IDBcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICcmLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlci0tcmlnaHQnOiB7XG4gICAgICAgICAgICAgIHJpZ2h0OiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcblxuICAgICAgICAgICcmIC5yZWFjdC1maWxtX19tYWluX19zbGlkZXInOiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uRGVsYXk6ICcxcycsXG4gICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb246ICczMDBtcycsXG5cbiAgICAgICAgICAgICcmLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlci0tbGVmdCc6IHtcbiAgICAgICAgICAgICAgbGVmdDogKGZsaXBwZXJCb3hXaWR0aCArIGZsaXBwZXJTaXplKSAvIC0yLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHk6ICdsZWZ0J1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgJyYucmVhY3QtZmlsbV9fbWFpbl9fc2xpZGVyLS1yaWdodCc6IHtcbiAgICAgICAgICAgICAgcmlnaHQ6IChmbGlwcGVyQm94V2lkdGggKyBmbGlwcGVyU2l6ZSkgLyAtMixcbiAgICAgICAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5OiAncmlnaHQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA6IHt9KVxuICB9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQmFzaWNTdHlsZVNldChzdHlsZU9wdGlvbnMpIHtcbiAgc3R5bGVPcHRpb25zID0gcGF0Y2hTdHlsZU9wdGlvbnMoc3R5bGVPcHRpb25zKTtcblxuICByZXR1cm4ge1xuICAgIHJvb3Q6IHtcbiAgICAgIC4uLmNyZWF0ZURvdHNTdHlsZShzdHlsZU9wdGlvbnMpLFxuICAgICAgLi4uY3JlYXRlRG90U3R5bGUoc3R5bGVPcHRpb25zKSxcbiAgICAgIC4uLmNyZWF0ZUZpbG1zdHJpcFN0eWxlKHN0eWxlT3B0aW9ucyksXG4gICAgICAuLi5jcmVhdGVGbGlwcGVyU3R5bGUoc3R5bGVPcHRpb25zKSxcbiAgICAgIC4uLmNyZWF0ZVJvb3RTdHlsZShzdHlsZU9wdGlvbnMpLFxuICAgICAgLi4uY3JlYXRlU2Nyb2xsQmFyU3R5bGUoc3R5bGVPcHRpb25zKVxuICAgIH1cbiAgfTtcbn1cbiJdfQ==