You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2769 lines
93 KiB
2769 lines
93 KiB
(self["webpackChunk"] = self["webpackChunk"] || []).push([[52552],{
|
|
|
|
/***/ 57132:
|
|
/*!*****************************************************************************!*\
|
|
!*** ./node_modules/@ant-design/icons/es/icons/CopyOutlined.js + 1 modules ***!
|
|
\*****************************************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
// EXPORTS
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
"Z": function() { return /* binding */ icons_CopyOutlined; }
|
|
});
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
|
|
var esm_extends = __webpack_require__(87462);
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
var react = __webpack_require__(67294);
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons-svg/es/asn/CopyOutlined.js
|
|
// This icon file is generated automatically.
|
|
var CopyOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z" } }] }, "name": "copy", "theme": "outlined" };
|
|
/* harmony default export */ var asn_CopyOutlined = (CopyOutlined);
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/components/AntdIcon.js + 8 modules
|
|
var AntdIcon = __webpack_require__(74643);
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/icons/CopyOutlined.js
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
var CopyOutlined_CopyOutlined = function CopyOutlined(props, ref) {
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,esm_extends/* default */.Z)({}, props, {
|
|
ref: ref,
|
|
icon: asn_CopyOutlined
|
|
}));
|
|
};
|
|
if (false) {}
|
|
/* harmony default export */ var icons_CopyOutlined = (/*#__PURE__*/react.forwardRef(CopyOutlined_CopyOutlined));
|
|
|
|
/***/ }),
|
|
|
|
/***/ 11475:
|
|
/*!******************************************************************************************!*\
|
|
!*** ./node_modules/@ant-design/icons/es/icons/ExclamationCircleOutlined.js + 1 modules ***!
|
|
\******************************************************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
// EXPORTS
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
"Z": function() { return /* binding */ icons_ExclamationCircleOutlined; }
|
|
});
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
|
|
var esm_extends = __webpack_require__(87462);
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
var react = __webpack_require__(67294);
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleOutlined.js
|
|
// This icon file is generated automatically.
|
|
var ExclamationCircleOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z" } }, { "tag": "path", "attrs": { "d": "M464 688a48 48 0 1096 0 48 48 0 10-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z" } }] }, "name": "exclamation-circle", "theme": "outlined" };
|
|
/* harmony default export */ var asn_ExclamationCircleOutlined = (ExclamationCircleOutlined);
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/components/AntdIcon.js + 8 modules
|
|
var AntdIcon = __webpack_require__(74643);
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/icons/ExclamationCircleOutlined.js
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
var ExclamationCircleOutlined_ExclamationCircleOutlined = function ExclamationCircleOutlined(props, ref) {
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,esm_extends/* default */.Z)({}, props, {
|
|
ref: ref,
|
|
icon: asn_ExclamationCircleOutlined
|
|
}));
|
|
};
|
|
if (false) {}
|
|
/* harmony default export */ var icons_ExclamationCircleOutlined = (/*#__PURE__*/react.forwardRef(ExclamationCircleOutlined_ExclamationCircleOutlined));
|
|
|
|
/***/ }),
|
|
|
|
/***/ 77123:
|
|
/*!*****************************************************************************!*\
|
|
!*** ./node_modules/@ant-design/icons/es/icons/FormOutlined.js + 1 modules ***!
|
|
\*****************************************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
// EXPORTS
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
"Z": function() { return /* binding */ icons_FormOutlined; }
|
|
});
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
|
|
var esm_extends = __webpack_require__(87462);
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
var react = __webpack_require__(67294);
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons-svg/es/asn/FormOutlined.js
|
|
// This icon file is generated automatically.
|
|
var FormOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M904 512h-56c-4.4 0-8 3.6-8 8v320H184V184h320c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V520c0-4.4-3.6-8-8-8z" } }, { "tag": "path", "attrs": { "d": "M355.9 534.9L354 653.8c-.1 8.9 7.1 16.2 16 16.2h.4l118-2.9c2-.1 4-.9 5.4-2.3l415.9-415c3.1-3.1 3.1-8.2 0-11.3L785.4 114.3c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-415.8 415a8.3 8.3 0 00-2.3 5.6zm63.5 23.6L779.7 199l45.2 45.1-360.5 359.7-45.7 1.1.7-46.4z" } }] }, "name": "form", "theme": "outlined" };
|
|
/* harmony default export */ var asn_FormOutlined = (FormOutlined);
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/components/AntdIcon.js + 8 modules
|
|
var AntdIcon = __webpack_require__(74643);
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/icons/FormOutlined.js
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
var FormOutlined_FormOutlined = function FormOutlined(props, ref) {
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,esm_extends/* default */.Z)({}, props, {
|
|
ref: ref,
|
|
icon: asn_FormOutlined
|
|
}));
|
|
};
|
|
if (false) {}
|
|
/* harmony default export */ var icons_FormOutlined = (/*#__PURE__*/react.forwardRef(FormOutlined_FormOutlined));
|
|
|
|
/***/ }),
|
|
|
|
/***/ 81088:
|
|
/*!*********************************************************************************!*\
|
|
!*** ./node_modules/@ant-design/icons/es/icons/PoweroffOutlined.js + 1 modules ***!
|
|
\*********************************************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
// EXPORTS
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
"Z": function() { return /* binding */ icons_PoweroffOutlined; }
|
|
});
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
|
|
var esm_extends = __webpack_require__(87462);
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
var react = __webpack_require__(67294);
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons-svg/es/asn/PoweroffOutlined.js
|
|
// This icon file is generated automatically.
|
|
var PoweroffOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M705.6 124.9a8 8 0 00-11.6 7.2v64.2c0 5.5 2.9 10.6 7.5 13.6a352.2 352.2 0 0162.2 49.8c32.7 32.8 58.4 70.9 76.3 113.3a355 355 0 0127.9 138.7c0 48.1-9.4 94.8-27.9 138.7a355.92 355.92 0 01-76.3 113.3 353.06 353.06 0 01-113.2 76.4c-43.8 18.6-90.5 28-138.5 28s-94.7-9.4-138.5-28a353.06 353.06 0 01-113.2-76.4A355.92 355.92 0 01184 650.4a355 355 0 01-27.9-138.7c0-48.1 9.4-94.8 27.9-138.7 17.9-42.4 43.6-80.5 76.3-113.3 19-19 39.8-35.6 62.2-49.8 4.7-2.9 7.5-8.1 7.5-13.6V132c0-6-6.3-9.8-11.6-7.2C178.5 195.2 82 339.3 80 506.3 77.2 745.1 272.5 943.5 511.2 944c239 .5 432.8-193.3 432.8-432.4 0-169.2-97-315.7-238.4-386.7zM480 560h64c4.4 0 8-3.6 8-8V88c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z" } }] }, "name": "poweroff", "theme": "outlined" };
|
|
/* harmony default export */ var asn_PoweroffOutlined = (PoweroffOutlined);
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/components/AntdIcon.js + 8 modules
|
|
var AntdIcon = __webpack_require__(74643);
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/icons/PoweroffOutlined.js
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
var PoweroffOutlined_PoweroffOutlined = function PoweroffOutlined(props, ref) {
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,esm_extends/* default */.Z)({}, props, {
|
|
ref: ref,
|
|
icon: asn_PoweroffOutlined
|
|
}));
|
|
};
|
|
if (false) {}
|
|
/* harmony default export */ var icons_PoweroffOutlined = (/*#__PURE__*/react.forwardRef(PoweroffOutlined_PoweroffOutlined));
|
|
|
|
/***/ }),
|
|
|
|
/***/ 55054:
|
|
/*!*************************************************************!*\
|
|
!*** ./node_modules/antd/es/statistic/index.js + 5 modules ***!
|
|
\*************************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
// EXPORTS
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
"Z": function() { return /* binding */ es_statistic; }
|
|
});
|
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
var react = __webpack_require__(67294);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/_util/hooks/useForceUpdate.js
|
|
var useForceUpdate = __webpack_require__(57838);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/_util/reactNode.js
|
|
var reactNode = __webpack_require__(96159);
|
|
// EXTERNAL MODULE: ./node_modules/classnames/index.js
|
|
var classnames = __webpack_require__(94184);
|
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/config-provider/context.js
|
|
var context = __webpack_require__(53124);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/skeleton/index.js + 12 modules
|
|
var skeleton = __webpack_require__(21687);
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/statistic/Number.js
|
|
|
|
const StatisticNumber = props => {
|
|
const {
|
|
value,
|
|
formatter,
|
|
precision,
|
|
decimalSeparator,
|
|
groupSeparator = '',
|
|
prefixCls
|
|
} = props;
|
|
let valueNode;
|
|
if (typeof formatter === 'function') {
|
|
// Customize formatter
|
|
valueNode = formatter(value);
|
|
} else {
|
|
// Internal formatter
|
|
const val = String(value);
|
|
const cells = val.match(/^(-?)(\d*)(\.(\d+))?$/);
|
|
// Process if illegal number
|
|
if (!cells || val === '-') {
|
|
valueNode = val;
|
|
} else {
|
|
const negative = cells[1];
|
|
let int = cells[2] || '0';
|
|
let decimal = cells[4] || '';
|
|
int = int.replace(/\B(?=(\d{3})+(?!\d))/g, groupSeparator);
|
|
if (typeof precision === 'number') {
|
|
decimal = decimal.padEnd(precision, '0').slice(0, precision > 0 ? precision : 0);
|
|
}
|
|
if (decimal) {
|
|
decimal = `${decimalSeparator}${decimal}`;
|
|
}
|
|
valueNode = [/*#__PURE__*/react.createElement("span", {
|
|
key: "int",
|
|
className: `${prefixCls}-content-value-int`
|
|
}, negative, int), decimal && /*#__PURE__*/react.createElement("span", {
|
|
key: "decimal",
|
|
className: `${prefixCls}-content-value-decimal`
|
|
}, decimal)];
|
|
}
|
|
}
|
|
return /*#__PURE__*/react.createElement("span", {
|
|
className: `${prefixCls}-content-value`
|
|
}, valueNode);
|
|
};
|
|
/* harmony default export */ var statistic_Number = (StatisticNumber);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/style/index.js
|
|
var style = __webpack_require__(14747);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/theme/util/genComponentStyleHook.js
|
|
var genComponentStyleHook = __webpack_require__(67968);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/theme/util/statistic.js
|
|
var statistic = __webpack_require__(45503);
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/statistic/style/index.js
|
|
|
|
|
|
const genStatisticStyle = token => {
|
|
const {
|
|
componentCls,
|
|
marginXXS,
|
|
padding,
|
|
colorTextDescription,
|
|
titleFontSize,
|
|
colorTextHeading,
|
|
contentFontSize,
|
|
fontFamily
|
|
} = token;
|
|
return {
|
|
[`${componentCls}`]: Object.assign(Object.assign({}, (0,style/* resetComponent */.Wf)(token)), {
|
|
[`${componentCls}-title`]: {
|
|
marginBottom: marginXXS,
|
|
color: colorTextDescription,
|
|
fontSize: titleFontSize
|
|
},
|
|
[`${componentCls}-skeleton`]: {
|
|
paddingTop: padding
|
|
},
|
|
[`${componentCls}-content`]: {
|
|
color: colorTextHeading,
|
|
fontSize: contentFontSize,
|
|
fontFamily,
|
|
[`${componentCls}-content-value`]: {
|
|
display: 'inline-block',
|
|
direction: 'ltr'
|
|
},
|
|
[`${componentCls}-content-prefix, ${componentCls}-content-suffix`]: {
|
|
display: 'inline-block'
|
|
},
|
|
[`${componentCls}-content-prefix`]: {
|
|
marginInlineEnd: marginXXS
|
|
},
|
|
[`${componentCls}-content-suffix`]: {
|
|
marginInlineStart: marginXXS
|
|
}
|
|
}
|
|
})
|
|
};
|
|
};
|
|
// ============================== Export ==============================
|
|
/* harmony default export */ var statistic_style = ((0,genComponentStyleHook/* default */.Z)('Statistic', token => {
|
|
const statisticToken = (0,statistic/* merge */.TS)(token, {});
|
|
return [genStatisticStyle(statisticToken)];
|
|
}, token => {
|
|
const {
|
|
fontSizeHeading3,
|
|
fontSize
|
|
} = token;
|
|
return {
|
|
titleFontSize: fontSize,
|
|
contentFontSize: fontSizeHeading3
|
|
};
|
|
}));
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/statistic/Statistic.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const Statistic = props => {
|
|
const {
|
|
prefixCls: customizePrefixCls,
|
|
className,
|
|
rootClassName,
|
|
style,
|
|
valueStyle,
|
|
value = 0,
|
|
title,
|
|
valueRender,
|
|
prefix,
|
|
suffix,
|
|
loading = false,
|
|
onMouseEnter,
|
|
onMouseLeave,
|
|
decimalSeparator = '.',
|
|
groupSeparator = ','
|
|
} = props;
|
|
const {
|
|
getPrefixCls,
|
|
direction,
|
|
statistic
|
|
} = react.useContext(context/* ConfigContext */.E_);
|
|
const prefixCls = getPrefixCls('statistic', customizePrefixCls);
|
|
const [wrapSSR, hashId] = statistic_style(prefixCls);
|
|
const valueNode = /*#__PURE__*/react.createElement(statistic_Number, Object.assign({
|
|
decimalSeparator: decimalSeparator,
|
|
groupSeparator: groupSeparator,
|
|
prefixCls: prefixCls
|
|
}, props, {
|
|
value: value
|
|
}));
|
|
const cls = classnames_default()(prefixCls, {
|
|
[`${prefixCls}-rtl`]: direction === 'rtl'
|
|
}, statistic === null || statistic === void 0 ? void 0 : statistic.className, className, rootClassName, hashId);
|
|
return wrapSSR( /*#__PURE__*/react.createElement("div", {
|
|
className: cls,
|
|
style: Object.assign(Object.assign({}, statistic === null || statistic === void 0 ? void 0 : statistic.style), style),
|
|
onMouseEnter: onMouseEnter,
|
|
onMouseLeave: onMouseLeave
|
|
}, title && /*#__PURE__*/react.createElement("div", {
|
|
className: `${prefixCls}-title`
|
|
}, title), /*#__PURE__*/react.createElement(skeleton/* default */.Z, {
|
|
paragraph: false,
|
|
loading: loading,
|
|
className: `${prefixCls}-skeleton`
|
|
}, /*#__PURE__*/react.createElement("div", {
|
|
style: valueStyle,
|
|
className: `${prefixCls}-content`
|
|
}, prefix && /*#__PURE__*/react.createElement("span", {
|
|
className: `${prefixCls}-content-prefix`
|
|
}, prefix), valueRender ? valueRender(valueNode) : valueNode, suffix && /*#__PURE__*/react.createElement("span", {
|
|
className: `${prefixCls}-content-suffix`
|
|
}, suffix)))));
|
|
};
|
|
if (false) {}
|
|
/* harmony default export */ var statistic_Statistic = (Statistic);
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/statistic/utils.js
|
|
// Countdown
|
|
const timeUnits = [['Y', 1000 * 60 * 60 * 24 * 365], ['M', 1000 * 60 * 60 * 24 * 30], ['D', 1000 * 60 * 60 * 24], ['H', 1000 * 60 * 60], ['m', 1000 * 60], ['s', 1000], ['S', 1] // million seconds
|
|
];
|
|
|
|
function formatTimeStr(duration, format) {
|
|
let leftDuration = duration;
|
|
const escapeRegex = /\[[^\]]*]/g;
|
|
const keepList = (format.match(escapeRegex) || []).map(str => str.slice(1, -1));
|
|
const templateText = format.replace(escapeRegex, '[]');
|
|
const replacedText = timeUnits.reduce((current, _ref) => {
|
|
let [name, unit] = _ref;
|
|
if (current.includes(name)) {
|
|
const value = Math.floor(leftDuration / unit);
|
|
leftDuration -= value * unit;
|
|
return current.replace(new RegExp(`${name}+`, 'g'), match => {
|
|
const len = match.length;
|
|
return value.toString().padStart(len, '0');
|
|
});
|
|
}
|
|
return current;
|
|
}, templateText);
|
|
let index = 0;
|
|
return replacedText.replace(escapeRegex, () => {
|
|
const match = keepList[index];
|
|
index += 1;
|
|
return match;
|
|
});
|
|
}
|
|
function formatCountdown(value, config) {
|
|
const {
|
|
format = ''
|
|
} = config;
|
|
const target = new Date(value).getTime();
|
|
const current = Date.now();
|
|
const diff = Math.max(target - current, 0);
|
|
return formatTimeStr(diff, format);
|
|
}
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/statistic/Countdown.js
|
|
|
|
|
|
|
|
|
|
|
|
const REFRESH_INTERVAL = 1000 / 30;
|
|
function getTime(value) {
|
|
return new Date(value).getTime();
|
|
}
|
|
const Countdown = props => {
|
|
const {
|
|
value,
|
|
format = 'HH:mm:ss',
|
|
onChange,
|
|
onFinish
|
|
} = props;
|
|
const forceUpdate = (0,useForceUpdate/* default */.Z)();
|
|
const countdown = react.useRef(null);
|
|
const stopTimer = () => {
|
|
onFinish === null || onFinish === void 0 ? void 0 : onFinish();
|
|
if (countdown.current) {
|
|
clearInterval(countdown.current);
|
|
countdown.current = null;
|
|
}
|
|
};
|
|
const syncTimer = () => {
|
|
const timestamp = getTime(value);
|
|
if (timestamp >= Date.now()) {
|
|
countdown.current = setInterval(() => {
|
|
forceUpdate();
|
|
onChange === null || onChange === void 0 ? void 0 : onChange(timestamp - Date.now());
|
|
if (timestamp < Date.now()) {
|
|
stopTimer();
|
|
}
|
|
}, REFRESH_INTERVAL);
|
|
}
|
|
};
|
|
react.useEffect(() => {
|
|
syncTimer();
|
|
return () => {
|
|
if (countdown.current) {
|
|
clearInterval(countdown.current);
|
|
countdown.current = null;
|
|
}
|
|
};
|
|
}, [value]);
|
|
const formatter = (formatValue, config) => formatCountdown(formatValue, Object.assign(Object.assign({}, config), {
|
|
format
|
|
}));
|
|
const valueRender = node => (0,reactNode/* cloneElement */.Tm)(node, {
|
|
title: undefined
|
|
});
|
|
return /*#__PURE__*/react.createElement(statistic_Statistic, Object.assign({}, props, {
|
|
valueRender: valueRender,
|
|
formatter: formatter
|
|
}));
|
|
};
|
|
/* harmony default export */ var statistic_Countdown = (/*#__PURE__*/react.memo(Countdown));
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/statistic/index.js
|
|
'use client';
|
|
|
|
|
|
|
|
statistic_Statistic.Countdown = statistic_Countdown;
|
|
/* harmony default export */ var es_statistic = (statistic_Statistic);
|
|
|
|
/***/ }),
|
|
|
|
/***/ 51904:
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/antd/es/tag/index.js + 3 modules ***!
|
|
\*******************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
// EXPORTS
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
"Z": function() { return /* binding */ tag; }
|
|
});
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/CloseOutlined.js + 1 modules
|
|
var CloseOutlined = __webpack_require__(97937);
|
|
// EXTERNAL MODULE: ./node_modules/classnames/index.js
|
|
var classnames = __webpack_require__(94184);
|
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
var react = __webpack_require__(67294);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/_util/colors.js
|
|
var colors = __webpack_require__(98787);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/_util/hooks/useClosable.js
|
|
var useClosable = __webpack_require__(69760);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/_util/wave/index.js + 4 modules
|
|
var wave = __webpack_require__(45353);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/config-provider/context.js
|
|
var context = __webpack_require__(53124);
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/_util/capitalize.js
|
|
function capitalize(str) {
|
|
if (typeof str !== 'string') {
|
|
return str;
|
|
}
|
|
const ret = str.charAt(0).toUpperCase() + str.slice(1);
|
|
return ret;
|
|
}
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/style/index.js
|
|
var style = __webpack_require__(14747);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/theme/util/genPresetColor.js
|
|
var genPresetColor = __webpack_require__(98719);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/theme/util/genComponentStyleHook.js
|
|
var genComponentStyleHook = __webpack_require__(67968);
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/theme/util/statistic.js
|
|
var statistic = __webpack_require__(45503);
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/tag/style/index.js
|
|
|
|
|
|
|
|
const genTagStatusStyle = (token, status, cssVariableType) => {
|
|
const capitalizedCssVariableType = capitalize(cssVariableType);
|
|
return {
|
|
[`${token.componentCls}-${status}`]: {
|
|
color: token[`color${cssVariableType}`],
|
|
background: token[`color${capitalizedCssVariableType}Bg`],
|
|
borderColor: token[`color${capitalizedCssVariableType}Border`],
|
|
[`&${token.componentCls}-borderless`]: {
|
|
borderColor: 'transparent'
|
|
}
|
|
}
|
|
};
|
|
};
|
|
const genPresetStyle = token => (0,genPresetColor/* default */.Z)(token, (colorKey, _ref) => {
|
|
let {
|
|
textColor,
|
|
lightBorderColor,
|
|
lightColor,
|
|
darkColor
|
|
} = _ref;
|
|
return {
|
|
[`${token.componentCls}-${colorKey}`]: {
|
|
color: textColor,
|
|
background: lightColor,
|
|
borderColor: lightBorderColor,
|
|
// Inverse color
|
|
'&-inverse': {
|
|
color: token.colorTextLightSolid,
|
|
background: darkColor,
|
|
borderColor: darkColor
|
|
},
|
|
[`&${token.componentCls}-borderless`]: {
|
|
borderColor: 'transparent'
|
|
}
|
|
}
|
|
};
|
|
});
|
|
const genBaseStyle = token => {
|
|
const {
|
|
paddingXXS,
|
|
lineWidth,
|
|
tagPaddingHorizontal,
|
|
componentCls
|
|
} = token;
|
|
const paddingInline = tagPaddingHorizontal - lineWidth;
|
|
const iconMarginInline = paddingXXS - lineWidth;
|
|
return {
|
|
// Result
|
|
[componentCls]: Object.assign(Object.assign({}, (0,style/* resetComponent */.Wf)(token)), {
|
|
display: 'inline-block',
|
|
height: 'auto',
|
|
marginInlineEnd: token.marginXS,
|
|
paddingInline,
|
|
fontSize: token.tagFontSize,
|
|
lineHeight: token.tagLineHeight,
|
|
whiteSpace: 'nowrap',
|
|
background: token.defaultBg,
|
|
border: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,
|
|
borderRadius: token.borderRadiusSM,
|
|
opacity: 1,
|
|
transition: `all ${token.motionDurationMid}`,
|
|
textAlign: 'start',
|
|
position: 'relative',
|
|
// RTL
|
|
[`&${componentCls}-rtl`]: {
|
|
direction: 'rtl'
|
|
},
|
|
'&, a, a:hover': {
|
|
color: token.defaultColor
|
|
},
|
|
[`${componentCls}-close-icon`]: {
|
|
marginInlineStart: iconMarginInline,
|
|
color: token.colorTextDescription,
|
|
fontSize: token.tagIconSize,
|
|
cursor: 'pointer',
|
|
transition: `all ${token.motionDurationMid}`,
|
|
'&:hover': {
|
|
color: token.colorTextHeading
|
|
}
|
|
},
|
|
[`&${componentCls}-has-color`]: {
|
|
borderColor: 'transparent',
|
|
[`&, a, a:hover, ${token.iconCls}-close, ${token.iconCls}-close:hover`]: {
|
|
color: token.colorTextLightSolid
|
|
}
|
|
},
|
|
[`&-checkable`]: {
|
|
backgroundColor: 'transparent',
|
|
borderColor: 'transparent',
|
|
cursor: 'pointer',
|
|
[`&:not(${componentCls}-checkable-checked):hover`]: {
|
|
color: token.colorPrimary,
|
|
backgroundColor: token.colorFillSecondary
|
|
},
|
|
'&:active, &-checked': {
|
|
color: token.colorTextLightSolid
|
|
},
|
|
'&-checked': {
|
|
backgroundColor: token.colorPrimary,
|
|
'&:hover': {
|
|
backgroundColor: token.colorPrimaryHover
|
|
}
|
|
},
|
|
'&:active': {
|
|
backgroundColor: token.colorPrimaryActive
|
|
}
|
|
},
|
|
[`&-hidden`]: {
|
|
display: 'none'
|
|
},
|
|
// To ensure that a space will be placed between character and `Icon`.
|
|
[`> ${token.iconCls} + span, > span + ${token.iconCls}`]: {
|
|
marginInlineStart: paddingInline
|
|
}
|
|
}),
|
|
[`${componentCls}-borderless`]: {
|
|
borderColor: 'transparent',
|
|
background: token.tagBorderlessBg
|
|
}
|
|
};
|
|
};
|
|
// ============================== Export ==============================
|
|
/* harmony default export */ var tag_style = ((0,genComponentStyleHook/* default */.Z)('Tag', token => {
|
|
const {
|
|
lineWidth,
|
|
fontSizeIcon
|
|
} = token;
|
|
const tagFontSize = token.fontSizeSM;
|
|
const tagLineHeight = `${token.lineHeightSM * tagFontSize}px`;
|
|
const tagToken = (0,statistic/* merge */.TS)(token, {
|
|
tagFontSize,
|
|
tagLineHeight,
|
|
tagIconSize: fontSizeIcon - 2 * lineWidth,
|
|
tagPaddingHorizontal: 8,
|
|
tagBorderlessBg: token.colorFillTertiary
|
|
});
|
|
return [genBaseStyle(tagToken), genPresetStyle(tagToken), genTagStatusStyle(tagToken, 'success', 'Success'), genTagStatusStyle(tagToken, 'processing', 'Info'), genTagStatusStyle(tagToken, 'error', 'Error'), genTagStatusStyle(tagToken, 'warning', 'Warning')];
|
|
}, token => ({
|
|
defaultBg: token.colorFillQuaternary,
|
|
defaultColor: token.colorText
|
|
})));
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/tag/CheckableTag.js
|
|
var __rest = undefined && undefined.__rest || function (s, e) {
|
|
var t = {};
|
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
}
|
|
return t;
|
|
};
|
|
|
|
|
|
|
|
|
|
const CheckableTag = props => {
|
|
const {
|
|
prefixCls: customizePrefixCls,
|
|
className,
|
|
checked,
|
|
onChange,
|
|
onClick
|
|
} = props,
|
|
restProps = __rest(props, ["prefixCls", "className", "checked", "onChange", "onClick"]);
|
|
const {
|
|
getPrefixCls
|
|
} = react.useContext(context/* ConfigContext */.E_);
|
|
const handleClick = e => {
|
|
onChange === null || onChange === void 0 ? void 0 : onChange(!checked);
|
|
onClick === null || onClick === void 0 ? void 0 : onClick(e);
|
|
};
|
|
const prefixCls = getPrefixCls('tag', customizePrefixCls);
|
|
// Style
|
|
const [wrapSSR, hashId] = tag_style(prefixCls);
|
|
const cls = classnames_default()(prefixCls, `${prefixCls}-checkable`, {
|
|
[`${prefixCls}-checkable-checked`]: checked
|
|
}, className, hashId);
|
|
return wrapSSR( /*#__PURE__*/react.createElement("span", Object.assign({}, restProps, {
|
|
className: cls,
|
|
onClick: handleClick
|
|
})));
|
|
};
|
|
/* harmony default export */ var tag_CheckableTag = (CheckableTag);
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/tag/index.js
|
|
'use client';
|
|
|
|
var tag_rest = undefined && undefined.__rest || function (s, e) {
|
|
var t = {};
|
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
}
|
|
return t;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const InternalTag = (tagProps, ref) => {
|
|
const {
|
|
prefixCls: customizePrefixCls,
|
|
className,
|
|
rootClassName,
|
|
style,
|
|
children,
|
|
icon,
|
|
color,
|
|
onClose,
|
|
closeIcon,
|
|
closable,
|
|
bordered = true
|
|
} = tagProps,
|
|
props = tag_rest(tagProps, ["prefixCls", "className", "rootClassName", "style", "children", "icon", "color", "onClose", "closeIcon", "closable", "bordered"]);
|
|
const {
|
|
getPrefixCls,
|
|
direction,
|
|
tag
|
|
} = react.useContext(context/* ConfigContext */.E_);
|
|
const [visible, setVisible] = react.useState(true);
|
|
// Warning for deprecated usage
|
|
if (false) {}
|
|
react.useEffect(() => {
|
|
if ('visible' in props) {
|
|
setVisible(props.visible);
|
|
}
|
|
}, [props.visible]);
|
|
const isInternalColor = (0,colors/* isPresetColor */.o2)(color) || (0,colors/* isPresetStatusColor */.yT)(color);
|
|
const tagStyle = Object.assign(Object.assign({
|
|
backgroundColor: color && !isInternalColor ? color : undefined
|
|
}, tag === null || tag === void 0 ? void 0 : tag.style), style);
|
|
const prefixCls = getPrefixCls('tag', customizePrefixCls);
|
|
// Style
|
|
const [wrapSSR, hashId] = tag_style(prefixCls);
|
|
const tagClassName = classnames_default()(prefixCls, tag === null || tag === void 0 ? void 0 : tag.className, {
|
|
[`${prefixCls}-${color}`]: isInternalColor,
|
|
[`${prefixCls}-has-color`]: color && !isInternalColor,
|
|
[`${prefixCls}-hidden`]: !visible,
|
|
[`${prefixCls}-rtl`]: direction === 'rtl',
|
|
[`${prefixCls}-borderless`]: !bordered
|
|
}, className, rootClassName, hashId);
|
|
const handleCloseClick = e => {
|
|
e.stopPropagation();
|
|
onClose === null || onClose === void 0 ? void 0 : onClose(e);
|
|
if (e.defaultPrevented) {
|
|
return;
|
|
}
|
|
setVisible(false);
|
|
};
|
|
const [, mergedCloseIcon] = (0,useClosable/* default */.Z)(closable, closeIcon, iconNode => iconNode === null ? /*#__PURE__*/react.createElement(CloseOutlined/* default */.Z, {
|
|
className: `${prefixCls}-close-icon`,
|
|
onClick: handleCloseClick
|
|
}) : /*#__PURE__*/react.createElement("span", {
|
|
className: `${prefixCls}-close-icon`,
|
|
onClick: handleCloseClick
|
|
}, iconNode), null, false);
|
|
const isNeedWave = typeof props.onClick === 'function' || children && children.type === 'a';
|
|
const iconNode = icon || null;
|
|
const kids = iconNode ? /*#__PURE__*/react.createElement(react.Fragment, null, iconNode, children && /*#__PURE__*/react.createElement("span", null, children)) : children;
|
|
const tagNode = /*#__PURE__*/react.createElement("span", Object.assign({}, props, {
|
|
ref: ref,
|
|
className: tagClassName,
|
|
style: tagStyle
|
|
}), kids, mergedCloseIcon);
|
|
return wrapSSR(isNeedWave ? /*#__PURE__*/react.createElement(wave/* default */.Z, null, tagNode) : tagNode);
|
|
};
|
|
const Tag = /*#__PURE__*/react.forwardRef(InternalTag);
|
|
if (false) {}
|
|
Tag.CheckableTag = tag_CheckableTag;
|
|
/* harmony default export */ var tag = (Tag);
|
|
|
|
/***/ }),
|
|
|
|
/***/ 20640:
|
|
/*!*************************************************!*\
|
|
!*** ./node_modules/copy-to-clipboard/index.js ***!
|
|
\*************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
|
|
var deselectCurrent = __webpack_require__(/*! toggle-selection */ 11742);
|
|
|
|
var clipboardToIE11Formatting = {
|
|
"text/plain": "Text",
|
|
"text/html": "Url",
|
|
"default": "Text"
|
|
}
|
|
|
|
var defaultMessage = "Copy to clipboard: #{key}, Enter";
|
|
|
|
function format(message) {
|
|
var copyKey = (/mac os x/i.test(navigator.userAgent) ? "⌘" : "Ctrl") + "+C";
|
|
return message.replace(/#{\s*key\s*}/g, copyKey);
|
|
}
|
|
|
|
function copy(text, options) {
|
|
var debug,
|
|
message,
|
|
reselectPrevious,
|
|
range,
|
|
selection,
|
|
mark,
|
|
success = false;
|
|
if (!options) {
|
|
options = {};
|
|
}
|
|
debug = options.debug || false;
|
|
try {
|
|
reselectPrevious = deselectCurrent();
|
|
|
|
range = document.createRange();
|
|
selection = document.getSelection();
|
|
|
|
mark = document.createElement("span");
|
|
mark.textContent = text;
|
|
// avoid screen readers from reading out loud the text
|
|
mark.ariaHidden = "true"
|
|
// reset user styles for span element
|
|
mark.style.all = "unset";
|
|
// prevents scrolling to the end of the page
|
|
mark.style.position = "fixed";
|
|
mark.style.top = 0;
|
|
mark.style.clip = "rect(0, 0, 0, 0)";
|
|
// used to preserve spaces and line breaks
|
|
mark.style.whiteSpace = "pre";
|
|
// do not inherit user-select (it may be `none`)
|
|
mark.style.webkitUserSelect = "text";
|
|
mark.style.MozUserSelect = "text";
|
|
mark.style.msUserSelect = "text";
|
|
mark.style.userSelect = "text";
|
|
mark.addEventListener("copy", function(e) {
|
|
e.stopPropagation();
|
|
if (options.format) {
|
|
e.preventDefault();
|
|
if (typeof e.clipboardData === "undefined") { // IE 11
|
|
debug && console.warn("unable to use e.clipboardData");
|
|
debug && console.warn("trying IE specific stuff");
|
|
window.clipboardData.clearData();
|
|
var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting["default"]
|
|
window.clipboardData.setData(format, text);
|
|
} else { // all other browsers
|
|
e.clipboardData.clearData();
|
|
e.clipboardData.setData(options.format, text);
|
|
}
|
|
}
|
|
if (options.onCopy) {
|
|
e.preventDefault();
|
|
options.onCopy(e.clipboardData);
|
|
}
|
|
});
|
|
|
|
document.body.appendChild(mark);
|
|
|
|
range.selectNodeContents(mark);
|
|
selection.addRange(range);
|
|
|
|
var successful = document.execCommand("copy");
|
|
if (!successful) {
|
|
throw new Error("copy command was unsuccessful");
|
|
}
|
|
success = true;
|
|
} catch (err) {
|
|
debug && console.error("unable to copy using execCommand: ", err);
|
|
debug && console.warn("trying IE specific stuff");
|
|
try {
|
|
window.clipboardData.setData(options.format || "text", text);
|
|
options.onCopy && options.onCopy(window.clipboardData);
|
|
success = true;
|
|
} catch (err) {
|
|
debug && console.error("unable to copy using clipboardData: ", err);
|
|
debug && console.error("falling back to prompt");
|
|
message = format("message" in options ? options.message : defaultMessage);
|
|
window.prompt(message, text);
|
|
}
|
|
} finally {
|
|
if (selection) {
|
|
if (typeof selection.removeRange == "function") {
|
|
selection.removeRange(range);
|
|
} else {
|
|
selection.removeAllRanges();
|
|
}
|
|
}
|
|
|
|
if (mark) {
|
|
document.body.removeChild(mark);
|
|
}
|
|
reselectPrevious();
|
|
}
|
|
|
|
return success;
|
|
}
|
|
|
|
module.exports = copy;
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 19575:
|
|
/*!******************************************!*\
|
|
!*** ./node_modules/js-base64/base64.js ***!
|
|
\******************************************/
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
|
|
* base64.js
|
|
*
|
|
* Licensed under the BSD 3-Clause License.
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
*
|
|
* References:
|
|
* http://en.wikipedia.org/wiki/Base64
|
|
*/
|
|
;(function (global, factory) {
|
|
true
|
|
? module.exports = factory(global)
|
|
: 0
|
|
}((
|
|
typeof self !== 'undefined' ? self
|
|
: typeof window !== 'undefined' ? window
|
|
: typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g
|
|
: this
|
|
), function(global) {
|
|
'use strict';
|
|
// existing version for noConflict()
|
|
global = global || {};
|
|
var _Base64 = global.Base64;
|
|
var version = "2.6.4";
|
|
// constants
|
|
var b64chars
|
|
= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
var b64tab = function(bin) {
|
|
var t = {};
|
|
for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;
|
|
return t;
|
|
}(b64chars);
|
|
var fromCharCode = String.fromCharCode;
|
|
// encoder stuff
|
|
var cb_utob = function(c) {
|
|
if (c.length < 2) {
|
|
var cc = c.charCodeAt(0);
|
|
return cc < 0x80 ? c
|
|
: cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6))
|
|
+ fromCharCode(0x80 | (cc & 0x3f)))
|
|
: (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f))
|
|
+ fromCharCode(0x80 | ((cc >>> 6) & 0x3f))
|
|
+ fromCharCode(0x80 | ( cc & 0x3f)));
|
|
} else {
|
|
var cc = 0x10000
|
|
+ (c.charCodeAt(0) - 0xD800) * 0x400
|
|
+ (c.charCodeAt(1) - 0xDC00);
|
|
return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07))
|
|
+ fromCharCode(0x80 | ((cc >>> 12) & 0x3f))
|
|
+ fromCharCode(0x80 | ((cc >>> 6) & 0x3f))
|
|
+ fromCharCode(0x80 | ( cc & 0x3f)));
|
|
}
|
|
};
|
|
var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
|
|
var utob = function(u) {
|
|
return u.replace(re_utob, cb_utob);
|
|
};
|
|
var cb_encode = function(ccc) {
|
|
var padlen = [0, 2, 1][ccc.length % 3],
|
|
ord = ccc.charCodeAt(0) << 16
|
|
| ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8)
|
|
| ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),
|
|
chars = [
|
|
b64chars.charAt( ord >>> 18),
|
|
b64chars.charAt((ord >>> 12) & 63),
|
|
padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),
|
|
padlen >= 1 ? '=' : b64chars.charAt(ord & 63)
|
|
];
|
|
return chars.join('');
|
|
};
|
|
var btoa = global.btoa && typeof global.btoa == 'function'
|
|
? function(b){ return global.btoa(b) } : function(b) {
|
|
if (b.match(/[^\x00-\xFF]/)) throw new RangeError(
|
|
'The string contains invalid characters.'
|
|
);
|
|
return b.replace(/[\s\S]{1,3}/g, cb_encode);
|
|
};
|
|
var _encode = function(u) {
|
|
return btoa(utob(String(u)));
|
|
};
|
|
var mkUriSafe = function (b64) {
|
|
return b64.replace(/[+\/]/g, function(m0) {
|
|
return m0 == '+' ? '-' : '_';
|
|
}).replace(/=/g, '');
|
|
};
|
|
var encode = function(u, urisafe) {
|
|
return urisafe ? mkUriSafe(_encode(u)) : _encode(u);
|
|
};
|
|
var encodeURI = function(u) { return encode(u, true) };
|
|
var fromUint8Array;
|
|
if (global.Uint8Array) fromUint8Array = function(a, urisafe) {
|
|
// return btoa(fromCharCode.apply(null, a));
|
|
var b64 = '';
|
|
for (var i = 0, l = a.length; i < l; i += 3) {
|
|
var a0 = a[i], a1 = a[i+1], a2 = a[i+2];
|
|
var ord = a0 << 16 | a1 << 8 | a2;
|
|
b64 += b64chars.charAt( ord >>> 18)
|
|
+ b64chars.charAt((ord >>> 12) & 63)
|
|
+ ( typeof a1 != 'undefined'
|
|
? b64chars.charAt((ord >>> 6) & 63) : '=')
|
|
+ ( typeof a2 != 'undefined'
|
|
? b64chars.charAt( ord & 63) : '=');
|
|
}
|
|
return urisafe ? mkUriSafe(b64) : b64;
|
|
};
|
|
// decoder stuff
|
|
var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;
|
|
var cb_btou = function(cccc) {
|
|
switch(cccc.length) {
|
|
case 4:
|
|
var cp = ((0x07 & cccc.charCodeAt(0)) << 18)
|
|
| ((0x3f & cccc.charCodeAt(1)) << 12)
|
|
| ((0x3f & cccc.charCodeAt(2)) << 6)
|
|
| (0x3f & cccc.charCodeAt(3)),
|
|
offset = cp - 0x10000;
|
|
return (fromCharCode((offset >>> 10) + 0xD800)
|
|
+ fromCharCode((offset & 0x3FF) + 0xDC00));
|
|
case 3:
|
|
return fromCharCode(
|
|
((0x0f & cccc.charCodeAt(0)) << 12)
|
|
| ((0x3f & cccc.charCodeAt(1)) << 6)
|
|
| (0x3f & cccc.charCodeAt(2))
|
|
);
|
|
default:
|
|
return fromCharCode(
|
|
((0x1f & cccc.charCodeAt(0)) << 6)
|
|
| (0x3f & cccc.charCodeAt(1))
|
|
);
|
|
}
|
|
};
|
|
var btou = function(b) {
|
|
return b.replace(re_btou, cb_btou);
|
|
};
|
|
var cb_decode = function(cccc) {
|
|
var len = cccc.length,
|
|
padlen = len % 4,
|
|
n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0)
|
|
| (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0)
|
|
| (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0)
|
|
| (len > 3 ? b64tab[cccc.charAt(3)] : 0),
|
|
chars = [
|
|
fromCharCode( n >>> 16),
|
|
fromCharCode((n >>> 8) & 0xff),
|
|
fromCharCode( n & 0xff)
|
|
];
|
|
chars.length -= [0, 0, 2, 1][padlen];
|
|
return chars.join('');
|
|
};
|
|
var _atob = global.atob && typeof global.atob == 'function'
|
|
? function(a){ return global.atob(a) } : function(a){
|
|
return a.replace(/\S{1,4}/g, cb_decode);
|
|
};
|
|
var atob = function(a) {
|
|
return _atob(String(a).replace(/[^A-Za-z0-9\+\/]/g, ''));
|
|
};
|
|
var _decode = function(a) { return btou(_atob(a)) };
|
|
var _fromURI = function(a) {
|
|
return String(a).replace(/[-_]/g, function(m0) {
|
|
return m0 == '-' ? '+' : '/'
|
|
}).replace(/[^A-Za-z0-9\+\/]/g, '');
|
|
};
|
|
var decode = function(a){
|
|
return _decode(_fromURI(a));
|
|
};
|
|
var toUint8Array;
|
|
if (global.Uint8Array) toUint8Array = function(a) {
|
|
return Uint8Array.from(atob(_fromURI(a)), function(c) {
|
|
return c.charCodeAt(0);
|
|
});
|
|
};
|
|
var noConflict = function() {
|
|
var Base64 = global.Base64;
|
|
global.Base64 = _Base64;
|
|
return Base64;
|
|
};
|
|
// export Base64
|
|
global.Base64 = {
|
|
VERSION: version,
|
|
atob: atob,
|
|
btoa: btoa,
|
|
fromBase64: decode,
|
|
toBase64: encode,
|
|
utob: utob,
|
|
encode: encode,
|
|
encodeURI: encodeURI,
|
|
btou: btou,
|
|
decode: decode,
|
|
noConflict: noConflict,
|
|
fromUint8Array: fromUint8Array,
|
|
toUint8Array: toUint8Array
|
|
};
|
|
// if ES5 is available, make Base64.extendString() available
|
|
if (typeof Object.defineProperty === 'function') {
|
|
var noEnum = function(v){
|
|
return {value:v,enumerable:false,writable:true,configurable:true};
|
|
};
|
|
global.Base64.extendString = function () {
|
|
Object.defineProperty(
|
|
String.prototype, 'fromBase64', noEnum(function () {
|
|
return decode(this)
|
|
}));
|
|
Object.defineProperty(
|
|
String.prototype, 'toBase64', noEnum(function (urisafe) {
|
|
return encode(this, urisafe)
|
|
}));
|
|
Object.defineProperty(
|
|
String.prototype, 'toBase64URI', noEnum(function () {
|
|
return encode(this, true)
|
|
}));
|
|
};
|
|
}
|
|
//
|
|
// export Base64 to the namespace
|
|
//
|
|
if (global['Meteor']) { // Meteor.js
|
|
Base64 = global.Base64;
|
|
}
|
|
// module.exports and AMD are mutually exclusive.
|
|
// module.exports has precedence.
|
|
if ( true && module.exports) {
|
|
module.exports.Base64 = global.Base64;
|
|
}
|
|
else if (true) {
|
|
// AMD. Register as an anonymous module.
|
|
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function(){ return global.Base64 }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
|
|
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
|
}
|
|
// that's it!
|
|
return {Base64: global.Base64}
|
|
}));
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 64217:
|
|
/*!**********************************************!*\
|
|
!*** ./node_modules/rc-util/es/pickAttrs.js ***!
|
|
\**********************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "Z": function() { return /* binding */ pickAttrs; }
|
|
/* harmony export */ });
|
|
/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ 1413);
|
|
|
|
var attributes = "accept acceptCharset accessKey action allowFullScreen allowTransparency\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\n charSet checked classID className colSpan cols content contentEditable contextMenu\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\n mediaGroup method min minLength multiple muted name noValidate nonce open\n optimum pattern placeholder poster preload radioGroup readOnly rel required\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\n summary tabIndex target title type useMap value width wmode wrap";
|
|
var eventsName = "onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError";
|
|
var propList = "".concat(attributes, " ").concat(eventsName).split(/[\s\n]+/);
|
|
|
|
/* eslint-enable max-len */
|
|
var ariaPrefix = 'aria-';
|
|
var dataPrefix = 'data-';
|
|
function match(key, prefix) {
|
|
return key.indexOf(prefix) === 0;
|
|
}
|
|
/**
|
|
* Picker props from exist props with filter
|
|
* @param props Passed props
|
|
* @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config
|
|
*/
|
|
function pickAttrs(props) {
|
|
var ariaOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
var mergedConfig;
|
|
if (ariaOnly === false) {
|
|
mergedConfig = {
|
|
aria: true,
|
|
data: true,
|
|
attr: true
|
|
};
|
|
} else if (ariaOnly === true) {
|
|
mergedConfig = {
|
|
aria: true
|
|
};
|
|
} else {
|
|
mergedConfig = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z)({}, ariaOnly);
|
|
}
|
|
var attrs = {};
|
|
Object.keys(props).forEach(function (key) {
|
|
if (
|
|
// Aria
|
|
mergedConfig.aria && (key === 'role' || match(key, ariaPrefix)) ||
|
|
// Data
|
|
mergedConfig.data && match(key, dataPrefix) ||
|
|
// Attr
|
|
mergedConfig.attr && propList.includes(key)) {
|
|
attrs[key] = props[key];
|
|
}
|
|
});
|
|
return attrs;
|
|
}
|
|
|
|
/***/ }),
|
|
|
|
/***/ 74300:
|
|
/*!***************************************************************!*\
|
|
!*** ./node_modules/react-copy-to-clipboard/lib/Component.js ***!
|
|
\***************************************************************/
|
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
|
|
Object.defineProperty(exports, "__esModule", ({
|
|
value: true
|
|
}));
|
|
exports.CopyToClipboard = void 0;
|
|
|
|
var _react = _interopRequireDefault(__webpack_require__(/*! react */ 67294));
|
|
|
|
var _copyToClipboard = _interopRequireDefault(__webpack_require__(/*! copy-to-clipboard */ 20640));
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
|
|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
|
|
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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
|
|
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; }
|
|
|
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
|
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
|
|
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
|
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
|
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
|
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
|
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
|
|
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; }
|
|
|
|
var CopyToClipboard =
|
|
/*#__PURE__*/
|
|
function (_React$PureComponent) {
|
|
_inherits(CopyToClipboard, _React$PureComponent);
|
|
|
|
function CopyToClipboard() {
|
|
var _getPrototypeOf2;
|
|
|
|
var _this;
|
|
|
|
_classCallCheck(this, CopyToClipboard);
|
|
|
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
args[_key] = arguments[_key];
|
|
}
|
|
|
|
_this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CopyToClipboard)).call.apply(_getPrototypeOf2, [this].concat(args)));
|
|
|
|
_defineProperty(_assertThisInitialized(_this), "onClick", function (event) {
|
|
var _this$props = _this.props,
|
|
text = _this$props.text,
|
|
onCopy = _this$props.onCopy,
|
|
children = _this$props.children,
|
|
options = _this$props.options;
|
|
|
|
var elem = _react["default"].Children.only(children);
|
|
|
|
var result = (0, _copyToClipboard["default"])(text, options);
|
|
|
|
if (onCopy) {
|
|
onCopy(text, result);
|
|
} // Bypass onClick if it was present
|
|
|
|
|
|
if (elem && elem.props && typeof elem.props.onClick === 'function') {
|
|
elem.props.onClick(event);
|
|
}
|
|
});
|
|
|
|
return _this;
|
|
}
|
|
|
|
_createClass(CopyToClipboard, [{
|
|
key: "render",
|
|
value: function render() {
|
|
var _this$props2 = this.props,
|
|
_text = _this$props2.text,
|
|
_onCopy = _this$props2.onCopy,
|
|
_options = _this$props2.options,
|
|
children = _this$props2.children,
|
|
props = _objectWithoutProperties(_this$props2, ["text", "onCopy", "options", "children"]);
|
|
|
|
var elem = _react["default"].Children.only(children);
|
|
|
|
return _react["default"].cloneElement(elem, _objectSpread({}, props, {
|
|
onClick: this.onClick
|
|
}));
|
|
}
|
|
}]);
|
|
|
|
return CopyToClipboard;
|
|
}(_react["default"].PureComponent);
|
|
|
|
exports.CopyToClipboard = CopyToClipboard;
|
|
|
|
_defineProperty(CopyToClipboard, "defaultProps", {
|
|
onCopy: undefined,
|
|
options: undefined
|
|
});
|
|
|
|
/***/ }),
|
|
|
|
/***/ 74855:
|
|
/*!***********************************************************!*\
|
|
!*** ./node_modules/react-copy-to-clipboard/lib/index.js ***!
|
|
\***********************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
|
|
var _require = __webpack_require__(/*! ./Component */ 74300),
|
|
CopyToClipboard = _require.CopyToClipboard;
|
|
|
|
CopyToClipboard.CopyToClipboard = CopyToClipboard;
|
|
module.exports = CopyToClipboard;
|
|
|
|
/***/ }),
|
|
|
|
/***/ 58971:
|
|
/*!*************************************************!*\
|
|
!*** ./node_modules/store/dist/store.legacy.js ***!
|
|
\*************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
var engine = __webpack_require__(/*! ../src/store-engine */ 62195)
|
|
|
|
var storages = __webpack_require__(/*! ../storages/all */ 39015)
|
|
var plugins = [__webpack_require__(/*! ../plugins/json2 */ 19257)]
|
|
|
|
module.exports = engine.createStore(storages, plugins)
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 19257:
|
|
/*!*********************************************!*\
|
|
!*** ./node_modules/store/plugins/json2.js ***!
|
|
\*********************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
module.exports = json2Plugin
|
|
|
|
function json2Plugin() {
|
|
__webpack_require__(/*! ./lib/json2 */ 55703)
|
|
return {}
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 55703:
|
|
/*!*************************************************!*\
|
|
!*** ./node_modules/store/plugins/lib/json2.js ***!
|
|
\*************************************************/
|
|
/***/ (function() {
|
|
|
|
/* eslint-disable */
|
|
|
|
// json2.js
|
|
// 2016-10-28
|
|
// Public Domain.
|
|
// NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
|
|
// See http://www.JSON.org/js.html
|
|
// This code should be minified before deployment.
|
|
// See http://javascript.crockford.com/jsmin.html
|
|
|
|
// USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
|
|
// NOT CONTROL.
|
|
|
|
// This file creates a global JSON object containing two methods: stringify
|
|
// and parse. This file provides the ES5 JSON capability to ES3 systems.
|
|
// If a project might run on IE8 or earlier, then this file should be included.
|
|
// This file does nothing on ES5 systems.
|
|
|
|
// JSON.stringify(value, replacer, space)
|
|
// value any JavaScript value, usually an object or array.
|
|
// replacer an optional parameter that determines how object
|
|
// values are stringified for objects. It can be a
|
|
// function or an array of strings.
|
|
// space an optional parameter that specifies the indentation
|
|
// of nested structures. If it is omitted, the text will
|
|
// be packed without extra whitespace. If it is a number,
|
|
// it will specify the number of spaces to indent at each
|
|
// level. If it is a string (such as "\t" or " "),
|
|
// it contains the characters used to indent at each level.
|
|
// This method produces a JSON text from a JavaScript value.
|
|
// When an object value is found, if the object contains a toJSON
|
|
// method, its toJSON method will be called and the result will be
|
|
// stringified. A toJSON method does not serialize: it returns the
|
|
// value represented by the name/value pair that should be serialized,
|
|
// or undefined if nothing should be serialized. The toJSON method
|
|
// will be passed the key associated with the value, and this will be
|
|
// bound to the value.
|
|
|
|
// For example, this would serialize Dates as ISO strings.
|
|
|
|
// Date.prototype.toJSON = function (key) {
|
|
// function f(n) {
|
|
// // Format integers to have at least two digits.
|
|
// return (n < 10)
|
|
// ? "0" + n
|
|
// : n;
|
|
// }
|
|
// return this.getUTCFullYear() + "-" +
|
|
// f(this.getUTCMonth() + 1) + "-" +
|
|
// f(this.getUTCDate()) + "T" +
|
|
// f(this.getUTCHours()) + ":" +
|
|
// f(this.getUTCMinutes()) + ":" +
|
|
// f(this.getUTCSeconds()) + "Z";
|
|
// };
|
|
|
|
// You can provide an optional replacer method. It will be passed the
|
|
// key and value of each member, with this bound to the containing
|
|
// object. The value that is returned from your method will be
|
|
// serialized. If your method returns undefined, then the member will
|
|
// be excluded from the serialization.
|
|
|
|
// If the replacer parameter is an array of strings, then it will be
|
|
// used to select the members to be serialized. It filters the results
|
|
// such that only members with keys listed in the replacer array are
|
|
// stringified.
|
|
|
|
// Values that do not have JSON representations, such as undefined or
|
|
// functions, will not be serialized. Such values in objects will be
|
|
// dropped; in arrays they will be replaced with null. You can use
|
|
// a replacer function to replace those with JSON values.
|
|
|
|
// JSON.stringify(undefined) returns undefined.
|
|
|
|
// The optional space parameter produces a stringification of the
|
|
// value that is filled with line breaks and indentation to make it
|
|
// easier to read.
|
|
|
|
// If the space parameter is a non-empty string, then that string will
|
|
// be used for indentation. If the space parameter is a number, then
|
|
// the indentation will be that many spaces.
|
|
|
|
// Example:
|
|
|
|
// text = JSON.stringify(["e", {pluribus: "unum"}]);
|
|
// // text is '["e",{"pluribus":"unum"}]'
|
|
|
|
// text = JSON.stringify(["e", {pluribus: "unum"}], null, "\t");
|
|
// // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
|
|
|
|
// text = JSON.stringify([new Date()], function (key, value) {
|
|
// return this[key] instanceof Date
|
|
// ? "Date(" + this[key] + ")"
|
|
// : value;
|
|
// });
|
|
// // text is '["Date(---current time---)"]'
|
|
|
|
// JSON.parse(text, reviver)
|
|
// This method parses a JSON text to produce an object or array.
|
|
// It can throw a SyntaxError exception.
|
|
|
|
// The optional reviver parameter is a function that can filter and
|
|
// transform the results. It receives each of the keys and values,
|
|
// and its return value is used instead of the original value.
|
|
// If it returns what it received, then the structure is not modified.
|
|
// If it returns undefined then the member is deleted.
|
|
|
|
// Example:
|
|
|
|
// // Parse the text. Values that look like ISO date strings will
|
|
// // be converted to Date objects.
|
|
|
|
// myData = JSON.parse(text, function (key, value) {
|
|
// var a;
|
|
// if (typeof value === "string") {
|
|
// a =
|
|
// /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
|
|
// if (a) {
|
|
// return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
|
|
// +a[5], +a[6]));
|
|
// }
|
|
// }
|
|
// return value;
|
|
// });
|
|
|
|
// myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
|
|
// var d;
|
|
// if (typeof value === "string" &&
|
|
// value.slice(0, 5) === "Date(" &&
|
|
// value.slice(-1) === ")") {
|
|
// d = new Date(value.slice(5, -1));
|
|
// if (d) {
|
|
// return d;
|
|
// }
|
|
// }
|
|
// return value;
|
|
// });
|
|
|
|
// This is a reference implementation. You are free to copy, modify, or
|
|
// redistribute.
|
|
|
|
/*jslint
|
|
eval, for, this
|
|
*/
|
|
|
|
/*property
|
|
JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
|
|
getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
|
|
lastIndex, length, parse, prototype, push, replace, slice, stringify,
|
|
test, toJSON, toString, valueOf
|
|
*/
|
|
|
|
|
|
// Create a JSON object only if one does not already exist. We create the
|
|
// methods in a closure to avoid creating global variables.
|
|
|
|
if (typeof JSON !== "object") {
|
|
JSON = {};
|
|
}
|
|
|
|
(function () {
|
|
"use strict";
|
|
|
|
var rx_one = /^[\],:{}\s]*$/;
|
|
var rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;
|
|
var rx_three = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
|
|
var rx_four = /(?:^|:|,)(?:\s*\[)+/g;
|
|
var rx_escapable = /[\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
|
|
var rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
|
|
|
|
function f(n) {
|
|
// Format integers to have at least two digits.
|
|
return n < 10
|
|
? "0" + n
|
|
: n;
|
|
}
|
|
|
|
function this_value() {
|
|
return this.valueOf();
|
|
}
|
|
|
|
if (typeof Date.prototype.toJSON !== "function") {
|
|
|
|
Date.prototype.toJSON = function () {
|
|
|
|
return isFinite(this.valueOf())
|
|
? this.getUTCFullYear() + "-" +
|
|
f(this.getUTCMonth() + 1) + "-" +
|
|
f(this.getUTCDate()) + "T" +
|
|
f(this.getUTCHours()) + ":" +
|
|
f(this.getUTCMinutes()) + ":" +
|
|
f(this.getUTCSeconds()) + "Z"
|
|
: null;
|
|
};
|
|
|
|
Boolean.prototype.toJSON = this_value;
|
|
Number.prototype.toJSON = this_value;
|
|
String.prototype.toJSON = this_value;
|
|
}
|
|
|
|
var gap;
|
|
var indent;
|
|
var meta;
|
|
var rep;
|
|
|
|
|
|
function quote(string) {
|
|
|
|
// If the string contains no control characters, no quote characters, and no
|
|
// backslash characters, then we can safely slap some quotes around it.
|
|
// Otherwise we must also replace the offending characters with safe escape
|
|
// sequences.
|
|
|
|
rx_escapable.lastIndex = 0;
|
|
return rx_escapable.test(string)
|
|
? "\"" + string.replace(rx_escapable, function (a) {
|
|
var c = meta[a];
|
|
return typeof c === "string"
|
|
? c
|
|
: "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);
|
|
}) + "\""
|
|
: "\"" + string + "\"";
|
|
}
|
|
|
|
|
|
function str(key, holder) {
|
|
|
|
// Produce a string from holder[key].
|
|
|
|
var i; // The loop counter.
|
|
var k; // The member key.
|
|
var v; // The member value.
|
|
var length;
|
|
var mind = gap;
|
|
var partial;
|
|
var value = holder[key];
|
|
|
|
// If the value has a toJSON method, call it to obtain a replacement value.
|
|
|
|
if (value && typeof value === "object" &&
|
|
typeof value.toJSON === "function") {
|
|
value = value.toJSON(key);
|
|
}
|
|
|
|
// If we were called with a replacer function, then call the replacer to
|
|
// obtain a replacement value.
|
|
|
|
if (typeof rep === "function") {
|
|
value = rep.call(holder, key, value);
|
|
}
|
|
|
|
// What happens next depends on the value's type.
|
|
|
|
switch (typeof value) {
|
|
case "string":
|
|
return quote(value);
|
|
|
|
case "number":
|
|
|
|
// JSON numbers must be finite. Encode non-finite numbers as null.
|
|
|
|
return isFinite(value)
|
|
? String(value)
|
|
: "null";
|
|
|
|
case "boolean":
|
|
case "null":
|
|
|
|
// If the value is a boolean or null, convert it to a string. Note:
|
|
// typeof null does not produce "null". The case is included here in
|
|
// the remote chance that this gets fixed someday.
|
|
|
|
return String(value);
|
|
|
|
// If the type is "object", we might be dealing with an object or an array or
|
|
// null.
|
|
|
|
case "object":
|
|
|
|
// Due to a specification blunder in ECMAScript, typeof null is "object",
|
|
// so watch out for that case.
|
|
|
|
if (!value) {
|
|
return "null";
|
|
}
|
|
|
|
// Make an array to hold the partial results of stringifying this object value.
|
|
|
|
gap += indent;
|
|
partial = [];
|
|
|
|
// Is the value an array?
|
|
|
|
if (Object.prototype.toString.apply(value) === "[object Array]") {
|
|
|
|
// The value is an array. Stringify every element. Use null as a placeholder
|
|
// for non-JSON values.
|
|
|
|
length = value.length;
|
|
for (i = 0; i < length; i += 1) {
|
|
partial[i] = str(i, value) || "null";
|
|
}
|
|
|
|
// Join all of the elements together, separated with commas, and wrap them in
|
|
// brackets.
|
|
|
|
v = partial.length === 0
|
|
? "[]"
|
|
: gap
|
|
? "[\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "]"
|
|
: "[" + partial.join(",") + "]";
|
|
gap = mind;
|
|
return v;
|
|
}
|
|
|
|
// If the replacer is an array, use it to select the members to be stringified.
|
|
|
|
if (rep && typeof rep === "object") {
|
|
length = rep.length;
|
|
for (i = 0; i < length; i += 1) {
|
|
if (typeof rep[i] === "string") {
|
|
k = rep[i];
|
|
v = str(k, value);
|
|
if (v) {
|
|
partial.push(quote(k) + (
|
|
gap
|
|
? ": "
|
|
: ":"
|
|
) + v);
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
|
|
// Otherwise, iterate through all of the keys in the object.
|
|
|
|
for (k in value) {
|
|
if (Object.prototype.hasOwnProperty.call(value, k)) {
|
|
v = str(k, value);
|
|
if (v) {
|
|
partial.push(quote(k) + (
|
|
gap
|
|
? ": "
|
|
: ":"
|
|
) + v);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Join all of the member texts together, separated with commas,
|
|
// and wrap them in braces.
|
|
|
|
v = partial.length === 0
|
|
? "{}"
|
|
: gap
|
|
? "{\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "}"
|
|
: "{" + partial.join(",") + "}";
|
|
gap = mind;
|
|
return v;
|
|
}
|
|
}
|
|
|
|
// If the JSON object does not yet have a stringify method, give it one.
|
|
|
|
if (typeof JSON.stringify !== "function") {
|
|
meta = { // table of character substitutions
|
|
"\b": "\\b",
|
|
"\t": "\\t",
|
|
"\n": "\\n",
|
|
"\f": "\\f",
|
|
"\r": "\\r",
|
|
"\"": "\\\"",
|
|
"\\": "\\\\"
|
|
};
|
|
JSON.stringify = function (value, replacer, space) {
|
|
|
|
// The stringify method takes a value and an optional replacer, and an optional
|
|
// space parameter, and returns a JSON text. The replacer can be a function
|
|
// that can replace values, or an array of strings that will select the keys.
|
|
// A default replacer method can be provided. Use of the space parameter can
|
|
// produce text that is more easily readable.
|
|
|
|
var i;
|
|
gap = "";
|
|
indent = "";
|
|
|
|
// If the space parameter is a number, make an indent string containing that
|
|
// many spaces.
|
|
|
|
if (typeof space === "number") {
|
|
for (i = 0; i < space; i += 1) {
|
|
indent += " ";
|
|
}
|
|
|
|
// If the space parameter is a string, it will be used as the indent string.
|
|
|
|
} else if (typeof space === "string") {
|
|
indent = space;
|
|
}
|
|
|
|
// If there is a replacer, it must be a function or an array.
|
|
// Otherwise, throw an error.
|
|
|
|
rep = replacer;
|
|
if (replacer && typeof replacer !== "function" &&
|
|
(typeof replacer !== "object" ||
|
|
typeof replacer.length !== "number")) {
|
|
throw new Error("JSON.stringify");
|
|
}
|
|
|
|
// Make a fake root object containing our value under the key of "".
|
|
// Return the result of stringifying the value.
|
|
|
|
return str("", {"": value});
|
|
};
|
|
}
|
|
|
|
|
|
// If the JSON object does not yet have a parse method, give it one.
|
|
|
|
if (typeof JSON.parse !== "function") {
|
|
JSON.parse = function (text, reviver) {
|
|
|
|
// The parse method takes a text and an optional reviver function, and returns
|
|
// a JavaScript value if the text is a valid JSON text.
|
|
|
|
var j;
|
|
|
|
function walk(holder, key) {
|
|
|
|
// The walk method is used to recursively walk the resulting structure so
|
|
// that modifications can be made.
|
|
|
|
var k;
|
|
var v;
|
|
var value = holder[key];
|
|
if (value && typeof value === "object") {
|
|
for (k in value) {
|
|
if (Object.prototype.hasOwnProperty.call(value, k)) {
|
|
v = walk(value, k);
|
|
if (v !== undefined) {
|
|
value[k] = v;
|
|
} else {
|
|
delete value[k];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return reviver.call(holder, key, value);
|
|
}
|
|
|
|
|
|
// Parsing happens in four stages. In the first stage, we replace certain
|
|
// Unicode characters with escape sequences. JavaScript handles many characters
|
|
// incorrectly, either silently deleting them, or treating them as line endings.
|
|
|
|
text = String(text);
|
|
rx_dangerous.lastIndex = 0;
|
|
if (rx_dangerous.test(text)) {
|
|
text = text.replace(rx_dangerous, function (a) {
|
|
return "\\u" +
|
|
("0000" + a.charCodeAt(0).toString(16)).slice(-4);
|
|
});
|
|
}
|
|
|
|
// In the second stage, we run the text against regular expressions that look
|
|
// for non-JSON patterns. We are especially concerned with "()" and "new"
|
|
// because they can cause invocation, and "=" because it can cause mutation.
|
|
// But just to be safe, we want to reject all unexpected forms.
|
|
|
|
// We split the second stage into 4 regexp operations in order to work around
|
|
// crippling inefficiencies in IE's and Safari's regexp engines. First we
|
|
// replace the JSON backslash pairs with "@" (a non-JSON character). Second, we
|
|
// replace all simple value tokens with "]" characters. Third, we delete all
|
|
// open brackets that follow a colon or comma or that begin the text. Finally,
|
|
// we look to see that the remaining characters are only whitespace or "]" or
|
|
// "," or ":" or "{" or "}". If that is so, then the text is safe for eval.
|
|
|
|
if (
|
|
rx_one.test(
|
|
text
|
|
.replace(rx_two, "@")
|
|
.replace(rx_three, "]")
|
|
.replace(rx_four, "")
|
|
)
|
|
) {
|
|
|
|
// In the third stage we use the eval function to compile the text into a
|
|
// JavaScript structure. The "{" operator is subject to a syntactic ambiguity
|
|
// in JavaScript: it can begin a block or an object literal. We wrap the text
|
|
// in parens to eliminate the ambiguity.
|
|
|
|
j = eval("(" + text + ")");
|
|
|
|
// In the optional fourth stage, we recursively walk the new structure, passing
|
|
// each name/value pair to a reviver function for possible transformation.
|
|
|
|
return (typeof reviver === "function")
|
|
? walk({"": j}, "")
|
|
: j;
|
|
}
|
|
|
|
// If the text is not JSON parseable, then a SyntaxError is thrown.
|
|
|
|
throw new SyntaxError("JSON.parse");
|
|
};
|
|
}
|
|
}());
|
|
|
|
/***/ }),
|
|
|
|
/***/ 62195:
|
|
/*!************************************************!*\
|
|
!*** ./node_modules/store/src/store-engine.js ***!
|
|
\************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
var util = __webpack_require__(/*! ./util */ 69078)
|
|
var slice = util.slice
|
|
var pluck = util.pluck
|
|
var each = util.each
|
|
var bind = util.bind
|
|
var create = util.create
|
|
var isList = util.isList
|
|
var isFunction = util.isFunction
|
|
var isObject = util.isObject
|
|
|
|
module.exports = {
|
|
createStore: createStore
|
|
}
|
|
|
|
var storeAPI = {
|
|
version: '2.0.12',
|
|
enabled: false,
|
|
|
|
// get returns the value of the given key. If that value
|
|
// is undefined, it returns optionalDefaultValue instead.
|
|
get: function(key, optionalDefaultValue) {
|
|
var data = this.storage.read(this._namespacePrefix + key)
|
|
return this._deserialize(data, optionalDefaultValue)
|
|
},
|
|
|
|
// set will store the given value at key and returns value.
|
|
// Calling set with value === undefined is equivalent to calling remove.
|
|
set: function(key, value) {
|
|
if (value === undefined) {
|
|
return this.remove(key)
|
|
}
|
|
this.storage.write(this._namespacePrefix + key, this._serialize(value))
|
|
return value
|
|
},
|
|
|
|
// remove deletes the key and value stored at the given key.
|
|
remove: function(key) {
|
|
this.storage.remove(this._namespacePrefix + key)
|
|
},
|
|
|
|
// each will call the given callback once for each key-value pair
|
|
// in this store.
|
|
each: function(callback) {
|
|
var self = this
|
|
this.storage.each(function(val, namespacedKey) {
|
|
callback.call(self, self._deserialize(val), (namespacedKey || '').replace(self._namespaceRegexp, ''))
|
|
})
|
|
},
|
|
|
|
// clearAll will remove all the stored key-value pairs in this store.
|
|
clearAll: function() {
|
|
this.storage.clearAll()
|
|
},
|
|
|
|
// additional functionality that can't live in plugins
|
|
// ---------------------------------------------------
|
|
|
|
// hasNamespace returns true if this store instance has the given namespace.
|
|
hasNamespace: function(namespace) {
|
|
return (this._namespacePrefix == '__storejs_'+namespace+'_')
|
|
},
|
|
|
|
// createStore creates a store.js instance with the first
|
|
// functioning storage in the list of storage candidates,
|
|
// and applies the the given mixins to the instance.
|
|
createStore: function() {
|
|
return createStore.apply(this, arguments)
|
|
},
|
|
|
|
addPlugin: function(plugin) {
|
|
this._addPlugin(plugin)
|
|
},
|
|
|
|
namespace: function(namespace) {
|
|
return createStore(this.storage, this.plugins, namespace)
|
|
}
|
|
}
|
|
|
|
function _warn() {
|
|
var _console = (typeof console == 'undefined' ? null : console)
|
|
if (!_console) { return }
|
|
var fn = (_console.warn ? _console.warn : _console.log)
|
|
fn.apply(_console, arguments)
|
|
}
|
|
|
|
function createStore(storages, plugins, namespace) {
|
|
if (!namespace) {
|
|
namespace = ''
|
|
}
|
|
if (storages && !isList(storages)) {
|
|
storages = [storages]
|
|
}
|
|
if (plugins && !isList(plugins)) {
|
|
plugins = [plugins]
|
|
}
|
|
|
|
var namespacePrefix = (namespace ? '__storejs_'+namespace+'_' : '')
|
|
var namespaceRegexp = (namespace ? new RegExp('^'+namespacePrefix) : null)
|
|
var legalNamespaces = /^[a-zA-Z0-9_\-]*$/ // alpha-numeric + underscore and dash
|
|
if (!legalNamespaces.test(namespace)) {
|
|
throw new Error('store.js namespaces can only have alphanumerics + underscores and dashes')
|
|
}
|
|
|
|
var _privateStoreProps = {
|
|
_namespacePrefix: namespacePrefix,
|
|
_namespaceRegexp: namespaceRegexp,
|
|
|
|
_testStorage: function(storage) {
|
|
try {
|
|
var testStr = '__storejs__test__'
|
|
storage.write(testStr, testStr)
|
|
var ok = (storage.read(testStr) === testStr)
|
|
storage.remove(testStr)
|
|
return ok
|
|
} catch(e) {
|
|
return false
|
|
}
|
|
},
|
|
|
|
_assignPluginFnProp: function(pluginFnProp, propName) {
|
|
var oldFn = this[propName]
|
|
this[propName] = function pluginFn() {
|
|
var args = slice(arguments, 0)
|
|
var self = this
|
|
|
|
// super_fn calls the old function which was overwritten by
|
|
// this mixin.
|
|
function super_fn() {
|
|
if (!oldFn) { return }
|
|
each(arguments, function(arg, i) {
|
|
args[i] = arg
|
|
})
|
|
return oldFn.apply(self, args)
|
|
}
|
|
|
|
// Give mixing function access to super_fn by prefixing all mixin function
|
|
// arguments with super_fn.
|
|
var newFnArgs = [super_fn].concat(args)
|
|
|
|
return pluginFnProp.apply(self, newFnArgs)
|
|
}
|
|
},
|
|
|
|
_serialize: function(obj) {
|
|
return JSON.stringify(obj)
|
|
},
|
|
|
|
_deserialize: function(strVal, defaultVal) {
|
|
if (!strVal) { return defaultVal }
|
|
// It is possible that a raw string value has been previously stored
|
|
// in a storage without using store.js, meaning it will be a raw
|
|
// string value instead of a JSON serialized string. By defaulting
|
|
// to the raw string value in case of a JSON parse error, we allow
|
|
// for past stored values to be forwards-compatible with store.js
|
|
var val = ''
|
|
try { val = JSON.parse(strVal) }
|
|
catch(e) { val = strVal }
|
|
|
|
return (val !== undefined ? val : defaultVal)
|
|
},
|
|
|
|
_addStorage: function(storage) {
|
|
if (this.enabled) { return }
|
|
if (this._testStorage(storage)) {
|
|
this.storage = storage
|
|
this.enabled = true
|
|
}
|
|
},
|
|
|
|
_addPlugin: function(plugin) {
|
|
var self = this
|
|
|
|
// If the plugin is an array, then add all plugins in the array.
|
|
// This allows for a plugin to depend on other plugins.
|
|
if (isList(plugin)) {
|
|
each(plugin, function(plugin) {
|
|
self._addPlugin(plugin)
|
|
})
|
|
return
|
|
}
|
|
|
|
// Keep track of all plugins we've seen so far, so that we
|
|
// don't add any of them twice.
|
|
var seenPlugin = pluck(this.plugins, function(seenPlugin) {
|
|
return (plugin === seenPlugin)
|
|
})
|
|
if (seenPlugin) {
|
|
return
|
|
}
|
|
this.plugins.push(plugin)
|
|
|
|
// Check that the plugin is properly formed
|
|
if (!isFunction(plugin)) {
|
|
throw new Error('Plugins must be function values that return objects')
|
|
}
|
|
|
|
var pluginProperties = plugin.call(this)
|
|
if (!isObject(pluginProperties)) {
|
|
throw new Error('Plugins must return an object of function properties')
|
|
}
|
|
|
|
// Add the plugin function properties to this store instance.
|
|
each(pluginProperties, function(pluginFnProp, propName) {
|
|
if (!isFunction(pluginFnProp)) {
|
|
throw new Error('Bad plugin property: '+propName+' from plugin '+plugin.name+'. Plugins should only return functions.')
|
|
}
|
|
self._assignPluginFnProp(pluginFnProp, propName)
|
|
})
|
|
},
|
|
|
|
// Put deprecated properties in the private API, so as to not expose it to accidential
|
|
// discovery through inspection of the store object.
|
|
|
|
// Deprecated: addStorage
|
|
addStorage: function(storage) {
|
|
_warn('store.addStorage(storage) is deprecated. Use createStore([storages])')
|
|
this._addStorage(storage)
|
|
}
|
|
}
|
|
|
|
var store = create(_privateStoreProps, storeAPI, {
|
|
plugins: []
|
|
})
|
|
store.raw = {}
|
|
each(store, function(prop, propName) {
|
|
if (isFunction(prop)) {
|
|
store.raw[propName] = bind(store, prop)
|
|
}
|
|
})
|
|
each(storages, function(storage) {
|
|
store._addStorage(storage)
|
|
})
|
|
each(plugins, function(plugin) {
|
|
store._addPlugin(plugin)
|
|
})
|
|
return store
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 69078:
|
|
/*!****************************************!*\
|
|
!*** ./node_modules/store/src/util.js ***!
|
|
\****************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
var assign = make_assign()
|
|
var create = make_create()
|
|
var trim = make_trim()
|
|
var Global = (typeof window !== 'undefined' ? window : __webpack_require__.g)
|
|
|
|
module.exports = {
|
|
assign: assign,
|
|
create: create,
|
|
trim: trim,
|
|
bind: bind,
|
|
slice: slice,
|
|
each: each,
|
|
map: map,
|
|
pluck: pluck,
|
|
isList: isList,
|
|
isFunction: isFunction,
|
|
isObject: isObject,
|
|
Global: Global
|
|
}
|
|
|
|
function make_assign() {
|
|
if (Object.assign) {
|
|
return Object.assign
|
|
} else {
|
|
return function shimAssign(obj, props1, props2, etc) {
|
|
for (var i = 1; i < arguments.length; i++) {
|
|
each(Object(arguments[i]), function(val, key) {
|
|
obj[key] = val
|
|
})
|
|
}
|
|
return obj
|
|
}
|
|
}
|
|
}
|
|
|
|
function make_create() {
|
|
if (Object.create) {
|
|
return function create(obj, assignProps1, assignProps2, etc) {
|
|
var assignArgsList = slice(arguments, 1)
|
|
return assign.apply(this, [Object.create(obj)].concat(assignArgsList))
|
|
}
|
|
} else {
|
|
function F() {} // eslint-disable-line no-inner-declarations
|
|
return function create(obj, assignProps1, assignProps2, etc) {
|
|
var assignArgsList = slice(arguments, 1)
|
|
F.prototype = obj
|
|
return assign.apply(this, [new F()].concat(assignArgsList))
|
|
}
|
|
}
|
|
}
|
|
|
|
function make_trim() {
|
|
if (String.prototype.trim) {
|
|
return function trim(str) {
|
|
return String.prototype.trim.call(str)
|
|
}
|
|
} else {
|
|
return function trim(str) {
|
|
return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '')
|
|
}
|
|
}
|
|
}
|
|
|
|
function bind(obj, fn) {
|
|
return function() {
|
|
return fn.apply(obj, Array.prototype.slice.call(arguments, 0))
|
|
}
|
|
}
|
|
|
|
function slice(arr, index) {
|
|
return Array.prototype.slice.call(arr, index || 0)
|
|
}
|
|
|
|
function each(obj, fn) {
|
|
pluck(obj, function(val, key) {
|
|
fn(val, key)
|
|
return false
|
|
})
|
|
}
|
|
|
|
function map(obj, fn) {
|
|
var res = (isList(obj) ? [] : {})
|
|
pluck(obj, function(v, k) {
|
|
res[k] = fn(v, k)
|
|
return false
|
|
})
|
|
return res
|
|
}
|
|
|
|
function pluck(obj, fn) {
|
|
if (isList(obj)) {
|
|
for (var i=0; i<obj.length; i++) {
|
|
if (fn(obj[i], i)) {
|
|
return obj[i]
|
|
}
|
|
}
|
|
} else {
|
|
for (var key in obj) {
|
|
if (obj.hasOwnProperty(key)) {
|
|
if (fn(obj[key], key)) {
|
|
return obj[key]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function isList(val) {
|
|
return (val != null && typeof val != 'function' && typeof val.length == 'number')
|
|
}
|
|
|
|
function isFunction(val) {
|
|
return val && {}.toString.call(val) === '[object Function]'
|
|
}
|
|
|
|
function isObject(val) {
|
|
return val && {}.toString.call(val) === '[object Object]'
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 39015:
|
|
/*!********************************************!*\
|
|
!*** ./node_modules/store/storages/all.js ***!
|
|
\********************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
module.exports = [
|
|
// Listed in order of usage preference
|
|
__webpack_require__(/*! ./localStorage */ 39627),
|
|
__webpack_require__(/*! ./oldFF-globalStorage */ 95347),
|
|
__webpack_require__(/*! ./oldIE-userDataStorage */ 34524),
|
|
__webpack_require__(/*! ./cookieStorage */ 45580),
|
|
__webpack_require__(/*! ./sessionStorage */ 58855),
|
|
__webpack_require__(/*! ./memoryStorage */ 8728)
|
|
]
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 45580:
|
|
/*!******************************************************!*\
|
|
!*** ./node_modules/store/storages/cookieStorage.js ***!
|
|
\******************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
// cookieStorage is useful Safari private browser mode, where localStorage
|
|
// doesn't work but cookies do. This implementation is adopted from
|
|
// https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage
|
|
|
|
var util = __webpack_require__(/*! ../src/util */ 69078)
|
|
var Global = util.Global
|
|
var trim = util.trim
|
|
|
|
module.exports = {
|
|
name: 'cookieStorage',
|
|
read: read,
|
|
write: write,
|
|
each: each,
|
|
remove: remove,
|
|
clearAll: clearAll,
|
|
}
|
|
|
|
var doc = Global.document
|
|
|
|
function read(key) {
|
|
if (!key || !_has(key)) { return null }
|
|
var regexpStr = "(?:^|.*;\\s*)" +
|
|
escape(key).replace(/[\-\.\+\*]/g, "\\$&") +
|
|
"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*"
|
|
return unescape(doc.cookie.replace(new RegExp(regexpStr), "$1"))
|
|
}
|
|
|
|
function each(callback) {
|
|
var cookies = doc.cookie.split(/; ?/g)
|
|
for (var i = cookies.length - 1; i >= 0; i--) {
|
|
if (!trim(cookies[i])) {
|
|
continue
|
|
}
|
|
var kvp = cookies[i].split('=')
|
|
var key = unescape(kvp[0])
|
|
var val = unescape(kvp[1])
|
|
callback(val, key)
|
|
}
|
|
}
|
|
|
|
function write(key, data) {
|
|
if(!key) { return }
|
|
doc.cookie = escape(key) + "=" + escape(data) + "; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"
|
|
}
|
|
|
|
function remove(key) {
|
|
if (!key || !_has(key)) {
|
|
return
|
|
}
|
|
doc.cookie = escape(key) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"
|
|
}
|
|
|
|
function clearAll() {
|
|
each(function(_, key) {
|
|
remove(key)
|
|
})
|
|
}
|
|
|
|
function _has(key) {
|
|
return (new RegExp("(?:^|;\\s*)" + escape(key).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(doc.cookie)
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 39627:
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/store/storages/localStorage.js ***!
|
|
\*****************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
var util = __webpack_require__(/*! ../src/util */ 69078)
|
|
var Global = util.Global
|
|
|
|
module.exports = {
|
|
name: 'localStorage',
|
|
read: read,
|
|
write: write,
|
|
each: each,
|
|
remove: remove,
|
|
clearAll: clearAll,
|
|
}
|
|
|
|
function localStorage() {
|
|
return Global.localStorage
|
|
}
|
|
|
|
function read(key) {
|
|
return localStorage().getItem(key)
|
|
}
|
|
|
|
function write(key, data) {
|
|
return localStorage().setItem(key, data)
|
|
}
|
|
|
|
function each(fn) {
|
|
for (var i = localStorage().length - 1; i >= 0; i--) {
|
|
var key = localStorage().key(i)
|
|
fn(read(key), key)
|
|
}
|
|
}
|
|
|
|
function remove(key) {
|
|
return localStorage().removeItem(key)
|
|
}
|
|
|
|
function clearAll() {
|
|
return localStorage().clear()
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 8728:
|
|
/*!******************************************************!*\
|
|
!*** ./node_modules/store/storages/memoryStorage.js ***!
|
|
\******************************************************/
|
|
/***/ (function(module) {
|
|
|
|
// memoryStorage is a useful last fallback to ensure that the store
|
|
// is functions (meaning store.get(), store.set(), etc will all function).
|
|
// However, stored values will not persist when the browser navigates to
|
|
// a new page or reloads the current page.
|
|
|
|
module.exports = {
|
|
name: 'memoryStorage',
|
|
read: read,
|
|
write: write,
|
|
each: each,
|
|
remove: remove,
|
|
clearAll: clearAll,
|
|
}
|
|
|
|
var memoryStorage = {}
|
|
|
|
function read(key) {
|
|
return memoryStorage[key]
|
|
}
|
|
|
|
function write(key, data) {
|
|
memoryStorage[key] = data
|
|
}
|
|
|
|
function each(callback) {
|
|
for (var key in memoryStorage) {
|
|
if (memoryStorage.hasOwnProperty(key)) {
|
|
callback(memoryStorage[key], key)
|
|
}
|
|
}
|
|
}
|
|
|
|
function remove(key) {
|
|
delete memoryStorage[key]
|
|
}
|
|
|
|
function clearAll(key) {
|
|
memoryStorage = {}
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 95347:
|
|
/*!************************************************************!*\
|
|
!*** ./node_modules/store/storages/oldFF-globalStorage.js ***!
|
|
\************************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
// oldFF-globalStorage provides storage for Firefox
|
|
// versions 6 and 7, where no localStorage, etc
|
|
// is available.
|
|
|
|
var util = __webpack_require__(/*! ../src/util */ 69078)
|
|
var Global = util.Global
|
|
|
|
module.exports = {
|
|
name: 'oldFF-globalStorage',
|
|
read: read,
|
|
write: write,
|
|
each: each,
|
|
remove: remove,
|
|
clearAll: clearAll,
|
|
}
|
|
|
|
var globalStorage = Global.globalStorage
|
|
|
|
function read(key) {
|
|
return globalStorage[key]
|
|
}
|
|
|
|
function write(key, data) {
|
|
globalStorage[key] = data
|
|
}
|
|
|
|
function each(fn) {
|
|
for (var i = globalStorage.length - 1; i >= 0; i--) {
|
|
var key = globalStorage.key(i)
|
|
fn(globalStorage[key], key)
|
|
}
|
|
}
|
|
|
|
function remove(key) {
|
|
return globalStorage.removeItem(key)
|
|
}
|
|
|
|
function clearAll() {
|
|
each(function(key, _) {
|
|
delete globalStorage[key]
|
|
})
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 34524:
|
|
/*!**************************************************************!*\
|
|
!*** ./node_modules/store/storages/oldIE-userDataStorage.js ***!
|
|
\**************************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
// oldIE-userDataStorage provides storage for Internet Explorer
|
|
// versions 6 and 7, where no localStorage, sessionStorage, etc
|
|
// is available.
|
|
|
|
var util = __webpack_require__(/*! ../src/util */ 69078)
|
|
var Global = util.Global
|
|
|
|
module.exports = {
|
|
name: 'oldIE-userDataStorage',
|
|
write: write,
|
|
read: read,
|
|
each: each,
|
|
remove: remove,
|
|
clearAll: clearAll,
|
|
}
|
|
|
|
var storageName = 'storejs'
|
|
var doc = Global.document
|
|
var _withStorageEl = _makeIEStorageElFunction()
|
|
var disable = (Global.navigator ? Global.navigator.userAgent : '').match(/ (MSIE 8|MSIE 9|MSIE 10)\./) // MSIE 9.x, MSIE 10.x
|
|
|
|
function write(unfixedKey, data) {
|
|
if (disable) { return }
|
|
var fixedKey = fixKey(unfixedKey)
|
|
_withStorageEl(function(storageEl) {
|
|
storageEl.setAttribute(fixedKey, data)
|
|
storageEl.save(storageName)
|
|
})
|
|
}
|
|
|
|
function read(unfixedKey) {
|
|
if (disable) { return }
|
|
var fixedKey = fixKey(unfixedKey)
|
|
var res = null
|
|
_withStorageEl(function(storageEl) {
|
|
res = storageEl.getAttribute(fixedKey)
|
|
})
|
|
return res
|
|
}
|
|
|
|
function each(callback) {
|
|
_withStorageEl(function(storageEl) {
|
|
var attributes = storageEl.XMLDocument.documentElement.attributes
|
|
for (var i=attributes.length-1; i>=0; i--) {
|
|
var attr = attributes[i]
|
|
callback(storageEl.getAttribute(attr.name), attr.name)
|
|
}
|
|
})
|
|
}
|
|
|
|
function remove(unfixedKey) {
|
|
var fixedKey = fixKey(unfixedKey)
|
|
_withStorageEl(function(storageEl) {
|
|
storageEl.removeAttribute(fixedKey)
|
|
storageEl.save(storageName)
|
|
})
|
|
}
|
|
|
|
function clearAll() {
|
|
_withStorageEl(function(storageEl) {
|
|
var attributes = storageEl.XMLDocument.documentElement.attributes
|
|
storageEl.load(storageName)
|
|
for (var i=attributes.length-1; i>=0; i--) {
|
|
storageEl.removeAttribute(attributes[i].name)
|
|
}
|
|
storageEl.save(storageName)
|
|
})
|
|
}
|
|
|
|
// Helpers
|
|
//////////
|
|
|
|
// In IE7, keys cannot start with a digit or contain certain chars.
|
|
// See https://github.com/marcuswestin/store.js/issues/40
|
|
// See https://github.com/marcuswestin/store.js/issues/83
|
|
var forbiddenCharsRegex = new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]", "g")
|
|
function fixKey(key) {
|
|
return key.replace(/^\d/, '___$&').replace(forbiddenCharsRegex, '___')
|
|
}
|
|
|
|
function _makeIEStorageElFunction() {
|
|
if (!doc || !doc.documentElement || !doc.documentElement.addBehavior) {
|
|
return null
|
|
}
|
|
var scriptTag = 'script',
|
|
storageOwner,
|
|
storageContainer,
|
|
storageEl
|
|
|
|
// Since #userData storage applies only to specific paths, we need to
|
|
// somehow link our data to a specific path. We choose /favicon.ico
|
|
// as a pretty safe option, since all browsers already make a request to
|
|
// this URL anyway and being a 404 will not hurt us here. We wrap an
|
|
// iframe pointing to the favicon in an ActiveXObject(htmlfile) object
|
|
// (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)
|
|
// since the iframe access rules appear to allow direct access and
|
|
// manipulation of the document element, even for a 404 page. This
|
|
// document can be used instead of the current document (which would
|
|
// have been limited to the current path) to perform #userData storage.
|
|
try {
|
|
/* global ActiveXObject */
|
|
storageContainer = new ActiveXObject('htmlfile')
|
|
storageContainer.open()
|
|
storageContainer.write('<'+scriptTag+'>document.w=window</'+scriptTag+'><iframe src="/favicon.ico"></iframe>')
|
|
storageContainer.close()
|
|
storageOwner = storageContainer.w.frames[0].document
|
|
storageEl = storageOwner.createElement('div')
|
|
} catch(e) {
|
|
// somehow ActiveXObject instantiation failed (perhaps some special
|
|
// security settings or otherwse), fall back to per-path storage
|
|
storageEl = doc.createElement('div')
|
|
storageOwner = doc.body
|
|
}
|
|
|
|
return function(storeFunction) {
|
|
var args = [].slice.call(arguments, 0)
|
|
args.unshift(storageEl)
|
|
// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
|
|
// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
|
|
storageOwner.appendChild(storageEl)
|
|
storageEl.addBehavior('#default#userData')
|
|
storageEl.load(storageName)
|
|
storeFunction.apply(this, args)
|
|
storageOwner.removeChild(storageEl)
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 58855:
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/store/storages/sessionStorage.js ***!
|
|
\*******************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
var util = __webpack_require__(/*! ../src/util */ 69078)
|
|
var Global = util.Global
|
|
|
|
module.exports = {
|
|
name: 'sessionStorage',
|
|
read: read,
|
|
write: write,
|
|
each: each,
|
|
remove: remove,
|
|
clearAll: clearAll
|
|
}
|
|
|
|
function sessionStorage() {
|
|
return Global.sessionStorage
|
|
}
|
|
|
|
function read(key) {
|
|
return sessionStorage().getItem(key)
|
|
}
|
|
|
|
function write(key, data) {
|
|
return sessionStorage().setItem(key, data)
|
|
}
|
|
|
|
function each(fn) {
|
|
for (var i = sessionStorage().length - 1; i >= 0; i--) {
|
|
var key = sessionStorage().key(i)
|
|
fn(read(key), key)
|
|
}
|
|
}
|
|
|
|
function remove(key) {
|
|
return sessionStorage().removeItem(key)
|
|
}
|
|
|
|
function clearAll() {
|
|
return sessionStorage().clear()
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 11742:
|
|
/*!************************************************!*\
|
|
!*** ./node_modules/toggle-selection/index.js ***!
|
|
\************************************************/
|
|
/***/ (function(module) {
|
|
|
|
|
|
module.exports = function () {
|
|
var selection = document.getSelection();
|
|
if (!selection.rangeCount) {
|
|
return function () {};
|
|
}
|
|
var active = document.activeElement;
|
|
|
|
var ranges = [];
|
|
for (var i = 0; i < selection.rangeCount; i++) {
|
|
ranges.push(selection.getRangeAt(i));
|
|
}
|
|
|
|
switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML
|
|
case 'INPUT':
|
|
case 'TEXTAREA':
|
|
active.blur();
|
|
break;
|
|
|
|
default:
|
|
active = null;
|
|
break;
|
|
}
|
|
|
|
selection.removeAllRanges();
|
|
return function () {
|
|
selection.type === 'Caret' &&
|
|
selection.removeAllRanges();
|
|
|
|
if (!selection.rangeCount) {
|
|
ranges.forEach(function(range) {
|
|
selection.addRange(range);
|
|
});
|
|
}
|
|
|
|
active &&
|
|
active.focus();
|
|
};
|
|
};
|
|
|
|
|
|
/***/ })
|
|
|
|
}]); |