|
|
(self["webpackChunk"] = self["webpackChunk"] || []).push([[42187,81976,67390,35479,89777],{
|
|
|
|
|
|
/***/ 18429:
|
|
|
/*!************************************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/CloseCircleOutlined.js + 1 modules ***!
|
|
|
\************************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ icons_CloseCircleOutlined; }
|
|
|
});
|
|
|
|
|
|
// 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/CloseCircleOutlined.js
|
|
|
// This icon file is generated automatically.
|
|
|
var CloseCircleOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M685.4 354.8c0-4.4-3.6-8-8-8l-66 .3L512 465.6l-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155L340.5 670a8.32 8.32 0 00-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3L512 564.4l99.3 118.4 66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.5 515l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z" } }, { "tag": "path", "attrs": { "d": "M512 65C264.6 65 64 265.6 64 513s200.6 448 448 448 448-200.6 448-448S759.4 65 512 65zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z" } }] }, "name": "close-circle", "theme": "outlined" };
|
|
|
/* harmony default export */ var asn_CloseCircleOutlined = (CloseCircleOutlined);
|
|
|
|
|
|
// 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/CloseCircleOutlined.js
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var CloseCircleOutlined_CloseCircleOutlined = function CloseCircleOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,esm_extends/* default */.Z)({}, props, {
|
|
|
ref: ref,
|
|
|
icon: asn_CloseCircleOutlined
|
|
|
}));
|
|
|
};
|
|
|
if (false) {}
|
|
|
/* harmony default export */ var icons_CloseCircleOutlined = (/*#__PURE__*/react.forwardRef(CloseCircleOutlined_CloseCircleOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 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));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 64082:
|
|
|
/*!******************************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/InboxOutlined.js + 1 modules ***!
|
|
|
\******************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ icons_InboxOutlined; }
|
|
|
});
|
|
|
|
|
|
// 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/InboxOutlined.js
|
|
|
// This icon file is generated automatically.
|
|
|
var InboxOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "0 0 1024 1024", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0060.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z" } }] }, "name": "inbox", "theme": "outlined" };
|
|
|
/* harmony default export */ var asn_InboxOutlined = (InboxOutlined);
|
|
|
|
|
|
// 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/InboxOutlined.js
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var InboxOutlined_InboxOutlined = function InboxOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,esm_extends/* default */.Z)({}, props, {
|
|
|
ref: ref,
|
|
|
icon: asn_InboxOutlined
|
|
|
}));
|
|
|
};
|
|
|
if (false) {}
|
|
|
/* harmony default export */ var icons_InboxOutlined = (/*#__PURE__*/react.forwardRef(InboxOutlined_InboxOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 3089:
|
|
|
/*!************************************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/MinusCircleOutlined.js + 1 modules ***!
|
|
|
\************************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ icons_MinusCircleOutlined; }
|
|
|
});
|
|
|
|
|
|
// 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/MinusCircleOutlined.js
|
|
|
// This icon file is generated automatically.
|
|
|
var MinusCircleOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z" } }, { "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" } }] }, "name": "minus-circle", "theme": "outlined" };
|
|
|
/* harmony default export */ var asn_MinusCircleOutlined = (MinusCircleOutlined);
|
|
|
|
|
|
// 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/MinusCircleOutlined.js
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var MinusCircleOutlined_MinusCircleOutlined = function MinusCircleOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,esm_extends/* default */.Z)({}, props, {
|
|
|
ref: ref,
|
|
|
icon: asn_MinusCircleOutlined
|
|
|
}));
|
|
|
};
|
|
|
if (false) {}
|
|
|
/* harmony default export */ var icons_MinusCircleOutlined = (/*#__PURE__*/react.forwardRef(MinusCircleOutlined_MinusCircleOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 88484:
|
|
|
/*!*******************************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/UploadOutlined.js + 1 modules ***!
|
|
|
\*******************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ icons_UploadOutlined; }
|
|
|
});
|
|
|
|
|
|
// 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/UploadOutlined.js
|
|
|
// This icon file is generated automatically.
|
|
|
var UploadOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z" } }] }, "name": "upload", "theme": "outlined" };
|
|
|
/* harmony default export */ var asn_UploadOutlined = (UploadOutlined);
|
|
|
|
|
|
// 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/UploadOutlined.js
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var UploadOutlined_UploadOutlined = function UploadOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,esm_extends/* default */.Z)({}, props, {
|
|
|
ref: ref,
|
|
|
icon: asn_UploadOutlined
|
|
|
}));
|
|
|
};
|
|
|
if (false) {}
|
|
|
/* harmony default export */ var icons_UploadOutlined = (/*#__PURE__*/react.forwardRef(UploadOutlined_UploadOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 49288:
|
|
|
/*!*****************************************************!*\
|
|
|
!*** ./node_modules/antd/es/auto-complete/index.js ***!
|
|
|
\*****************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! classnames */ 94184);
|
|
|
/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_0__);
|
|
|
/* harmony import */ var rc_util_es_Children_toArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rc-util/es/Children/toArray */ 37419);
|
|
|
/* harmony import */ var rc_util_es_omit__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! rc-util/es/omit */ 10366);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _util_PurePanel__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../_util/PurePanel */ 8745);
|
|
|
/* harmony import */ var _util_reactNode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../_util/reactNode */ 96159);
|
|
|
/* harmony import */ var _config_provider__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../config-provider */ 53124);
|
|
|
/* harmony import */ var _select__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../select */ 79035);
|
|
|
'use client';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const {
|
|
|
Option
|
|
|
} = _select__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z;
|
|
|
function isSelectOptionOrSelectOptGroup(child) {
|
|
|
return child && child.type && (child.type.isSelectOption || child.type.isSelectOptGroup);
|
|
|
}
|
|
|
const AutoComplete = (props, ref) => {
|
|
|
const {
|
|
|
prefixCls: customizePrefixCls,
|
|
|
className,
|
|
|
popupClassName,
|
|
|
dropdownClassName,
|
|
|
children,
|
|
|
dataSource
|
|
|
} = props;
|
|
|
const childNodes = (0,rc_util_es_Children_toArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z)(children);
|
|
|
// ============================= Input =============================
|
|
|
let customizeInput;
|
|
|
if (childNodes.length === 1 && (0,_util_reactNode__WEBPACK_IMPORTED_MODULE_4__/* .isValidElement */ .l$)(childNodes[0]) && !isSelectOptionOrSelectOptGroup(childNodes[0])) {
|
|
|
[customizeInput] = childNodes;
|
|
|
}
|
|
|
const getInputElement = customizeInput ? () => customizeInput : undefined;
|
|
|
// ============================ Options ============================
|
|
|
let optionChildren;
|
|
|
// [Legacy] convert `children` or `dataSource` into option children
|
|
|
if (childNodes.length && isSelectOptionOrSelectOptGroup(childNodes[0])) {
|
|
|
optionChildren = children;
|
|
|
} else {
|
|
|
optionChildren = dataSource ? dataSource.map(item => {
|
|
|
if ((0,_util_reactNode__WEBPACK_IMPORTED_MODULE_4__/* .isValidElement */ .l$)(item)) {
|
|
|
return item;
|
|
|
}
|
|
|
switch (typeof item) {
|
|
|
case 'string':
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(Option, {
|
|
|
key: item,
|
|
|
value: item
|
|
|
}, item);
|
|
|
case 'object':
|
|
|
{
|
|
|
const {
|
|
|
value: optionValue
|
|
|
} = item;
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(Option, {
|
|
|
key: optionValue,
|
|
|
value: optionValue
|
|
|
}, item.text);
|
|
|
}
|
|
|
default:
|
|
|
false ? 0 : void 0;
|
|
|
return undefined;
|
|
|
}
|
|
|
}) : [];
|
|
|
}
|
|
|
if (false) {}
|
|
|
const {
|
|
|
getPrefixCls
|
|
|
} = react__WEBPACK_IMPORTED_MODULE_2__.useContext(_config_provider__WEBPACK_IMPORTED_MODULE_5__/* .ConfigContext */ .E_);
|
|
|
const prefixCls = getPrefixCls('select', customizePrefixCls);
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(_select__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, Object.assign({
|
|
|
ref: ref,
|
|
|
showArrow: false
|
|
|
}, (0,rc_util_es_omit__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)(props, ['dataSource', 'dropdownClassName']), {
|
|
|
prefixCls: prefixCls,
|
|
|
popupClassName: popupClassName || dropdownClassName,
|
|
|
className: classnames__WEBPACK_IMPORTED_MODULE_0___default()(`${prefixCls}-auto-complete`, className),
|
|
|
mode: _select__WEBPACK_IMPORTED_MODULE_3__/* ["default"].SECRET_COMBOBOX_MODE_DO_NOT_USE */ .Z.SECRET_COMBOBOX_MODE_DO_NOT_USE,
|
|
|
// Internal api
|
|
|
getInputElement
|
|
|
}), optionChildren);
|
|
|
};
|
|
|
const RefAutoComplete = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(AutoComplete);
|
|
|
// We don't care debug panel
|
|
|
/* istanbul ignore next */
|
|
|
const PurePanel = (0,_util_PurePanel__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z)(RefAutoComplete);
|
|
|
RefAutoComplete.Option = Option;
|
|
|
RefAutoComplete._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;
|
|
|
if (false) {}
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (RefAutoComplete);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 35479:
|
|
|
/*!***********************************************************!*\
|
|
|
!*** ./node_modules/antd/es/drawer/index.js + 16 modules ***!
|
|
|
\***********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ drawer; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/classnames/index.js
|
|
|
var classnames = __webpack_require__(94184);
|
|
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(1413);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules
|
|
|
var slicedToArray = __webpack_require__(97685);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./node_modules/react-dom/index.js
|
|
|
var react_dom = __webpack_require__(73935);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/Dom/canUseDom.js
|
|
|
var Dom_canUseDom = __webpack_require__(98924);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/warning.js
|
|
|
var es_warning = __webpack_require__(80334);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/ref.js
|
|
|
var es_ref = __webpack_require__(42550);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/node_modules/@rc-component/portal/es/Context.js
|
|
|
|
|
|
var OrderContext = /*#__PURE__*/react.createContext(null);
|
|
|
/* harmony default export */ var Context = (OrderContext);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js + 2 modules
|
|
|
var toConsumableArray = __webpack_require__(74902);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/hooks/useLayoutEffect.js
|
|
|
var useLayoutEffect = __webpack_require__(8410);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/node_modules/@rc-component/portal/es/useDom.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var EMPTY_LIST = [];
|
|
|
|
|
|
/**
|
|
|
* Will add `div` to document. Nest call will keep order
|
|
|
* @param render Render DOM in document
|
|
|
*/
|
|
|
function useDom(render, debug) {
|
|
|
var _React$useState = react.useState(function () {
|
|
|
if (!(0,Dom_canUseDom/* default */.Z)()) {
|
|
|
return null;
|
|
|
}
|
|
|
var defaultEle = document.createElement('div');
|
|
|
if (false) {}
|
|
|
return defaultEle;
|
|
|
}),
|
|
|
_React$useState2 = (0,slicedToArray/* default */.Z)(_React$useState, 1),
|
|
|
ele = _React$useState2[0];
|
|
|
|
|
|
// ========================== Order ==========================
|
|
|
var appendedRef = react.useRef(false);
|
|
|
var queueCreate = react.useContext(Context);
|
|
|
var _React$useState3 = react.useState(EMPTY_LIST),
|
|
|
_React$useState4 = (0,slicedToArray/* default */.Z)(_React$useState3, 2),
|
|
|
queue = _React$useState4[0],
|
|
|
setQueue = _React$useState4[1];
|
|
|
var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) {
|
|
|
setQueue(function (origin) {
|
|
|
var newQueue = [appendFn].concat((0,toConsumableArray/* default */.Z)(origin));
|
|
|
return newQueue;
|
|
|
});
|
|
|
});
|
|
|
|
|
|
// =========================== DOM ===========================
|
|
|
function append() {
|
|
|
if (!ele.parentElement) {
|
|
|
document.body.appendChild(ele);
|
|
|
}
|
|
|
appendedRef.current = true;
|
|
|
}
|
|
|
function cleanup() {
|
|
|
var _ele$parentElement;
|
|
|
(_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);
|
|
|
appendedRef.current = false;
|
|
|
}
|
|
|
(0,useLayoutEffect/* default */.Z)(function () {
|
|
|
if (render) {
|
|
|
if (queueCreate) {
|
|
|
queueCreate(append);
|
|
|
} else {
|
|
|
append();
|
|
|
}
|
|
|
} else {
|
|
|
cleanup();
|
|
|
}
|
|
|
return cleanup;
|
|
|
}, [render]);
|
|
|
(0,useLayoutEffect/* default */.Z)(function () {
|
|
|
if (queue.length) {
|
|
|
queue.forEach(function (appendFn) {
|
|
|
return appendFn();
|
|
|
});
|
|
|
setQueue(EMPTY_LIST);
|
|
|
}
|
|
|
}, [queue]);
|
|
|
return [ele, mergedQueueCreate];
|
|
|
}
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/Dom/dynamicCSS.js + 1 modules
|
|
|
var dynamicCSS = __webpack_require__(48981);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/getScrollBarSize.js
|
|
|
var getScrollBarSize = __webpack_require__(74204);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/node_modules/@rc-component/portal/es/util.js
|
|
|
/**
|
|
|
* Test usage export. Do not use in your production
|
|
|
*/
|
|
|
function isBodyOverflowing() {
|
|
|
return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/node_modules/@rc-component/portal/es/useScrollLocker.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var UNIQUE_ID = "rc-util-locker-".concat(Date.now());
|
|
|
var uuid = 0;
|
|
|
function useScrollLocker(lock) {
|
|
|
var mergedLock = !!lock;
|
|
|
var _React$useState = react.useState(function () {
|
|
|
uuid += 1;
|
|
|
return "".concat(UNIQUE_ID, "_").concat(uuid);
|
|
|
}),
|
|
|
_React$useState2 = (0,slicedToArray/* default */.Z)(_React$useState, 1),
|
|
|
id = _React$useState2[0];
|
|
|
(0,useLayoutEffect/* default */.Z)(function () {
|
|
|
if (mergedLock) {
|
|
|
var scrollbarSize = (0,getScrollBarSize/* getTargetScrollBarSize */.o)(document.body).width;
|
|
|
var isOverflow = isBodyOverflowing();
|
|
|
(0,dynamicCSS/* updateCSS */.hq)("\nhtml body {\n overflow-y: hidden;\n ".concat(isOverflow ? "width: calc(100% - ".concat(scrollbarSize, "px);") : '', "\n}"), id);
|
|
|
} else {
|
|
|
(0,dynamicCSS/* removeCSS */.jL)(id);
|
|
|
}
|
|
|
return function () {
|
|
|
(0,dynamicCSS/* removeCSS */.jL)(id);
|
|
|
};
|
|
|
}, [mergedLock, id]);
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/node_modules/@rc-component/portal/es/mock.js
|
|
|
var inline = false;
|
|
|
function inlineMock(nextInline) {
|
|
|
if (typeof nextInline === 'boolean') {
|
|
|
inline = nextInline;
|
|
|
}
|
|
|
return inline;
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/node_modules/@rc-component/portal/es/Portal.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var getPortalContainer = function getPortalContainer(getContainer) {
|
|
|
if (getContainer === false) {
|
|
|
return false;
|
|
|
}
|
|
|
if (!(0,Dom_canUseDom/* default */.Z)() || !getContainer) {
|
|
|
return null;
|
|
|
}
|
|
|
if (typeof getContainer === 'string') {
|
|
|
return document.querySelector(getContainer);
|
|
|
}
|
|
|
if (typeof getContainer === 'function') {
|
|
|
return getContainer();
|
|
|
}
|
|
|
return getContainer;
|
|
|
};
|
|
|
var Portal = /*#__PURE__*/react.forwardRef(function (props, ref) {
|
|
|
var open = props.open,
|
|
|
autoLock = props.autoLock,
|
|
|
getContainer = props.getContainer,
|
|
|
debug = props.debug,
|
|
|
_props$autoDestroy = props.autoDestroy,
|
|
|
autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,
|
|
|
children = props.children;
|
|
|
var _React$useState = react.useState(open),
|
|
|
_React$useState2 = (0,slicedToArray/* default */.Z)(_React$useState, 2),
|
|
|
shouldRender = _React$useState2[0],
|
|
|
setShouldRender = _React$useState2[1];
|
|
|
var mergedRender = shouldRender || open;
|
|
|
|
|
|
// ========================= Warning =========================
|
|
|
if (false) {}
|
|
|
|
|
|
// ====================== Should Render ======================
|
|
|
react.useEffect(function () {
|
|
|
if (autoDestroy || open) {
|
|
|
setShouldRender(open);
|
|
|
}
|
|
|
}, [open, autoDestroy]);
|
|
|
|
|
|
// ======================== Container ========================
|
|
|
var _React$useState3 = react.useState(function () {
|
|
|
return getPortalContainer(getContainer);
|
|
|
}),
|
|
|
_React$useState4 = (0,slicedToArray/* default */.Z)(_React$useState3, 2),
|
|
|
innerContainer = _React$useState4[0],
|
|
|
setInnerContainer = _React$useState4[1];
|
|
|
react.useEffect(function () {
|
|
|
var customizeContainer = getPortalContainer(getContainer);
|
|
|
|
|
|
// Tell component that we check this in effect which is safe to be `null`
|
|
|
setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);
|
|
|
});
|
|
|
var _useDom = useDom(mergedRender && !innerContainer, debug),
|
|
|
_useDom2 = (0,slicedToArray/* default */.Z)(_useDom, 2),
|
|
|
defaultContainer = _useDom2[0],
|
|
|
queueCreate = _useDom2[1];
|
|
|
var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer;
|
|
|
|
|
|
// ========================= Locker ==========================
|
|
|
useScrollLocker(autoLock && open && (0,Dom_canUseDom/* default */.Z)() && (mergedContainer === defaultContainer || mergedContainer === document.body));
|
|
|
|
|
|
// =========================== Ref ===========================
|
|
|
var childRef = null;
|
|
|
if (children && (0,es_ref/* supportRef */.Yr)(children) && ref) {
|
|
|
var _ref = children;
|
|
|
childRef = _ref.ref;
|
|
|
}
|
|
|
var mergedRef = (0,es_ref/* useComposeRef */.x1)(childRef, ref);
|
|
|
|
|
|
// ========================= Render ==========================
|
|
|
// Do not render when nothing need render
|
|
|
// When innerContainer is `undefined`, it may not ready since user use ref in the same render
|
|
|
if (!mergedRender || !(0,Dom_canUseDom/* default */.Z)() || innerContainer === undefined) {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
// Render inline
|
|
|
var renderInline = mergedContainer === false || inlineMock();
|
|
|
var reffedChildren = children;
|
|
|
if (ref) {
|
|
|
reffedChildren = /*#__PURE__*/react.cloneElement(children, {
|
|
|
ref: mergedRef
|
|
|
});
|
|
|
}
|
|
|
return /*#__PURE__*/react.createElement(Context.Provider, {
|
|
|
value: queueCreate
|
|
|
}, renderInline ? reffedChildren : /*#__PURE__*/(0,react_dom.createPortal)(reffedChildren, mergedContainer));
|
|
|
});
|
|
|
if (false) {}
|
|
|
/* harmony default export */ var es_Portal = (Portal);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/node_modules/@rc-component/portal/es/index.js
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var es = (es_Portal);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js
|
|
|
var defineProperty = __webpack_require__(4942);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
|
|
|
var esm_extends = __webpack_require__(87462);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-motion/es/index.js + 11 modules
|
|
|
var rc_motion_es = __webpack_require__(62874);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/KeyCode.js
|
|
|
var KeyCode = __webpack_require__(15105);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/pickAttrs.js
|
|
|
var pickAttrs = __webpack_require__(64217);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/es/context.js
|
|
|
|
|
|
var DrawerContext = /*#__PURE__*/react.createContext(null);
|
|
|
/* harmony default export */ var context = (DrawerContext);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/es/DrawerPanel.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var DrawerPanel = function DrawerPanel(props) {
|
|
|
var prefixCls = props.prefixCls,
|
|
|
className = props.className,
|
|
|
style = props.style,
|
|
|
children = props.children,
|
|
|
containerRef = props.containerRef,
|
|
|
onMouseEnter = props.onMouseEnter,
|
|
|
onMouseOver = props.onMouseOver,
|
|
|
onMouseLeave = props.onMouseLeave,
|
|
|
onClick = props.onClick,
|
|
|
onKeyDown = props.onKeyDown,
|
|
|
onKeyUp = props.onKeyUp;
|
|
|
var eventHandlers = {
|
|
|
onMouseEnter: onMouseEnter,
|
|
|
onMouseOver: onMouseOver,
|
|
|
onMouseLeave: onMouseLeave,
|
|
|
onClick: onClick,
|
|
|
onKeyDown: onKeyDown,
|
|
|
onKeyUp: onKeyUp
|
|
|
};
|
|
|
// =============================== Render ===============================
|
|
|
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", (0,esm_extends/* default */.Z)({
|
|
|
className: classnames_default()("".concat(prefixCls, "-content"), className),
|
|
|
style: (0,objectSpread2/* default */.Z)({}, style),
|
|
|
"aria-modal": "true",
|
|
|
role: "dialog",
|
|
|
ref: containerRef
|
|
|
}, eventHandlers), children));
|
|
|
};
|
|
|
if (false) {}
|
|
|
/* harmony default export */ var es_DrawerPanel = (DrawerPanel);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/es/util.js
|
|
|
|
|
|
|
|
|
function parseWidthHeight(value) {
|
|
|
if (typeof value === 'string' && String(Number(value)) === value) {
|
|
|
(0,es_warning/* default */.ZP)(false, 'Invalid value type of `width` or `height` which should be number type instead.');
|
|
|
return Number(value);
|
|
|
}
|
|
|
return value;
|
|
|
}
|
|
|
function warnCheck(props) {
|
|
|
warning(!('wrapperClassName' in props), "'wrapperClassName' is removed. Please use 'rootClassName' instead.");
|
|
|
warning(canUseDom() || !props.open, "Drawer with 'open' in SSR is not work since no place to createPortal. Please move to 'useEffect' instead.");
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/es/DrawerPopup.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var sentinelStyle = {
|
|
|
width: 0,
|
|
|
height: 0,
|
|
|
overflow: 'hidden',
|
|
|
outline: 'none',
|
|
|
position: 'absolute'
|
|
|
};
|
|
|
function DrawerPopup(props, ref) {
|
|
|
var _ref, _pushConfig$distance, _pushConfig, _classNames;
|
|
|
var prefixCls = props.prefixCls,
|
|
|
open = props.open,
|
|
|
placement = props.placement,
|
|
|
inline = props.inline,
|
|
|
push = props.push,
|
|
|
forceRender = props.forceRender,
|
|
|
autoFocus = props.autoFocus,
|
|
|
keyboard = props.keyboard,
|
|
|
rootClassName = props.rootClassName,
|
|
|
rootStyle = props.rootStyle,
|
|
|
zIndex = props.zIndex,
|
|
|
className = props.className,
|
|
|
style = props.style,
|
|
|
motion = props.motion,
|
|
|
width = props.width,
|
|
|
height = props.height,
|
|
|
children = props.children,
|
|
|
contentWrapperStyle = props.contentWrapperStyle,
|
|
|
mask = props.mask,
|
|
|
maskClosable = props.maskClosable,
|
|
|
maskMotion = props.maskMotion,
|
|
|
maskClassName = props.maskClassName,
|
|
|
maskStyle = props.maskStyle,
|
|
|
afterOpenChange = props.afterOpenChange,
|
|
|
onClose = props.onClose,
|
|
|
onMouseEnter = props.onMouseEnter,
|
|
|
onMouseOver = props.onMouseOver,
|
|
|
onMouseLeave = props.onMouseLeave,
|
|
|
onClick = props.onClick,
|
|
|
onKeyDown = props.onKeyDown,
|
|
|
onKeyUp = props.onKeyUp;
|
|
|
// ================================ Refs ================================
|
|
|
var panelRef = react.useRef();
|
|
|
var sentinelStartRef = react.useRef();
|
|
|
var sentinelEndRef = react.useRef();
|
|
|
react.useImperativeHandle(ref, function () {
|
|
|
return panelRef.current;
|
|
|
});
|
|
|
var onPanelKeyDown = function onPanelKeyDown(event) {
|
|
|
var keyCode = event.keyCode,
|
|
|
shiftKey = event.shiftKey;
|
|
|
switch (keyCode) {
|
|
|
// Tab active
|
|
|
case KeyCode/* default.TAB */.Z.TAB:
|
|
|
{
|
|
|
if (keyCode === KeyCode/* default.TAB */.Z.TAB) {
|
|
|
if (!shiftKey && document.activeElement === sentinelEndRef.current) {
|
|
|
var _sentinelStartRef$cur;
|
|
|
(_sentinelStartRef$cur = sentinelStartRef.current) === null || _sentinelStartRef$cur === void 0 ? void 0 : _sentinelStartRef$cur.focus({
|
|
|
preventScroll: true
|
|
|
});
|
|
|
} else if (shiftKey && document.activeElement === sentinelStartRef.current) {
|
|
|
var _sentinelEndRef$curre;
|
|
|
(_sentinelEndRef$curre = sentinelEndRef.current) === null || _sentinelEndRef$curre === void 0 ? void 0 : _sentinelEndRef$curre.focus({
|
|
|
preventScroll: true
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
// Close
|
|
|
case KeyCode/* default.ESC */.Z.ESC:
|
|
|
{
|
|
|
if (onClose && keyboard) {
|
|
|
event.stopPropagation();
|
|
|
onClose(event);
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
// ========================== Control ===========================
|
|
|
// Auto Focus
|
|
|
react.useEffect(function () {
|
|
|
if (open && autoFocus) {
|
|
|
var _panelRef$current;
|
|
|
(_panelRef$current = panelRef.current) === null || _panelRef$current === void 0 ? void 0 : _panelRef$current.focus({
|
|
|
preventScroll: true
|
|
|
});
|
|
|
}
|
|
|
}, [open]);
|
|
|
// ============================ Push ============================
|
|
|
var _React$useState = react.useState(false),
|
|
|
_React$useState2 = (0,slicedToArray/* default */.Z)(_React$useState, 2),
|
|
|
pushed = _React$useState2[0],
|
|
|
setPushed = _React$useState2[1];
|
|
|
var parentContext = react.useContext(context);
|
|
|
// Merge push distance
|
|
|
var pushConfig;
|
|
|
if (push === false) {
|
|
|
pushConfig = {
|
|
|
distance: 0
|
|
|
};
|
|
|
} else if (push === true) {
|
|
|
pushConfig = {};
|
|
|
} else {
|
|
|
pushConfig = push || {};
|
|
|
}
|
|
|
var pushDistance = (_ref = (_pushConfig$distance = (_pushConfig = pushConfig) === null || _pushConfig === void 0 ? void 0 : _pushConfig.distance) !== null && _pushConfig$distance !== void 0 ? _pushConfig$distance : parentContext === null || parentContext === void 0 ? void 0 : parentContext.pushDistance) !== null && _ref !== void 0 ? _ref : 180;
|
|
|
var mergedContext = react.useMemo(function () {
|
|
|
return {
|
|
|
pushDistance: pushDistance,
|
|
|
push: function push() {
|
|
|
setPushed(true);
|
|
|
},
|
|
|
pull: function pull() {
|
|
|
setPushed(false);
|
|
|
}
|
|
|
};
|
|
|
}, [pushDistance]);
|
|
|
// ========================= ScrollLock =========================
|
|
|
// Tell parent to push
|
|
|
react.useEffect(function () {
|
|
|
if (open) {
|
|
|
var _parentContext$push;
|
|
|
parentContext === null || parentContext === void 0 ? void 0 : (_parentContext$push = parentContext.push) === null || _parentContext$push === void 0 ? void 0 : _parentContext$push.call(parentContext);
|
|
|
} else {
|
|
|
var _parentContext$pull;
|
|
|
parentContext === null || parentContext === void 0 ? void 0 : (_parentContext$pull = parentContext.pull) === null || _parentContext$pull === void 0 ? void 0 : _parentContext$pull.call(parentContext);
|
|
|
}
|
|
|
}, [open]);
|
|
|
// Clean up
|
|
|
react.useEffect(function () {
|
|
|
return function () {
|
|
|
var _parentContext$pull2;
|
|
|
parentContext === null || parentContext === void 0 ? void 0 : (_parentContext$pull2 = parentContext.pull) === null || _parentContext$pull2 === void 0 ? void 0 : _parentContext$pull2.call(parentContext);
|
|
|
};
|
|
|
}, []);
|
|
|
// ============================ Mask ============================
|
|
|
var maskNode = mask && /*#__PURE__*/react.createElement(rc_motion_es/* default */.Z, (0,esm_extends/* default */.Z)({
|
|
|
key: "mask"
|
|
|
}, maskMotion, {
|
|
|
visible: open
|
|
|
}), function (_ref2, maskRef) {
|
|
|
var motionMaskClassName = _ref2.className,
|
|
|
motionMaskStyle = _ref2.style;
|
|
|
return /*#__PURE__*/react.createElement("div", {
|
|
|
className: classnames_default()("".concat(prefixCls, "-mask"), motionMaskClassName, maskClassName),
|
|
|
style: (0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)({}, motionMaskStyle), maskStyle),
|
|
|
onClick: maskClosable && open ? onClose : undefined,
|
|
|
ref: maskRef
|
|
|
});
|
|
|
});
|
|
|
// =========================== Panel ============================
|
|
|
var motionProps = typeof motion === 'function' ? motion(placement) : motion;
|
|
|
var wrapperStyle = {};
|
|
|
if (pushed && pushDistance) {
|
|
|
switch (placement) {
|
|
|
case 'top':
|
|
|
wrapperStyle.transform = "translateY(".concat(pushDistance, "px)");
|
|
|
break;
|
|
|
case 'bottom':
|
|
|
wrapperStyle.transform = "translateY(".concat(-pushDistance, "px)");
|
|
|
break;
|
|
|
case 'left':
|
|
|
wrapperStyle.transform = "translateX(".concat(pushDistance, "px)");
|
|
|
break;
|
|
|
default:
|
|
|
wrapperStyle.transform = "translateX(".concat(-pushDistance, "px)");
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (placement === 'left' || placement === 'right') {
|
|
|
wrapperStyle.width = parseWidthHeight(width);
|
|
|
} else {
|
|
|
wrapperStyle.height = parseWidthHeight(height);
|
|
|
}
|
|
|
var eventHandlers = {
|
|
|
onMouseEnter: onMouseEnter,
|
|
|
onMouseOver: onMouseOver,
|
|
|
onMouseLeave: onMouseLeave,
|
|
|
onClick: onClick,
|
|
|
onKeyDown: onKeyDown,
|
|
|
onKeyUp: onKeyUp
|
|
|
};
|
|
|
var panelNode = /*#__PURE__*/react.createElement(rc_motion_es/* default */.Z, (0,esm_extends/* default */.Z)({
|
|
|
key: "panel"
|
|
|
}, motionProps, {
|
|
|
visible: open,
|
|
|
forceRender: forceRender,
|
|
|
onVisibleChanged: function onVisibleChanged(nextVisible) {
|
|
|
afterOpenChange === null || afterOpenChange === void 0 ? void 0 : afterOpenChange(nextVisible);
|
|
|
},
|
|
|
removeOnLeave: false,
|
|
|
leavedClassName: "".concat(prefixCls, "-content-wrapper-hidden")
|
|
|
}), function (_ref3, motionRef) {
|
|
|
var motionClassName = _ref3.className,
|
|
|
motionStyle = _ref3.style;
|
|
|
return /*#__PURE__*/react.createElement("div", (0,esm_extends/* default */.Z)({
|
|
|
className: classnames_default()("".concat(prefixCls, "-content-wrapper"), motionClassName),
|
|
|
style: (0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)({}, wrapperStyle), motionStyle), contentWrapperStyle)
|
|
|
}, (0,pickAttrs/* default */.Z)(props, {
|
|
|
data: true
|
|
|
})), /*#__PURE__*/react.createElement(es_DrawerPanel, (0,esm_extends/* default */.Z)({
|
|
|
containerRef: motionRef,
|
|
|
prefixCls: prefixCls,
|
|
|
className: className,
|
|
|
style: style
|
|
|
}, eventHandlers), children));
|
|
|
});
|
|
|
// =========================== Render ===========================
|
|
|
var containerStyle = (0,objectSpread2/* default */.Z)({}, rootStyle);
|
|
|
if (zIndex) {
|
|
|
containerStyle.zIndex = zIndex;
|
|
|
}
|
|
|
return /*#__PURE__*/react.createElement(context.Provider, {
|
|
|
value: mergedContext
|
|
|
}, /*#__PURE__*/react.createElement("div", {
|
|
|
className: classnames_default()(prefixCls, "".concat(prefixCls, "-").concat(placement), rootClassName, (_classNames = {}, (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-open"), open), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-inline"), inline), _classNames)),
|
|
|
style: containerStyle,
|
|
|
tabIndex: -1,
|
|
|
ref: panelRef,
|
|
|
onKeyDown: onPanelKeyDown
|
|
|
}, maskNode, /*#__PURE__*/react.createElement("div", {
|
|
|
tabIndex: 0,
|
|
|
ref: sentinelStartRef,
|
|
|
style: sentinelStyle,
|
|
|
"aria-hidden": "true",
|
|
|
"data-sentinel": "start"
|
|
|
}), panelNode, /*#__PURE__*/react.createElement("div", {
|
|
|
tabIndex: 0,
|
|
|
ref: sentinelEndRef,
|
|
|
style: sentinelStyle,
|
|
|
"aria-hidden": "true",
|
|
|
"data-sentinel": "end"
|
|
|
})));
|
|
|
}
|
|
|
var RefDrawerPopup = /*#__PURE__*/react.forwardRef(DrawerPopup);
|
|
|
if (false) {}
|
|
|
/* harmony default export */ var es_DrawerPopup = (RefDrawerPopup);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/es/Drawer.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Drawer = function Drawer(props) {
|
|
|
var _props$open = props.open,
|
|
|
open = _props$open === void 0 ? false : _props$open,
|
|
|
_props$prefixCls = props.prefixCls,
|
|
|
prefixCls = _props$prefixCls === void 0 ? 'rc-drawer' : _props$prefixCls,
|
|
|
_props$placement = props.placement,
|
|
|
placement = _props$placement === void 0 ? 'right' : _props$placement,
|
|
|
_props$autoFocus = props.autoFocus,
|
|
|
autoFocus = _props$autoFocus === void 0 ? true : _props$autoFocus,
|
|
|
_props$keyboard = props.keyboard,
|
|
|
keyboard = _props$keyboard === void 0 ? true : _props$keyboard,
|
|
|
_props$width = props.width,
|
|
|
width = _props$width === void 0 ? 378 : _props$width,
|
|
|
_props$mask = props.mask,
|
|
|
mask = _props$mask === void 0 ? true : _props$mask,
|
|
|
_props$maskClosable = props.maskClosable,
|
|
|
maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,
|
|
|
getContainer = props.getContainer,
|
|
|
forceRender = props.forceRender,
|
|
|
afterOpenChange = props.afterOpenChange,
|
|
|
destroyOnClose = props.destroyOnClose,
|
|
|
onMouseEnter = props.onMouseEnter,
|
|
|
onMouseOver = props.onMouseOver,
|
|
|
onMouseLeave = props.onMouseLeave,
|
|
|
onClick = props.onClick,
|
|
|
onKeyDown = props.onKeyDown,
|
|
|
onKeyUp = props.onKeyUp;
|
|
|
var _React$useState = react.useState(false),
|
|
|
_React$useState2 = (0,slicedToArray/* default */.Z)(_React$useState, 2),
|
|
|
animatedVisible = _React$useState2[0],
|
|
|
setAnimatedVisible = _React$useState2[1];
|
|
|
// ============================= Warn =============================
|
|
|
if (false) {}
|
|
|
// ============================= Open =============================
|
|
|
var _React$useState3 = react.useState(false),
|
|
|
_React$useState4 = (0,slicedToArray/* default */.Z)(_React$useState3, 2),
|
|
|
mounted = _React$useState4[0],
|
|
|
setMounted = _React$useState4[1];
|
|
|
(0,useLayoutEffect/* default */.Z)(function () {
|
|
|
setMounted(true);
|
|
|
}, []);
|
|
|
var mergedOpen = mounted ? open : false;
|
|
|
// ============================ Focus =============================
|
|
|
var panelRef = react.useRef();
|
|
|
var lastActiveRef = react.useRef();
|
|
|
(0,useLayoutEffect/* default */.Z)(function () {
|
|
|
if (mergedOpen) {
|
|
|
lastActiveRef.current = document.activeElement;
|
|
|
}
|
|
|
}, [mergedOpen]);
|
|
|
// ============================= Open =============================
|
|
|
var internalAfterOpenChange = function internalAfterOpenChange(nextVisible) {
|
|
|
var _panelRef$current;
|
|
|
setAnimatedVisible(nextVisible);
|
|
|
afterOpenChange === null || afterOpenChange === void 0 ? void 0 : afterOpenChange(nextVisible);
|
|
|
if (!nextVisible && lastActiveRef.current && !((_panelRef$current = panelRef.current) === null || _panelRef$current === void 0 ? void 0 : _panelRef$current.contains(lastActiveRef.current))) {
|
|
|
var _lastActiveRef$curren;
|
|
|
(_lastActiveRef$curren = lastActiveRef.current) === null || _lastActiveRef$curren === void 0 ? void 0 : _lastActiveRef$curren.focus({
|
|
|
preventScroll: true
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
// ============================ Render ============================
|
|
|
if (!forceRender && !animatedVisible && !mergedOpen && destroyOnClose) {
|
|
|
return null;
|
|
|
}
|
|
|
var eventHandlers = {
|
|
|
onMouseEnter: onMouseEnter,
|
|
|
onMouseOver: onMouseOver,
|
|
|
onMouseLeave: onMouseLeave,
|
|
|
onClick: onClick,
|
|
|
onKeyDown: onKeyDown,
|
|
|
onKeyUp: onKeyUp
|
|
|
};
|
|
|
var drawerPopupProps = (0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)({}, props), {}, {
|
|
|
open: mergedOpen,
|
|
|
prefixCls: prefixCls,
|
|
|
placement: placement,
|
|
|
autoFocus: autoFocus,
|
|
|
keyboard: keyboard,
|
|
|
width: width,
|
|
|
mask: mask,
|
|
|
maskClosable: maskClosable,
|
|
|
inline: getContainer === false,
|
|
|
afterOpenChange: internalAfterOpenChange,
|
|
|
ref: panelRef
|
|
|
}, eventHandlers);
|
|
|
return /*#__PURE__*/react.createElement(es, {
|
|
|
open: mergedOpen || forceRender || animatedVisible,
|
|
|
autoDestroy: false,
|
|
|
getContainer: getContainer,
|
|
|
autoLock: mask && (mergedOpen || animatedVisible)
|
|
|
}, /*#__PURE__*/react.createElement(es_DrawerPopup, drawerPopupProps));
|
|
|
};
|
|
|
if (false) {}
|
|
|
/* harmony default export */ var es_Drawer = (Drawer);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-drawer/es/index.js
|
|
|
// export this package's api
|
|
|
|
|
|
/* harmony default export */ var rc_drawer_es = (es_Drawer);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/_util/motion.js
|
|
|
var motion = __webpack_require__(33603);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/config-provider/context.js
|
|
|
var config_provider_context = __webpack_require__(53124);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/form/context.js
|
|
|
var form_context = __webpack_require__(65223);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/_util/hooks/useClosable.js
|
|
|
var useClosable = __webpack_require__(69760);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/drawer/DrawerPanel.js
|
|
|
|
|
|
|
|
|
|
|
|
const DrawerPanel_DrawerPanel = props => {
|
|
|
const {
|
|
|
prefixCls,
|
|
|
title,
|
|
|
footer,
|
|
|
extra,
|
|
|
closeIcon,
|
|
|
closable,
|
|
|
onClose,
|
|
|
headerStyle,
|
|
|
drawerStyle,
|
|
|
bodyStyle,
|
|
|
footerStyle,
|
|
|
children
|
|
|
} = props;
|
|
|
const customCloseIconRender = react.useCallback(icon => /*#__PURE__*/react.createElement("button", {
|
|
|
type: "button",
|
|
|
onClick: onClose,
|
|
|
"aria-label": "Close",
|
|
|
className: `${prefixCls}-close`
|
|
|
}, icon), [onClose]);
|
|
|
const [mergedClosable, mergedCloseIcon] = (0,useClosable/* default */.Z)(closable, closeIcon, customCloseIconRender, undefined, true);
|
|
|
const headerNode = react.useMemo(() => {
|
|
|
if (!title && !mergedClosable) {
|
|
|
return null;
|
|
|
}
|
|
|
return /*#__PURE__*/react.createElement("div", {
|
|
|
style: headerStyle,
|
|
|
className: classnames_default()(`${prefixCls}-header`, {
|
|
|
[`${prefixCls}-header-close-only`]: mergedClosable && !title && !extra
|
|
|
})
|
|
|
}, /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-header-title`
|
|
|
}, mergedCloseIcon, title && /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-title`
|
|
|
}, title)), extra && /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-extra`
|
|
|
}, extra));
|
|
|
}, [mergedClosable, mergedCloseIcon, extra, headerStyle, prefixCls, title]);
|
|
|
const footerNode = react.useMemo(() => {
|
|
|
if (!footer) {
|
|
|
return null;
|
|
|
}
|
|
|
const footerClassName = `${prefixCls}-footer`;
|
|
|
return /*#__PURE__*/react.createElement("div", {
|
|
|
className: footerClassName,
|
|
|
style: footerStyle
|
|
|
}, footer);
|
|
|
}, [footer, footerStyle, prefixCls]);
|
|
|
return /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-wrapper-body`,
|
|
|
style: drawerStyle
|
|
|
}, headerNode, /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-body`,
|
|
|
style: bodyStyle
|
|
|
}, children), footerNode);
|
|
|
};
|
|
|
/* harmony default export */ var drawer_DrawerPanel = (DrawerPanel_DrawerPanel);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/space/Compact.js
|
|
|
var Compact = __webpack_require__(4173);
|
|
|
// 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/drawer/style/motion.js
|
|
|
const genMotionStyle = token => {
|
|
|
const {
|
|
|
componentCls,
|
|
|
motionDurationSlow
|
|
|
} = token;
|
|
|
const sharedPanelMotion = {
|
|
|
'&-enter, &-appear, &-leave': {
|
|
|
'&-start': {
|
|
|
transition: 'none'
|
|
|
},
|
|
|
'&-active': {
|
|
|
transition: `all ${motionDurationSlow}`
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
return {
|
|
|
[componentCls]: {
|
|
|
// ======================== Mask ========================
|
|
|
[`${componentCls}-mask-motion`]: {
|
|
|
'&-enter, &-appear, &-leave': {
|
|
|
'&-active': {
|
|
|
transition: `all ${motionDurationSlow}`
|
|
|
}
|
|
|
},
|
|
|
'&-enter, &-appear': {
|
|
|
opacity: 0,
|
|
|
'&-active': {
|
|
|
opacity: 1
|
|
|
}
|
|
|
},
|
|
|
'&-leave': {
|
|
|
opacity: 1,
|
|
|
'&-active': {
|
|
|
opacity: 0
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
// ======================= Panel ========================
|
|
|
[`${componentCls}-panel-motion`]: {
|
|
|
// Left
|
|
|
'&-left': [sharedPanelMotion, {
|
|
|
'&-enter, &-appear': {
|
|
|
'&-start': {
|
|
|
transform: 'translateX(-100%) !important'
|
|
|
},
|
|
|
'&-active': {
|
|
|
transform: 'translateX(0)'
|
|
|
}
|
|
|
},
|
|
|
'&-leave': {
|
|
|
transform: 'translateX(0)',
|
|
|
'&-active': {
|
|
|
transform: 'translateX(-100%)'
|
|
|
}
|
|
|
}
|
|
|
}],
|
|
|
// Right
|
|
|
'&-right': [sharedPanelMotion, {
|
|
|
'&-enter, &-appear': {
|
|
|
'&-start': {
|
|
|
transform: 'translateX(100%) !important'
|
|
|
},
|
|
|
'&-active': {
|
|
|
transform: 'translateX(0)'
|
|
|
}
|
|
|
},
|
|
|
'&-leave': {
|
|
|
transform: 'translateX(0)',
|
|
|
'&-active': {
|
|
|
transform: 'translateX(100%)'
|
|
|
}
|
|
|
}
|
|
|
}],
|
|
|
// Top
|
|
|
'&-top': [sharedPanelMotion, {
|
|
|
'&-enter, &-appear': {
|
|
|
'&-start': {
|
|
|
transform: 'translateY(-100%) !important'
|
|
|
},
|
|
|
'&-active': {
|
|
|
transform: 'translateY(0)'
|
|
|
}
|
|
|
},
|
|
|
'&-leave': {
|
|
|
transform: 'translateY(0)',
|
|
|
'&-active': {
|
|
|
transform: 'translateY(-100%)'
|
|
|
}
|
|
|
}
|
|
|
}],
|
|
|
// Bottom
|
|
|
'&-bottom': [sharedPanelMotion, {
|
|
|
'&-enter, &-appear': {
|
|
|
'&-start': {
|
|
|
transform: 'translateY(100%) !important'
|
|
|
},
|
|
|
'&-active': {
|
|
|
transform: 'translateY(0)'
|
|
|
}
|
|
|
},
|
|
|
'&-leave': {
|
|
|
transform: 'translateY(0)',
|
|
|
'&-active': {
|
|
|
transform: 'translateY(100%)'
|
|
|
}
|
|
|
}
|
|
|
}]
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
};
|
|
|
/* harmony default export */ var style_motion = (genMotionStyle);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/drawer/style/index.js
|
|
|
|
|
|
|
|
|
// =============================== Base ===============================
|
|
|
const genDrawerStyle = token => {
|
|
|
const {
|
|
|
componentCls,
|
|
|
zIndexPopup,
|
|
|
colorBgMask,
|
|
|
colorBgElevated,
|
|
|
motionDurationSlow,
|
|
|
motionDurationMid,
|
|
|
padding,
|
|
|
paddingLG,
|
|
|
fontSizeLG,
|
|
|
lineHeightLG,
|
|
|
lineWidth,
|
|
|
lineType,
|
|
|
colorSplit,
|
|
|
marginSM,
|
|
|
colorIcon,
|
|
|
colorIconHover,
|
|
|
colorText,
|
|
|
fontWeightStrong,
|
|
|
footerPaddingBlock,
|
|
|
footerPaddingInline
|
|
|
} = token;
|
|
|
const wrapperCls = `${componentCls}-content-wrapper`;
|
|
|
return {
|
|
|
[componentCls]: {
|
|
|
position: 'fixed',
|
|
|
inset: 0,
|
|
|
zIndex: zIndexPopup,
|
|
|
pointerEvents: 'none',
|
|
|
'&-pure': {
|
|
|
position: 'relative',
|
|
|
background: colorBgElevated,
|
|
|
[`&${componentCls}-left`]: {
|
|
|
boxShadow: token.boxShadowDrawerLeft
|
|
|
},
|
|
|
[`&${componentCls}-right`]: {
|
|
|
boxShadow: token.boxShadowDrawerRight
|
|
|
},
|
|
|
[`&${componentCls}-top`]: {
|
|
|
boxShadow: token.boxShadowDrawerUp
|
|
|
},
|
|
|
[`&${componentCls}-bottom`]: {
|
|
|
boxShadow: token.boxShadowDrawerDown
|
|
|
}
|
|
|
},
|
|
|
'&-inline': {
|
|
|
position: 'absolute'
|
|
|
},
|
|
|
// ====================== Mask ======================
|
|
|
[`${componentCls}-mask`]: {
|
|
|
position: 'absolute',
|
|
|
inset: 0,
|
|
|
zIndex: zIndexPopup,
|
|
|
background: colorBgMask,
|
|
|
pointerEvents: 'auto'
|
|
|
},
|
|
|
// ==================== Content =====================
|
|
|
[wrapperCls]: {
|
|
|
position: 'absolute',
|
|
|
zIndex: zIndexPopup,
|
|
|
maxWidth: '100vw',
|
|
|
transition: `all ${motionDurationSlow}`,
|
|
|
'&-hidden': {
|
|
|
display: 'none'
|
|
|
}
|
|
|
},
|
|
|
// Placement
|
|
|
[`&-left > ${wrapperCls}`]: {
|
|
|
top: 0,
|
|
|
bottom: 0,
|
|
|
left: {
|
|
|
_skip_check_: true,
|
|
|
value: 0
|
|
|
},
|
|
|
boxShadow: token.boxShadowDrawerLeft
|
|
|
},
|
|
|
[`&-right > ${wrapperCls}`]: {
|
|
|
top: 0,
|
|
|
right: {
|
|
|
_skip_check_: true,
|
|
|
value: 0
|
|
|
},
|
|
|
bottom: 0,
|
|
|
boxShadow: token.boxShadowDrawerRight
|
|
|
},
|
|
|
[`&-top > ${wrapperCls}`]: {
|
|
|
top: 0,
|
|
|
insetInline: 0,
|
|
|
boxShadow: token.boxShadowDrawerUp
|
|
|
},
|
|
|
[`&-bottom > ${wrapperCls}`]: {
|
|
|
bottom: 0,
|
|
|
insetInline: 0,
|
|
|
boxShadow: token.boxShadowDrawerDown
|
|
|
},
|
|
|
[`${componentCls}-content`]: {
|
|
|
width: '100%',
|
|
|
height: '100%',
|
|
|
overflow: 'auto',
|
|
|
background: colorBgElevated,
|
|
|
pointerEvents: 'auto'
|
|
|
},
|
|
|
// ===================== Panel ======================
|
|
|
[`${componentCls}-wrapper-body`]: {
|
|
|
display: 'flex',
|
|
|
flexDirection: 'column',
|
|
|
width: '100%',
|
|
|
height: '100%'
|
|
|
},
|
|
|
// Header
|
|
|
[`${componentCls}-header`]: {
|
|
|
display: 'flex',
|
|
|
flex: 0,
|
|
|
alignItems: 'center',
|
|
|
padding: `${padding}px ${paddingLG}px`,
|
|
|
fontSize: fontSizeLG,
|
|
|
lineHeight: lineHeightLG,
|
|
|
borderBottom: `${lineWidth}px ${lineType} ${colorSplit}`,
|
|
|
'&-title': {
|
|
|
display: 'flex',
|
|
|
flex: 1,
|
|
|
alignItems: 'center',
|
|
|
minWidth: 0,
|
|
|
minHeight: 0
|
|
|
}
|
|
|
},
|
|
|
[`${componentCls}-extra`]: {
|
|
|
flex: 'none'
|
|
|
},
|
|
|
[`${componentCls}-close`]: {
|
|
|
display: 'inline-block',
|
|
|
marginInlineEnd: marginSM,
|
|
|
color: colorIcon,
|
|
|
fontWeight: fontWeightStrong,
|
|
|
fontSize: fontSizeLG,
|
|
|
fontStyle: 'normal',
|
|
|
lineHeight: 1,
|
|
|
textAlign: 'center',
|
|
|
textTransform: 'none',
|
|
|
textDecoration: 'none',
|
|
|
background: 'transparent',
|
|
|
border: 0,
|
|
|
outline: 0,
|
|
|
cursor: 'pointer',
|
|
|
transition: `color ${motionDurationMid}`,
|
|
|
textRendering: 'auto',
|
|
|
'&:focus, &:hover': {
|
|
|
color: colorIconHover,
|
|
|
textDecoration: 'none'
|
|
|
}
|
|
|
},
|
|
|
[`${componentCls}-title`]: {
|
|
|
flex: 1,
|
|
|
margin: 0,
|
|
|
color: colorText,
|
|
|
fontWeight: token.fontWeightStrong,
|
|
|
fontSize: fontSizeLG,
|
|
|
lineHeight: lineHeightLG
|
|
|
},
|
|
|
// Body
|
|
|
[`${componentCls}-body`]: {
|
|
|
flex: 1,
|
|
|
minWidth: 0,
|
|
|
minHeight: 0,
|
|
|
padding: paddingLG,
|
|
|
overflow: 'auto'
|
|
|
},
|
|
|
// Footer
|
|
|
[`${componentCls}-footer`]: {
|
|
|
flexShrink: 0,
|
|
|
padding: `${footerPaddingBlock}px ${footerPaddingInline}px`,
|
|
|
borderTop: `${lineWidth}px ${lineType} ${colorSplit}`
|
|
|
},
|
|
|
// ====================== RTL =======================
|
|
|
'&-rtl': {
|
|
|
direction: 'rtl'
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
};
|
|
|
// ============================== Export ==============================
|
|
|
/* harmony default export */ var drawer_style = ((0,genComponentStyleHook/* default */.Z)('Drawer', token => {
|
|
|
const drawerToken = (0,statistic/* merge */.TS)(token, {});
|
|
|
return [genDrawerStyle(drawerToken), style_motion(drawerToken)];
|
|
|
}, token => ({
|
|
|
zIndexPopup: token.zIndexPopupBase,
|
|
|
footerPaddingBlock: token.paddingXS,
|
|
|
footerPaddingInline: token.padding
|
|
|
})));
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/drawer/index.js
|
|
|
'use client';
|
|
|
|
|
|
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;
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CSSINJS
|
|
|
|
|
|
|
|
|
const SizeTypes = (/* unused pure expression or super */ null && (['default', 'large']));
|
|
|
const defaultPushState = {
|
|
|
distance: 180
|
|
|
};
|
|
|
function drawer_Drawer(props) {
|
|
|
var _a;
|
|
|
const {
|
|
|
rootClassName,
|
|
|
width,
|
|
|
height,
|
|
|
size = 'default',
|
|
|
mask = true,
|
|
|
push = defaultPushState,
|
|
|
open,
|
|
|
afterOpenChange,
|
|
|
onClose,
|
|
|
prefixCls: customizePrefixCls,
|
|
|
getContainer: customizeGetContainer,
|
|
|
style,
|
|
|
className,
|
|
|
// Deprecated
|
|
|
visible,
|
|
|
afterVisibleChange
|
|
|
} = props,
|
|
|
rest = __rest(props, ["rootClassName", "width", "height", "size", "mask", "push", "open", "afterOpenChange", "onClose", "prefixCls", "getContainer", "style", "className", "visible", "afterVisibleChange"]);
|
|
|
const {
|
|
|
getPopupContainer,
|
|
|
getPrefixCls,
|
|
|
direction,
|
|
|
drawer
|
|
|
} = react.useContext(config_provider_context/* ConfigContext */.E_);
|
|
|
const prefixCls = getPrefixCls('drawer', customizePrefixCls);
|
|
|
// Style
|
|
|
const [wrapSSR, hashId] = drawer_style(prefixCls);
|
|
|
const getContainer =
|
|
|
// 有可能为 false,所以不能直接判断
|
|
|
customizeGetContainer === undefined && getPopupContainer ? () => getPopupContainer(document.body) : customizeGetContainer;
|
|
|
const drawerClassName = classnames_default()({
|
|
|
'no-mask': !mask,
|
|
|
[`${prefixCls}-rtl`]: direction === 'rtl'
|
|
|
}, rootClassName, hashId);
|
|
|
// ========================== Warning ===========================
|
|
|
if (false) {}
|
|
|
// ============================ Size ============================
|
|
|
const mergedWidth = react.useMemo(() => width !== null && width !== void 0 ? width : size === 'large' ? 736 : 378, [width, size]);
|
|
|
const mergedHeight = react.useMemo(() => height !== null && height !== void 0 ? height : size === 'large' ? 736 : 378, [height, size]);
|
|
|
// =========================== Motion ===========================
|
|
|
const maskMotion = {
|
|
|
motionName: (0,motion/* getTransitionName */.mL)(prefixCls, 'mask-motion'),
|
|
|
motionAppear: true,
|
|
|
motionEnter: true,
|
|
|
motionLeave: true,
|
|
|
motionDeadline: 500
|
|
|
};
|
|
|
const panelMotion = motionPlacement => ({
|
|
|
motionName: (0,motion/* getTransitionName */.mL)(prefixCls, `panel-motion-${motionPlacement}`),
|
|
|
motionAppear: true,
|
|
|
motionEnter: true,
|
|
|
motionLeave: true,
|
|
|
motionDeadline: 500
|
|
|
});
|
|
|
// =========================== Render ===========================
|
|
|
return wrapSSR( /*#__PURE__*/react.createElement(Compact/* NoCompactStyle */.BR, null, /*#__PURE__*/react.createElement(form_context/* NoFormStyle */.Ux, {
|
|
|
status: true,
|
|
|
override: true
|
|
|
}, /*#__PURE__*/react.createElement(rc_drawer_es, Object.assign({
|
|
|
prefixCls: prefixCls,
|
|
|
onClose: onClose,
|
|
|
maskMotion: maskMotion,
|
|
|
motion: panelMotion
|
|
|
}, rest, {
|
|
|
open: open !== null && open !== void 0 ? open : visible,
|
|
|
mask: mask,
|
|
|
push: push,
|
|
|
width: mergedWidth,
|
|
|
height: mergedHeight,
|
|
|
style: Object.assign(Object.assign({}, drawer === null || drawer === void 0 ? void 0 : drawer.style), style),
|
|
|
className: classnames_default()(drawer === null || drawer === void 0 ? void 0 : drawer.className, className),
|
|
|
rootClassName: drawerClassName,
|
|
|
getContainer: getContainer,
|
|
|
afterOpenChange: afterOpenChange !== null && afterOpenChange !== void 0 ? afterOpenChange : afterVisibleChange
|
|
|
}), /*#__PURE__*/react.createElement(drawer_DrawerPanel, Object.assign({
|
|
|
prefixCls: prefixCls
|
|
|
}, rest, {
|
|
|
onClose: onClose
|
|
|
}))))));
|
|
|
}
|
|
|
if (false) {}
|
|
|
function PurePanel(_a) {
|
|
|
var {
|
|
|
prefixCls: customizePrefixCls,
|
|
|
style,
|
|
|
className,
|
|
|
placement = 'right'
|
|
|
} = _a,
|
|
|
restProps = __rest(_a, ["prefixCls", "style", "className", "placement"]);
|
|
|
const {
|
|
|
getPrefixCls
|
|
|
} = react.useContext(config_provider_context/* ConfigContext */.E_);
|
|
|
const prefixCls = getPrefixCls('drawer', customizePrefixCls);
|
|
|
// Style
|
|
|
const [wrapSSR, hashId] = drawer_style(prefixCls);
|
|
|
return wrapSSR( /*#__PURE__*/react.createElement("div", {
|
|
|
className: classnames_default()(prefixCls, `${prefixCls}-pure`, `${prefixCls}-${placement}`, hashId, className),
|
|
|
style: style
|
|
|
}, /*#__PURE__*/react.createElement(drawer_DrawerPanel, Object.assign({
|
|
|
prefixCls: prefixCls
|
|
|
}, restProps))));
|
|
|
}
|
|
|
drawer_Drawer._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;
|
|
|
/* harmony default export */ var drawer = (drawer_Drawer);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 59606:
|
|
|
/*!********************************************************!*\
|
|
|
!*** ./node_modules/antd/es/rate/index.js + 8 modules ***!
|
|
|
\********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ rate; }
|
|
|
});
|
|
|
|
|
|
// 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/StarFilled.js
|
|
|
// This icon file is generated automatically.
|
|
|
var StarFilled = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z" } }] }, "name": "star", "theme": "filled" };
|
|
|
/* harmony default export */ var asn_StarFilled = (StarFilled);
|
|
|
|
|
|
// 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/StarFilled.js
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var StarFilled_StarFilled = function StarFilled(props, ref) {
|
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,esm_extends/* default */.Z)({}, props, {
|
|
|
ref: ref,
|
|
|
icon: asn_StarFilled
|
|
|
}));
|
|
|
};
|
|
|
if (false) {}
|
|
|
/* harmony default export */ var icons_StarFilled = (/*#__PURE__*/react.forwardRef(StarFilled_StarFilled));
|
|
|
// EXTERNAL MODULE: ./node_modules/classnames/index.js
|
|
|
var classnames = __webpack_require__(94184);
|
|
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js
|
|
|
var defineProperty = __webpack_require__(4942);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules
|
|
|
var slicedToArray = __webpack_require__(97685);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
|
|
|
var objectWithoutProperties = __webpack_require__(45987);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/hooks/useMergedState.js
|
|
|
var useMergedState = __webpack_require__(21770);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/KeyCode.js
|
|
|
var KeyCode = __webpack_require__(15105);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/pickAttrs.js
|
|
|
var pickAttrs = __webpack_require__(64217);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-rate/es/Star.js
|
|
|
|
|
|
|
|
|
|
|
|
function Star(props, ref) {
|
|
|
var disabled = props.disabled,
|
|
|
prefixCls = props.prefixCls,
|
|
|
character = props.character,
|
|
|
characterRender = props.characterRender,
|
|
|
index = props.index,
|
|
|
count = props.count,
|
|
|
value = props.value,
|
|
|
allowHalf = props.allowHalf,
|
|
|
focused = props.focused,
|
|
|
onHover = props.onHover,
|
|
|
onClick = props.onClick;
|
|
|
// =========================== Events ===========================
|
|
|
var onInternalHover = function onInternalHover(e) {
|
|
|
onHover(e, index);
|
|
|
};
|
|
|
var onInternalClick = function onInternalClick(e) {
|
|
|
onClick(e, index);
|
|
|
};
|
|
|
var onInternalKeyDown = function onInternalKeyDown(e) {
|
|
|
if (e.keyCode === KeyCode/* default.ENTER */.Z.ENTER) {
|
|
|
onClick(e, index);
|
|
|
}
|
|
|
};
|
|
|
// =========================== Render ===========================
|
|
|
// >>>>> ClassName
|
|
|
var starValue = index + 1;
|
|
|
var classNameList = new Set([prefixCls]);
|
|
|
// TODO: Current we just refactor from CC to FC. This logic seems can be optimized.
|
|
|
if (value === 0 && index === 0 && focused) {
|
|
|
classNameList.add("".concat(prefixCls, "-focused"));
|
|
|
} else if (allowHalf && value + 0.5 >= starValue && value < starValue) {
|
|
|
classNameList.add("".concat(prefixCls, "-half"));
|
|
|
classNameList.add("".concat(prefixCls, "-active"));
|
|
|
if (focused) {
|
|
|
classNameList.add("".concat(prefixCls, "-focused"));
|
|
|
}
|
|
|
} else {
|
|
|
if (starValue <= value) {
|
|
|
classNameList.add("".concat(prefixCls, "-full"));
|
|
|
} else {
|
|
|
classNameList.add("".concat(prefixCls, "-zero"));
|
|
|
}
|
|
|
if (starValue === value && focused) {
|
|
|
classNameList.add("".concat(prefixCls, "-focused"));
|
|
|
}
|
|
|
}
|
|
|
// >>>>> Node
|
|
|
var characterNode = typeof character === 'function' ? character(props) : character;
|
|
|
var start = /*#__PURE__*/react.createElement("li", {
|
|
|
className: classnames_default()(Array.from(classNameList)),
|
|
|
ref: ref
|
|
|
}, /*#__PURE__*/react.createElement("div", {
|
|
|
onClick: disabled ? null : onInternalClick,
|
|
|
onKeyDown: disabled ? null : onInternalKeyDown,
|
|
|
onMouseMove: disabled ? null : onInternalHover,
|
|
|
role: "radio",
|
|
|
"aria-checked": value > index ? 'true' : 'false',
|
|
|
"aria-posinset": index + 1,
|
|
|
"aria-setsize": count,
|
|
|
tabIndex: disabled ? -1 : 0
|
|
|
}, /*#__PURE__*/react.createElement("div", {
|
|
|
className: "".concat(prefixCls, "-first")
|
|
|
}, characterNode), /*#__PURE__*/react.createElement("div", {
|
|
|
className: "".concat(prefixCls, "-second")
|
|
|
}, characterNode)));
|
|
|
if (characterRender) {
|
|
|
start = characterRender(start, props);
|
|
|
}
|
|
|
return start;
|
|
|
}
|
|
|
/* harmony default export */ var es_Star = (/*#__PURE__*/react.forwardRef(Star));
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-rate/es/useRefs.js
|
|
|
|
|
|
function useRefs() {
|
|
|
var nodeRef = react.useRef({});
|
|
|
function getRef(index) {
|
|
|
return nodeRef.current[index];
|
|
|
}
|
|
|
function setRef(index) {
|
|
|
return function (node) {
|
|
|
nodeRef.current[index] = node;
|
|
|
};
|
|
|
}
|
|
|
return [getRef, setRef];
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-rate/es/util.js
|
|
|
function getScroll(w) {
|
|
|
var ret = w.pageXOffset;
|
|
|
var method = 'scrollLeft';
|
|
|
if (typeof ret !== 'number') {
|
|
|
var d = w.document;
|
|
|
// ie6,7,8 standard mode
|
|
|
ret = d.documentElement[method];
|
|
|
if (typeof ret !== 'number') {
|
|
|
// quirks mode
|
|
|
ret = d.body[method];
|
|
|
}
|
|
|
}
|
|
|
return ret;
|
|
|
}
|
|
|
function getClientPosition(elem) {
|
|
|
var x;
|
|
|
var y;
|
|
|
var doc = elem.ownerDocument;
|
|
|
var body = doc.body;
|
|
|
var docElem = doc && doc.documentElement;
|
|
|
var box = elem.getBoundingClientRect();
|
|
|
x = box.left;
|
|
|
y = box.top;
|
|
|
x -= docElem.clientLeft || body.clientLeft || 0;
|
|
|
y -= docElem.clientTop || body.clientTop || 0;
|
|
|
return {
|
|
|
left: x,
|
|
|
top: y
|
|
|
};
|
|
|
}
|
|
|
function getOffsetLeft(el) {
|
|
|
var pos = getClientPosition(el);
|
|
|
var doc = el.ownerDocument;
|
|
|
// Only IE use `parentWindow`
|
|
|
var w = doc.defaultView || doc.parentWindow;
|
|
|
pos.left += getScroll(w);
|
|
|
return pos.left;
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-rate/es/Rate.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["prefixCls", "className", "defaultValue", "value", "count", "allowHalf", "allowClear", "character", "characterRender", "disabled", "direction", "tabIndex", "autoFocus", "onHoverChange", "onChange", "onFocus", "onBlur", "onKeyDown", "onMouseLeave"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function Rate(props, ref) {
|
|
|
var _classNames;
|
|
|
var _props$prefixCls = props.prefixCls,
|
|
|
prefixCls = _props$prefixCls === void 0 ? 'rc-rate' : _props$prefixCls,
|
|
|
className = props.className,
|
|
|
defaultValue = props.defaultValue,
|
|
|
propValue = props.value,
|
|
|
_props$count = props.count,
|
|
|
count = _props$count === void 0 ? 5 : _props$count,
|
|
|
_props$allowHalf = props.allowHalf,
|
|
|
allowHalf = _props$allowHalf === void 0 ? false : _props$allowHalf,
|
|
|
_props$allowClear = props.allowClear,
|
|
|
allowClear = _props$allowClear === void 0 ? true : _props$allowClear,
|
|
|
_props$character = props.character,
|
|
|
character = _props$character === void 0 ? '★' : _props$character,
|
|
|
characterRender = props.characterRender,
|
|
|
disabled = props.disabled,
|
|
|
_props$direction = props.direction,
|
|
|
direction = _props$direction === void 0 ? 'ltr' : _props$direction,
|
|
|
_props$tabIndex = props.tabIndex,
|
|
|
tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,
|
|
|
autoFocus = props.autoFocus,
|
|
|
onHoverChange = props.onHoverChange,
|
|
|
onChange = props.onChange,
|
|
|
onFocus = props.onFocus,
|
|
|
onBlur = props.onBlur,
|
|
|
onKeyDown = props.onKeyDown,
|
|
|
onMouseLeave = props.onMouseLeave,
|
|
|
restProps = (0,objectWithoutProperties/* default */.Z)(props, _excluded);
|
|
|
var _useRefs = useRefs(),
|
|
|
_useRefs2 = (0,slicedToArray/* default */.Z)(_useRefs, 2),
|
|
|
getStarRef = _useRefs2[0],
|
|
|
setStarRef = _useRefs2[1];
|
|
|
var rateRef = react.useRef(null);
|
|
|
// ============================ Ref =============================
|
|
|
var triggerFocus = function triggerFocus() {
|
|
|
if (!disabled) {
|
|
|
var _rateRef$current;
|
|
|
(_rateRef$current = rateRef.current) === null || _rateRef$current === void 0 ? void 0 : _rateRef$current.focus();
|
|
|
}
|
|
|
};
|
|
|
react.useImperativeHandle(ref, function () {
|
|
|
return {
|
|
|
focus: triggerFocus,
|
|
|
blur: function blur() {
|
|
|
if (!disabled) {
|
|
|
var _rateRef$current2;
|
|
|
(_rateRef$current2 = rateRef.current) === null || _rateRef$current2 === void 0 ? void 0 : _rateRef$current2.blur();
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
});
|
|
|
// =========================== Value ============================
|
|
|
var _useMergedState = (0,useMergedState/* default */.Z)(defaultValue || 0, {
|
|
|
value: propValue
|
|
|
}),
|
|
|
_useMergedState2 = (0,slicedToArray/* default */.Z)(_useMergedState, 2),
|
|
|
value = _useMergedState2[0],
|
|
|
setValue = _useMergedState2[1];
|
|
|
var _useMergedState3 = (0,useMergedState/* default */.Z)(null),
|
|
|
_useMergedState4 = (0,slicedToArray/* default */.Z)(_useMergedState3, 2),
|
|
|
cleanedValue = _useMergedState4[0],
|
|
|
setCleanedValue = _useMergedState4[1];
|
|
|
var getStarValue = function getStarValue(index, x) {
|
|
|
var reverse = direction === 'rtl';
|
|
|
var starValue = index + 1;
|
|
|
if (allowHalf) {
|
|
|
var starEle = getStarRef(index);
|
|
|
var leftDis = getOffsetLeft(starEle);
|
|
|
var width = starEle.clientWidth;
|
|
|
if (reverse && x - leftDis > width / 2) {
|
|
|
starValue -= 0.5;
|
|
|
} else if (!reverse && x - leftDis < width / 2) {
|
|
|
starValue -= 0.5;
|
|
|
}
|
|
|
}
|
|
|
return starValue;
|
|
|
};
|
|
|
// >>>>> Change
|
|
|
var changeValue = function changeValue(nextValue) {
|
|
|
setValue(nextValue);
|
|
|
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue);
|
|
|
};
|
|
|
// =========================== Focus ============================
|
|
|
var _React$useState = react.useState(false),
|
|
|
_React$useState2 = (0,slicedToArray/* default */.Z)(_React$useState, 2),
|
|
|
focused = _React$useState2[0],
|
|
|
setFocused = _React$useState2[1];
|
|
|
var onInternalFocus = function onInternalFocus() {
|
|
|
setFocused(true);
|
|
|
onFocus === null || onFocus === void 0 ? void 0 : onFocus();
|
|
|
};
|
|
|
var onInternalBlur = function onInternalBlur() {
|
|
|
setFocused(false);
|
|
|
onBlur === null || onBlur === void 0 ? void 0 : onBlur();
|
|
|
};
|
|
|
// =========================== Hover ============================
|
|
|
var _React$useState3 = react.useState(null),
|
|
|
_React$useState4 = (0,slicedToArray/* default */.Z)(_React$useState3, 2),
|
|
|
hoverValue = _React$useState4[0],
|
|
|
setHoverValue = _React$useState4[1];
|
|
|
var onHover = function onHover(event, index) {
|
|
|
var nextHoverValue = getStarValue(index, event.pageX);
|
|
|
if (nextHoverValue !== cleanedValue) {
|
|
|
setHoverValue(nextHoverValue);
|
|
|
setCleanedValue(null);
|
|
|
}
|
|
|
onHoverChange === null || onHoverChange === void 0 ? void 0 : onHoverChange(nextHoverValue);
|
|
|
};
|
|
|
var onMouseLeaveCallback = function onMouseLeaveCallback(event) {
|
|
|
if (!disabled) {
|
|
|
setHoverValue(null);
|
|
|
setCleanedValue(null);
|
|
|
onHoverChange === null || onHoverChange === void 0 ? void 0 : onHoverChange(undefined);
|
|
|
}
|
|
|
if (event) {
|
|
|
onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave(event);
|
|
|
}
|
|
|
};
|
|
|
// =========================== Click ============================
|
|
|
var onClick = function onClick(event, index) {
|
|
|
var newValue = getStarValue(index, event.pageX);
|
|
|
var isReset = false;
|
|
|
if (allowClear) {
|
|
|
isReset = newValue === value;
|
|
|
}
|
|
|
onMouseLeaveCallback();
|
|
|
changeValue(isReset ? 0 : newValue);
|
|
|
setCleanedValue(isReset ? newValue : null);
|
|
|
};
|
|
|
var onInternalKeyDown = function onInternalKeyDown(event) {
|
|
|
var keyCode = event.keyCode;
|
|
|
var reverse = direction === 'rtl';
|
|
|
var nextValue = value;
|
|
|
if (keyCode === KeyCode/* default.RIGHT */.Z.RIGHT && nextValue < count && !reverse) {
|
|
|
if (allowHalf) {
|
|
|
nextValue += 0.5;
|
|
|
} else {
|
|
|
nextValue += 1;
|
|
|
}
|
|
|
changeValue(nextValue);
|
|
|
event.preventDefault();
|
|
|
} else if (keyCode === KeyCode/* default.LEFT */.Z.LEFT && nextValue > 0 && !reverse) {
|
|
|
if (allowHalf) {
|
|
|
nextValue -= 0.5;
|
|
|
} else {
|
|
|
nextValue -= 1;
|
|
|
}
|
|
|
changeValue(nextValue);
|
|
|
event.preventDefault();
|
|
|
} else if (keyCode === KeyCode/* default.RIGHT */.Z.RIGHT && nextValue > 0 && reverse) {
|
|
|
if (allowHalf) {
|
|
|
nextValue -= 0.5;
|
|
|
} else {
|
|
|
nextValue -= 1;
|
|
|
}
|
|
|
changeValue(nextValue);
|
|
|
event.preventDefault();
|
|
|
} else if (keyCode === KeyCode/* default.LEFT */.Z.LEFT && nextValue < count && reverse) {
|
|
|
if (allowHalf) {
|
|
|
nextValue += 0.5;
|
|
|
} else {
|
|
|
nextValue += 1;
|
|
|
}
|
|
|
changeValue(nextValue);
|
|
|
event.preventDefault();
|
|
|
}
|
|
|
onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
|
|
|
};
|
|
|
// =========================== Effect ===========================
|
|
|
react.useEffect(function () {
|
|
|
if (autoFocus && !disabled) {
|
|
|
triggerFocus();
|
|
|
}
|
|
|
}, []);
|
|
|
// =========================== Render ===========================
|
|
|
// >>> Star
|
|
|
var starNodes = new Array(count).fill(0).map(function (item, index) {
|
|
|
return /*#__PURE__*/react.createElement(es_Star, {
|
|
|
ref: setStarRef(index),
|
|
|
index: index,
|
|
|
count: count,
|
|
|
disabled: disabled,
|
|
|
prefixCls: "".concat(prefixCls, "-star"),
|
|
|
allowHalf: allowHalf,
|
|
|
value: hoverValue === null ? value : hoverValue,
|
|
|
onClick: onClick,
|
|
|
onHover: onHover,
|
|
|
key: item || index,
|
|
|
character: character,
|
|
|
characterRender: characterRender,
|
|
|
focused: focused
|
|
|
});
|
|
|
});
|
|
|
var classString = classnames_default()(prefixCls, className, (_classNames = {}, (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-disabled"), disabled), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-rtl"), direction === 'rtl'), _classNames));
|
|
|
// >>> Node
|
|
|
return /*#__PURE__*/react.createElement("ul", (0,esm_extends/* default */.Z)({
|
|
|
className: classString,
|
|
|
onMouseLeave: onMouseLeaveCallback,
|
|
|
tabIndex: disabled ? -1 : tabIndex,
|
|
|
onFocus: disabled ? null : onInternalFocus,
|
|
|
onBlur: disabled ? null : onInternalBlur,
|
|
|
onKeyDown: disabled ? null : onInternalKeyDown,
|
|
|
ref: rateRef,
|
|
|
role: "radiogroup"
|
|
|
}, (0,pickAttrs/* default */.Z)(restProps, {
|
|
|
aria: true,
|
|
|
data: true,
|
|
|
attr: true
|
|
|
})), starNodes);
|
|
|
}
|
|
|
/* harmony default export */ var es_Rate = (/*#__PURE__*/react.forwardRef(Rate));
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-rate/es/index.js
|
|
|
|
|
|
/* harmony default export */ var es = (es_Rate);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/config-provider/context.js
|
|
|
var context = __webpack_require__(53124);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(83062);
|
|
|
// 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/rate/style/index.js
|
|
|
|
|
|
|
|
|
const genRateStarStyle = token => {
|
|
|
const {
|
|
|
componentCls
|
|
|
} = token;
|
|
|
return {
|
|
|
[`${componentCls}-star`]: {
|
|
|
position: 'relative',
|
|
|
display: 'inline-block',
|
|
|
color: 'inherit',
|
|
|
cursor: 'pointer',
|
|
|
'&:not(:last-child)': {
|
|
|
marginInlineEnd: token.marginXS
|
|
|
},
|
|
|
'> div': {
|
|
|
transition: `all ${token.motionDurationMid}, outline 0s`,
|
|
|
'&:hover': {
|
|
|
transform: token.starHoverScale
|
|
|
},
|
|
|
'&:focus': {
|
|
|
outline: 0
|
|
|
},
|
|
|
'&:focus-visible': {
|
|
|
outline: `${token.lineWidth}px dashed ${token.starColor}`,
|
|
|
transform: token.starHoverScale
|
|
|
}
|
|
|
},
|
|
|
'&-first, &-second': {
|
|
|
color: token.starBg,
|
|
|
transition: `all ${token.motionDurationMid}`,
|
|
|
userSelect: 'none',
|
|
|
[token.iconCls]: {
|
|
|
verticalAlign: 'middle'
|
|
|
}
|
|
|
},
|
|
|
'&-first': {
|
|
|
position: 'absolute',
|
|
|
top: 0,
|
|
|
insetInlineStart: 0,
|
|
|
width: '50%',
|
|
|
height: '100%',
|
|
|
overflow: 'hidden',
|
|
|
opacity: 0
|
|
|
},
|
|
|
[`&-half ${componentCls}-star-first, &-half ${componentCls}-star-second`]: {
|
|
|
opacity: 1
|
|
|
},
|
|
|
[`&-half ${componentCls}-star-first, &-full ${componentCls}-star-second`]: {
|
|
|
color: 'inherit'
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
};
|
|
|
const genRateRtlStyle = token => ({
|
|
|
[`&-rtl${token.componentCls}`]: {
|
|
|
direction: 'rtl'
|
|
|
}
|
|
|
});
|
|
|
const genRateStyle = token => {
|
|
|
const {
|
|
|
componentCls
|
|
|
} = token;
|
|
|
return {
|
|
|
[componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (0,style/* resetComponent */.Wf)(token)), {
|
|
|
display: 'inline-block',
|
|
|
margin: 0,
|
|
|
padding: 0,
|
|
|
color: token.starColor,
|
|
|
fontSize: token.starSize,
|
|
|
lineHeight: 'unset',
|
|
|
listStyle: 'none',
|
|
|
outline: 'none',
|
|
|
// disable styles
|
|
|
[`&-disabled${componentCls} ${componentCls}-star`]: {
|
|
|
cursor: 'default',
|
|
|
'> div:hover': {
|
|
|
transform: 'scale(1)'
|
|
|
}
|
|
|
}
|
|
|
}), genRateStarStyle(token)), {
|
|
|
// text styles
|
|
|
[`+ ${componentCls}-text`]: {
|
|
|
display: 'inline-block',
|
|
|
marginInlineStart: token.marginXS,
|
|
|
fontSize: token.fontSize
|
|
|
}
|
|
|
}), genRateRtlStyle(token))
|
|
|
};
|
|
|
};
|
|
|
// ============================== Export ==============================
|
|
|
/* harmony default export */ var rate_style = ((0,genComponentStyleHook/* default */.Z)('Rate', token => {
|
|
|
const rateToken = (0,statistic/* merge */.TS)(token, {});
|
|
|
return [genRateStyle(rateToken)];
|
|
|
}, token => ({
|
|
|
starColor: token.yellow6,
|
|
|
starSize: token.controlHeightLG * 0.5,
|
|
|
starHoverScale: 'scale(1.1)',
|
|
|
starBg: token.colorFillContent
|
|
|
})));
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/rate/index.js
|
|
|
'use client';
|
|
|
|
|
|
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 rate_Rate = /*#__PURE__*/react.forwardRef((props, ref) => {
|
|
|
const {
|
|
|
prefixCls,
|
|
|
className,
|
|
|
rootClassName,
|
|
|
style,
|
|
|
tooltips,
|
|
|
character = /*#__PURE__*/react.createElement(icons_StarFilled, null)
|
|
|
} = props,
|
|
|
rest = __rest(props, ["prefixCls", "className", "rootClassName", "style", "tooltips", "character"]);
|
|
|
const characterRender = (node, _ref) => {
|
|
|
let {
|
|
|
index
|
|
|
} = _ref;
|
|
|
if (!tooltips) {
|
|
|
return node;
|
|
|
}
|
|
|
return /*#__PURE__*/react.createElement(tooltip/* default */.Z, {
|
|
|
title: tooltips[index]
|
|
|
}, node);
|
|
|
};
|
|
|
const {
|
|
|
getPrefixCls,
|
|
|
direction,
|
|
|
rate
|
|
|
} = react.useContext(context/* ConfigContext */.E_);
|
|
|
const ratePrefixCls = getPrefixCls('rate', prefixCls);
|
|
|
// Style
|
|
|
const [wrapSSR, hashId] = rate_style(ratePrefixCls);
|
|
|
const mergedStyle = Object.assign(Object.assign({}, rate === null || rate === void 0 ? void 0 : rate.style), style);
|
|
|
return wrapSSR( /*#__PURE__*/react.createElement(es, Object.assign({
|
|
|
ref: ref,
|
|
|
character: character,
|
|
|
characterRender: characterRender
|
|
|
}, rest, {
|
|
|
className: classnames_default()(className, rootClassName, hashId, rate === null || rate === void 0 ? void 0 : rate.className),
|
|
|
style: mergedStyle,
|
|
|
prefixCls: ratePrefixCls,
|
|
|
direction: direction
|
|
|
})));
|
|
|
});
|
|
|
if (false) {}
|
|
|
/* harmony default export */ var rate = (rate_Rate);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 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;
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 89777:
|
|
|
/*!*************************************************!*\
|
|
|
!*** ./node_modules/echarts-wordcloud/index.js ***!
|
|
|
\*************************************************/
|
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
|
|
/* unused reexport */ __webpack_require__(/*! ./src/wordCloud */ 88157);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 50024:
|
|
|
/*!***************************************************************!*\
|
|
|
!*** ./node_modules/echarts-wordcloud/src/WordCloudSeries.js ***!
|
|
|
\***************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
|
|
var completeDimensions = __webpack_require__(/*! echarts/lib/data/helper/completeDimensions */ 34380);
|
|
|
var echarts = __webpack_require__(/*! echarts/lib/echarts */ 70492);
|
|
|
|
|
|
echarts.extendSeriesModel({
|
|
|
|
|
|
type: 'series.wordCloud',
|
|
|
|
|
|
visualColorAccessPath: 'textStyle.normal.color',
|
|
|
|
|
|
optionUpdated: function () {
|
|
|
var option = this.option;
|
|
|
option.gridSize = Math.max(Math.floor(option.gridSize), 4);
|
|
|
},
|
|
|
|
|
|
getInitialData: function (option, ecModel) {
|
|
|
var dimensions = completeDimensions(['value'], option.data);
|
|
|
var list = new echarts.List(dimensions, this);
|
|
|
list.initData(option.data);
|
|
|
return list;
|
|
|
},
|
|
|
|
|
|
// Most of options are from https://github.com/timdream/wordcloud2.js/blob/gh-pages/API.md
|
|
|
defaultOption: {
|
|
|
|
|
|
maskImage: null,
|
|
|
|
|
|
// Shape can be 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star'
|
|
|
shape: 'circle',
|
|
|
|
|
|
left: 'center',
|
|
|
|
|
|
top: 'center',
|
|
|
|
|
|
width: '70%',
|
|
|
|
|
|
height: '80%',
|
|
|
|
|
|
sizeRange: [12, 60],
|
|
|
|
|
|
rotationRange: [-90, 90],
|
|
|
|
|
|
rotationStep: 45,
|
|
|
|
|
|
gridSize: 8,
|
|
|
|
|
|
drawOutOfBound: false,
|
|
|
|
|
|
textStyle: {
|
|
|
normal: {
|
|
|
fontWeight: 'normal'
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 40885:
|
|
|
/*!*************************************************************!*\
|
|
|
!*** ./node_modules/echarts-wordcloud/src/WordCloudView.js ***!
|
|
|
\*************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
|
|
var echarts = __webpack_require__(/*! echarts/lib/echarts */ 70492);
|
|
|
|
|
|
function getShallow(model, path) {
|
|
|
return model && model.getShallow(path);
|
|
|
}
|
|
|
|
|
|
echarts.extendChartView({
|
|
|
|
|
|
type: 'wordCloud',
|
|
|
|
|
|
render: function (seriesModel, ecModel, api) {
|
|
|
var group = this.group;
|
|
|
group.removeAll();
|
|
|
|
|
|
var data = seriesModel.getData();
|
|
|
|
|
|
var gridSize = seriesModel.get('gridSize');
|
|
|
|
|
|
seriesModel.layoutInstance.ondraw = function (text, size, dataIdx, drawn) {
|
|
|
var itemModel = data.getItemModel(dataIdx);
|
|
|
var textStyleModel = itemModel.getModel('textStyle.normal');
|
|
|
var emphasisTextStyleModel = itemModel.getModel('textStyle.emphasis');
|
|
|
|
|
|
var textEl = new echarts.graphic.Text({
|
|
|
style: echarts.graphic.setTextStyle({}, textStyleModel, {
|
|
|
x: drawn.info.fillTextOffsetX,
|
|
|
y: drawn.info.fillTextOffsetY + size * 0.5,
|
|
|
text: text,
|
|
|
textBaseline: 'middle',
|
|
|
textFill: data.getItemVisual(dataIdx, 'color'),
|
|
|
fontSize: size
|
|
|
}),
|
|
|
scale: [1 / drawn.info.mu, 1 / drawn.info.mu],
|
|
|
position: [
|
|
|
(drawn.gx + drawn.info.gw / 2) * gridSize,
|
|
|
(drawn.gy + drawn.info.gh / 2) * gridSize
|
|
|
],
|
|
|
rotation: drawn.rot
|
|
|
});
|
|
|
|
|
|
group.add(textEl);
|
|
|
|
|
|
data.setItemGraphicEl(dataIdx, textEl);
|
|
|
|
|
|
echarts.graphic.setHoverStyle(
|
|
|
textEl,
|
|
|
echarts.graphic.setTextStyle({}, emphasisTextStyleModel, null, {forMerge: true}, true)
|
|
|
);
|
|
|
};
|
|
|
|
|
|
this._model = seriesModel;
|
|
|
},
|
|
|
|
|
|
remove: function () {
|
|
|
this.group.removeAll();
|
|
|
|
|
|
this._model.layoutInstance.dispose();
|
|
|
},
|
|
|
|
|
|
dispose: function () {
|
|
|
this._model.layoutInstance.dispose();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 62255:
|
|
|
/*!******************************************************!*\
|
|
|
!*** ./node_modules/echarts-wordcloud/src/layout.js ***!
|
|
|
\******************************************************/
|
|
|
/***/ (function(module, exports) {
|
|
|
|
|
|
"use strict";
|
|
|
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
|
|
|
* wordcloud2.js
|
|
|
* http://timdream.org/wordcloud2.js/
|
|
|
*
|
|
|
* Copyright 2011 - 2013 Tim Chien
|
|
|
* Released under the MIT license
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
// setImmediate
|
|
|
if (!window.setImmediate) {
|
|
|
window.setImmediate = (function setupSetImmediate() {
|
|
|
return window.msSetImmediate ||
|
|
|
window.webkitSetImmediate ||
|
|
|
window.mozSetImmediate ||
|
|
|
window.oSetImmediate ||
|
|
|
(function setupSetZeroTimeout() {
|
|
|
if (!window.postMessage || !window.addEventListener) {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
var callbacks = [undefined];
|
|
|
var message = 'zero-timeout-message';
|
|
|
|
|
|
// Like setTimeout, but only takes a function argument. There's
|
|
|
// no time argument (always zero) and no arguments (you have to
|
|
|
// use a closure).
|
|
|
var setZeroTimeout = function setZeroTimeout(callback) {
|
|
|
var id = callbacks.length;
|
|
|
callbacks.push(callback);
|
|
|
window.postMessage(message + id.toString(36), '*');
|
|
|
|
|
|
return id;
|
|
|
};
|
|
|
|
|
|
window.addEventListener('message', function setZeroTimeoutMessage(evt) {
|
|
|
// Skipping checking event source, retarded IE confused this window
|
|
|
// object with another in the presence of iframe
|
|
|
if (typeof evt.data !== 'string' ||
|
|
|
evt.data.substr(0, message.length) !== message/* ||
|
|
|
evt.source !== window */) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
evt.stopImmediatePropagation();
|
|
|
|
|
|
var id = parseInt(evt.data.substr(message.length), 36);
|
|
|
if (!callbacks[id]) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
callbacks[id]();
|
|
|
callbacks[id] = undefined;
|
|
|
}, true);
|
|
|
|
|
|
/* specify clearImmediate() here since we need the scope */
|
|
|
window.clearImmediate = function clearZeroTimeout(id) {
|
|
|
if (!callbacks[id]) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
callbacks[id] = undefined;
|
|
|
};
|
|
|
|
|
|
return setZeroTimeout;
|
|
|
})() ||
|
|
|
// fallback
|
|
|
function setImmediateFallback(fn) {
|
|
|
window.setTimeout(fn, 0);
|
|
|
};
|
|
|
})();
|
|
|
}
|
|
|
|
|
|
if (!window.clearImmediate) {
|
|
|
window.clearImmediate = (function setupClearImmediate() {
|
|
|
return window.msClearImmediate ||
|
|
|
window.webkitClearImmediate ||
|
|
|
window.mozClearImmediate ||
|
|
|
window.oClearImmediate ||
|
|
|
// "clearZeroTimeout" is implement on the previous block ||
|
|
|
// fallback
|
|
|
function clearImmediateFallback(timer) {
|
|
|
window.clearTimeout(timer);
|
|
|
};
|
|
|
})();
|
|
|
}
|
|
|
|
|
|
(function(global) {
|
|
|
|
|
|
// Check if WordCloud can run on this browser
|
|
|
var isSupported = (function isSupported() {
|
|
|
var canvas = document.createElement('canvas');
|
|
|
if (!canvas || !canvas.getContext) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
var ctx = canvas.getContext('2d');
|
|
|
if (!ctx.getImageData) {
|
|
|
return false;
|
|
|
}
|
|
|
if (!ctx.fillText) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (!Array.prototype.some) {
|
|
|
return false;
|
|
|
}
|
|
|
if (!Array.prototype.push) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
}());
|
|
|
|
|
|
// Find out if the browser impose minium font size by
|
|
|
// drawing small texts on a canvas and measure it's width.
|
|
|
var minFontSize = (function getMinFontSize() {
|
|
|
if (!isSupported) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
var ctx = document.createElement('canvas').getContext('2d');
|
|
|
|
|
|
// start from 20
|
|
|
var size = 20;
|
|
|
|
|
|
// two sizes to measure
|
|
|
var hanWidth, mWidth;
|
|
|
|
|
|
while (size) {
|
|
|
ctx.font = size.toString(10) + 'px sans-serif';
|
|
|
if ((ctx.measureText('\uFF37').width === hanWidth) &&
|
|
|
(ctx.measureText('m').width) === mWidth) {
|
|
|
return (size + 1);
|
|
|
}
|
|
|
|
|
|
hanWidth = ctx.measureText('\uFF37').width;
|
|
|
mWidth = ctx.measureText('m').width;
|
|
|
|
|
|
size--;
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
})();
|
|
|
|
|
|
// Based on http://jsfromhell.com/array/shuffle
|
|
|
var shuffleArray = function shuffleArray(arr) {
|
|
|
for (var j, x, i = arr.length; i;
|
|
|
j = Math.floor(Math.random() * i),
|
|
|
x = arr[--i], arr[i] = arr[j],
|
|
|
arr[j] = x) {}
|
|
|
return arr;
|
|
|
};
|
|
|
|
|
|
var WordCloud = function WordCloud(elements, options) {
|
|
|
if (!isSupported) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (!Array.isArray(elements)) {
|
|
|
elements = [elements];
|
|
|
}
|
|
|
|
|
|
elements.forEach(function(el, i) {
|
|
|
if (typeof el === 'string') {
|
|
|
elements[i] = document.getElementById(el);
|
|
|
if (!elements[i]) {
|
|
|
throw 'The element id specified is not found.';
|
|
|
}
|
|
|
} else if (!el.tagName && !el.appendChild) {
|
|
|
throw 'You must pass valid HTML elements, or ID of the element.';
|
|
|
}
|
|
|
});
|
|
|
|
|
|
/* Default values to be overwritten by options object */
|
|
|
var settings = {
|
|
|
list: [],
|
|
|
fontFamily: '"Trebuchet MS", "Heiti TC", "微軟正黑體", ' +
|
|
|
'"Arial Unicode MS", "Droid Fallback Sans", sans-serif',
|
|
|
fontWeight: 'normal',
|
|
|
color: 'random-dark',
|
|
|
minSize: 0, // 0 to disable
|
|
|
weightFactor: 1,
|
|
|
clearCanvas: true,
|
|
|
backgroundColor: '#fff', // opaque white = rgba(255, 255, 255, 1)
|
|
|
|
|
|
gridSize: 8,
|
|
|
drawOutOfBound: false,
|
|
|
origin: null,
|
|
|
|
|
|
drawMask: false,
|
|
|
maskColor: 'rgba(255,0,0,0.3)',
|
|
|
maskGapWidth: 0.3,
|
|
|
|
|
|
wait: 0,
|
|
|
abortThreshold: 0, // disabled
|
|
|
abort: function noop() {},
|
|
|
|
|
|
minRotation: - Math.PI / 2,
|
|
|
maxRotation: Math.PI / 2,
|
|
|
rotationStep: 0.1,
|
|
|
|
|
|
shuffle: true,
|
|
|
rotateRatio: 0.1,
|
|
|
|
|
|
shape: 'circle',
|
|
|
ellipticity: 0.65,
|
|
|
|
|
|
classes: null,
|
|
|
|
|
|
hover: null,
|
|
|
click: null
|
|
|
};
|
|
|
|
|
|
if (options) {
|
|
|
for (var key in options) {
|
|
|
if (key in settings) {
|
|
|
settings[key] = options[key];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* Convert weightFactor into a function */
|
|
|
if (typeof settings.weightFactor !== 'function') {
|
|
|
var factor = settings.weightFactor;
|
|
|
settings.weightFactor = function weightFactor(pt) {
|
|
|
return pt * factor; //in px
|
|
|
};
|
|
|
}
|
|
|
|
|
|
/* Convert shape into a function */
|
|
|
if (typeof settings.shape !== 'function') {
|
|
|
switch (settings.shape) {
|
|
|
case 'circle':
|
|
|
/* falls through */
|
|
|
default:
|
|
|
// 'circle' is the default and a shortcut in the code loop.
|
|
|
settings.shape = 'circle';
|
|
|
break;
|
|
|
|
|
|
case 'cardioid':
|
|
|
settings.shape = function shapeCardioid(theta) {
|
|
|
return 1 - Math.sin(theta);
|
|
|
};
|
|
|
break;
|
|
|
|
|
|
/*
|
|
|
To work out an X-gon, one has to calculate "m",
|
|
|
where 1/(cos(2*PI/X)+m*sin(2*PI/X)) = 1/(cos(0)+m*sin(0))
|
|
|
http://www.wolframalpha.com/input/?i=1%2F%28cos%282*PI%2FX%29%2Bm*sin%28
|
|
|
2*PI%2FX%29%29+%3D+1%2F%28cos%280%29%2Bm*sin%280%29%29
|
|
|
Copy the solution into polar equation r = 1/(cos(t') + m*sin(t'))
|
|
|
where t' equals to mod(t, 2PI/X);
|
|
|
*/
|
|
|
|
|
|
case 'diamond':
|
|
|
case 'square':
|
|
|
// http://www.wolframalpha.com/input/?i=plot+r+%3D+1%2F%28cos%28mod+
|
|
|
// %28t%2C+PI%2F2%29%29%2Bsin%28mod+%28t%2C+PI%2F2%29%29%29%2C+t+%3D
|
|
|
// +0+..+2*PI
|
|
|
settings.shape = function shapeSquare(theta) {
|
|
|
var thetaPrime = theta % (2 * Math.PI / 4);
|
|
|
return 1 / (Math.cos(thetaPrime) + Math.sin(thetaPrime));
|
|
|
};
|
|
|
break;
|
|
|
|
|
|
case 'triangle-forward':
|
|
|
// http://www.wolframalpha.com/input/?i=plot+r+%3D+1%2F%28cos%28mod+
|
|
|
// %28t%2C+2*PI%2F3%29%29%2Bsqrt%283%29sin%28mod+%28t%2C+2*PI%2F3%29
|
|
|
// %29%29%2C+t+%3D+0+..+2*PI
|
|
|
settings.shape = function shapeTriangle(theta) {
|
|
|
var thetaPrime = theta % (2 * Math.PI / 3);
|
|
|
return 1 / (Math.cos(thetaPrime) +
|
|
|
Math.sqrt(3) * Math.sin(thetaPrime));
|
|
|
};
|
|
|
break;
|
|
|
|
|
|
case 'triangle':
|
|
|
case 'triangle-upright':
|
|
|
settings.shape = function shapeTriangle(theta) {
|
|
|
var thetaPrime = (theta + Math.PI * 3 / 2) % (2 * Math.PI / 3);
|
|
|
return 1 / (Math.cos(thetaPrime) +
|
|
|
Math.sqrt(3) * Math.sin(thetaPrime));
|
|
|
};
|
|
|
break;
|
|
|
|
|
|
case 'pentagon':
|
|
|
settings.shape = function shapePentagon(theta) {
|
|
|
var thetaPrime = (theta + 0.955) % (2 * Math.PI / 5);
|
|
|
return 1 / (Math.cos(thetaPrime) +
|
|
|
0.726543 * Math.sin(thetaPrime));
|
|
|
};
|
|
|
break;
|
|
|
|
|
|
case 'star':
|
|
|
settings.shape = function shapeStar(theta) {
|
|
|
var thetaPrime = (theta + 0.955) % (2 * Math.PI / 10);
|
|
|
if ((theta + 0.955) % (2 * Math.PI / 5) - (2 * Math.PI / 10) >= 0) {
|
|
|
return 1 / (Math.cos((2 * Math.PI / 10) - thetaPrime) +
|
|
|
3.07768 * Math.sin((2 * Math.PI / 10) - thetaPrime));
|
|
|
} else {
|
|
|
return 1 / (Math.cos(thetaPrime) +
|
|
|
3.07768 * Math.sin(thetaPrime));
|
|
|
}
|
|
|
};
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* Make sure gridSize is a whole number and is not smaller than 4px */
|
|
|
settings.gridSize = Math.max(Math.floor(settings.gridSize), 4);
|
|
|
|
|
|
/* shorthand */
|
|
|
var g = settings.gridSize;
|
|
|
var maskRectWidth = g - settings.maskGapWidth;
|
|
|
|
|
|
/* normalize rotation settings */
|
|
|
var rotationRange = Math.abs(settings.maxRotation - settings.minRotation);
|
|
|
var minRotation = Math.min(settings.maxRotation, settings.minRotation);
|
|
|
var rotationStep = settings.rotationStep;
|
|
|
|
|
|
/* information/object available to all functions, set when start() */
|
|
|
var grid, // 2d array containing filling information
|
|
|
ngx, ngy, // width and height of the grid
|
|
|
center, // position of the center of the cloud
|
|
|
maxRadius;
|
|
|
|
|
|
/* timestamp for measuring each putWord() action */
|
|
|
var escapeTime;
|
|
|
|
|
|
/* function for getting the color of the text */
|
|
|
var getTextColor;
|
|
|
function random_hsl_color(min, max) {
|
|
|
return 'hsl(' +
|
|
|
(Math.random() * 360).toFixed() + ',' +
|
|
|
(Math.random() * 30 + 70).toFixed() + '%,' +
|
|
|
(Math.random() * (max - min) + min).toFixed() + '%)';
|
|
|
}
|
|
|
switch (settings.color) {
|
|
|
case 'random-dark':
|
|
|
getTextColor = function getRandomDarkColor() {
|
|
|
return random_hsl_color(10, 50);
|
|
|
};
|
|
|
break;
|
|
|
|
|
|
case 'random-light':
|
|
|
getTextColor = function getRandomLightColor() {
|
|
|
return random_hsl_color(50, 90);
|
|
|
};
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
if (typeof settings.color === 'function') {
|
|
|
getTextColor = settings.color;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
/* function for getting the classes of the text */
|
|
|
var getTextClasses = null;
|
|
|
if (typeof settings.classes === 'function') {
|
|
|
getTextClasses = settings.classes;
|
|
|
}
|
|
|
|
|
|
/* Interactive */
|
|
|
var interactive = false;
|
|
|
var infoGrid = [];
|
|
|
var hovered;
|
|
|
|
|
|
var getInfoGridFromMouseTouchEvent =
|
|
|
function getInfoGridFromMouseTouchEvent(evt) {
|
|
|
var canvas = evt.currentTarget;
|
|
|
var rect = canvas.getBoundingClientRect();
|
|
|
var clientX;
|
|
|
var clientY;
|
|
|
/** Detect if touches are available */
|
|
|
if (evt.touches) {
|
|
|
clientX = evt.touches[0].clientX;
|
|
|
clientY = evt.touches[0].clientY;
|
|
|
} else {
|
|
|
clientX = evt.clientX;
|
|
|
clientY = evt.clientY;
|
|
|
}
|
|
|
var eventX = clientX - rect.left;
|
|
|
var eventY = clientY - rect.top;
|
|
|
|
|
|
var x = Math.floor(eventX * ((canvas.width / rect.width) || 1) / g);
|
|
|
var y = Math.floor(eventY * ((canvas.height / rect.height) || 1) / g);
|
|
|
|
|
|
return infoGrid[x][y];
|
|
|
};
|
|
|
|
|
|
var wordcloudhover = function wordcloudhover(evt) {
|
|
|
var info = getInfoGridFromMouseTouchEvent(evt);
|
|
|
|
|
|
if (hovered === info) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
hovered = info;
|
|
|
if (!info) {
|
|
|
settings.hover(undefined, undefined, evt);
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
settings.hover(info.item, info.dimension, evt);
|
|
|
|
|
|
};
|
|
|
|
|
|
var wordcloudclick = function wordcloudclick(evt) {
|
|
|
var info = getInfoGridFromMouseTouchEvent(evt);
|
|
|
if (!info) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
settings.click(info.item, info.dimension, evt);
|
|
|
evt.preventDefault();
|
|
|
};
|
|
|
|
|
|
/* Get points on the grid for a given radius away from the center */
|
|
|
var pointsAtRadius = [];
|
|
|
var getPointsAtRadius = function getPointsAtRadius(radius) {
|
|
|
if (pointsAtRadius[radius]) {
|
|
|
return pointsAtRadius[radius];
|
|
|
}
|
|
|
|
|
|
// Look for these number of points on each radius
|
|
|
var T = radius * 8;
|
|
|
|
|
|
// Getting all the points at this radius
|
|
|
var t = T;
|
|
|
var points = [];
|
|
|
|
|
|
if (radius === 0) {
|
|
|
points.push([center[0], center[1], 0]);
|
|
|
}
|
|
|
|
|
|
while (t--) {
|
|
|
// distort the radius to put the cloud in shape
|
|
|
var rx = 1;
|
|
|
if (settings.shape !== 'circle') {
|
|
|
rx = settings.shape(t / T * 2 * Math.PI); // 0 to 1
|
|
|
}
|
|
|
|
|
|
// Push [x, y, t]; t is used solely for getTextColor()
|
|
|
points.push([
|
|
|
center[0] + radius * rx * Math.cos(-t / T * 2 * Math.PI),
|
|
|
center[1] + radius * rx * Math.sin(-t / T * 2 * Math.PI) *
|
|
|
settings.ellipticity,
|
|
|
t / T * 2 * Math.PI]);
|
|
|
}
|
|
|
|
|
|
pointsAtRadius[radius] = points;
|
|
|
return points;
|
|
|
};
|
|
|
|
|
|
/* Return true if we had spent too much time */
|
|
|
var exceedTime = function exceedTime() {
|
|
|
return ((settings.abortThreshold > 0) &&
|
|
|
((new Date()).getTime() - escapeTime > settings.abortThreshold));
|
|
|
};
|
|
|
|
|
|
/* Get the deg of rotation according to settings, and luck. */
|
|
|
var getRotateDeg = function getRotateDeg() {
|
|
|
if (settings.rotateRatio === 0) {
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
if (Math.random() > settings.rotateRatio) {
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
if (rotationRange === 0) {
|
|
|
return minRotation;
|
|
|
}
|
|
|
|
|
|
return minRotation + Math.round(Math.random() * rotationRange / rotationStep) * rotationStep;
|
|
|
};
|
|
|
|
|
|
var getTextInfo = function getTextInfo(word, weight, rotateDeg) {
|
|
|
// calculate the acutal font size
|
|
|
// fontSize === 0 means weightFactor function wants the text skipped,
|
|
|
// and size < minSize means we cannot draw the text.
|
|
|
var debug = false;
|
|
|
var fontSize = settings.weightFactor(weight);
|
|
|
if (fontSize <= settings.minSize) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
// Scale factor here is to make sure fillText is not limited by
|
|
|
// the minium font size set by browser.
|
|
|
// It will always be 1 or 2n.
|
|
|
var mu = 1;
|
|
|
if (fontSize < minFontSize) {
|
|
|
mu = (function calculateScaleFactor() {
|
|
|
var mu = 2;
|
|
|
while (mu * fontSize < minFontSize) {
|
|
|
mu += 2;
|
|
|
}
|
|
|
return mu;
|
|
|
})();
|
|
|
}
|
|
|
|
|
|
var fcanvas = document.createElement('canvas');
|
|
|
var fctx = fcanvas.getContext('2d', { willReadFrequently: true });
|
|
|
|
|
|
fctx.font = settings.fontWeight + ' ' +
|
|
|
(fontSize * mu).toString(10) + 'px ' + settings.fontFamily;
|
|
|
|
|
|
// Estimate the dimension of the text with measureText().
|
|
|
var fw = fctx.measureText(word).width / mu;
|
|
|
var fh = Math.max(fontSize * mu,
|
|
|
fctx.measureText('m').width,
|
|
|
fctx.measureText('\uFF37').width) / mu;
|
|
|
|
|
|
// Create a boundary box that is larger than our estimates,
|
|
|
// so text don't get cut of (it sill might)
|
|
|
var boxWidth = fw + fh * 2;
|
|
|
var boxHeight = fh * 3;
|
|
|
var fgw = Math.ceil(boxWidth / g);
|
|
|
var fgh = Math.ceil(boxHeight / g);
|
|
|
boxWidth = fgw * g;
|
|
|
boxHeight = fgh * g;
|
|
|
|
|
|
// Calculate the proper offsets to make the text centered at
|
|
|
// the preferred position.
|
|
|
|
|
|
// This is simply half of the width.
|
|
|
var fillTextOffsetX = - fw / 2;
|
|
|
// Instead of moving the box to the exact middle of the preferred
|
|
|
// position, for Y-offset we move 0.4 instead, so Latin alphabets look
|
|
|
// vertical centered.
|
|
|
var fillTextOffsetY = - fh * 0.4;
|
|
|
|
|
|
// Calculate the actual dimension of the canvas, considering the rotation.
|
|
|
var cgh = Math.ceil((boxWidth * Math.abs(Math.sin(rotateDeg)) +
|
|
|
boxHeight * Math.abs(Math.cos(rotateDeg))) / g);
|
|
|
var cgw = Math.ceil((boxWidth * Math.abs(Math.cos(rotateDeg)) +
|
|
|
boxHeight * Math.abs(Math.sin(rotateDeg))) / g);
|
|
|
var width = cgw * g;
|
|
|
var height = cgh * g;
|
|
|
|
|
|
fcanvas.setAttribute('width', width);
|
|
|
fcanvas.setAttribute('height', height);
|
|
|
|
|
|
if (debug) {
|
|
|
// Attach fcanvas to the DOM
|
|
|
document.body.appendChild(fcanvas);
|
|
|
// Save it's state so that we could restore and draw the grid correctly.
|
|
|
fctx.save();
|
|
|
}
|
|
|
|
|
|
// Scale the canvas with |mu|.
|
|
|
fctx.scale(1 / mu, 1 / mu);
|
|
|
fctx.translate(width * mu / 2, height * mu / 2);
|
|
|
fctx.rotate(- rotateDeg);
|
|
|
|
|
|
// Once the width/height is set, ctx info will be reset.
|
|
|
// Set it again here.
|
|
|
fctx.font = settings.fontWeight + ' ' +
|
|
|
(fontSize * mu).toString(10) + 'px ' + settings.fontFamily;
|
|
|
|
|
|
// Fill the text into the fcanvas.
|
|
|
// XXX: We cannot because textBaseline = 'top' here because
|
|
|
// Firefox and Chrome uses different default line-height for canvas.
|
|
|
// Please read https://bugzil.la/737852#c6.
|
|
|
// Here, we use textBaseline = 'middle' and draw the text at exactly
|
|
|
// 0.5 * fontSize lower.
|
|
|
fctx.fillStyle = '#000';
|
|
|
fctx.textBaseline = 'middle';
|
|
|
fctx.fillText(word, fillTextOffsetX * mu,
|
|
|
(fillTextOffsetY + fontSize * 0.5) * mu);
|
|
|
|
|
|
// Get the pixels of the text
|
|
|
var imageData = fctx.getImageData(0, 0, width, height).data;
|
|
|
|
|
|
if (exceedTime()) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (debug) {
|
|
|
// Draw the box of the original estimation
|
|
|
fctx.strokeRect(fillTextOffsetX * mu,
|
|
|
fillTextOffsetY, fw * mu, fh * mu);
|
|
|
fctx.restore();
|
|
|
}
|
|
|
|
|
|
// Read the pixels and save the information to the occupied array
|
|
|
var occupied = [];
|
|
|
var gx = cgw, gy, x, y;
|
|
|
var bounds = [cgh / 2, cgw / 2, cgh / 2, cgw / 2];
|
|
|
while (gx--) {
|
|
|
gy = cgh;
|
|
|
while (gy--) {
|
|
|
y = g;
|
|
|
singleGridLoop: {
|
|
|
while (y--) {
|
|
|
x = g;
|
|
|
while (x--) {
|
|
|
if (imageData[((gy * g + y) * width +
|
|
|
(gx * g + x)) * 4 + 3]) {
|
|
|
occupied.push([gx, gy]);
|
|
|
|
|
|
if (gx < bounds[3]) {
|
|
|
bounds[3] = gx;
|
|
|
}
|
|
|
if (gx > bounds[1]) {
|
|
|
bounds[1] = gx;
|
|
|
}
|
|
|
if (gy < bounds[0]) {
|
|
|
bounds[0] = gy;
|
|
|
}
|
|
|
if (gy > bounds[2]) {
|
|
|
bounds[2] = gy;
|
|
|
}
|
|
|
|
|
|
if (debug) {
|
|
|
fctx.fillStyle = 'rgba(255, 0, 0, 0.5)';
|
|
|
fctx.fillRect(gx * g, gy * g, g - 0.5, g - 0.5);
|
|
|
}
|
|
|
break singleGridLoop;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (debug) {
|
|
|
fctx.fillStyle = 'rgba(0, 0, 255, 0.5)';
|
|
|
fctx.fillRect(gx * g, gy * g, g - 0.5, g - 0.5);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (debug) {
|
|
|
fctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
|
|
|
fctx.fillRect(bounds[3] * g,
|
|
|
bounds[0] * g,
|
|
|
(bounds[1] - bounds[3] + 1) * g,
|
|
|
(bounds[2] - bounds[0] + 1) * g);
|
|
|
}
|
|
|
|
|
|
// Return information needed to create the text on the real canvas
|
|
|
return {
|
|
|
mu: mu,
|
|
|
occupied: occupied,
|
|
|
bounds: bounds,
|
|
|
gw: cgw,
|
|
|
gh: cgh,
|
|
|
fillTextOffsetX: fillTextOffsetX,
|
|
|
fillTextOffsetY: fillTextOffsetY,
|
|
|
fillTextWidth: fw,
|
|
|
fillTextHeight: fh,
|
|
|
fontSize: fontSize
|
|
|
};
|
|
|
};
|
|
|
|
|
|
/* Determine if there is room available in the given dimension */
|
|
|
var canFitText = function canFitText(gx, gy, gw, gh, occupied) {
|
|
|
// Go through the occupied points,
|
|
|
// return false if the space is not available.
|
|
|
var i = occupied.length;
|
|
|
while (i--) {
|
|
|
var px = gx + occupied[i][0];
|
|
|
var py = gy + occupied[i][1];
|
|
|
|
|
|
if (px >= ngx || py >= ngy || px < 0 || py < 0) {
|
|
|
if (!settings.drawOutOfBound) {
|
|
|
return false;
|
|
|
}
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
if (!grid[px][py]) {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
};
|
|
|
|
|
|
/* Actually draw the text on the grid */
|
|
|
var drawText = function drawText(gx, gy, info, word, weight,
|
|
|
distance, theta, rotateDeg, attributes) {
|
|
|
|
|
|
var fontSize = info.fontSize;
|
|
|
var color;
|
|
|
if (getTextColor) {
|
|
|
color = getTextColor(word, weight, fontSize, distance, theta);
|
|
|
} else {
|
|
|
color = settings.color;
|
|
|
}
|
|
|
|
|
|
var classes;
|
|
|
if (getTextClasses) {
|
|
|
classes = getTextClasses(word, weight, fontSize, distance, theta);
|
|
|
} else {
|
|
|
classes = settings.classes;
|
|
|
}
|
|
|
|
|
|
var dimension;
|
|
|
var bounds = info.bounds;
|
|
|
dimension = {
|
|
|
x: (gx + bounds[3]) * g,
|
|
|
y: (gy + bounds[0]) * g,
|
|
|
w: (bounds[1] - bounds[3] + 1) * g,
|
|
|
h: (bounds[2] - bounds[0] + 1) * g
|
|
|
};
|
|
|
|
|
|
elements.forEach(function(el) {
|
|
|
if (el.getContext) {
|
|
|
var ctx = el.getContext('2d');
|
|
|
var mu = info.mu;
|
|
|
|
|
|
// Save the current state before messing it
|
|
|
ctx.save();
|
|
|
ctx.scale(1 / mu, 1 / mu);
|
|
|
|
|
|
ctx.font = settings.fontWeight + ' ' +
|
|
|
(fontSize * mu).toString(10) + 'px ' + settings.fontFamily;
|
|
|
ctx.fillStyle = color;
|
|
|
|
|
|
// Translate the canvas position to the origin coordinate of where
|
|
|
// the text should be put.
|
|
|
ctx.translate((gx + info.gw / 2) * g * mu,
|
|
|
(gy + info.gh / 2) * g * mu);
|
|
|
|
|
|
if (rotateDeg !== 0) {
|
|
|
ctx.rotate(- rotateDeg);
|
|
|
}
|
|
|
|
|
|
// Finally, fill the text.
|
|
|
|
|
|
// XXX: We cannot because textBaseline = 'top' here because
|
|
|
// Firefox and Chrome uses different default line-height for canvas.
|
|
|
// Please read https://bugzil.la/737852#c6.
|
|
|
// Here, we use textBaseline = 'middle' and draw the text at exactly
|
|
|
// 0.5 * fontSize lower.
|
|
|
ctx.textBaseline = 'middle';
|
|
|
ctx.fillText(word, info.fillTextOffsetX * mu,
|
|
|
(info.fillTextOffsetY + fontSize * 0.5) * mu);
|
|
|
|
|
|
// The below box is always matches how <span>s are positioned
|
|
|
/* ctx.strokeRect(info.fillTextOffsetX, info.fillTextOffsetY,
|
|
|
info.fillTextWidth, info.fillTextHeight); */
|
|
|
|
|
|
// Restore the state.
|
|
|
ctx.restore();
|
|
|
} else {
|
|
|
// drawText on DIV element
|
|
|
var span = document.createElement('span');
|
|
|
var transformRule = '';
|
|
|
transformRule = 'rotate(' + (- rotateDeg / Math.PI * 180) + 'deg) ';
|
|
|
if (info.mu !== 1) {
|
|
|
transformRule +=
|
|
|
'translateX(-' + (info.fillTextWidth / 4) + 'px) ' +
|
|
|
'scale(' + (1 / info.mu) + ')';
|
|
|
}
|
|
|
var styleRules = {
|
|
|
'position': 'absolute',
|
|
|
'display': 'block',
|
|
|
'font': settings.fontWeight + ' ' +
|
|
|
(fontSize * info.mu) + 'px ' + settings.fontFamily,
|
|
|
'left': ((gx + info.gw / 2) * g + info.fillTextOffsetX) + 'px',
|
|
|
'top': ((gy + info.gh / 2) * g + info.fillTextOffsetY) + 'px',
|
|
|
'width': info.fillTextWidth + 'px',
|
|
|
'height': info.fillTextHeight + 'px',
|
|
|
'lineHeight': fontSize + 'px',
|
|
|
'whiteSpace': 'nowrap',
|
|
|
'transform': transformRule,
|
|
|
'webkitTransform': transformRule,
|
|
|
'msTransform': transformRule,
|
|
|
'transformOrigin': '50% 40%',
|
|
|
'webkitTransformOrigin': '50% 40%',
|
|
|
'msTransformOrigin': '50% 40%'
|
|
|
};
|
|
|
if (color) {
|
|
|
styleRules.color = color;
|
|
|
}
|
|
|
span.textContent = word;
|
|
|
for (var cssProp in styleRules) {
|
|
|
span.style[cssProp] = styleRules[cssProp];
|
|
|
}
|
|
|
if (attributes) {
|
|
|
for (var attribute in attributes) {
|
|
|
span.setAttribute(attribute, attributes[attribute]);
|
|
|
}
|
|
|
}
|
|
|
if (classes) {
|
|
|
span.className += classes;
|
|
|
}
|
|
|
el.appendChild(span);
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
|
|
|
/* Help function to updateGrid */
|
|
|
var fillGridAt = function fillGridAt(x, y, drawMask, dimension, item) {
|
|
|
if (x >= ngx || y >= ngy || x < 0 || y < 0) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
grid[x][y] = false;
|
|
|
|
|
|
if (drawMask) {
|
|
|
var ctx = elements[0].getContext('2d');
|
|
|
ctx.fillRect(x * g, y * g, maskRectWidth, maskRectWidth);
|
|
|
}
|
|
|
|
|
|
if (interactive) {
|
|
|
infoGrid[x][y] = { item: item, dimension: dimension };
|
|
|
}
|
|
|
};
|
|
|
|
|
|
/* Update the filling information of the given space with occupied points.
|
|
|
Draw the mask on the canvas if necessary. */
|
|
|
var updateGrid = function updateGrid(gx, gy, gw, gh, info, item) {
|
|
|
var occupied = info.occupied;
|
|
|
var drawMask = settings.drawMask;
|
|
|
var ctx;
|
|
|
if (drawMask) {
|
|
|
ctx = elements[0].getContext('2d');
|
|
|
ctx.save();
|
|
|
ctx.fillStyle = settings.maskColor;
|
|
|
}
|
|
|
|
|
|
var dimension;
|
|
|
if (interactive) {
|
|
|
var bounds = info.bounds;
|
|
|
dimension = {
|
|
|
x: (gx + bounds[3]) * g,
|
|
|
y: (gy + bounds[0]) * g,
|
|
|
w: (bounds[1] - bounds[3] + 1) * g,
|
|
|
h: (bounds[2] - bounds[0] + 1) * g
|
|
|
};
|
|
|
}
|
|
|
|
|
|
var i = occupied.length;
|
|
|
while (i--) {
|
|
|
var px = gx + occupied[i][0];
|
|
|
var py = gy + occupied[i][1];
|
|
|
|
|
|
if (px >= ngx || py >= ngy || px < 0 || py < 0) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
fillGridAt(px, py, drawMask, dimension, item);
|
|
|
}
|
|
|
|
|
|
if (drawMask) {
|
|
|
ctx.restore();
|
|
|
}
|
|
|
};
|
|
|
|
|
|
/* putWord() processes each item on the list,
|
|
|
calculate it's size and determine it's position, and actually
|
|
|
put it on the canvas. */
|
|
|
var putWord = function putWord(item) {
|
|
|
var word, weight, attributes;
|
|
|
if (Array.isArray(item)) {
|
|
|
word = item[0];
|
|
|
weight = item[1];
|
|
|
} else {
|
|
|
word = item.word;
|
|
|
weight = item.weight;
|
|
|
attributes = item.attributes;
|
|
|
}
|
|
|
var rotateDeg = getRotateDeg();
|
|
|
|
|
|
// get info needed to put the text onto the canvas
|
|
|
var info = getTextInfo(word, weight, rotateDeg);
|
|
|
|
|
|
// not getting the info means we shouldn't be drawing this one.
|
|
|
if (!info) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (exceedTime()) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
// If drawOutOfBound is set to false,
|
|
|
// skip the loop if we have already know the bounding box of
|
|
|
// word is larger than the canvas.
|
|
|
if (!settings.drawOutOfBound) {
|
|
|
var bounds = info.bounds;
|
|
|
if ((bounds[1] - bounds[3] + 1) > ngx ||
|
|
|
(bounds[2] - bounds[0] + 1) > ngy) {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// Determine the position to put the text by
|
|
|
// start looking for the nearest points
|
|
|
var r = maxRadius + 1;
|
|
|
|
|
|
var tryToPutWordAtPoint = function(gxy) {
|
|
|
var gx = Math.floor(gxy[0] - info.gw / 2);
|
|
|
var gy = Math.floor(gxy[1] - info.gh / 2);
|
|
|
var gw = info.gw;
|
|
|
var gh = info.gh;
|
|
|
|
|
|
// If we cannot fit the text at this position, return false
|
|
|
// and go to the next position.
|
|
|
if (!canFitText(gx, gy, gw, gh, info.occupied)) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
// Actually put the text on the canvas
|
|
|
drawText(gx, gy, info, word, weight,
|
|
|
(maxRadius - r), gxy[2], rotateDeg, attributes);
|
|
|
|
|
|
// Mark the spaces on the grid as filled
|
|
|
updateGrid(gx, gy, gw, gh, info, item);
|
|
|
|
|
|
return {
|
|
|
gx: gx,
|
|
|
gy: gy,
|
|
|
rot: rotateDeg,
|
|
|
info: info
|
|
|
};
|
|
|
};
|
|
|
|
|
|
while (r--) {
|
|
|
var points = getPointsAtRadius(maxRadius - r);
|
|
|
|
|
|
if (settings.shuffle) {
|
|
|
points = [].concat(points);
|
|
|
shuffleArray(points);
|
|
|
}
|
|
|
|
|
|
// Try to fit the words by looking at each point.
|
|
|
// array.some() will stop and return true
|
|
|
// when putWordAtPoint() returns true.
|
|
|
for (var i = 0; i < points.length; i++) {
|
|
|
var res = tryToPutWordAtPoint(points[i]);
|
|
|
if (res) {
|
|
|
return res;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// var drawn = points.some(tryToPutWordAtPoint);
|
|
|
// if (drawn) {
|
|
|
// // leave putWord() and return true
|
|
|
// return true;
|
|
|
// }
|
|
|
}
|
|
|
// we tried all distances but text won't fit, return null
|
|
|
return null;
|
|
|
};
|
|
|
|
|
|
/* Send DOM event to all elements. Will stop sending event and return
|
|
|
if the previous one is canceled (for cancelable events). */
|
|
|
var sendEvent = function sendEvent(type, cancelable, detail) {
|
|
|
if (cancelable) {
|
|
|
return !elements.some(function(el) {
|
|
|
var evt = document.createEvent('CustomEvent');
|
|
|
evt.initCustomEvent(type, true, cancelable, detail || {});
|
|
|
return !el.dispatchEvent(evt);
|
|
|
}, this);
|
|
|
} else {
|
|
|
elements.forEach(function(el) {
|
|
|
var evt = document.createEvent('CustomEvent');
|
|
|
evt.initCustomEvent(type, true, cancelable, detail || {});
|
|
|
el.dispatchEvent(evt);
|
|
|
}, this);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
/* Start drawing on a canvas */
|
|
|
var start = function start() {
|
|
|
// For dimensions, clearCanvas etc.,
|
|
|
// we only care about the first element.
|
|
|
var canvas = elements[0];
|
|
|
|
|
|
if (canvas.getContext) {
|
|
|
ngx = Math.ceil(canvas.width / g);
|
|
|
ngy = Math.ceil(canvas.height / g);
|
|
|
} else {
|
|
|
var rect = canvas.getBoundingClientRect();
|
|
|
ngx = Math.ceil(rect.width / g);
|
|
|
ngy = Math.ceil(rect.height / g);
|
|
|
}
|
|
|
|
|
|
// Sending a wordcloudstart event which cause the previous loop to stop.
|
|
|
// Do nothing if the event is canceled.
|
|
|
if (!sendEvent('wordcloudstart', true)) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
// Determine the center of the word cloud
|
|
|
center = (settings.origin) ?
|
|
|
[settings.origin[0]/g, settings.origin[1]/g] :
|
|
|
[ngx / 2, ngy / 2];
|
|
|
|
|
|
// Maxium radius to look for space
|
|
|
maxRadius = Math.floor(Math.sqrt(ngx * ngx + ngy * ngy));
|
|
|
|
|
|
/* Clear the canvas only if the clearCanvas is set,
|
|
|
if not, update the grid to the current canvas state */
|
|
|
grid = [];
|
|
|
|
|
|
var gx, gy, i;
|
|
|
if (!canvas.getContext || settings.clearCanvas) {
|
|
|
elements.forEach(function(el) {
|
|
|
if (el.getContext) {
|
|
|
var ctx = el.getContext('2d');
|
|
|
ctx.fillStyle = settings.backgroundColor;
|
|
|
ctx.clearRect(0, 0, ngx * (g + 1), ngy * (g + 1));
|
|
|
ctx.fillRect(0, 0, ngx * (g + 1), ngy * (g + 1));
|
|
|
} else {
|
|
|
el.textContent = '';
|
|
|
el.style.backgroundColor = settings.backgroundColor;
|
|
|
el.style.position = 'relative';
|
|
|
}
|
|
|
});
|
|
|
|
|
|
/* fill the grid with empty state */
|
|
|
gx = ngx;
|
|
|
while (gx--) {
|
|
|
grid[gx] = [];
|
|
|
gy = ngy;
|
|
|
while (gy--) {
|
|
|
grid[gx][gy] = true;
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
/* Determine bgPixel by creating
|
|
|
another canvas and fill the specified background color. */
|
|
|
var bctx = document.createElement('canvas').getContext('2d');
|
|
|
|
|
|
bctx.fillStyle = settings.backgroundColor;
|
|
|
bctx.fillRect(0, 0, 1, 1);
|
|
|
var bgPixel = bctx.getImageData(0, 0, 1, 1).data;
|
|
|
|
|
|
/* Read back the pixels of the canvas we got to tell which part of the
|
|
|
canvas is empty.
|
|
|
(no clearCanvas only works with a canvas, not divs) */
|
|
|
var imageData =
|
|
|
canvas.getContext('2d').getImageData(0, 0, ngx * g, ngy * g).data;
|
|
|
|
|
|
gx = ngx;
|
|
|
var x, y;
|
|
|
while (gx--) {
|
|
|
grid[gx] = [];
|
|
|
gy = ngy;
|
|
|
while (gy--) {
|
|
|
y = g;
|
|
|
singleGridLoop: while (y--) {
|
|
|
x = g;
|
|
|
while (x--) {
|
|
|
i = 4;
|
|
|
while (i--) {
|
|
|
if (imageData[((gy * g + y) * ngx * g +
|
|
|
(gx * g + x)) * 4 + i] !== bgPixel[i]) {
|
|
|
grid[gx][gy] = false;
|
|
|
break singleGridLoop;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (grid[gx][gy] !== false) {
|
|
|
grid[gx][gy] = true;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
imageData = bctx = bgPixel = undefined;
|
|
|
}
|
|
|
|
|
|
// fill the infoGrid with empty state if we need it
|
|
|
if (settings.hover || settings.click) {
|
|
|
|
|
|
interactive = true;
|
|
|
|
|
|
/* fill the grid with empty state */
|
|
|
gx = ngx + 1;
|
|
|
while (gx--) {
|
|
|
infoGrid[gx] = [];
|
|
|
}
|
|
|
|
|
|
if (settings.hover) {
|
|
|
canvas.addEventListener('mousemove', wordcloudhover);
|
|
|
}
|
|
|
|
|
|
if (settings.click) {
|
|
|
canvas.addEventListener('click', wordcloudclick);
|
|
|
canvas.addEventListener('touchstart', wordcloudclick);
|
|
|
canvas.addEventListener('touchend', function (e) {
|
|
|
e.preventDefault();
|
|
|
});
|
|
|
canvas.style.webkitTapHighlightColor = 'rgba(0, 0, 0, 0)';
|
|
|
}
|
|
|
|
|
|
canvas.addEventListener('wordcloudstart', function stopInteraction() {
|
|
|
canvas.removeEventListener('wordcloudstart', stopInteraction);
|
|
|
|
|
|
canvas.removeEventListener('mousemove', wordcloudhover);
|
|
|
canvas.removeEventListener('click', wordcloudclick);
|
|
|
hovered = undefined;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
i = 0;
|
|
|
var loopingFunction, stoppingFunction;
|
|
|
if (settings.wait !== 0) {
|
|
|
loopingFunction = window.setTimeout;
|
|
|
stoppingFunction = window.clearTimeout;
|
|
|
} else {
|
|
|
loopingFunction = window.setImmediate;
|
|
|
stoppingFunction = window.clearImmediate;
|
|
|
}
|
|
|
|
|
|
var addEventListener = function addEventListener(type, listener) {
|
|
|
elements.forEach(function(el) {
|
|
|
el.addEventListener(type, listener);
|
|
|
}, this);
|
|
|
};
|
|
|
|
|
|
var removeEventListener = function removeEventListener(type, listener) {
|
|
|
elements.forEach(function(el) {
|
|
|
el.removeEventListener(type, listener);
|
|
|
}, this);
|
|
|
};
|
|
|
|
|
|
var anotherWordCloudStart = function anotherWordCloudStart() {
|
|
|
removeEventListener('wordcloudstart', anotherWordCloudStart);
|
|
|
stoppingFunction(timer);
|
|
|
};
|
|
|
|
|
|
addEventListener('wordcloudstart', anotherWordCloudStart);
|
|
|
|
|
|
var timer = loopingFunction(function loop() {
|
|
|
if (i >= settings.list.length) {
|
|
|
stoppingFunction(timer);
|
|
|
sendEvent('wordcloudstop', false);
|
|
|
removeEventListener('wordcloudstart', anotherWordCloudStart);
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
escapeTime = (new Date()).getTime();
|
|
|
var drawn = putWord(settings.list[i]);
|
|
|
var canceled = !sendEvent('wordclouddrawn', true, {
|
|
|
item: settings.list[i], drawn: drawn });
|
|
|
if (exceedTime() || canceled) {
|
|
|
stoppingFunction(timer);
|
|
|
settings.abort();
|
|
|
sendEvent('wordcloudabort', false);
|
|
|
sendEvent('wordcloudstop', false);
|
|
|
removeEventListener('wordcloudstart', anotherWordCloudStart);
|
|
|
return;
|
|
|
}
|
|
|
i++;
|
|
|
timer = loopingFunction(loop, settings.wait);
|
|
|
}, settings.wait);
|
|
|
};
|
|
|
|
|
|
// All set, start the drawing
|
|
|
start();
|
|
|
};
|
|
|
|
|
|
WordCloud.isSupported = isSupported;
|
|
|
WordCloud.minFontSize = minFontSize;
|
|
|
|
|
|
// Expose the library as an AMD module
|
|
|
if (true) {
|
|
|
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() { return WordCloud; }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
|
|
|
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
|
|
} else {}
|
|
|
|
|
|
})(this); //jshint ignore:line
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 88157:
|
|
|
/*!*********************************************************!*\
|
|
|
!*** ./node_modules/echarts-wordcloud/src/wordCloud.js ***!
|
|
|
\*********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
|
|
var echarts = __webpack_require__(/*! echarts/lib/echarts */ 70492);
|
|
|
var layoutUtil = __webpack_require__(/*! echarts/lib/util/layout */ 76172);
|
|
|
|
|
|
__webpack_require__(/*! ./WordCloudSeries */ 50024);
|
|
|
__webpack_require__(/*! ./WordCloudView */ 40885);
|
|
|
|
|
|
var wordCloudLayoutHelper = __webpack_require__(/*! ./layout */ 62255);
|
|
|
|
|
|
if (!wordCloudLayoutHelper.isSupported) {
|
|
|
throw new Error('Sorry your browser not support wordCloud');
|
|
|
}
|
|
|
|
|
|
// https://github.com/timdream/wordcloud2.js/blob/c236bee60436e048949f9becc4f0f67bd832dc5c/index.js#L233
|
|
|
function updateCanvasMask(maskCanvas) {
|
|
|
var ctx = maskCanvas.getContext('2d');
|
|
|
var imageData = ctx.getImageData(
|
|
|
0, 0, maskCanvas.width, maskCanvas.height);
|
|
|
var newImageData = ctx.createImageData(imageData);
|
|
|
|
|
|
var toneSum = 0;
|
|
|
var toneCnt = 0;
|
|
|
for (var i = 0; i < imageData.data.length; i += 4) {
|
|
|
var alpha = imageData.data[i + 3];
|
|
|
if (alpha > 128) {
|
|
|
var tone = imageData.data[i]
|
|
|
+ imageData.data[i + 1]
|
|
|
+ imageData.data[i + 2];
|
|
|
toneSum += tone;
|
|
|
++toneCnt;
|
|
|
}
|
|
|
}
|
|
|
var threshold = toneSum / toneCnt;
|
|
|
|
|
|
for (var i = 0; i < imageData.data.length; i += 4) {
|
|
|
var tone = imageData.data[i]
|
|
|
+ imageData.data[i + 1]
|
|
|
+ imageData.data[i + 2];
|
|
|
var alpha = imageData.data[i + 3];
|
|
|
|
|
|
if (alpha < 128 || tone > threshold) {
|
|
|
// Area not to draw
|
|
|
newImageData.data[i] = 0;
|
|
|
newImageData.data[i + 1] = 0;
|
|
|
newImageData.data[i + 2] = 0;
|
|
|
newImageData.data[i + 3] = 0;
|
|
|
}
|
|
|
else {
|
|
|
// Area to draw
|
|
|
// The color must be same with backgroundColor
|
|
|
newImageData.data[i] = 255;
|
|
|
newImageData.data[i + 1] = 255;
|
|
|
newImageData.data[i + 2] = 255;
|
|
|
newImageData.data[i + 3] = 255;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
ctx.putImageData(newImageData, 0, 0);
|
|
|
}
|
|
|
|
|
|
echarts.registerLayout(function (ecModel, api) {
|
|
|
ecModel.eachSeriesByType('wordCloud', function (seriesModel) {
|
|
|
var gridRect = layoutUtil.getLayoutRect(
|
|
|
seriesModel.getBoxLayoutParams(), {
|
|
|
width: api.getWidth(),
|
|
|
height: api.getHeight()
|
|
|
}
|
|
|
);
|
|
|
var data = seriesModel.getData();
|
|
|
|
|
|
var canvas = document.createElement('canvas');
|
|
|
canvas.width = gridRect.width;
|
|
|
canvas.height = gridRect.height;
|
|
|
|
|
|
var ctx = canvas.getContext('2d');
|
|
|
var maskImage = seriesModel.get('maskImage');
|
|
|
if (maskImage) {
|
|
|
try {
|
|
|
ctx.drawImage(maskImage, 0, 0, canvas.width, canvas.height);
|
|
|
updateCanvasMask(canvas);
|
|
|
}
|
|
|
catch (e) {
|
|
|
console.error('Invalid mask image');
|
|
|
console.error(e.toString());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var sizeRange = seriesModel.get('sizeRange');
|
|
|
var rotationRange = seriesModel.get('rotationRange');
|
|
|
var valueExtent = data.getDataExtent('value');
|
|
|
|
|
|
var DEGREE_TO_RAD = Math.PI / 180;
|
|
|
var gridSize = seriesModel.get('gridSize');
|
|
|
wordCloudLayoutHelper(canvas, {
|
|
|
list: data.mapArray('value', function (value, idx) {
|
|
|
var itemModel = data.getItemModel(idx);
|
|
|
return [
|
|
|
data.getName(idx),
|
|
|
itemModel.get('textStyle.normal.textSize', true)
|
|
|
|| echarts.number.linearMap(value, valueExtent, sizeRange),
|
|
|
idx
|
|
|
];
|
|
|
}).sort(function (a, b) {
|
|
|
// Sort from large to small in case there is no more room for more words
|
|
|
return b[1] - a[1];
|
|
|
}),
|
|
|
fontFamily: seriesModel.get('textStyle.normal.fontFamily')
|
|
|
|| seriesModel.get('textStyle.emphasis.fontFamily')
|
|
|
|| ecModel.get('textStyle.fontFamily'),
|
|
|
fontWeight: seriesModel.get('textStyle.normal.fontWeight')
|
|
|
|| seriesModel.get('textStyle.emphasis.fontWeight')
|
|
|
|| ecModel.get('textStyle.fontWeight'),
|
|
|
gridSize: gridSize,
|
|
|
|
|
|
ellipticity: gridRect.height / gridRect.width,
|
|
|
|
|
|
minRotation: rotationRange[0] * DEGREE_TO_RAD,
|
|
|
maxRotation: rotationRange[1] * DEGREE_TO_RAD,
|
|
|
|
|
|
clearCanvas: !maskImage,
|
|
|
|
|
|
rotateRatio: 1,
|
|
|
|
|
|
rotationStep: seriesModel.get('rotationStep') * DEGREE_TO_RAD,
|
|
|
|
|
|
drawOutOfBound: seriesModel.get('drawOutOfBound'),
|
|
|
|
|
|
shuffle: false,
|
|
|
|
|
|
shape: seriesModel.get('shape')
|
|
|
});
|
|
|
|
|
|
function onWordCloudDrawn(e) {
|
|
|
var item = e.detail.item;
|
|
|
if (e.detail.drawn && seriesModel.layoutInstance.ondraw) {
|
|
|
e.detail.drawn.gx += gridRect.x / gridSize;
|
|
|
e.detail.drawn.gy += gridRect.y / gridSize;
|
|
|
seriesModel.layoutInstance.ondraw(
|
|
|
item[0], item[1], item[2], e.detail.drawn
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
canvas.addEventListener('wordclouddrawn', onWordCloudDrawn);
|
|
|
|
|
|
if (seriesModel.layoutInstance) {
|
|
|
// Dispose previous
|
|
|
seriesModel.layoutInstance.dispose();
|
|
|
}
|
|
|
|
|
|
seriesModel.layoutInstance = {
|
|
|
ondraw: null,
|
|
|
|
|
|
dispose: function () {
|
|
|
canvas.removeEventListener('wordclouddrawn', onWordCloudDrawn);
|
|
|
// Abort
|
|
|
canvas.addEventListener('wordclouddrawn', function (e) {
|
|
|
// Prevent default to cancle the event and stop the loop
|
|
|
e.preventDefault();
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
});
|
|
|
});
|
|
|
|
|
|
echarts.registerPreprocessor(function (option) {
|
|
|
var series = (option || {}).series;
|
|
|
!echarts.util.isArray(series) && (series = series ? [series] : []);
|
|
|
|
|
|
var compats = ['shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];
|
|
|
|
|
|
echarts.util.each(series, function (seriesItem) {
|
|
|
if (seriesItem && seriesItem.type === 'wordCloud') {
|
|
|
var textStyle = seriesItem.textStyle || {};
|
|
|
|
|
|
compatTextStyle(textStyle.normal);
|
|
|
compatTextStyle(textStyle.emphasis);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
function compatTextStyle(textStyle) {
|
|
|
textStyle && echarts.util.each(compats, function (key) {
|
|
|
if (textStyle.hasOwnProperty(key)) {
|
|
|
textStyle['text' + echarts.format.capitalFirst(key)] = textStyle[key];
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 86128:
|
|
|
/*!*********************************************************!*\
|
|
|
!*** ./node_modules/rc-tree/es/TreeNode.js + 1 modules ***!
|
|
|
\*********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ TreeNode; }
|
|
|
});
|
|
|
|
|
|
// UNUSED EXPORTS: InternalTreeNode
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
|
|
|
var esm_extends = __webpack_require__(87462);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js
|
|
|
var defineProperty = __webpack_require__(4942);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
|
|
|
var objectWithoutProperties = __webpack_require__(45987);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(1413);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js
|
|
|
var classCallCheck = __webpack_require__(15671);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js
|
|
|
var createClass = __webpack_require__(43144);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
|
|
|
var assertThisInitialized = __webpack_require__(97326);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js
|
|
|
var inherits = __webpack_require__(60136);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createSuper.js + 1 modules
|
|
|
var createSuper = __webpack_require__(51630);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./node_modules/classnames/index.js
|
|
|
var classnames = __webpack_require__(94184);
|
|
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/pickAttrs.js
|
|
|
var pickAttrs = __webpack_require__(64217);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-tree/es/contextTypes.js
|
|
|
var contextTypes = __webpack_require__(27822);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-tree/es/Indent.js
|
|
|
|
|
|
|
|
|
|
|
|
var Indent = function Indent(_ref) {
|
|
|
var prefixCls = _ref.prefixCls,
|
|
|
level = _ref.level,
|
|
|
isStart = _ref.isStart,
|
|
|
isEnd = _ref.isEnd;
|
|
|
var baseClassName = "".concat(prefixCls, "-indent-unit");
|
|
|
var list = [];
|
|
|
for (var i = 0; i < level; i += 1) {
|
|
|
var _classNames;
|
|
|
list.push( /*#__PURE__*/react.createElement("span", {
|
|
|
key: i,
|
|
|
className: classnames_default()(baseClassName, (_classNames = {}, (0,defineProperty/* default */.Z)(_classNames, "".concat(baseClassName, "-start"), isStart[i]), (0,defineProperty/* default */.Z)(_classNames, "".concat(baseClassName, "-end"), isEnd[i]), _classNames))
|
|
|
}));
|
|
|
}
|
|
|
return /*#__PURE__*/react.createElement("span", {
|
|
|
"aria-hidden": "true",
|
|
|
className: "".concat(prefixCls, "-indent")
|
|
|
}, list);
|
|
|
};
|
|
|
/* harmony default export */ var es_Indent = (/*#__PURE__*/react.memo(Indent));
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-tree/es/utils/treeUtil.js
|
|
|
var treeUtil = __webpack_require__(1089);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-tree/es/TreeNode.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["eventKey", "className", "style", "dragOver", "dragOverGapTop", "dragOverGapBottom", "isLeaf", "isStart", "isEnd", "expanded", "selected", "checked", "halfChecked", "loading", "domRef", "active", "data", "onMouseMove", "selectable"];
|
|
|
|
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
|
|
|
|
|
|
|
|
var ICON_OPEN = 'open';
|
|
|
var ICON_CLOSE = 'close';
|
|
|
var defaultTitle = '---';
|
|
|
var InternalTreeNode = /*#__PURE__*/function (_React$Component) {
|
|
|
(0,inherits/* default */.Z)(InternalTreeNode, _React$Component);
|
|
|
var _super = (0,createSuper/* default */.Z)(InternalTreeNode);
|
|
|
function InternalTreeNode() {
|
|
|
var _this;
|
|
|
(0,classCallCheck/* default */.Z)(this, InternalTreeNode);
|
|
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
args[_key] = arguments[_key];
|
|
|
}
|
|
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
|
_this.state = {
|
|
|
dragNodeHighlight: false
|
|
|
};
|
|
|
_this.selectHandle = void 0;
|
|
|
_this.onSelectorClick = function (e) {
|
|
|
// Click trigger before select/check operation
|
|
|
var onNodeClick = _this.props.context.onNodeClick;
|
|
|
onNodeClick(e, (0,treeUtil/* convertNodePropsToEventData */.F)(_this.props));
|
|
|
if (_this.isSelectable()) {
|
|
|
_this.onSelect(e);
|
|
|
} else {
|
|
|
_this.onCheck(e);
|
|
|
}
|
|
|
};
|
|
|
_this.onSelectorDoubleClick = function (e) {
|
|
|
var onNodeDoubleClick = _this.props.context.onNodeDoubleClick;
|
|
|
onNodeDoubleClick(e, (0,treeUtil/* convertNodePropsToEventData */.F)(_this.props));
|
|
|
};
|
|
|
_this.onSelect = function (e) {
|
|
|
if (_this.isDisabled()) return;
|
|
|
var onNodeSelect = _this.props.context.onNodeSelect;
|
|
|
e.preventDefault();
|
|
|
onNodeSelect(e, (0,treeUtil/* convertNodePropsToEventData */.F)(_this.props));
|
|
|
};
|
|
|
_this.onCheck = function (e) {
|
|
|
if (_this.isDisabled()) return;
|
|
|
var _this$props = _this.props,
|
|
|
disableCheckbox = _this$props.disableCheckbox,
|
|
|
checked = _this$props.checked;
|
|
|
var onNodeCheck = _this.props.context.onNodeCheck;
|
|
|
if (!_this.isCheckable() || disableCheckbox) return;
|
|
|
e.preventDefault();
|
|
|
var targetChecked = !checked;
|
|
|
onNodeCheck(e, (0,treeUtil/* convertNodePropsToEventData */.F)(_this.props), targetChecked);
|
|
|
};
|
|
|
_this.onMouseEnter = function (e) {
|
|
|
var onNodeMouseEnter = _this.props.context.onNodeMouseEnter;
|
|
|
onNodeMouseEnter(e, (0,treeUtil/* convertNodePropsToEventData */.F)(_this.props));
|
|
|
};
|
|
|
_this.onMouseLeave = function (e) {
|
|
|
var onNodeMouseLeave = _this.props.context.onNodeMouseLeave;
|
|
|
onNodeMouseLeave(e, (0,treeUtil/* convertNodePropsToEventData */.F)(_this.props));
|
|
|
};
|
|
|
_this.onContextMenu = function (e) {
|
|
|
var onNodeContextMenu = _this.props.context.onNodeContextMenu;
|
|
|
onNodeContextMenu(e, (0,treeUtil/* convertNodePropsToEventData */.F)(_this.props));
|
|
|
};
|
|
|
_this.onDragStart = function (e) {
|
|
|
var onNodeDragStart = _this.props.context.onNodeDragStart;
|
|
|
e.stopPropagation();
|
|
|
_this.setState({
|
|
|
dragNodeHighlight: true
|
|
|
});
|
|
|
onNodeDragStart(e, (0,assertThisInitialized/* default */.Z)(_this));
|
|
|
try {
|
|
|
// ie throw error
|
|
|
// firefox-need-it
|
|
|
e.dataTransfer.setData('text/plain', '');
|
|
|
} catch (error) {
|
|
|
// empty
|
|
|
}
|
|
|
};
|
|
|
_this.onDragEnter = function (e) {
|
|
|
var onNodeDragEnter = _this.props.context.onNodeDragEnter;
|
|
|
e.preventDefault();
|
|
|
e.stopPropagation();
|
|
|
onNodeDragEnter(e, (0,assertThisInitialized/* default */.Z)(_this));
|
|
|
};
|
|
|
_this.onDragOver = function (e) {
|
|
|
var onNodeDragOver = _this.props.context.onNodeDragOver;
|
|
|
e.preventDefault();
|
|
|
e.stopPropagation();
|
|
|
onNodeDragOver(e, (0,assertThisInitialized/* default */.Z)(_this));
|
|
|
};
|
|
|
_this.onDragLeave = function (e) {
|
|
|
var onNodeDragLeave = _this.props.context.onNodeDragLeave;
|
|
|
e.stopPropagation();
|
|
|
onNodeDragLeave(e, (0,assertThisInitialized/* default */.Z)(_this));
|
|
|
};
|
|
|
_this.onDragEnd = function (e) {
|
|
|
var onNodeDragEnd = _this.props.context.onNodeDragEnd;
|
|
|
e.stopPropagation();
|
|
|
_this.setState({
|
|
|
dragNodeHighlight: false
|
|
|
});
|
|
|
onNodeDragEnd(e, (0,assertThisInitialized/* default */.Z)(_this));
|
|
|
};
|
|
|
_this.onDrop = function (e) {
|
|
|
var onNodeDrop = _this.props.context.onNodeDrop;
|
|
|
e.preventDefault();
|
|
|
e.stopPropagation();
|
|
|
_this.setState({
|
|
|
dragNodeHighlight: false
|
|
|
});
|
|
|
onNodeDrop(e, (0,assertThisInitialized/* default */.Z)(_this));
|
|
|
};
|
|
|
// Disabled item still can be switch
|
|
|
_this.onExpand = function (e) {
|
|
|
var _this$props2 = _this.props,
|
|
|
loading = _this$props2.loading,
|
|
|
onNodeExpand = _this$props2.context.onNodeExpand;
|
|
|
if (loading) return;
|
|
|
onNodeExpand(e, (0,treeUtil/* convertNodePropsToEventData */.F)(_this.props));
|
|
|
};
|
|
|
// Drag usage
|
|
|
_this.setSelectHandle = function (node) {
|
|
|
_this.selectHandle = node;
|
|
|
};
|
|
|
_this.getNodeState = function () {
|
|
|
var expanded = _this.props.expanded;
|
|
|
if (_this.isLeaf()) {
|
|
|
return null;
|
|
|
}
|
|
|
return expanded ? ICON_OPEN : ICON_CLOSE;
|
|
|
};
|
|
|
_this.hasChildren = function () {
|
|
|
var eventKey = _this.props.eventKey;
|
|
|
var keyEntities = _this.props.context.keyEntities;
|
|
|
var _ref = keyEntities[eventKey] || {},
|
|
|
children = _ref.children;
|
|
|
return !!(children || []).length;
|
|
|
};
|
|
|
_this.isLeaf = function () {
|
|
|
var _this$props3 = _this.props,
|
|
|
isLeaf = _this$props3.isLeaf,
|
|
|
loaded = _this$props3.loaded;
|
|
|
var loadData = _this.props.context.loadData;
|
|
|
var hasChildren = _this.hasChildren();
|
|
|
if (isLeaf === false) {
|
|
|
return false;
|
|
|
}
|
|
|
return isLeaf || !loadData && !hasChildren || loadData && loaded && !hasChildren;
|
|
|
};
|
|
|
_this.isDisabled = function () {
|
|
|
var disabled = _this.props.disabled;
|
|
|
var treeDisabled = _this.props.context.disabled;
|
|
|
return !!(treeDisabled || disabled);
|
|
|
};
|
|
|
_this.isCheckable = function () {
|
|
|
var checkable = _this.props.checkable;
|
|
|
var treeCheckable = _this.props.context.checkable;
|
|
|
// Return false if tree or treeNode is not checkable
|
|
|
if (!treeCheckable || checkable === false) return false;
|
|
|
return treeCheckable;
|
|
|
};
|
|
|
// Load data to avoid default expanded tree without data
|
|
|
_this.syncLoadData = function (props) {
|
|
|
var expanded = props.expanded,
|
|
|
loading = props.loading,
|
|
|
loaded = props.loaded;
|
|
|
var _this$props$context = _this.props.context,
|
|
|
loadData = _this$props$context.loadData,
|
|
|
onNodeLoad = _this$props$context.onNodeLoad;
|
|
|
if (loading) {
|
|
|
return;
|
|
|
}
|
|
|
// read from state to avoid loadData at same time
|
|
|
if (loadData && expanded && !_this.isLeaf()) {
|
|
|
// We needn't reload data when has children in sync logic
|
|
|
// It's only needed in node expanded
|
|
|
if (!_this.hasChildren() && !loaded) {
|
|
|
onNodeLoad((0,treeUtil/* convertNodePropsToEventData */.F)(_this.props));
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
_this.isDraggable = function () {
|
|
|
var _this$props4 = _this.props,
|
|
|
data = _this$props4.data,
|
|
|
draggable = _this$props4.context.draggable;
|
|
|
return !!(draggable && (!draggable.nodeDraggable || draggable.nodeDraggable(data)));
|
|
|
};
|
|
|
// ==================== Render: Drag Handler ====================
|
|
|
_this.renderDragHandler = function () {
|
|
|
var _this$props$context2 = _this.props.context,
|
|
|
draggable = _this$props$context2.draggable,
|
|
|
prefixCls = _this$props$context2.prefixCls;
|
|
|
return (draggable === null || draggable === void 0 ? void 0 : draggable.icon) ? /*#__PURE__*/react.createElement("span", {
|
|
|
className: "".concat(prefixCls, "-draggable-icon")
|
|
|
}, draggable.icon) : null;
|
|
|
};
|
|
|
// ====================== Render: Switcher ======================
|
|
|
_this.renderSwitcherIconDom = function (isLeaf) {
|
|
|
var switcherIconFromProps = _this.props.switcherIcon;
|
|
|
var switcherIconFromCtx = _this.props.context.switcherIcon;
|
|
|
var switcherIcon = switcherIconFromProps || switcherIconFromCtx;
|
|
|
// if switcherIconDom is null, no render switcher span
|
|
|
if (typeof switcherIcon === 'function') {
|
|
|
return switcherIcon((0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)({}, _this.props), {}, {
|
|
|
isLeaf: isLeaf
|
|
|
}));
|
|
|
}
|
|
|
return switcherIcon;
|
|
|
};
|
|
|
// Switcher
|
|
|
_this.renderSwitcher = function () {
|
|
|
var expanded = _this.props.expanded;
|
|
|
var prefixCls = _this.props.context.prefixCls;
|
|
|
if (_this.isLeaf()) {
|
|
|
// if switcherIconDom is null, no render switcher span
|
|
|
var _switcherIconDom = _this.renderSwitcherIconDom(true);
|
|
|
return _switcherIconDom !== false ? /*#__PURE__*/react.createElement("span", {
|
|
|
className: classnames_default()("".concat(prefixCls, "-switcher"), "".concat(prefixCls, "-switcher-noop"))
|
|
|
}, _switcherIconDom) : null;
|
|
|
}
|
|
|
var switcherCls = classnames_default()("".concat(prefixCls, "-switcher"), "".concat(prefixCls, "-switcher_").concat(expanded ? ICON_OPEN : ICON_CLOSE));
|
|
|
var switcherIconDom = _this.renderSwitcherIconDom(false);
|
|
|
return switcherIconDom !== false ? /*#__PURE__*/react.createElement("span", {
|
|
|
onClick: _this.onExpand,
|
|
|
className: switcherCls
|
|
|
}, switcherIconDom) : null;
|
|
|
};
|
|
|
// ====================== Render: Checkbox ======================
|
|
|
// Checkbox
|
|
|
_this.renderCheckbox = function () {
|
|
|
var _this$props5 = _this.props,
|
|
|
checked = _this$props5.checked,
|
|
|
halfChecked = _this$props5.halfChecked,
|
|
|
disableCheckbox = _this$props5.disableCheckbox;
|
|
|
var prefixCls = _this.props.context.prefixCls;
|
|
|
var disabled = _this.isDisabled();
|
|
|
var checkable = _this.isCheckable();
|
|
|
if (!checkable) return null;
|
|
|
// [Legacy] Custom element should be separate with `checkable` in future
|
|
|
var $custom = typeof checkable !== 'boolean' ? checkable : null;
|
|
|
return /*#__PURE__*/react.createElement("span", {
|
|
|
className: classnames_default()("".concat(prefixCls, "-checkbox"), checked && "".concat(prefixCls, "-checkbox-checked"), !checked && halfChecked && "".concat(prefixCls, "-checkbox-indeterminate"), (disabled || disableCheckbox) && "".concat(prefixCls, "-checkbox-disabled")),
|
|
|
onClick: _this.onCheck
|
|
|
}, $custom);
|
|
|
};
|
|
|
// ==================== Render: Title + Icon ====================
|
|
|
_this.renderIcon = function () {
|
|
|
var loading = _this.props.loading;
|
|
|
var prefixCls = _this.props.context.prefixCls;
|
|
|
return /*#__PURE__*/react.createElement("span", {
|
|
|
className: classnames_default()("".concat(prefixCls, "-iconEle"), "".concat(prefixCls, "-icon__").concat(_this.getNodeState() || 'docu'), loading && "".concat(prefixCls, "-icon_loading"))
|
|
|
});
|
|
|
};
|
|
|
// Icon + Title
|
|
|
_this.renderSelector = function () {
|
|
|
var dragNodeHighlight = _this.state.dragNodeHighlight;
|
|
|
var _this$props6 = _this.props,
|
|
|
_this$props6$title = _this$props6.title,
|
|
|
title = _this$props6$title === void 0 ? defaultTitle : _this$props6$title,
|
|
|
selected = _this$props6.selected,
|
|
|
icon = _this$props6.icon,
|
|
|
loading = _this$props6.loading,
|
|
|
data = _this$props6.data;
|
|
|
var _this$props$context3 = _this.props.context,
|
|
|
prefixCls = _this$props$context3.prefixCls,
|
|
|
showIcon = _this$props$context3.showIcon,
|
|
|
treeIcon = _this$props$context3.icon,
|
|
|
loadData = _this$props$context3.loadData,
|
|
|
titleRender = _this$props$context3.titleRender;
|
|
|
var disabled = _this.isDisabled();
|
|
|
var wrapClass = "".concat(prefixCls, "-node-content-wrapper");
|
|
|
// Icon - Still show loading icon when loading without showIcon
|
|
|
var $icon;
|
|
|
if (showIcon) {
|
|
|
var currentIcon = icon || treeIcon;
|
|
|
$icon = currentIcon ? /*#__PURE__*/react.createElement("span", {
|
|
|
className: classnames_default()("".concat(prefixCls, "-iconEle"), "".concat(prefixCls, "-icon__customize"))
|
|
|
}, typeof currentIcon === 'function' ? currentIcon(_this.props) : currentIcon) : _this.renderIcon();
|
|
|
} else if (loadData && loading) {
|
|
|
$icon = _this.renderIcon();
|
|
|
}
|
|
|
// Title
|
|
|
var titleNode;
|
|
|
if (typeof title === 'function') {
|
|
|
titleNode = title(data);
|
|
|
} else if (titleRender) {
|
|
|
titleNode = titleRender(data);
|
|
|
} else {
|
|
|
titleNode = title;
|
|
|
}
|
|
|
var $title = /*#__PURE__*/react.createElement("span", {
|
|
|
className: "".concat(prefixCls, "-title")
|
|
|
}, titleNode);
|
|
|
return /*#__PURE__*/react.createElement("span", {
|
|
|
ref: _this.setSelectHandle,
|
|
|
title: typeof title === 'string' ? title : '',
|
|
|
className: classnames_default()("".concat(wrapClass), "".concat(wrapClass, "-").concat(_this.getNodeState() || 'normal'), !disabled && (selected || dragNodeHighlight) && "".concat(prefixCls, "-node-selected")),
|
|
|
onMouseEnter: _this.onMouseEnter,
|
|
|
onMouseLeave: _this.onMouseLeave,
|
|
|
onContextMenu: _this.onContextMenu,
|
|
|
onClick: _this.onSelectorClick,
|
|
|
onDoubleClick: _this.onSelectorDoubleClick
|
|
|
}, $icon, $title, _this.renderDropIndicator());
|
|
|
};
|
|
|
// =================== Render: Drop Indicator ===================
|
|
|
_this.renderDropIndicator = function () {
|
|
|
var _this$props7 = _this.props,
|
|
|
disabled = _this$props7.disabled,
|
|
|
eventKey = _this$props7.eventKey;
|
|
|
var _this$props$context4 = _this.props.context,
|
|
|
draggable = _this$props$context4.draggable,
|
|
|
dropLevelOffset = _this$props$context4.dropLevelOffset,
|
|
|
dropPosition = _this$props$context4.dropPosition,
|
|
|
prefixCls = _this$props$context4.prefixCls,
|
|
|
indent = _this$props$context4.indent,
|
|
|
dropIndicatorRender = _this$props$context4.dropIndicatorRender,
|
|
|
dragOverNodeKey = _this$props$context4.dragOverNodeKey,
|
|
|
direction = _this$props$context4.direction;
|
|
|
var rootDraggable = !!draggable;
|
|
|
// allowDrop is calculated in Tree.tsx, there is no need for calc it here
|
|
|
var showIndicator = !disabled && rootDraggable && dragOverNodeKey === eventKey;
|
|
|
return showIndicator ? dropIndicatorRender({
|
|
|
dropPosition: dropPosition,
|
|
|
dropLevelOffset: dropLevelOffset,
|
|
|
indent: indent,
|
|
|
prefixCls: prefixCls,
|
|
|
direction: direction
|
|
|
}) : null;
|
|
|
};
|
|
|
return _this;
|
|
|
}
|
|
|
(0,createClass/* default */.Z)(InternalTreeNode, [{
|
|
|
key: "componentDidMount",
|
|
|
value:
|
|
|
// Isomorphic needn't load data in server side
|
|
|
function componentDidMount() {
|
|
|
this.syncLoadData(this.props);
|
|
|
}
|
|
|
}, {
|
|
|
key: "componentDidUpdate",
|
|
|
value: function componentDidUpdate() {
|
|
|
this.syncLoadData(this.props);
|
|
|
}
|
|
|
}, {
|
|
|
key: "isSelectable",
|
|
|
value: function isSelectable() {
|
|
|
var selectable = this.props.selectable;
|
|
|
var treeSelectable = this.props.context.selectable;
|
|
|
// Ignore when selectable is undefined or null
|
|
|
if (typeof selectable === 'boolean') {
|
|
|
return selectable;
|
|
|
}
|
|
|
return treeSelectable;
|
|
|
}
|
|
|
}, {
|
|
|
key: "render",
|
|
|
value:
|
|
|
// =========================== Render ===========================
|
|
|
function render() {
|
|
|
var _classNames;
|
|
|
var _this$props8 = this.props,
|
|
|
eventKey = _this$props8.eventKey,
|
|
|
className = _this$props8.className,
|
|
|
style = _this$props8.style,
|
|
|
dragOver = _this$props8.dragOver,
|
|
|
dragOverGapTop = _this$props8.dragOverGapTop,
|
|
|
dragOverGapBottom = _this$props8.dragOverGapBottom,
|
|
|
isLeaf = _this$props8.isLeaf,
|
|
|
isStart = _this$props8.isStart,
|
|
|
isEnd = _this$props8.isEnd,
|
|
|
expanded = _this$props8.expanded,
|
|
|
selected = _this$props8.selected,
|
|
|
checked = _this$props8.checked,
|
|
|
halfChecked = _this$props8.halfChecked,
|
|
|
loading = _this$props8.loading,
|
|
|
domRef = _this$props8.domRef,
|
|
|
active = _this$props8.active,
|
|
|
data = _this$props8.data,
|
|
|
onMouseMove = _this$props8.onMouseMove,
|
|
|
selectable = _this$props8.selectable,
|
|
|
otherProps = (0,objectWithoutProperties/* default */.Z)(_this$props8, _excluded);
|
|
|
var _this$props$context5 = this.props.context,
|
|
|
prefixCls = _this$props$context5.prefixCls,
|
|
|
filterTreeNode = _this$props$context5.filterTreeNode,
|
|
|
keyEntities = _this$props$context5.keyEntities,
|
|
|
dropContainerKey = _this$props$context5.dropContainerKey,
|
|
|
dropTargetKey = _this$props$context5.dropTargetKey,
|
|
|
draggingNodeKey = _this$props$context5.draggingNodeKey;
|
|
|
var disabled = this.isDisabled();
|
|
|
var dataOrAriaAttributeProps = (0,pickAttrs/* default */.Z)(otherProps, {
|
|
|
aria: true,
|
|
|
data: true
|
|
|
});
|
|
|
var _ref2 = keyEntities[eventKey] || {},
|
|
|
level = _ref2.level;
|
|
|
var isEndNode = isEnd[isEnd.length - 1];
|
|
|
var mergedDraggable = this.isDraggable();
|
|
|
var draggableWithoutDisabled = !disabled && mergedDraggable;
|
|
|
var dragging = draggingNodeKey === eventKey;
|
|
|
var ariaSelected = selectable !== undefined ? {
|
|
|
'aria-selected': !!selectable
|
|
|
} : undefined;
|
|
|
return /*#__PURE__*/react.createElement("div", (0,esm_extends/* default */.Z)({
|
|
|
ref: domRef,
|
|
|
className: classnames_default()(className, "".concat(prefixCls, "-treenode"), (_classNames = {}, (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-treenode-disabled"), disabled), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-treenode-switcher-").concat(expanded ? 'open' : 'close'), !isLeaf), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-treenode-checkbox-checked"), checked), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-treenode-checkbox-indeterminate"), halfChecked), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-treenode-selected"), selected), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-treenode-loading"), loading), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-treenode-active"), active), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-treenode-leaf-last"), isEndNode), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-treenode-draggable"), mergedDraggable), (0,defineProperty/* default */.Z)(_classNames, "dragging", dragging), (0,defineProperty/* default */.Z)(_classNames, 'drop-target', dropTargetKey === eventKey), (0,defineProperty/* default */.Z)(_classNames, 'drop-container', dropContainerKey === eventKey), (0,defineProperty/* default */.Z)(_classNames, 'drag-over', !disabled && dragOver), (0,defineProperty/* default */.Z)(_classNames, 'drag-over-gap-top', !disabled && dragOverGapTop), (0,defineProperty/* default */.Z)(_classNames, 'drag-over-gap-bottom', !disabled && dragOverGapBottom), (0,defineProperty/* default */.Z)(_classNames, 'filter-node', filterTreeNode && filterTreeNode((0,treeUtil/* convertNodePropsToEventData */.F)(this.props))), _classNames)),
|
|
|
style: style
|
|
|
// Draggable config
|
|
|
,
|
|
|
draggable: draggableWithoutDisabled,
|
|
|
"aria-grabbed": dragging,
|
|
|
onDragStart: draggableWithoutDisabled ? this.onDragStart : undefined
|
|
|
// Drop config
|
|
|
,
|
|
|
onDragEnter: mergedDraggable ? this.onDragEnter : undefined,
|
|
|
onDragOver: mergedDraggable ? this.onDragOver : undefined,
|
|
|
onDragLeave: mergedDraggable ? this.onDragLeave : undefined,
|
|
|
onDrop: mergedDraggable ? this.onDrop : undefined,
|
|
|
onDragEnd: mergedDraggable ? this.onDragEnd : undefined,
|
|
|
onMouseMove: onMouseMove
|
|
|
}, ariaSelected, dataOrAriaAttributeProps), /*#__PURE__*/react.createElement(es_Indent, {
|
|
|
prefixCls: prefixCls,
|
|
|
level: level,
|
|
|
isStart: isStart,
|
|
|
isEnd: isEnd
|
|
|
}), this.renderDragHandler(), this.renderSwitcher(), this.renderCheckbox(), this.renderSelector());
|
|
|
}
|
|
|
}]);
|
|
|
return InternalTreeNode;
|
|
|
}(react.Component);
|
|
|
var ContextTreeNode = function ContextTreeNode(props) {
|
|
|
return /*#__PURE__*/react.createElement(contextTypes/* TreeContext.Consumer */.k.Consumer, null, function (context) {
|
|
|
return /*#__PURE__*/react.createElement(InternalTreeNode, (0,esm_extends/* default */.Z)({}, props, {
|
|
|
context: context
|
|
|
}));
|
|
|
});
|
|
|
};
|
|
|
ContextTreeNode.displayName = 'TreeNode';
|
|
|
ContextTreeNode.isTreeNode = 1;
|
|
|
|
|
|
/* harmony default export */ var TreeNode = (ContextTreeNode);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 27822:
|
|
|
/*!*************************************************!*\
|
|
|
!*** ./node_modules/rc-tree/es/contextTypes.js ***!
|
|
|
\*************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "k": function() { return /* binding */ TreeContext; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
/**
|
|
|
* Webpack has bug for import loop, which is not the same behavior as ES module.
|
|
|
* When util.js imports the TreeNode for tree generate will cause treeContextTypes be empty.
|
|
|
*/
|
|
|
|
|
|
var TreeContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 10225:
|
|
|
/*!*****************************************!*\
|
|
|
!*** ./node_modules/rc-tree/es/util.js ***!
|
|
|
\*****************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "BT": function() { return /* binding */ calcSelectedKeys; },
|
|
|
/* harmony export */ "Ds": function() { return /* binding */ isTreeNode; },
|
|
|
/* harmony export */ "E6": function() { return /* binding */ parseCheckedKeys; },
|
|
|
/* harmony export */ "L0": function() { return /* binding */ arrAdd; },
|
|
|
/* harmony export */ "OM": function() { return /* binding */ calcDropPosition; },
|
|
|
/* harmony export */ "_5": function() { return /* binding */ arrDel; },
|
|
|
/* harmony export */ "bt": function() { return /* binding */ getPosition; },
|
|
|
/* harmony export */ "r7": function() { return /* binding */ conductExpandParent; },
|
|
|
/* harmony export */ "wA": function() { return /* binding */ getDragChildrenKeys; },
|
|
|
/* harmony export */ "yx": function() { return /* binding */ posToArr; }
|
|
|
/* harmony export */ });
|
|
|
/* unused harmony exports isLastChild, isFirstChild, convertDataToTree */
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/esm/toConsumableArray */ 74902);
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/esm/typeof */ 71002);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var rc_util_es_warning__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rc-util/es/warning */ 80334);
|
|
|
/* harmony import */ var _TreeNode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TreeNode */ 86128);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = (/* unused pure expression or super */ null && (["children"]));
|
|
|
/* eslint-disable no-lonely-if */
|
|
|
/**
|
|
|
* Legacy code. Should avoid to use if you are new to import these code.
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
function arrDel(list, value) {
|
|
|
if (!list) return [];
|
|
|
var clone = list.slice();
|
|
|
var index = clone.indexOf(value);
|
|
|
if (index >= 0) {
|
|
|
clone.splice(index, 1);
|
|
|
}
|
|
|
return clone;
|
|
|
}
|
|
|
function arrAdd(list, value) {
|
|
|
var clone = (list || []).slice();
|
|
|
if (clone.indexOf(value) === -1) {
|
|
|
clone.push(value);
|
|
|
}
|
|
|
return clone;
|
|
|
}
|
|
|
function posToArr(pos) {
|
|
|
return pos.split('-');
|
|
|
}
|
|
|
function getPosition(level, index) {
|
|
|
return "".concat(level, "-").concat(index);
|
|
|
}
|
|
|
function isTreeNode(node) {
|
|
|
return node && node.type && node.type.isTreeNode;
|
|
|
}
|
|
|
function getDragChildrenKeys(dragNodeKey, keyEntities) {
|
|
|
// not contains self
|
|
|
// self for left or right drag
|
|
|
var dragChildrenKeys = [];
|
|
|
var entity = keyEntities[dragNodeKey];
|
|
|
function dig() {
|
|
|
var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
|
list.forEach(function (_ref) {
|
|
|
var key = _ref.key,
|
|
|
children = _ref.children;
|
|
|
dragChildrenKeys.push(key);
|
|
|
dig(children);
|
|
|
});
|
|
|
}
|
|
|
dig(entity.children);
|
|
|
return dragChildrenKeys;
|
|
|
}
|
|
|
function isLastChild(treeNodeEntity) {
|
|
|
if (treeNodeEntity.parent) {
|
|
|
var posArr = posToArr(treeNodeEntity.pos);
|
|
|
return Number(posArr[posArr.length - 1]) === treeNodeEntity.parent.children.length - 1;
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
function isFirstChild(treeNodeEntity) {
|
|
|
var posArr = posToArr(treeNodeEntity.pos);
|
|
|
return Number(posArr[posArr.length - 1]) === 0;
|
|
|
}
|
|
|
// Only used when drag, not affect SSR.
|
|
|
function calcDropPosition(event, dragNode, targetNode, indent, startMousePosition, allowDrop, flattenedNodes, keyEntities, expandKeys, direction) {
|
|
|
var _abstractDropNodeEnti;
|
|
|
var clientX = event.clientX,
|
|
|
clientY = event.clientY;
|
|
|
var _event$target$getBoun = event.target.getBoundingClientRect(),
|
|
|
top = _event$target$getBoun.top,
|
|
|
height = _event$target$getBoun.height;
|
|
|
// optional chain for testing
|
|
|
var horizontalMouseOffset = (direction === 'rtl' ? -1 : 1) * (((startMousePosition === null || startMousePosition === void 0 ? void 0 : startMousePosition.x) || 0) - clientX);
|
|
|
var rawDropLevelOffset = (horizontalMouseOffset - 12) / indent;
|
|
|
// find abstract drop node by horizontal offset
|
|
|
var abstractDropNodeEntity = keyEntities[targetNode.props.eventKey];
|
|
|
if (clientY < top + height / 2) {
|
|
|
// first half, set abstract drop node to previous node
|
|
|
var nodeIndex = flattenedNodes.findIndex(function (flattenedNode) {
|
|
|
return flattenedNode.key === abstractDropNodeEntity.key;
|
|
|
});
|
|
|
var prevNodeIndex = nodeIndex <= 0 ? 0 : nodeIndex - 1;
|
|
|
var prevNodeKey = flattenedNodes[prevNodeIndex].key;
|
|
|
abstractDropNodeEntity = keyEntities[prevNodeKey];
|
|
|
}
|
|
|
var initialAbstractDropNodeKey = abstractDropNodeEntity.key;
|
|
|
var abstractDragOverEntity = abstractDropNodeEntity;
|
|
|
var dragOverNodeKey = abstractDropNodeEntity.key;
|
|
|
var dropPosition = 0;
|
|
|
var dropLevelOffset = 0;
|
|
|
// Only allow cross level drop when dragging on a non-expanded node
|
|
|
if (!expandKeys.includes(initialAbstractDropNodeKey)) {
|
|
|
for (var i = 0; i < rawDropLevelOffset; i += 1) {
|
|
|
if (isLastChild(abstractDropNodeEntity)) {
|
|
|
abstractDropNodeEntity = abstractDropNodeEntity.parent;
|
|
|
dropLevelOffset += 1;
|
|
|
} else {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
var abstractDragDataNode = dragNode.props.data;
|
|
|
var abstractDropDataNode = abstractDropNodeEntity.node;
|
|
|
var dropAllowed = true;
|
|
|
if (isFirstChild(abstractDropNodeEntity) && abstractDropNodeEntity.level === 0 && clientY < top + height / 2 && allowDrop({
|
|
|
dragNode: abstractDragDataNode,
|
|
|
dropNode: abstractDropDataNode,
|
|
|
dropPosition: -1
|
|
|
}) && abstractDropNodeEntity.key === targetNode.props.eventKey) {
|
|
|
// first half of first node in first level
|
|
|
dropPosition = -1;
|
|
|
} else if ((abstractDragOverEntity.children || []).length && expandKeys.includes(dragOverNodeKey)) {
|
|
|
// drop on expanded node
|
|
|
// only allow drop inside
|
|
|
if (allowDrop({
|
|
|
dragNode: abstractDragDataNode,
|
|
|
dropNode: abstractDropDataNode,
|
|
|
dropPosition: 0
|
|
|
})) {
|
|
|
dropPosition = 0;
|
|
|
} else {
|
|
|
dropAllowed = false;
|
|
|
}
|
|
|
} else if (dropLevelOffset === 0) {
|
|
|
if (rawDropLevelOffset > -1.5) {
|
|
|
// | Node | <- abstractDropNode
|
|
|
// | -^-===== | <- mousePosition
|
|
|
// 1. try drop after
|
|
|
// 2. do not allow drop
|
|
|
if (allowDrop({
|
|
|
dragNode: abstractDragDataNode,
|
|
|
dropNode: abstractDropDataNode,
|
|
|
dropPosition: 1
|
|
|
})) {
|
|
|
dropPosition = 1;
|
|
|
} else {
|
|
|
dropAllowed = false;
|
|
|
}
|
|
|
} else {
|
|
|
// | Node | <- abstractDropNode
|
|
|
// | ---==^== | <- mousePosition
|
|
|
// whether it has children or doesn't has children
|
|
|
// always
|
|
|
// 1. try drop inside
|
|
|
// 2. try drop after
|
|
|
// 3. do not allow drop
|
|
|
if (allowDrop({
|
|
|
dragNode: abstractDragDataNode,
|
|
|
dropNode: abstractDropDataNode,
|
|
|
dropPosition: 0
|
|
|
})) {
|
|
|
dropPosition = 0;
|
|
|
} else if (allowDrop({
|
|
|
dragNode: abstractDragDataNode,
|
|
|
dropNode: abstractDropDataNode,
|
|
|
dropPosition: 1
|
|
|
})) {
|
|
|
dropPosition = 1;
|
|
|
} else {
|
|
|
dropAllowed = false;
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
// | Node1 | <- abstractDropNode
|
|
|
// | Node2 |
|
|
|
// --^--|----=====| <- mousePosition
|
|
|
// 1. try insert after Node1
|
|
|
// 2. do not allow drop
|
|
|
if (allowDrop({
|
|
|
dragNode: abstractDragDataNode,
|
|
|
dropNode: abstractDropDataNode,
|
|
|
dropPosition: 1
|
|
|
})) {
|
|
|
dropPosition = 1;
|
|
|
} else {
|
|
|
dropAllowed = false;
|
|
|
}
|
|
|
}
|
|
|
return {
|
|
|
dropPosition: dropPosition,
|
|
|
dropLevelOffset: dropLevelOffset,
|
|
|
dropTargetKey: abstractDropNodeEntity.key,
|
|
|
dropTargetPos: abstractDropNodeEntity.pos,
|
|
|
dragOverNodeKey: dragOverNodeKey,
|
|
|
dropContainerKey: dropPosition === 0 ? null : ((_abstractDropNodeEnti = abstractDropNodeEntity.parent) === null || _abstractDropNodeEnti === void 0 ? void 0 : _abstractDropNodeEnti.key) || null,
|
|
|
dropAllowed: dropAllowed
|
|
|
};
|
|
|
}
|
|
|
/**
|
|
|
* Return selectedKeys according with multiple prop
|
|
|
* @param selectedKeys
|
|
|
* @param props
|
|
|
* @returns [string]
|
|
|
*/
|
|
|
function calcSelectedKeys(selectedKeys, props) {
|
|
|
if (!selectedKeys) return undefined;
|
|
|
var multiple = props.multiple;
|
|
|
if (multiple) {
|
|
|
return selectedKeys.slice();
|
|
|
}
|
|
|
if (selectedKeys.length) {
|
|
|
return [selectedKeys[0]];
|
|
|
}
|
|
|
return selectedKeys;
|
|
|
}
|
|
|
var internalProcessProps = function internalProcessProps(props) {
|
|
|
return props;
|
|
|
};
|
|
|
function convertDataToTree(treeData, processor) {
|
|
|
if (!treeData) return [];
|
|
|
var _ref2 = processor || {},
|
|
|
_ref2$processProps = _ref2.processProps,
|
|
|
processProps = _ref2$processProps === void 0 ? internalProcessProps : _ref2$processProps;
|
|
|
var list = Array.isArray(treeData) ? treeData : [treeData];
|
|
|
return list.map(function (_ref3) {
|
|
|
var children = _ref3.children,
|
|
|
props = _objectWithoutProperties(_ref3, _excluded);
|
|
|
var childrenNodes = convertDataToTree(children, processor);
|
|
|
return /*#__PURE__*/React.createElement(TreeNode, _extends({
|
|
|
key: props.key
|
|
|
}, processProps(props)), childrenNodes);
|
|
|
});
|
|
|
}
|
|
|
/**
|
|
|
* Parse `checkedKeys` to { checkedKeys, halfCheckedKeys } style
|
|
|
*/
|
|
|
function parseCheckedKeys(keys) {
|
|
|
if (!keys) {
|
|
|
return null;
|
|
|
}
|
|
|
// Convert keys to object format
|
|
|
var keyProps;
|
|
|
if (Array.isArray(keys)) {
|
|
|
// [Legacy] Follow the api doc
|
|
|
keyProps = {
|
|
|
checkedKeys: keys,
|
|
|
halfCheckedKeys: undefined
|
|
|
};
|
|
|
} else if ((0,_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z)(keys) === 'object') {
|
|
|
keyProps = {
|
|
|
checkedKeys: keys.checked || undefined,
|
|
|
halfCheckedKeys: keys.halfChecked || undefined
|
|
|
};
|
|
|
} else {
|
|
|
(0,rc_util_es_warning__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .ZP)(false, '`checkedKeys` is not an array or an object');
|
|
|
return null;
|
|
|
}
|
|
|
return keyProps;
|
|
|
}
|
|
|
/**
|
|
|
* If user use `autoExpandParent` we should get the list of parent node
|
|
|
* @param keyList
|
|
|
* @param keyEntities
|
|
|
*/
|
|
|
function conductExpandParent(keyList, keyEntities) {
|
|
|
var expandedKeys = new Set();
|
|
|
function conductUp(key) {
|
|
|
if (expandedKeys.has(key)) return;
|
|
|
var entity = keyEntities[key];
|
|
|
if (!entity) return;
|
|
|
expandedKeys.add(key);
|
|
|
var parent = entity.parent,
|
|
|
node = entity.node;
|
|
|
if (node.disabled) return;
|
|
|
if (parent) {
|
|
|
conductUp(parent.key);
|
|
|
}
|
|
|
}
|
|
|
(keyList || []).forEach(function (key) {
|
|
|
conductUp(key);
|
|
|
});
|
|
|
return (0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(expandedKeys);
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 17341:
|
|
|
/*!******************************************************!*\
|
|
|
!*** ./node_modules/rc-tree/es/utils/conductUtil.js ***!
|
|
|
\******************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "S": function() { return /* binding */ conductCheck; }
|
|
|
/* harmony export */ });
|
|
|
/* unused harmony export isCheckDisabled */
|
|
|
/* harmony import */ var rc_util_es_warning__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rc-util/es/warning */ 80334);
|
|
|
|
|
|
function removeFromCheckedKeys(halfCheckedKeys, checkedKeys) {
|
|
|
var filteredKeys = new Set();
|
|
|
halfCheckedKeys.forEach(function (key) {
|
|
|
if (!checkedKeys.has(key)) {
|
|
|
filteredKeys.add(key);
|
|
|
}
|
|
|
});
|
|
|
return filteredKeys;
|
|
|
}
|
|
|
function isCheckDisabled(node) {
|
|
|
var _ref = node || {},
|
|
|
disabled = _ref.disabled,
|
|
|
disableCheckbox = _ref.disableCheckbox,
|
|
|
checkable = _ref.checkable;
|
|
|
return !!(disabled || disableCheckbox) || checkable === false;
|
|
|
}
|
|
|
// Fill miss keys
|
|
|
function fillConductCheck(keys, levelEntities, maxLevel, syntheticGetCheckDisabled) {
|
|
|
var checkedKeys = new Set(keys);
|
|
|
var halfCheckedKeys = new Set();
|
|
|
// Add checked keys top to bottom
|
|
|
for (var level = 0; level <= maxLevel; level += 1) {
|
|
|
var entities = levelEntities.get(level) || new Set();
|
|
|
entities.forEach(function (entity) {
|
|
|
var key = entity.key,
|
|
|
node = entity.node,
|
|
|
_entity$children = entity.children,
|
|
|
children = _entity$children === void 0 ? [] : _entity$children;
|
|
|
if (checkedKeys.has(key) && !syntheticGetCheckDisabled(node)) {
|
|
|
children.filter(function (childEntity) {
|
|
|
return !syntheticGetCheckDisabled(childEntity.node);
|
|
|
}).forEach(function (childEntity) {
|
|
|
checkedKeys.add(childEntity.key);
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
// Add checked keys from bottom to top
|
|
|
var visitedKeys = new Set();
|
|
|
for (var _level = maxLevel; _level >= 0; _level -= 1) {
|
|
|
var _entities = levelEntities.get(_level) || new Set();
|
|
|
_entities.forEach(function (entity) {
|
|
|
var parent = entity.parent,
|
|
|
node = entity.node;
|
|
|
// Skip if no need to check
|
|
|
if (syntheticGetCheckDisabled(node) || !entity.parent || visitedKeys.has(entity.parent.key)) {
|
|
|
return;
|
|
|
}
|
|
|
// Skip if parent is disabled
|
|
|
if (syntheticGetCheckDisabled(entity.parent.node)) {
|
|
|
visitedKeys.add(parent.key);
|
|
|
return;
|
|
|
}
|
|
|
var allChecked = true;
|
|
|
var partialChecked = false;
|
|
|
(parent.children || []).filter(function (childEntity) {
|
|
|
return !syntheticGetCheckDisabled(childEntity.node);
|
|
|
}).forEach(function (_ref2) {
|
|
|
var key = _ref2.key;
|
|
|
var checked = checkedKeys.has(key);
|
|
|
if (allChecked && !checked) {
|
|
|
allChecked = false;
|
|
|
}
|
|
|
if (!partialChecked && (checked || halfCheckedKeys.has(key))) {
|
|
|
partialChecked = true;
|
|
|
}
|
|
|
});
|
|
|
if (allChecked) {
|
|
|
checkedKeys.add(parent.key);
|
|
|
}
|
|
|
if (partialChecked) {
|
|
|
halfCheckedKeys.add(parent.key);
|
|
|
}
|
|
|
visitedKeys.add(parent.key);
|
|
|
});
|
|
|
}
|
|
|
return {
|
|
|
checkedKeys: Array.from(checkedKeys),
|
|
|
halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys))
|
|
|
};
|
|
|
}
|
|
|
// Remove useless key
|
|
|
function cleanConductCheck(keys, halfKeys, levelEntities, maxLevel, syntheticGetCheckDisabled) {
|
|
|
var checkedKeys = new Set(keys);
|
|
|
var halfCheckedKeys = new Set(halfKeys);
|
|
|
// Remove checked keys from top to bottom
|
|
|
for (var level = 0; level <= maxLevel; level += 1) {
|
|
|
var entities = levelEntities.get(level) || new Set();
|
|
|
entities.forEach(function (entity) {
|
|
|
var key = entity.key,
|
|
|
node = entity.node,
|
|
|
_entity$children2 = entity.children,
|
|
|
children = _entity$children2 === void 0 ? [] : _entity$children2;
|
|
|
if (!checkedKeys.has(key) && !halfCheckedKeys.has(key) && !syntheticGetCheckDisabled(node)) {
|
|
|
children.filter(function (childEntity) {
|
|
|
return !syntheticGetCheckDisabled(childEntity.node);
|
|
|
}).forEach(function (childEntity) {
|
|
|
checkedKeys.delete(childEntity.key);
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
// Remove checked keys form bottom to top
|
|
|
halfCheckedKeys = new Set();
|
|
|
var visitedKeys = new Set();
|
|
|
for (var _level2 = maxLevel; _level2 >= 0; _level2 -= 1) {
|
|
|
var _entities2 = levelEntities.get(_level2) || new Set();
|
|
|
_entities2.forEach(function (entity) {
|
|
|
var parent = entity.parent,
|
|
|
node = entity.node;
|
|
|
// Skip if no need to check
|
|
|
if (syntheticGetCheckDisabled(node) || !entity.parent || visitedKeys.has(entity.parent.key)) {
|
|
|
return;
|
|
|
}
|
|
|
// Skip if parent is disabled
|
|
|
if (syntheticGetCheckDisabled(entity.parent.node)) {
|
|
|
visitedKeys.add(parent.key);
|
|
|
return;
|
|
|
}
|
|
|
var allChecked = true;
|
|
|
var partialChecked = false;
|
|
|
(parent.children || []).filter(function (childEntity) {
|
|
|
return !syntheticGetCheckDisabled(childEntity.node);
|
|
|
}).forEach(function (_ref3) {
|
|
|
var key = _ref3.key;
|
|
|
var checked = checkedKeys.has(key);
|
|
|
if (allChecked && !checked) {
|
|
|
allChecked = false;
|
|
|
}
|
|
|
if (!partialChecked && (checked || halfCheckedKeys.has(key))) {
|
|
|
partialChecked = true;
|
|
|
}
|
|
|
});
|
|
|
if (!allChecked) {
|
|
|
checkedKeys.delete(parent.key);
|
|
|
}
|
|
|
if (partialChecked) {
|
|
|
halfCheckedKeys.add(parent.key);
|
|
|
}
|
|
|
visitedKeys.add(parent.key);
|
|
|
});
|
|
|
}
|
|
|
return {
|
|
|
checkedKeys: Array.from(checkedKeys),
|
|
|
halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys))
|
|
|
};
|
|
|
}
|
|
|
/**
|
|
|
* Conduct with keys.
|
|
|
* @param keyList current key list
|
|
|
* @param keyEntities key - dataEntity map
|
|
|
* @param mode `fill` to fill missing key, `clean` to remove useless key
|
|
|
*/
|
|
|
function conductCheck(keyList, checked, keyEntities, getCheckDisabled) {
|
|
|
var warningMissKeys = [];
|
|
|
var syntheticGetCheckDisabled;
|
|
|
if (getCheckDisabled) {
|
|
|
syntheticGetCheckDisabled = getCheckDisabled;
|
|
|
} else {
|
|
|
syntheticGetCheckDisabled = isCheckDisabled;
|
|
|
}
|
|
|
// We only handle exist keys
|
|
|
var keys = new Set(keyList.filter(function (key) {
|
|
|
var hasEntity = !!keyEntities[key];
|
|
|
if (!hasEntity) {
|
|
|
warningMissKeys.push(key);
|
|
|
}
|
|
|
return hasEntity;
|
|
|
}));
|
|
|
var levelEntities = new Map();
|
|
|
var maxLevel = 0;
|
|
|
// Convert entities by level for calculation
|
|
|
Object.keys(keyEntities).forEach(function (key) {
|
|
|
var entity = keyEntities[key];
|
|
|
var level = entity.level;
|
|
|
var levelSet = levelEntities.get(level);
|
|
|
if (!levelSet) {
|
|
|
levelSet = new Set();
|
|
|
levelEntities.set(level, levelSet);
|
|
|
}
|
|
|
levelSet.add(entity);
|
|
|
maxLevel = Math.max(maxLevel, level);
|
|
|
});
|
|
|
(0,rc_util_es_warning__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP)(!warningMissKeys.length, "Tree missing follow keys: ".concat(warningMissKeys.slice(0, 100).map(function (key) {
|
|
|
return "'".concat(key, "'");
|
|
|
}).join(', ')));
|
|
|
var result;
|
|
|
if (checked === true) {
|
|
|
result = fillConductCheck(keys, levelEntities, maxLevel, syntheticGetCheckDisabled);
|
|
|
} else {
|
|
|
result = cleanConductCheck(keys, checked.halfCheckedKeys, levelEntities, maxLevel, syntheticGetCheckDisabled);
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 1089:
|
|
|
/*!***************************************************!*\
|
|
|
!*** ./node_modules/rc-tree/es/utils/treeUtil.js ***!
|
|
|
\***************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "F": function() { return /* binding */ convertNodePropsToEventData; },
|
|
|
/* harmony export */ "H8": function() { return /* binding */ getTreeNodeProps; },
|
|
|
/* harmony export */ "I8": function() { return /* binding */ convertDataToEntities; },
|
|
|
/* harmony export */ "km": function() { return /* binding */ getKey; },
|
|
|
/* harmony export */ "oH": function() { return /* binding */ flattenTreeData; },
|
|
|
/* harmony export */ "w$": function() { return /* binding */ fillFieldNames; },
|
|
|
/* harmony export */ "zn": function() { return /* binding */ convertTreeToData; }
|
|
|
/* harmony export */ });
|
|
|
/* unused harmony exports warningWithoutKey, traverseDataNodes */
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/esm/typeof */ 71002);
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/esm/toConsumableArray */ 74902);
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ 1413);
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutProperties */ 45987);
|
|
|
/* harmony import */ var rc_util_es_omit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rc-util/es/omit */ 98423);
|
|
|
/* harmony import */ var rc_util_es_Children_toArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rc-util/es/Children/toArray */ 50344);
|
|
|
/* harmony import */ var rc_util_es_warning__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rc-util/es/warning */ 80334);
|
|
|
/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ 10225);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["children"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getKey(key, pos) {
|
|
|
if (key !== null && key !== undefined) {
|
|
|
return key;
|
|
|
}
|
|
|
return pos;
|
|
|
}
|
|
|
function fillFieldNames(fieldNames) {
|
|
|
var _ref = fieldNames || {},
|
|
|
title = _ref.title,
|
|
|
_title = _ref._title,
|
|
|
key = _ref.key,
|
|
|
children = _ref.children;
|
|
|
var mergedTitle = title || 'title';
|
|
|
return {
|
|
|
title: mergedTitle,
|
|
|
_title: _title || [mergedTitle],
|
|
|
key: key || 'key',
|
|
|
children: children || 'children'
|
|
|
};
|
|
|
}
|
|
|
/**
|
|
|
* Warning if TreeNode do not provides key
|
|
|
*/
|
|
|
function warningWithoutKey(treeData, fieldNames) {
|
|
|
var keys = new Map();
|
|
|
function dig(list) {
|
|
|
var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
|
(list || []).forEach(function (treeNode) {
|
|
|
var key = treeNode[fieldNames.key];
|
|
|
var children = treeNode[fieldNames.children];
|
|
|
warning(key !== null && key !== undefined, "Tree node must have a certain key: [".concat(path).concat(key, "]"));
|
|
|
var recordKey = String(key);
|
|
|
warning(!keys.has(recordKey) || key === null || key === undefined, "Same 'key' exist in the Tree: ".concat(recordKey));
|
|
|
keys.set(recordKey, true);
|
|
|
dig(children, "".concat(path).concat(recordKey, " > "));
|
|
|
});
|
|
|
}
|
|
|
dig(treeData);
|
|
|
}
|
|
|
/**
|
|
|
* Convert `children` of Tree into `treeData` structure.
|
|
|
*/
|
|
|
function convertTreeToData(rootNodes) {
|
|
|
function dig(node) {
|
|
|
var treeNodes = (0,rc_util_es_Children_toArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z)(node);
|
|
|
return treeNodes.map(function (treeNode) {
|
|
|
// Filter invalidate node
|
|
|
if (!(0,_util__WEBPACK_IMPORTED_MODULE_2__/* .isTreeNode */ .Ds)(treeNode)) {
|
|
|
(0,rc_util_es_warning__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .ZP)(!treeNode, 'Tree/TreeNode can only accept TreeNode as children.');
|
|
|
return null;
|
|
|
}
|
|
|
var key = treeNode.key;
|
|
|
var _treeNode$props = treeNode.props,
|
|
|
children = _treeNode$props.children,
|
|
|
rest = (0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z)(_treeNode$props, _excluded);
|
|
|
var dataNode = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)({
|
|
|
key: key
|
|
|
}, rest);
|
|
|
var parsedChildren = dig(children);
|
|
|
if (parsedChildren.length) {
|
|
|
dataNode.children = parsedChildren;
|
|
|
}
|
|
|
return dataNode;
|
|
|
}).filter(function (dataNode) {
|
|
|
return dataNode;
|
|
|
});
|
|
|
}
|
|
|
return dig(rootNodes);
|
|
|
}
|
|
|
/**
|
|
|
* Flat nest tree data into flatten list. This is used for virtual list render.
|
|
|
* @param treeNodeList Origin data node list
|
|
|
* @param expandedKeys
|
|
|
* need expanded keys, provides `true` means all expanded (used in `rc-tree-select`).
|
|
|
*/
|
|
|
function flattenTreeData(treeNodeList, expandedKeys, fieldNames) {
|
|
|
var _fillFieldNames = fillFieldNames(fieldNames),
|
|
|
fieldTitles = _fillFieldNames._title,
|
|
|
fieldKey = _fillFieldNames.key,
|
|
|
fieldChildren = _fillFieldNames.children;
|
|
|
var expandedKeySet = new Set(expandedKeys === true ? [] : expandedKeys);
|
|
|
var flattenList = [];
|
|
|
function dig(list) {
|
|
|
var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
|
return list.map(function (treeNode, index) {
|
|
|
var pos = (0,_util__WEBPACK_IMPORTED_MODULE_2__/* .getPosition */ .bt)(parent ? parent.pos : '0', index);
|
|
|
var mergedKey = getKey(treeNode[fieldKey], pos);
|
|
|
// Pick matched title in field title list
|
|
|
var mergedTitle;
|
|
|
for (var i = 0; i < fieldTitles.length; i += 1) {
|
|
|
var fieldTitle = fieldTitles[i];
|
|
|
if (treeNode[fieldTitle] !== undefined) {
|
|
|
mergedTitle = treeNode[fieldTitle];
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
// Add FlattenDataNode into list
|
|
|
var flattenNode = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)({}, (0,rc_util_es_omit__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z)(treeNode, [].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)(fieldTitles), [fieldKey, fieldChildren]))), {}, {
|
|
|
title: mergedTitle,
|
|
|
key: mergedKey,
|
|
|
parent: parent,
|
|
|
pos: pos,
|
|
|
children: null,
|
|
|
data: treeNode,
|
|
|
isStart: [].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)(parent ? parent.isStart : []), [index === 0]),
|
|
|
isEnd: [].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)(parent ? parent.isEnd : []), [index === list.length - 1])
|
|
|
});
|
|
|
flattenList.push(flattenNode);
|
|
|
// Loop treeNode children
|
|
|
if (expandedKeys === true || expandedKeySet.has(mergedKey)) {
|
|
|
flattenNode.children = dig(treeNode[fieldChildren] || [], flattenNode);
|
|
|
} else {
|
|
|
flattenNode.children = [];
|
|
|
}
|
|
|
return flattenNode;
|
|
|
});
|
|
|
}
|
|
|
dig(treeNodeList);
|
|
|
return flattenList;
|
|
|
}
|
|
|
/**
|
|
|
* Traverse all the data by `treeData`.
|
|
|
* Please not use it out of the `rc-tree` since we may refactor this code.
|
|
|
*/
|
|
|
function traverseDataNodes(dataNodes, callback,
|
|
|
// To avoid too many params, let use config instead of origin param
|
|
|
config) {
|
|
|
var mergedConfig = {};
|
|
|
if ((0,_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z)(config) === 'object') {
|
|
|
mergedConfig = config;
|
|
|
} else {
|
|
|
mergedConfig = {
|
|
|
externalGetKey: config
|
|
|
};
|
|
|
}
|
|
|
mergedConfig = mergedConfig || {};
|
|
|
// Init config
|
|
|
var _mergedConfig = mergedConfig,
|
|
|
childrenPropName = _mergedConfig.childrenPropName,
|
|
|
externalGetKey = _mergedConfig.externalGetKey,
|
|
|
fieldNames = _mergedConfig.fieldNames;
|
|
|
var _fillFieldNames2 = fillFieldNames(fieldNames),
|
|
|
fieldKey = _fillFieldNames2.key,
|
|
|
fieldChildren = _fillFieldNames2.children;
|
|
|
var mergeChildrenPropName = childrenPropName || fieldChildren;
|
|
|
// Get keys
|
|
|
var syntheticGetKey;
|
|
|
if (externalGetKey) {
|
|
|
if (typeof externalGetKey === 'string') {
|
|
|
syntheticGetKey = function syntheticGetKey(node) {
|
|
|
return node[externalGetKey];
|
|
|
};
|
|
|
} else if (typeof externalGetKey === 'function') {
|
|
|
syntheticGetKey = function syntheticGetKey(node) {
|
|
|
return externalGetKey(node);
|
|
|
};
|
|
|
}
|
|
|
} else {
|
|
|
syntheticGetKey = function syntheticGetKey(node, pos) {
|
|
|
return getKey(node[fieldKey], pos);
|
|
|
};
|
|
|
}
|
|
|
// Process
|
|
|
function processNode(node, index, parent, pathNodes) {
|
|
|
var children = node ? node[mergeChildrenPropName] : dataNodes;
|
|
|
var pos = node ? (0,_util__WEBPACK_IMPORTED_MODULE_2__/* .getPosition */ .bt)(parent.pos, index) : '0';
|
|
|
var connectNodes = node ? [].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)(pathNodes), [node]) : [];
|
|
|
// Process node if is not root
|
|
|
if (node) {
|
|
|
var key = syntheticGetKey(node, pos);
|
|
|
var data = {
|
|
|
node: node,
|
|
|
index: index,
|
|
|
pos: pos,
|
|
|
key: key,
|
|
|
parentPos: parent.node ? parent.pos : null,
|
|
|
level: parent.level + 1,
|
|
|
nodes: connectNodes
|
|
|
};
|
|
|
callback(data);
|
|
|
}
|
|
|
// Process children node
|
|
|
if (children) {
|
|
|
children.forEach(function (subNode, subIndex) {
|
|
|
processNode(subNode, subIndex, {
|
|
|
node: node,
|
|
|
pos: pos,
|
|
|
level: parent ? parent.level + 1 : -1
|
|
|
}, connectNodes);
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
processNode(null);
|
|
|
}
|
|
|
/**
|
|
|
* Convert `treeData` into entity records.
|
|
|
*/
|
|
|
function convertDataToEntities(dataNodes) {
|
|
|
var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
|
initWrapper = _ref2.initWrapper,
|
|
|
processEntity = _ref2.processEntity,
|
|
|
onProcessFinished = _ref2.onProcessFinished,
|
|
|
externalGetKey = _ref2.externalGetKey,
|
|
|
childrenPropName = _ref2.childrenPropName,
|
|
|
fieldNames = _ref2.fieldNames;
|
|
|
var /** @deprecated Use `config.externalGetKey` instead */
|
|
|
legacyExternalGetKey = arguments.length > 2 ? arguments[2] : undefined;
|
|
|
// Init config
|
|
|
var mergedExternalGetKey = externalGetKey || legacyExternalGetKey;
|
|
|
var posEntities = {};
|
|
|
var keyEntities = {};
|
|
|
var wrapper = {
|
|
|
posEntities: posEntities,
|
|
|
keyEntities: keyEntities
|
|
|
};
|
|
|
if (initWrapper) {
|
|
|
wrapper = initWrapper(wrapper) || wrapper;
|
|
|
}
|
|
|
traverseDataNodes(dataNodes, function (item) {
|
|
|
var node = item.node,
|
|
|
index = item.index,
|
|
|
pos = item.pos,
|
|
|
key = item.key,
|
|
|
parentPos = item.parentPos,
|
|
|
level = item.level,
|
|
|
nodes = item.nodes;
|
|
|
var entity = {
|
|
|
node: node,
|
|
|
nodes: nodes,
|
|
|
index: index,
|
|
|
key: key,
|
|
|
pos: pos,
|
|
|
level: level
|
|
|
};
|
|
|
var mergedKey = getKey(key, pos);
|
|
|
posEntities[pos] = entity;
|
|
|
keyEntities[mergedKey] = entity;
|
|
|
// Fill children
|
|
|
entity.parent = posEntities[parentPos];
|
|
|
if (entity.parent) {
|
|
|
entity.parent.children = entity.parent.children || [];
|
|
|
entity.parent.children.push(entity);
|
|
|
}
|
|
|
if (processEntity) {
|
|
|
processEntity(entity, wrapper);
|
|
|
}
|
|
|
}, {
|
|
|
externalGetKey: mergedExternalGetKey,
|
|
|
childrenPropName: childrenPropName,
|
|
|
fieldNames: fieldNames
|
|
|
});
|
|
|
if (onProcessFinished) {
|
|
|
onProcessFinished(wrapper);
|
|
|
}
|
|
|
return wrapper;
|
|
|
}
|
|
|
/**
|
|
|
* Get TreeNode props with Tree props.
|
|
|
*/
|
|
|
function getTreeNodeProps(key, _ref3) {
|
|
|
var expandedKeys = _ref3.expandedKeys,
|
|
|
selectedKeys = _ref3.selectedKeys,
|
|
|
loadedKeys = _ref3.loadedKeys,
|
|
|
loadingKeys = _ref3.loadingKeys,
|
|
|
checkedKeys = _ref3.checkedKeys,
|
|
|
halfCheckedKeys = _ref3.halfCheckedKeys,
|
|
|
dragOverNodeKey = _ref3.dragOverNodeKey,
|
|
|
dropPosition = _ref3.dropPosition,
|
|
|
keyEntities = _ref3.keyEntities;
|
|
|
var entity = keyEntities[key];
|
|
|
var treeNodeProps = {
|
|
|
eventKey: key,
|
|
|
expanded: expandedKeys.indexOf(key) !== -1,
|
|
|
selected: selectedKeys.indexOf(key) !== -1,
|
|
|
loaded: loadedKeys.indexOf(key) !== -1,
|
|
|
loading: loadingKeys.indexOf(key) !== -1,
|
|
|
checked: checkedKeys.indexOf(key) !== -1,
|
|
|
halfChecked: halfCheckedKeys.indexOf(key) !== -1,
|
|
|
pos: String(entity ? entity.pos : ''),
|
|
|
// [Legacy] Drag props
|
|
|
// Since the interaction of drag is changed, the semantic of the props are
|
|
|
// not accuracy, I think it should be finally removed
|
|
|
dragOver: dragOverNodeKey === key && dropPosition === 0,
|
|
|
dragOverGapTop: dragOverNodeKey === key && dropPosition === -1,
|
|
|
dragOverGapBottom: dragOverNodeKey === key && dropPosition === 1
|
|
|
};
|
|
|
return treeNodeProps;
|
|
|
}
|
|
|
function convertNodePropsToEventData(props) {
|
|
|
var data = props.data,
|
|
|
expanded = props.expanded,
|
|
|
selected = props.selected,
|
|
|
checked = props.checked,
|
|
|
loaded = props.loaded,
|
|
|
loading = props.loading,
|
|
|
halfChecked = props.halfChecked,
|
|
|
dragOver = props.dragOver,
|
|
|
dragOverGapTop = props.dragOverGapTop,
|
|
|
dragOverGapBottom = props.dragOverGapBottom,
|
|
|
pos = props.pos,
|
|
|
active = props.active,
|
|
|
eventKey = props.eventKey;
|
|
|
var eventData = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)({}, data), {}, {
|
|
|
expanded: expanded,
|
|
|
selected: selected,
|
|
|
checked: checked,
|
|
|
loaded: loaded,
|
|
|
loading: loading,
|
|
|
halfChecked: halfChecked,
|
|
|
dragOver: dragOver,
|
|
|
dragOverGapTop: dragOverGapTop,
|
|
|
dragOverGapBottom: dragOverGapBottom,
|
|
|
pos: pos,
|
|
|
active: active,
|
|
|
key: eventKey
|
|
|
});
|
|
|
if (!('props' in eventData)) {
|
|
|
Object.defineProperty(eventData, 'props', {
|
|
|
get: function get() {
|
|
|
(0,rc_util_es_warning__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .ZP)(false, 'Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`.');
|
|
|
return props;
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
return eventData;
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 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;
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 57761:
|
|
|
/*!*********************************************************************!*\
|
|
|
!*** ./node_modules/react-infinite-scroller/dist/InfiniteScroll.js ***!
|
|
|
\*********************************************************************/
|
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
Object.defineProperty(exports, "__esModule", ({
|
|
|
value: true
|
|
|
}));
|
|
|
|
|
|
var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
|
|
|
var _react = __webpack_require__(/*! react */ 67294);
|
|
|
|
|
|
var _react2 = _interopRequireDefault(_react);
|
|
|
|
|
|
var _propTypes = __webpack_require__(/*! prop-types */ 45697);
|
|
|
|
|
|
var _propTypes2 = _interopRequireDefault(_propTypes);
|
|
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
|
|
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
|
|
|
|
|
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
|
|
|
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
|
|
|
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
|
|
|
|
var InfiniteScroll = function (_Component) {
|
|
|
_inherits(InfiniteScroll, _Component);
|
|
|
|
|
|
function InfiniteScroll(props) {
|
|
|
_classCallCheck(this, InfiniteScroll);
|
|
|
|
|
|
var _this = _possibleConstructorReturn(this, (InfiniteScroll.__proto__ || Object.getPrototypeOf(InfiniteScroll)).call(this, props));
|
|
|
|
|
|
_this.scrollListener = _this.scrollListener.bind(_this);
|
|
|
_this.eventListenerOptions = _this.eventListenerOptions.bind(_this);
|
|
|
_this.mousewheelListener = _this.mousewheelListener.bind(_this);
|
|
|
return _this;
|
|
|
}
|
|
|
|
|
|
_createClass(InfiniteScroll, [{
|
|
|
key: 'componentDidMount',
|
|
|
value: function componentDidMount() {
|
|
|
this.pageLoaded = this.props.pageStart;
|
|
|
this.options = this.eventListenerOptions();
|
|
|
this.attachScrollListener();
|
|
|
}
|
|
|
}, {
|
|
|
key: 'componentDidUpdate',
|
|
|
value: function componentDidUpdate() {
|
|
|
if (this.props.isReverse && this.loadMore) {
|
|
|
var parentElement = this.getParentElement(this.scrollComponent);
|
|
|
parentElement.scrollTop = parentElement.scrollHeight - this.beforeScrollHeight + this.beforeScrollTop;
|
|
|
this.loadMore = false;
|
|
|
}
|
|
|
this.attachScrollListener();
|
|
|
}
|
|
|
}, {
|
|
|
key: 'componentWillUnmount',
|
|
|
value: function componentWillUnmount() {
|
|
|
this.detachScrollListener();
|
|
|
this.detachMousewheelListener();
|
|
|
}
|
|
|
}, {
|
|
|
key: 'isPassiveSupported',
|
|
|
value: function isPassiveSupported() {
|
|
|
var passive = false;
|
|
|
|
|
|
var testOptions = {
|
|
|
get passive() {
|
|
|
passive = true;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
try {
|
|
|
document.addEventListener('test', null, testOptions);
|
|
|
document.removeEventListener('test', null, testOptions);
|
|
|
} catch (e) {
|
|
|
// ignore
|
|
|
}
|
|
|
return passive;
|
|
|
}
|
|
|
}, {
|
|
|
key: 'eventListenerOptions',
|
|
|
value: function eventListenerOptions() {
|
|
|
var options = this.props.useCapture;
|
|
|
|
|
|
if (this.isPassiveSupported()) {
|
|
|
options = {
|
|
|
useCapture: this.props.useCapture,
|
|
|
passive: true
|
|
|
};
|
|
|
}
|
|
|
return options;
|
|
|
}
|
|
|
|
|
|
// Set a defaut loader for all your `InfiniteScroll` components
|
|
|
|
|
|
}, {
|
|
|
key: 'setDefaultLoader',
|
|
|
value: function setDefaultLoader(loader) {
|
|
|
this.defaultLoader = loader;
|
|
|
}
|
|
|
}, {
|
|
|
key: 'detachMousewheelListener',
|
|
|
value: function detachMousewheelListener() {
|
|
|
var scrollEl = window;
|
|
|
if (this.props.useWindow === false) {
|
|
|
scrollEl = this.scrollComponent.parentNode;
|
|
|
}
|
|
|
|
|
|
scrollEl.removeEventListener('mousewheel', this.mousewheelListener, this.options ? this.options : this.props.useCapture);
|
|
|
}
|
|
|
}, {
|
|
|
key: 'detachScrollListener',
|
|
|
value: function detachScrollListener() {
|
|
|
var scrollEl = window;
|
|
|
if (this.props.useWindow === false) {
|
|
|
scrollEl = this.getParentElement(this.scrollComponent);
|
|
|
}
|
|
|
|
|
|
scrollEl.removeEventListener('scroll', this.scrollListener, this.options ? this.options : this.props.useCapture);
|
|
|
scrollEl.removeEventListener('resize', this.scrollListener, this.options ? this.options : this.props.useCapture);
|
|
|
}
|
|
|
}, {
|
|
|
key: 'getParentElement',
|
|
|
value: function getParentElement(el) {
|
|
|
var scrollParent = this.props.getScrollParent && this.props.getScrollParent();
|
|
|
if (scrollParent != null) {
|
|
|
return scrollParent;
|
|
|
}
|
|
|
return el && el.parentNode;
|
|
|
}
|
|
|
}, {
|
|
|
key: 'filterProps',
|
|
|
value: function filterProps(props) {
|
|
|
return props;
|
|
|
}
|
|
|
}, {
|
|
|
key: 'attachScrollListener',
|
|
|
value: function attachScrollListener() {
|
|
|
var parentElement = this.getParentElement(this.scrollComponent);
|
|
|
|
|
|
if (!this.props.hasMore || !parentElement) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
var scrollEl = window;
|
|
|
if (this.props.useWindow === false) {
|
|
|
scrollEl = parentElement;
|
|
|
}
|
|
|
|
|
|
scrollEl.addEventListener('mousewheel', this.mousewheelListener, this.options ? this.options : this.props.useCapture);
|
|
|
scrollEl.addEventListener('scroll', this.scrollListener, this.options ? this.options : this.props.useCapture);
|
|
|
scrollEl.addEventListener('resize', this.scrollListener, this.options ? this.options : this.props.useCapture);
|
|
|
|
|
|
if (this.props.initialLoad) {
|
|
|
this.scrollListener();
|
|
|
}
|
|
|
}
|
|
|
}, {
|
|
|
key: 'mousewheelListener',
|
|
|
value: function mousewheelListener(e) {
|
|
|
// Prevents Chrome hangups
|
|
|
// See: https://stackoverflow.com/questions/47524205/random-high-content-download-time-in-chrome/47684257#47684257
|
|
|
if (e.deltaY === 1 && !this.isPassiveSupported()) {
|
|
|
e.preventDefault();
|
|
|
}
|
|
|
}
|
|
|
}, {
|
|
|
key: 'scrollListener',
|
|
|
value: function scrollListener() {
|
|
|
var el = this.scrollComponent;
|
|
|
var scrollEl = window;
|
|
|
var parentNode = this.getParentElement(el);
|
|
|
|
|
|
var offset = void 0;
|
|
|
if (this.props.useWindow) {
|
|
|
var doc = document.documentElement || document.body.parentNode || document.body;
|
|
|
var scrollTop = scrollEl.pageYOffset !== undefined ? scrollEl.pageYOffset : doc.scrollTop;
|
|
|
if (this.props.isReverse) {
|
|
|
offset = scrollTop;
|
|
|
} else {
|
|
|
offset = this.calculateOffset(el, scrollTop);
|
|
|
}
|
|
|
} else if (this.props.isReverse) {
|
|
|
offset = parentNode.scrollTop;
|
|
|
} else {
|
|
|
offset = el.scrollHeight - parentNode.scrollTop - parentNode.clientHeight;
|
|
|
}
|
|
|
|
|
|
// Here we make sure the element is visible as well as checking the offset
|
|
|
if (offset < Number(this.props.threshold) && el && el.offsetParent !== null) {
|
|
|
this.detachScrollListener();
|
|
|
this.beforeScrollHeight = parentNode.scrollHeight;
|
|
|
this.beforeScrollTop = parentNode.scrollTop;
|
|
|
// Call loadMore after detachScrollListener to allow for non-async loadMore functions
|
|
|
if (typeof this.props.loadMore === 'function') {
|
|
|
this.props.loadMore(this.pageLoaded += 1);
|
|
|
this.loadMore = true;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}, {
|
|
|
key: 'calculateOffset',
|
|
|
value: function calculateOffset(el, scrollTop) {
|
|
|
if (!el) {
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
return this.calculateTopPosition(el) + (el.offsetHeight - scrollTop - window.innerHeight);
|
|
|
}
|
|
|
}, {
|
|
|
key: 'calculateTopPosition',
|
|
|
value: function calculateTopPosition(el) {
|
|
|
if (!el) {
|
|
|
return 0;
|
|
|
}
|
|
|
return el.offsetTop + this.calculateTopPosition(el.offsetParent);
|
|
|
}
|
|
|
}, {
|
|
|
key: 'render',
|
|
|
value: function render() {
|
|
|
var _this2 = this;
|
|
|
|
|
|
var renderProps = this.filterProps(this.props);
|
|
|
|
|
|
var children = renderProps.children,
|
|
|
element = renderProps.element,
|
|
|
hasMore = renderProps.hasMore,
|
|
|
initialLoad = renderProps.initialLoad,
|
|
|
isReverse = renderProps.isReverse,
|
|
|
loader = renderProps.loader,
|
|
|
loadMore = renderProps.loadMore,
|
|
|
pageStart = renderProps.pageStart,
|
|
|
ref = renderProps.ref,
|
|
|
threshold = renderProps.threshold,
|
|
|
useCapture = renderProps.useCapture,
|
|
|
useWindow = renderProps.useWindow,
|
|
|
getScrollParent = renderProps.getScrollParent,
|
|
|
props = _objectWithoutProperties(renderProps, ['children', 'element', 'hasMore', 'initialLoad', 'isReverse', 'loader', 'loadMore', 'pageStart', 'ref', 'threshold', 'useCapture', 'useWindow', 'getScrollParent']);
|
|
|
|
|
|
props.ref = function (node) {
|
|
|
_this2.scrollComponent = node;
|
|
|
if (ref) {
|
|
|
ref(node);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
var childrenArray = [children];
|
|
|
if (hasMore) {
|
|
|
if (loader) {
|
|
|
isReverse ? childrenArray.unshift(loader) : childrenArray.push(loader);
|
|
|
} else if (this.defaultLoader) {
|
|
|
isReverse ? childrenArray.unshift(this.defaultLoader) : childrenArray.push(this.defaultLoader);
|
|
|
}
|
|
|
}
|
|
|
return _react2.default.createElement(element, props, childrenArray);
|
|
|
}
|
|
|
}]);
|
|
|
|
|
|
return InfiniteScroll;
|
|
|
}(_react.Component);
|
|
|
|
|
|
InfiniteScroll.propTypes = {
|
|
|
children: _propTypes2.default.node.isRequired,
|
|
|
element: _propTypes2.default.node,
|
|
|
hasMore: _propTypes2.default.bool,
|
|
|
initialLoad: _propTypes2.default.bool,
|
|
|
isReverse: _propTypes2.default.bool,
|
|
|
loader: _propTypes2.default.node,
|
|
|
loadMore: _propTypes2.default.func.isRequired,
|
|
|
pageStart: _propTypes2.default.number,
|
|
|
ref: _propTypes2.default.func,
|
|
|
getScrollParent: _propTypes2.default.func,
|
|
|
threshold: _propTypes2.default.number,
|
|
|
useCapture: _propTypes2.default.bool,
|
|
|
useWindow: _propTypes2.default.bool
|
|
|
};
|
|
|
InfiniteScroll.defaultProps = {
|
|
|
element: 'div',
|
|
|
hasMore: false,
|
|
|
initialLoad: true,
|
|
|
pageStart: 0,
|
|
|
ref: null,
|
|
|
threshold: 250,
|
|
|
useWindow: true,
|
|
|
isReverse: false,
|
|
|
useCapture: false,
|
|
|
loader: null,
|
|
|
getScrollParent: null
|
|
|
};
|
|
|
exports["default"] = InfiniteScroll;
|
|
|
module.exports = exports['default'];
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 246:
|
|
|
/*!*******************************************************!*\
|
|
|
!*** ./node_modules/react-infinite-scroller/index.js ***!
|
|
|
\*******************************************************/
|
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
|
|
module.exports = __webpack_require__(/*! ./dist/InfiniteScroll */ 57761)
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 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();
|
|
|
};
|
|
|
};
|
|
|
|
|
|
|
|
|
/***/ })
|
|
|
|
|
|
}]); |