UNPKG

319 kBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/bootstrap 8e523b4fcced69ecb39c","webpack:///external \"prop-types\"","webpack:///external \"react\"","webpack:///external \"lodash\"","webpack:///external \"antd/es/form\"","webpack:///external \"antd/es/form/style/css\"","webpack:///external \"antd/es/col\"","webpack:///external \"antd/es/col/style/css\"","webpack:///external \"antd/es/row\"","webpack:///external \"antd/es/row/style/css\"","webpack:///external \"antd/es/input\"","webpack:///external \"antd/es/input/style/css\"","webpack:///external \"antd/es/radio\"","webpack:///external \"antd/es/radio/style/css\"","webpack:///external \"echarts-for-react\"","webpack:///../~/css-loader/lib/css-base.js","webpack:///../src/libs/elements/Chart/configs/Height.jsx","webpack:///../src/libs/elements/Chart/configs/Theme.jsx","webpack:///../src/libs/elements/Chart/configs/Title.jsx","webpack:///../src/libs/elements/Chart/configs/Toolbox.jsx","webpack:///../src/libs/elements/Table/index.jsx","webpack:///../src/libs/utils/table.js","webpack:///../~/style-loader/lib/addStyles.js","webpack:///external \"antd/es/button\"","webpack:///external \"antd/es/button/style/css\"","webpack:///external \"antd/es/icon\"","webpack:///external \"antd/es/icon/style/css\"","webpack:///external \"antd/es/tooltip\"","webpack:///external \"antd/es/tooltip/style/css\"","webpack:///../src/libs/elements/DataEditor/index.jsx","webpack:///../src/libs/elements/Input/index.jsx","webpack:///../src/libs/elements/Placeholder/index.jsx","webpack:///../src/libs/elements/Baseline/index.jsx","webpack:///../src/libs/elements/Chart/configs/Legend.jsx","webpack:///../src/libs/elements/Chart/configs/series/Pie.jsx","webpack:///../src/libs/elements/Chart/configs/series/WordCloud.jsx","webpack:///external \"antd/es/checkbox\"","webpack:///external \"antd/es/checkbox/style/css\"","webpack:///external \"antd/es/popover\"","webpack:///external \"antd/es/popover/style/css\"","webpack:///external \"react-color\"","webpack:///../src/libs/components/Popover/Input.jsx","webpack:///../src/libs/elements/Chart/index.jsx","webpack:///../src/libs/elements/Layout/index.jsx","webpack:///../src/libs/app.css?c6cc","webpack:///../~/style-loader/lib/urls.js","webpack:///../src/libs/elements/Chart/Base.jsx","webpack:///../src/libs/elements/Chart/EchartsEditor.jsx","webpack:///../src/libs/elements/Chart/EchartsPie.jsx","webpack:///../src/libs/elements/Chart/EchartsWordCloud.jsx","webpack:///../src/libs/elements/Chart/ReactEcharts.jsx","webpack:///../src/libs/elements/Chart/images.js","webpack:///../src/libs/elements/DataEditor/Common.jsx","webpack:///../src/libs/elements/DataEditor/Table.jsx","webpack:///../src/libs/elements/DataEditor/Text.jsx","webpack:///../src/libs/elements/Layout/Common.jsx","webpack:///../src/libs/elements/Layout/Group.jsx","webpack:///../src/libs/index.js","webpack:///../src/libs/utils/regular.js","webpack:///../src/libs/app.css","webpack:///../src/libs/elements/Baseline/style.css","webpack:///../src/libs/elements/Chart/style.css","webpack:///../src/libs/elements/Baseline/style.css?825f","webpack:///../src/libs/elements/Chart/style.css?7e02","webpack:///external \"antd/es/card\"","webpack:///external \"antd/es/card/style/css\"","webpack:///external \"antd/es/input-number\"","webpack:///external \"antd/es/input-number/style/css\"","webpack:///external \"antd/es/popconfirm\"","webpack:///external \"antd/es/popconfirm/style/css\"","webpack:///external \"antd/es/table\"","webpack:///external \"antd/es/table/style/css\"","webpack:///external \"echarts-wordcloud\"","webpack:///external \"echarts/theme/macarons.js\"","webpack:///external \"moment\""],"names":["module","exports","useSourceMap","list","toString","map","item","content","cssWithMappingToString","join","i","modules","mediaQuery","alreadyImportedModules","length","id","push","cssMapping","btoa","sourceMapping","toComment","sourceURLs","sources","source","sourceRoot","concat","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","Height","change","value","target","onHeightSet","props","numberReg","test","label","size","width","defaultValue","layout","React","Component","propTypes","PropTypes","string","number","object","func","defaultProps","labelCol","xs","span","sm","wrapperCol","undefined","defaultColors","Theme","type","evt","theme","backgroundColor","onChange","newTheme","newBackgroundColor","_","get","colorPickerConfig","defaultColorPickerConfig","triangle","colors","newColorPickerConfig","assign","color","oneOf","Title","title","newTitle","set","text","subtext","top","left","Toolbox","toolbox","newToolbox","cloneDeep","ifChecked","saveAsImage","isBoolean","show","isObject","saveAsImageShow","hasSaveAsImageShow","has","Table","dataSource","currentPage","total","args","pagination","showQuickJumper","showSizeChanger","defaultPageSize","pageSizeOptions","showTotal","totalNum","range","current","array","filterAndSorter","filters","sorter","header","body","slice","sortField","sortOrder","isEmpty","forEach","key","index","indexOf","isNull","remove","d","includes","orderBy","unshift","fixData","rows","newRows","row","times","isNumber","isString","DataEditor","Common","Text","Input","inputValue","isUndefined","state","input","legal","help","style","labelName","labelSpan","wrapperSpan","hasFeedback","required","placeholder","autoFocus","validateStatus","checkInput","setState","trimedValue","trim","max","regular","bool","regularUtil","cnEnNumSpaceUnderlineLine","Placeholder","icon","newStyle","Object","height","display","alignItems","justifyContent","margin","padding","marginRight","Baseline","Legend","legend","newLegend","orient","Pie","series","percentReg","originFirstSeries","newSeries","originRadius","newRadius","firstSeries","sizeIn","sizeOut","formatter","radiusTooltip","formatterTooltip","colorGroups","WordCloud","e","random","shape","rotationRange","rotation","Math","abs","PopContent","name","handleInputChange","submit","inputMax","inputStyle","inputLabelName","inputLabelSpan","inputWrapperSpan","inputHasFeedback","inputRequired","inputHelp","inputRegular","inputPlaceholder","inputAutoFocus","isRequired","PopoverInput","visible","onClick","btnDisabled","btnOnClick","cardStyle","cardPlacement","btnName","btnSize","btnClassName","btnType","btnIcon","btnLoading","btnStyle","tooltipTitle","popoverVisible","Chart","Base","ReactEcharts","EchartsEditor","EchartsPie","EchartsWordCloud","SeriesPie","SeriesWordCloud","Layout","Group","css","location","window","Error","baseUrl","protocol","host","currentDir","pathname","replace","fixedCss","fullMatch","origUrl","unquotedOrigUrl","o","$1","newUrl","titleStyle","descriptionStyle","description","contentStyle","children","node","subtitle","titlePosition","legendPosition","xAxisLabel","xAxisName","yAxisLabel","yAxisName","numbericAxis","originData","seriesColumn","seriesConf","dataRange","lastNDays","chartHeight","displaySaveButton","xAxisLabelTmp","yAxisLabelTmp","seriesColumnTmp","seriesConfTmp","fixedData","tableUtils","fixedOriginData","legends","getLegend","l","handleConfigChange","nextProps","needUpdate","isEqual","editable","configStyle","DataEditorParams","ReactEchartsParams","firstRow","radioOptions","formItemLayout","XYTypeTooltip","filteredDataSource","maxDateObj","maxBy","moment","maxDate","filter","ds","add","XYLabelTooltip","seriesItems","conf","onColorChange","colorValue","hex","onChartTypeChange","option","getChartOption","maxHeight","maxWidth","cursor","position","zIndex","onTitleChange","onSubtitleChange","onTitlePositionChange","handleBackgroundColorChange","handleChartHeightChange","handleSaveButtonCheckboxChange","onNumAxisChange","onDataRangeChange","onLastNDaysChange","onXAxisNameChange","onXLabelChange","onYAxisNameChange","onYLabelChange","onSeriesChange","onLegendPositionChange","dataEditorOnChange","tableParams","tableFilters","tableSorter","colorType","tmpSeriesConf","filteredAndsortedDataSource","xAxis","yAxis","itemStyle","encode","x","y","legendConf","newDatasetSource","unnumbericAxisLabel","numbericAxisLabel","unnumAxisIndex","findIndex","numAxisIndex","seriesIndex","newDatasetSourceHeader","tmpData","b","legendIndex","pixelRatio","chartOption","grid","containLabel","tooltip","trigger","axisPointer","dataset","feature","column","filteredColumnContent","isArray","grouppedBody","groupBy","keys","reload","newConfig","isFunction","oldConfigs","finalConfigs","checked","arrayOf","overflow","borderRadius","notMerge","newConfigHeight","oldConfigStyle","newConfigStyle","onThemeChange","onChartHeightChange","onToolboxChange","onLegendChange","getOption","intChartHeight","parseInt","defaultConfigs","rotationStep","drawOutOfBound","gridSize","sizeRange","textStyle","emphasis","shadowBlur","shadowColor","normal","fontWeight","round","exchangeValues","newDataset","nextSeries","nextDataset","clonedSeries","clonedDataset","newData","unset","OCDReactEcharts","fixedDataSource","newDataSource","dataEditorType","filteredInfo","orginRows","columns","h","dataIndex","uniqBy","r","filteredValue","onFilter","record","tableDataSource","onDataEditorTypeChange","onReloadClick","onTableChange","onTextAreaChange","splitedData","compact","split","toolbar","originBody","filterOptions","objData","zipObject","filteredArgs","protectedArgs","arg","newSorter","field","order","result","onTextAreaSubmit","textToArray","rawData","v","textData","minHeight","minWidth","searchHidden","searchStyle","searchPlaceholder","onSearch","deleteHidden","deleteDisabled","deleteOnClick","addHidden","addDisabled","addOnClick","tableColumns","tableScroll","tableLoading","tableRowSelection","tableTotal","tableCurrentPage","tableRowClassName","tableOnChange","tableExpandedRowRender","tableExpandedRowKeys","tableOnExpand","console","log","cnSpace"],"mappings":"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AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 56);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 8e523b4fcced69ecb39c","module.exports = require(\"prop-types\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"prop-types\"\n// module id = 0\n// module chunks = 0","module.exports = require(\"react\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"react\"\n// module id = 1\n// module chunks = 0","module.exports = require(\"lodash\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"lodash\"\n// module id = 2\n// module chunks = 0","module.exports = require(\"antd/es/form\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/form\"\n// module id = 3\n// module chunks = 0","module.exports = require(\"antd/es/form/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/form/style/css\"\n// module id = 4\n// module chunks = 0","module.exports = require(\"antd/es/col\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/col\"\n// module id = 5\n// module chunks = 0","module.exports = require(\"antd/es/col/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/col/style/css\"\n// module id = 6\n// module chunks = 0","module.exports = require(\"antd/es/row\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/row\"\n// module id = 7\n// module chunks = 0","module.exports = require(\"antd/es/row/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/row/style/css\"\n// module id = 8\n// module chunks = 0","module.exports = require(\"antd/es/input\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/input\"\n// module id = 9\n// module chunks = 0","module.exports = require(\"antd/es/input/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/input/style/css\"\n// module id = 10\n// module chunks = 0","module.exports = require(\"antd/es/radio\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/radio\"\n// module id = 11\n// module chunks = 0","module.exports = require(\"antd/es/radio/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/radio/style/css\"\n// module id = 12\n// module chunks = 0","module.exports = require(\"echarts-for-react\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"echarts-for-react\"\n// module id = 13\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n\n// WEBPACK FOOTER //\n// ../~/css-loader/lib/css-base.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Form, Input } from 'antd';\n\n/**\n Echarts 高度 配置项\n\n @author Witee<github.com/Witee>\n @date 2018-12-04\n*/\n\nclass Height extends React.Component {\n change = ({ target: { value } }) => {\n const { onHeightSet } = this.props;\n const numberReg = /^\\d+$/;\n\n if (onHeightSet && numberReg.test(value)) {\n onHeightSet(value);\n }\n }\n\n render() {\n const { label, size, width, defaultValue, layout } = this.props;\n\n return (\n <Form.Item {...layout} label={label}>\n <Input\n size={size}\n style={{ width }}\n defaultValue={defaultValue}\n onBlur={this.change}\n onPressEnter={this.change}\n /> px\n </Form.Item>\n );\n }\n}\n\nHeight.propTypes = {\n label: PropTypes.string,\n size: PropTypes.string,\n width: PropTypes.string,\n defaultValue: PropTypes.number,\n layout: PropTypes.object,\n onHeightSet: PropTypes.func,\n};\n\nHeight.defaultProps = {\n label: '高度',\n size: 'small',\n width: '4em',\n defaultValue: 420,\n layout: {\n labelCol: {\n xs: { span: 24 },\n sm: { span: 6 },\n },\n wrapperCol: {\n xs: { span: 24 },\n sm: { span: 18 },\n },\n },\n onHeightSet: undefined,\n};\n\nexport default Height;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/configs/Height.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Form, Radio } from 'antd';\nimport { TwitterPicker } from 'react-color';\n\n/**\n Echarts 主题、背景色 配置项,受控组件\n\n @author Witee<github.com/Witee>\n @date 2018-12-03\n*/\n\nconst defaultColors = ['#F7F7F7', '#D9E3F0', '#697689', '#37D67A', '#555555', '#dce775', '#ba68c8', '#ABB8C3'];\n\nclass Theme extends React.Component {\n change = (type, evt) => {\n const { theme, backgroundColor, onChange } = this.props;\n\n if (onChange) {\n let newTheme = theme;\n let newBackgroundColor = backgroundColor;\n\n if (type === 'theme') {\n newTheme = _.get(evt, 'target.value', null);\n } else if (type === 'backgroundColor') {\n newBackgroundColor = _.get(evt, 'hex', null);\n }\n\n onChange({\n theme: newTheme,\n backgroundColor: newBackgroundColor,\n });\n }\n }\n\n render() {\n const { label, theme, backgroundColor, colorPickerConfig, layout } = this.props;\n\n const defaultColorPickerConfig = {\n width: '168px',\n triangle: 'hide',\n colors: defaultColors,\n };\n\n const newColorPickerConfig = _.assign(defaultColorPickerConfig, colorPickerConfig);\n\n return (\n <Form.Item {...layout} label={label}>\n <Form.Item {...layout}></Form.Item> {/* 占位 */}\n\n <Form.Item {...layout} label=\"主题\">\n <Radio.Group value={theme} onChange={(evt) => this.change('theme', evt)}>\n <Radio value=\"default\">默认</Radio>\n <Radio value=\"dark\">暗色</Radio>\n </Radio.Group>\n </Form.Item>\n\n <Form.Item {...layout} label=\"背景色\">\n <TwitterPicker\n width={newColorPickerConfig.width}\n triangle={newColorPickerConfig.triangle}\n colors={newColorPickerConfig.colors}\n color={backgroundColor}\n onChange={(color) => this.change('backgroundColor', color)}\n />\n </Form.Item>\n </Form.Item>\n );\n }\n}\n\nTheme.propTypes = {\n label: PropTypes.string,\n theme: PropTypes.oneOf(['default', 'dark']), // 默认已注册的主题\n backgroundColor: PropTypes.string,\n colorPickerConfig: PropTypes.object,\n layout: PropTypes.object,\n onChange: PropTypes.func,\n};\n\nTheme.defaultProps = {\n label: '颜色',\n theme: 'default',\n backgroundColor: '#FFFFFF',\n colorPickerConfig: {},\n layout: {\n labelCol: {\n xs: { span: 24 },\n sm: { span: 6 },\n },\n wrapperCol: {\n xs: { span: 24 },\n sm: { span: 18 },\n },\n },\n onChange: undefined,\n};\n\nexport default Theme;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/configs/Theme.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Form, Radio, Input } from 'antd';\n\n/**\n Echarts 标题 配置项\n\n Title 返回的是整个 Echarts4.x 中 title 的配置内容\n\n @author Witee<github.com/Witee>\n @date 2018-12-03\n*/\n\nclass Title extends React.Component {\n change = (type, { target: { value } }) => {\n const { title, onChange } = this.props;\n\n if (onChange) {\n const newTitle = {};\n\n if (type === 'text') {\n _.set(newTitle, 'text', value);\n } else if (type === 'subtext') {\n _.set(newTitle, 'subtext', value);\n } else if (type === 'left') {\n _.set(newTitle, 'left', value);\n } else if (type === 'top') {\n _.set(newTitle, 'top', value);\n }\n\n onChange(_.assign(title, newTitle));\n }\n }\n\n render() {\n const { label, title, layout } = this.props;\n\n const text = _.get(title, 'text', '');\n const subtext = _.get(title, 'subtext', '');\n const top = _.get(title, 'top', 'top');\n const left = _.get(title, 'left', 'left');\n\n return (\n <Form.Item {...layout} label={label}>\n <Form.Item {...layout}></Form.Item> {/* 占位 */}\n\n <Form.Item {...layout} label=\"主\">\n <Input\n placeholder=\"图表标题\"\n defaultValue={text}\n onBlur={(evt) => this.change('text', evt)}\n onPressEnter={(evt) => this.change('text', evt)}\n />\n </Form.Item>\n\n <Form.Item {...layout} label=\"副\">\n <Input\n placeholder=\"图表副标题\"\n defaultValue={subtext}\n onBlur={(evt) => this.change('subtext', evt)}\n onPressEnter={(evt) => this.change('subtext', evt)}\n />\n </Form.Item>\n\n <Form.Item {...layout}></Form.Item> {/* 占位 */}\n <Form.Item {...layout} label=\"横对齐\">\n <Radio.Group value={left} onChange={(evt) => this.change('left', evt)}>\n <Radio value=\"left\">左</Radio>\n <Radio value=\"center\">中</Radio>\n <Radio value=\"right\">右</Radio>\n </Radio.Group>\n </Form.Item>\n\n <Form.Item {...layout} label=\"纵对齐\">\n <Radio.Group value={top} onChange={(evt) => this.change('top', evt)}>\n <Radio value=\"top\">上</Radio>\n <Radio value=\"middle\">中</Radio>\n <Radio value=\"bottom\">下</Radio>\n </Radio.Group>\n </Form.Item>\n </Form.Item>\n );\n }\n}\n\nTitle.propTypes = {\n label: PropTypes.string,\n title: PropTypes.object,\n layout: PropTypes.object,\n onChange: PropTypes.func,\n};\n\nTitle.defaultProps = {\n label: '标题',\n title: undefined,\n layout: {\n labelCol: {\n xs: { span: 24 },\n sm: { span: 6 },\n },\n wrapperCol: {\n xs: { span: 24 },\n sm: { span: 18 },\n },\n },\n onChange: undefined,\n};\n\nexport default Title;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/configs/Title.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Form, Checkbox } from 'antd';\n\n/**\n Echarts Toolbox 配置项,受控组件\n\n Toolbox 返回的是整个 Echarts4.x 中 toolbox 的配置内容,如 saveAsImage\n\n @author Witee<github.com/Witee>\n @date 2018-12-03\n*/\n\nclass Toolbox extends React.Component {\n /**\n 参数支持 bool 或 object\n\n 只有 参数 = undefined 或 false 时不显示\n\n 参数 === true 或 object(配置项) 表示开启\n */\n change = (type, evt) => {\n const { toolbox, onChange } = this.props;\n\n if (onChange) {\n const newToolbox = _.cloneDeep(toolbox);\n const ifChecked = _.get(evt, 'target.checked', null);\n const saveAsImage = _.get(toolbox, 'feature.saveAsImage', undefined);\n\n if (type === 'saveAsImage') {\n if (ifChecked === true) {\n if (_.isBoolean(saveAsImage)) {\n _.set(newToolbox, 'feature.saveAsImage', { show: true });\n } else {\n _.set(newToolbox, 'feature.saveAsImage', _.assign(saveAsImage, { show: true }));\n }\n } else if (_.isObject(saveAsImage)) {\n _.set(newToolbox, 'feature.saveAsImage', _.assign(saveAsImage, { show: false }));\n }\n }\n onChange(newToolbox);\n }\n }\n\n render() {\n const { label, toolbox, layout } = this.props;\n /**\n 判断是否勾选,\n - 明确 show 为 true\n - 或 为 {} 且 没有设置 show 字段\n */\n const saveAsImage = _.get(toolbox, 'feature.saveAsImage', undefined);\n const saveAsImageShow = _.get(saveAsImage, 'show', false);\n const hasSaveAsImageShow = _.has(saveAsImage, 'show');\n\n return (\n <Form.Item {...layout} label={label}>\n <Checkbox\n onChange={(evt) => this.change('saveAsImage', evt)}\n checked={saveAsImageShow || (_.isObject(saveAsImage) && !hasSaveAsImageShow)}\n >\n {_.get(saveAsImage, 'title', '保存为图片')}\n </Checkbox>\n </Form.Item>\n );\n }\n}\n\nToolbox.propTypes = {\n label: PropTypes.string,\n toolbox: PropTypes.object,\n layout: PropTypes.object,\n onChange: PropTypes.func,\n};\n\nToolbox.defaultProps = {\n label: '工具',\n toolbox: undefined,\n layout: {\n labelCol: {\n xs: { span: 24 },\n sm: { span: 6 },\n },\n wrapperCol: {\n xs: { span: 24 },\n sm: { span: 18 },\n },\n },\n onChange: undefined,\n};\n\nexport default Toolbox;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/configs/Toolbox.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Table as ANTTable } from 'antd';\n\n/**\n 再次封装了 AntD 的 Table,目录是固定一些参数,如 pagination\n*/\n\nconst Table = (props) => {\n const { dataSource, currentPage, total, ...args } = props;\n const pagination = {\n showQuickJumper: true,\n showSizeChanger: true,\n defaultPageSize: 20,\n pageSizeOptions: ['10', '20', '50', '100'],\n showTotal: (totalNum, range) => `${range[0]}-${range[1]} 共 ${totalNum} 项`,\n };\n /**\n 直接在 pagination 中添加 {current: currentPage}\n 会导致在不传递 currentPage 时由于值固定而无法翻页,所以在这里添加\n */\n if (currentPage) { pagination.current = currentPage; }\n\n /**\n 如果 total 没有传递时使用 dataSource 的数据长度作为值\n */\n if (total) { pagination.total = total; } else { pagination.total = dataSource.length; }\n\n return (\n <ANTTable\n dataSource={dataSource}\n pagination={pagination}\n {...args}\n />\n\n );\n};\n\nTable.propTypes = {\n dataSource: PropTypes.array,\n currentPage: PropTypes.number,\n total: PropTypes.number,\n};\n\nTable.defaultProps = {\n dataSource: [],\n currentPage: undefined,\n total: undefined,\n};\n\nexport default Table;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Table/index.jsx","/**\n 过滤表格中列的数据\n\n dataSource 格式 第一列为表头,其余为数据\n dataSource = [\n ['日期', '平台', '声量'],\n ['2018-07-20', '微博', 52872],\n ['2018-07-20', '微信', 8510],\n ]\n\n filters 是 antd Table 的过滤格式:\n filters = { 日期: null, 平台: ['微博'], 声量: null }\n\n sorter 是 antd Table 的排序格式:\n sorter = { field: '声量', order: 'descend' }\n*/\nconst filterAndSorter = (dataSource, filters = null, sorter = null) => {\n const header = _.get(dataSource, 0, []);\n let body = _.slice(dataSource, 1);\n const sortField = _.get(sorter, 'field', null);\n const sortOrder = _.get(sorter, 'order', null);\n\n if (!_.isEmpty(filters)) {\n _.forEach(filters, (value, key) => {\n /**\n 获取过滤的字段在表头中的位置,以确定对应数据的位置\n */\n const index = _.indexOf(header, key);\n if (!_.isNull(value) && _.get(value, 'length', 0) > 0) {\n _.remove(body, (d) => (!_.includes(value, _.toString(_.get(d, index, null)))));\n }\n });\n }\n\n if (!_.isEmpty(sorter) && sortField && sortOrder) {\n /**\n 计算排序的字段在表头中的位置,以确定在数据中的位置,_.orderBy 中使用此位置的数据排序\n */\n const index = _.indexOf(header, sortField);\n if (sortOrder === 'descend') {\n body = _.orderBy(body, index, 'desc');\n } else {\n body = _.orderBy(body, index, 'asc');\n }\n }\n\n body.unshift(header);\n return body;\n};\n\n/**\n 整理数据,数据可能不合法,所以收到之后需要先整理\n\n 整理原则,将第一行作为表头,其它行只保留与第一行相应的部分,去掉无用的数据,\n 将 null、undefined 等无效数据修改为 '-'\n*/\nconst fixData = (dataSource) => {\n if (_.get(dataSource, 'length', 0) <= 1) {\n return dataSource;\n }\n const header = _.get(dataSource, 0, []);\n const rows = _.slice(dataSource, 1);\n let newRows = [];\n\n newRows = _.map(rows, (row) => (_.times(header.length, (index) => {\n /**\n 合法的只有字符串和数字,其它的情况全部转换为 '-'\n */\n const item = _.get(row, index, '-');\n if (_.isNumber(item) || _.isString(item)) {\n return item;\n }\n return '-';\n })));\n newRows.unshift(header);\n return newRows;\n};\n\n\nexport default {\n filterAndSorter,\n fixData,\n};\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/utils/table.js","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = options.transform(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/style-loader/lib/addStyles.js\n// module id = 21\n// module chunks = 0","module.exports = require(\"antd/es/button\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/button\"\n// module id = 22\n// module chunks = 0","module.exports = require(\"antd/es/button/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/button/style/css\"\n// module id = 23\n// module chunks = 0","module.exports = require(\"antd/es/icon\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/icon\"\n// module id = 24\n// module chunks = 0","module.exports = require(\"antd/es/icon/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/icon/style/css\"\n// module id = 25\n// module chunks = 0","module.exports = require(\"antd/es/tooltip\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/tooltip\"\n// module id = 26\n// module chunks = 0","module.exports = require(\"antd/es/tooltip/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/tooltip/style/css\"\n// module id = 27\n// module chunks = 0","import Common from './Common';\nimport Text from './Text';\nimport Table from './Table';\n\n/**\n 数据编辑器\n\n @author Witee<github.com/Witee>\n @date 2018-07-24\n @update 2018-12-06\n*/\n\nconst DataEditor = Common;\nDataEditor.Text = Text;\nDataEditor.Table = Table;\n\nexport default DataEditor;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/DataEditor/index.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Input as ANTInput, Form } from 'antd';\nimport regularUtil from '../../utils/regular';\n\n/*\n 封装了 antd 的 Input,目的是增加校验\n\n 直接返回 input 输入的值,如果为 null 则表示输入不合法\n*/\n\nclass Input extends React.Component {\n constructor(props) {\n const { value } = props;\n super(props);\n let inputValue = value;\n // 如果 value 值为 undefined 或 null 则显示没有传递 value 的值\n if (_.isNull(value) || _.isUndefined(value)) {\n inputValue = '';\n }\n this.state = {\n input: inputValue, // 输入的内容\n legal: true,\n };\n }\n\n // 检查长度及格式\n // onChange 返回数据格式为 trimedValue\n // legal 是为了判断当前输入的是否合法\n checkInput = ({ target: { value } }) => {\n this.setState({ input: value });\n let trimedValue = _.trim(value);\n const { onChange, max, regular } = this.props;\n\n let legal = false;\n if (regular.test(trimedValue)) {\n legal = true;\n\n // 如果定义了 max 表示需要判断最大长度\n if (!_.isUndefined(max)) {\n if (trimedValue.length <= max) {\n legal = true;\n } else {\n legal = false;\n }\n }\n }\n\n // 如果合法,则返回实际的值,不合法返回 null\n if (!legal) {\n trimedValue = null;\n }\n this.setState({ legal });\n onChange(trimedValue);\n }\n\n render() {\n const {\n help,\n style,\n labelName,\n labelSpan,\n wrapperSpan,\n hasFeedback,\n required,\n placeholder,\n autoFocus,\n } = this.props;\n\n const { input, legal } = this.state;\n\n // 判断显示反馈图标\n let validateStatus;\n if (hasFeedback) {\n if (input.length === 0) {\n validateStatus = undefined;\n } else if (legal) {\n validateStatus = 'success';\n } else {\n validateStatus = 'error';\n }\n }\n\n return (\n <Form style={style}>\n <Form.Item\n label={labelName}\n labelCol={{ span: labelSpan }}\n wrapperCol={{ span: wrapperSpan }}\n hasFeedback={hasFeedback}\n validateStatus={validateStatus}\n help={legal || help} // 只有不合法时才显示 help\n required={required}\n >\n <ANTInput\n placeholder={placeholder}\n autoFocus={autoFocus}\n onChange={this.checkInput}\n value={input}\n />\n </Form.Item>\n </Form>\n );\n }\n}\n\n\nInput.propTypes = {\n value: PropTypes.string,\n onChange: PropTypes.func,\n style: PropTypes.object,\n labelName: PropTypes.string,\n labelSpan: PropTypes.number,\n wrapperSpan: PropTypes.number,\n hasFeedback: PropTypes.bool,\n required: PropTypes.bool,\n help: PropTypes.string,\n regular: PropTypes.object,\n placeholder: PropTypes.string,\n max: PropTypes.number,\n autoFocus: PropTypes.bool,\n};\n\nInput.defaultProps = {\n value: undefined,\n onChange: () => {},\n style: {},\n labelName: undefined,\n labelSpan: 6,\n wrapperSpan: 18,\n hasFeedback: true,\n required: true,\n help: '支持中英文、数字、下划线、减号、空格',\n regular: regularUtil.cnEnNumSpaceUnderlineLine,\n placeholder: '请输入内容',\n max: undefined,\n autoFocus: false,\n};\n\nexport default Input;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Input/index.jsx","import React from 'react';\nimport { Card, Icon } from 'antd';\nimport PropTypes from 'prop-types';\n\n// 没有数据时的显示内容\n\nconst Placeholder = (props) => {\n const { text, style, icon } = props;\n\n // 通过 style 修改样式\n const newStyle = Object.assign({}, {\n height: '32em',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'rgba(0, 0, 0, 0.43)',\n margin: '0',\n padding: '0',\n }, style);\n return (\n <Card style={newStyle}>\n <Icon type={icon} style={{ marginRight: '0.3333em' }} />\n {text}\n </Card>\n );\n};\n\nPlaceholder.propTypes = {\n text: PropTypes.string,\n style: PropTypes.object,\n icon: PropTypes.string,\n};\n\nPlaceholder.defaultProps = {\n text: '暂无数据',\n style: {},\n icon: 'frown-o',\n};\n\nexport default Placeholder;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Placeholder/index.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './style.css';\n\n\n/**\n 我是有底线的\n\n @author Witee<github.com/Witee>\n @date 2018-12-05\n*/\nconst Baseline = (props) => {\n const { text } = props;\n\n return (\n <div className=\"baseline-wrapper\">\n <span className=\"baseline-line\"></span>\n <span className=\"baseline-content description-text\">{text}</span>\n <span className=\"baseline-line\"></span>\n </div>\n );\n};\n\nBaseline.propTypes = {\n text: PropTypes.string,\n};\n\nBaseline.defaultProps = {\n text: '我是有底线的',\n};\n\nexport default Baseline;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Baseline/index.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Form, Radio } from 'antd';\n\n/**\n Echarts 图例 配置项,受控组件\n\n Legend 返回的是整个 Echarts4.x 中 legend 的配置内容\n\n @author Witee<github.com/Witee>\n @date 2018-12-04\n*/\n\nclass Legend extends React.Component {\n /**\n data 原样返回\n */\n change = (type, { target: { value } }) => {\n const { legend, onChange } = this.props;\n\n if (onChange) {\n const newLegend = {};\n\n if (type === 'orient') {\n _.set(newLegend, 'orient', value);\n } else if (type === 'left') {\n _.set(newLegend, 'left', value);\n } else if (type === 'top') {\n _.set(newLegend, 'top', value);\n }\n\n onChange(_.assign(legend, newLegend));\n }\n }\n\n render() {\n const { label, legend, layout } = this.props;\n\n const orient = _.get(legend, 'orient', 'horizontal');\n const left = _.get(legend, 'left', 'center');\n const top = _.get(legend, 'top', 'top');\n\n return (\n <Form.Item {...layout} label={label}>\n <Form.Item {...layout}></Form.Item> {/* 占位 */}\n\n <Form.Item {...layout} label=\"排列\">\n <Radio.Group value={orient} onChange={(evt) => this.change('orient', evt)}>\n <Radio value=\"horizontal\">横向</Radio>\n <Radio value=\"vertical\">纵向</Radio>\n </Radio.Group>\n </Form.Item>\n\n <Form.Item {...layout} label=\"横对齐\">\n <Radio.Group value={left} onChange={(evt) => this.change('left', evt)}>\n <Radio value=\"left\">左</Radio>\n <Radio value=\"center\">中</Radio>\n <Radio value=\"right\">右</Radio>\n </Radio.Group>\n </Form.Item>\n\n <Form.Item {...layout} label=\"纵对齐\">\n <Radio.Group value={top} onChange={(evt) => this.change('top', evt)}>\n <Radio value=\"top\">上</Radio>\n <Radio value=\"middle\">中</Radio>\n <Radio value=\"bottom\">下</Radio>\n </Radio.Group>\n </Form.Item>\n\n </Form.Item>\n );\n }\n}\n\nLegend.propTypes = {\n label: PropTypes.string,\n legend: PropTypes.object,\n layout: PropTypes.object,\n onChange: PropTypes.func,\n};\n\nLegend.defaultProps = {\n label: '图例',\n legend: {},\n layout: {\n labelCol: {\n xs: { span: 24 },\n sm: { span: 6 },\n },\n wrapperCol: {\n xs: { span: 24 },\n sm: { span: 18 },\n },\n },\n onChange: undefined,\n};\n\nexport default Legend;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/configs/Legend.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Form, Input, Tooltip, Icon } from 'antd';\n\n/**\n Echarts 饼图系列 配置项\n\n Series 返回的是整个 Echarts4.x 中 series 的配置内容\n\n 注意:数据统一使用 dataset 进行设置,不在 series 中\n 即 series 的对象中没有 data 字段\n\n @author Witee<github.com/Witee>\n @date 2018-12-04\n*/\n\nclass Pie extends React.Component {\n change = (type, { target: { value } }) => {\n const { series, onChange } = this.props;\n const numberReg = /^\\d+$/;\n const percentReg = /^\\d+%$/;\n\n if (onChange) {\n const originFirstSeries = _.get(series, 0, {});\n /**\n type 为固定值\n */\n const newSeries = { type: 'pie' };\n\n if (type === 'name') {\n if (_.get(value, 'length', null)) {\n _.set(newSeries, 'name', value);\n }\n } else if (type === 'radius-in') {\n if (numberReg.test(value) || percentReg.test(value)) {\n const originRadius = _.get(originFirstSeries, 'radius', []);\n const newRadius = _.set(originRadius, 0, value);\n _.set(newSeries, 'radius', newRadius);\n }\n } else if (type === 'radius-out') {\n if (numberReg.test(value) || percentReg.test(value)) {\n const originRadius = _.get(originFirstSeries, 'radius', []);\n const newRadius = _.set(originRadius, 1, value);\n _.set(newSeries, 'radius', newRadius);\n }\n } else if (type === 'formatter') {\n if (_.get(value, 'length', null)) {\n _.set(newSeries, 'label.formatter', value);\n }\n }\n /**\n 注意,这里返回的是列表\n */\n onChange([_.assign(originFirstSeries, newSeries)]);\n }\n }\n\n render() {\n const { label, series, layout } = this.props;\n\n /**\n 只使用第一个\n */\n const firstSeries = _.get(series, 0, {});\n\n // const name = _.get(firstSeries, 'name', '');\n const sizeIn = _.get(_.get(firstSeries, 'radius', []), 0, undefined);\n const sizeOut = _.get(_.get(firstSeries, 'radius', []), 1, undefined);\n const formatter = _.get(firstSeries, 'label.formatter', '{b}');\n\n const radiusTooltip = (\n <p>\n 饼图的内、外半径。可以为如下类型: <br /><br />\n\n 数值: 直接输入数字指定内外半径像素值。<br />\n 字符串: 输入比分比,例如,20%,表示半径为可视区尺寸的 20% 长度。<br /><br />\n 内 表示内半径,外 表示外半径。<br />\n 同时设置时,如果 外半径&gt;内半径,可以显示为圆环,如内半径设置为 50%; 外半径设置为 70%。<br />\n </p>\n );\n\n const formatterTooltip = (\n <p>\n 字符串模板:<br />\n &nbsp; &#123;a&#125;: 系列名<br />\n &nbsp; &#123;b&#125;: 数据名<br />\n &nbsp; &#123;c&#125;: 数据值<br />\n &nbsp; &#123;d&#125;: 百分比<br />\n 如只显示名称和百分比: &#123;b&#125;&nbsp;(&#123;d&#125; %)\n </p>\n );\n\n return (\n <Form.Item {...layout} label={label}>\n <Form.Item {...layout}></Form.Item> {/* 占位 */}\n\n {/* <Form.Item {...layout} label=\"名称\">\n <Input\n placeholder=\"系列名称\"\n defaultValue={name}\n onBlur={(evt) => this.change('name', evt)}\n onPressEnter={(evt) => this.change('name', evt)}\n />\n </Form.Item> */}\n\n <Form.Item {...layout} label={<Tooltip placement=\"topLeft\" title={radiusTooltip}>半径 <Icon type=\"question-circle-o\" /></Tooltip>}>\n <Form.Item {...layout}></Form.Item> {/* 占位 */}\n <Form.Item {...layout} label=\"内\">\n <Input\n size=\"small\"\n style={{ width: '4em' }}\n defaultValue={sizeIn}\n onBlur={(evt) => this.change('radius-in', evt)}\n onPressEnter={(evt) => this.change('radius-in', evt)}\n />\n </Form.Item>\n\n <Form.Item {...layout} label=\"外\">\n <Input\n size=\"small\"\n style={{ width: '4em' }}\n defaultValue={sizeOut}\n onBlur={(evt) => this.change('radius-out', evt)}\n onPressEnter={(evt) => this.change('radius-out', evt)}\n />\n </Form.Item>\n </Form.Item>\n\n <Form.Item {...layout} label={<Tooltip placement=\"topLeft\" title={formatterTooltip}>格式 <Icon type=\"question-circle-o\" /></Tooltip>}>\n <Input\n placeholder=\"格式\"\n defaultValue={formatter}\n onBlur={(evt) => this.change('formatter', evt)}\n onPressEnter={(evt) => this.change('formatter', evt)}\n />\n\n </Form.Item>\n\n </Form.Item>\n );\n }\n}\n\nPie.propTypes = {\n label: PropTypes.string,\n series: PropTypes.array,\n layout: PropTypes.object,\n onChange: PropTypes.func,\n};\n\nPie.defaultProps = {\n label: '系列',\n series: [],\n layout: {\n labelCol: {\n xs: { span: 24 },\n sm: { span: 6 },\n },\n wrapperCol: {\n xs: { span: 24 },\n sm: { span: 18 },\n },\n },\n onChange: undefined,\n};\n\nexport default Pie;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/configs/series/Pie.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Form, Radio } from 'antd';\n\n/**\n Echarts 词云图系列 配置项\n\n Series 返回的是整个 Echarts4.x 中 series 的配置内容\n\n 注意:数据统一使用 dataset 进行设置,不在 series 中\n 即 series 的对象中没有 data 字段\n\n @author Witee<github.com/Witee>\n @date 2018-12-07\n*/\n\nconst colorGroups = [\n ['#6a6bd2', '#8ca34d', '#df9cd7', '#e8bb48', '#b4d065'],\n ['#F2572D', '#0067A6', '#008972', '#00ABD8', '#F5C564'],\n ['#161E3E', '#285171', '#D8B368', '#82C0AF', '#DAD4B9'],\n ['#1f010a', '#52020b', '#950707', '#c44a22', '#bd6000'],\n ['#011E4C', '#103961', '#35639D', '#8DA6BD', '#9A9B9B'],\n ['#781308', '#D41D45', '#E86E1B', '#B5AC00', '#ECBA06'],\n ['#111111', '#222222', '#333333', '#444444', '#555555'],\n];\n\nclass WordCloud extends React.Component {\n change = (type, e) => {\n const { series, onChange } = this.props;\n\n if (onChange) {\n const originFirstSeries = _.get(series, 0, {});\n /**\n type 为固定值\n */\n const newSeries = { type: 'wordCloud' };\n\n if (type === 'shape') {\n const value = _.get(e, 'target.value');\n if (_.get(value, 'length', null)) {\n _.set(newSeries, 'shape', value);\n }\n } else if (type === 'rotation') {\n const value = _.get(e, 'target.value');\n _.set(newSeries, 'rotationRange', [-value, value]);\n } else if (type === 'color') {\n const colors = _.get(colorGroups, e.key);\n _.set(newSeries, 'textStyle.normal.color', () => (_.get(colors, _.random(0, colors.length))));\n }\n /**\n 注意,这里返回的是列表\n */\n onChange([_.assign(originFirstSeries, newSeries)]);\n }\n }\n\n render() {\n const { label, series, layout } = this.props;\n\n /**\n 只使用第一个\n */\n const firstSeries = _.get(series, 0, {});\n\n const shape = _.get(firstSeries, 'shape', 'circle');\n const rotationRange = _.get(firstSeries, 'rotationRange', [-90, 90]);\n const rotation = Math.abs(_.get(rotationRange, 0, 90));\n\n return (\n <Form.Item {...layout} label={label}>\n <Form.Item {...layout}></Form.Item> {/* 占位 */}\n\n <Form.Item {...layout} label=\"形状\">\n <Radio.Group value={shape} onChange={(evt) => this.change('shape', evt)}>\n <Radio value=\"circle\">圆形</Radio>\n <Radio value=\"star\">五角星</Radio>\n <Radio value=\"triangle\">三角形</Radio>\n </Radio.Group>\n </Form.Item>\n\n <Form.Item {...layout} label=\"角度\">\n <Radio.Group value={rotation} onChange={(evt) => this.change('rotation', evt)}>\n <Radio value={90}>旋转</Radio>\n <Radio value={0}>不旋转</Radio>\n </Radio.Group>\n </Form.Item>\n\n {/* <Form.Item {...layout} label=\"颜色\">\n <Menu onClick={(evt) => this.change('color', evt)} style={{ width: 120 }}>\n {_.map(colorGroups, (colors, i) => (\n <Menu.Item key={i}>\n {_.map(colors, (color, index) => (\n <span style={{ background: color, border: '#c3c3c3 solid 1px', width: 20, height: 20, display: 'inline-block' }} key={index} />\n ))}\n </Menu.Item>\n ))}\n </Menu>\n </Form.Item> */}\n\n </Form.Item>\n );\n }\n}\n\nWordCloud.propTypes = {\n label: PropTypes.string,\n series: PropTypes.array,\n layout: PropTypes.object,\n onChange: PropTypes.func,\n};\n\nWordCloud.defaultProps = {\n label: '词云',\n series: [],\n layout: {\n labelCol: {\n xs: { span: 24 },\n sm: { span: 6 },\n },\n wrapperCol: {\n xs: { span: 24 },\n sm: { span: 18 },\n },\n },\n onChange: undefined,\n};\n\nexport default WordCloud;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/configs/series/WordCloud.jsx","module.exports = require(\"antd/es/checkbox\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/checkbox\"\n// module id = 35\n// module chunks = 0","module.exports = require(\"antd/es/checkbox/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/checkbox/style/css\"\n// module id = 36\n// module chunks = 0","module.exports = require(\"antd/es/popover\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/popover\"\n// module id = 37\n// module chunks = 0","module.exports = require(\"antd/es/popover/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/popover/style/css\"\n// module id = 38\n// module chunks = 0","module.exports = require(\"react-color\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"react-color\"\n// module id = 39\n// module chunks = 0","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Row, Col, Button, Popover, Tooltip } from 'antd';\nimport Input from '../../elements/Input';\n\n/*\n 弹出卡片,内容是输入框\n*/\n\n\n// 弹出内容\nclass PopContent extends React.Component {\n state = {\n name: null,\n legal: false,\n }\n\n handleInputChange = (value) => {\n let legal = true;\n\n // 返回 null 时表示不合法\n if (_.isNull(value)) {\n legal = false;\n }\n this.setState({ name: value, legal });\n }\n\n render() {\n const {\n submit,\n inputMax,\n inputStyle,\n inputLabelName,\n inputLabelSpan,\n inputWrapperSpan,\n inputHasFeedback,\n inputRequired,\n inputHelp,\n inputRegular,\n inputPlaceholder,\n inputAutoFocus,\n } = this.props;\n const { name, legal } = this.state;\n\n return (\n <Row>\n <Col>\n <Input\n value={name}\n onChange={this.handleInputChange}\n max={inputMax}\n style={inputStyle}\n labelName={inputLabelName}\n labelSpan={inputLabelSpan}\n wrapperSpan={inputWrapperSpan}\n hasFeedback={inputHasFeedback}\n required={inputRequired}\n help={inputHelp}\n regular={inputRegular}\n placeholder={inputPlaceholder}\n autoFocus={inputAutoFocus}\n />\n </Col>\n <Col offset={6}>\n <Button\n type=\"primary\"\n className=\"margin-top-bottom-middle\"\n disabled={!legal}\n onClick={() => { submit(name); this.setState({ name: null }); }}\n >提交\n </Button>\n </Col>\n </Row>\n );\n }\n}\nPopContent.propTypes = {\n submit: PropTypes.func.isRequired,\n inputMax: PropTypes.number,\n inputStyle: PropTypes.object,\n inputLabelName: PropTypes.string,\n inputLabelSpan: PropTypes.number,\n inputWrapperSpan: PropTypes.number,\n inputHasFeedback: PropTypes.bool,\n inputRequired: PropTypes.bool,\n inputHelp: PropTypes.string,\n inputRegular: PropTypes.object,\n inputPlaceholder: PropTypes.string,\n inputAutoFocus: PropTypes.bool,\n};\n\nPopContent.defaultProps = {\n inputMax: undefined,\n inputStyle: {},\n inputLabelName: undefined,\n inputLabelSpan: 6,\n inputWrapperSpan: 18,\n inputHasFeedback: true,\n inputRequired: true,\n inputHelp: '支持中英文、数字、下划线、减号、空格',\n inputRegular: /^[\\u4e00-\\u9fa5a-zA-Z0-9-_\\s]+$/,\n inputPlaceholder: '请输入内容',\n inputAutoFocus: false,\n};\n\n\n// 下载弹出卡片\n// eslint-disable-next-line\nclass PopoverInput extends React.Component {\n state = {\n visible: undefined,\n }\n\n onClick = () => {\n const { btnDisabled, btnOnClick } = this.props;\n const { visible } = this.state;\n // 如果按钮被禁用,则不响应点击\n if (!btnDisabled) {\n this.setState({ visible: !visible });\n btnOnClick();\n }\n }\n\n submit = (value) => {\n const { submit } = this.props;\n this.setState({ visible: false });\n submit(value);\n }\n\n render() {\n const {\n title, cardStyle, cardPlacement, btnName, btnSize, btnClassName,\n btnType, btnIcon, btnDisabled, btnLoading, btnStyle, tooltipTitle,\n inputMax, inputStyle, inputLabelName, inputLabelSpan,\n inputWrapperSpan, inputHasFeedback, inputRequired, inputHelp,\n inputRegular, inputPlaceholder, inputAutoFocus,\n } = this.props;\n const { visible } = this.state;\n\n // 如果按钮被禁用,则不显示弹出框\n let popoverVisible = visible;\n if (btnDisabled) {\n popoverVisible = false;\n }\n return (\n <Popover\n overlayStyle={cardStyle}\n placement={cardPlacement}\n title={title}\n content={(\n <PopContent\n submit={this.submit}\n inputMax={inputMax}\n inputStyle={inputStyle}\n inputLabelName={inputLabelName}\n inputLabelSpan={inputLabelSpan}\n inputWrapperSpan={inputWrapperSpan}\n inputHasFeedback={inputHasFeedback}\n inputRequired={inputRequired}\n inputHelp={inputHelp}\n inputRegular={inputRegular}\n inputPlaceholder={inputPlaceholder}\n inputAutoFocus={inputAutoFocus}\n />\n )}\n trigger=\"click\"\n onVisibleChange={this.onClick} // 点击空白处关闭\n visible={popoverVisible}\n >\n <Tooltip title={tooltipTitle}>\n <Button\n icon={btnIcon}\n type={btnType}\n size={btnSize}\n onClick={this.onClick}\n disabled={btnDisabled}\n loading={btnLoading}\n className={btnClassName}\n style={btnStyle}\n >\n {btnName}\n </Button>\n </Tooltip>\n </Popover>\n );\n }\n}\n\n\nPopoverInput.propTypes = {\n submit: PropTypes.func.isRequired,\n title: PropTypes.string,\n cardStyle: PropTypes.object,\n cardPlacement: PropTypes.string,\n tooltipTitle: PropTypes.string,\n btnName: PropTypes.string,\n btnType: PropTypes.string,\n btnSize: PropTypes.string,\n btnIcon: PropTypes.string,\n btnDisabled: PropTypes.bool,\n btnLoading: PropTypes.bool,\n btnOnClick: PropTypes.func,\n btnClassName: PropTypes.string,\n btnStyle: PropTypes.object,\n inputMax: PropTypes.number,\n inputStyle: PropTypes.object,\n inputLabelName: PropTypes.string,\n inputLabelSpan: PropTypes.number,\n inputWrapperSpan: PropTypes.number,\n inputHasFeedback: PropTypes.bool,\n inputRequired: PropTypes.bool,\n inputHelp: PropTypes.string,\n inputRegular: PropTypes.object,\n inputPlaceholder: PropTypes.string,\n inputAutoFocus: PropTypes.bool,\n};\n\nPopoverInput.defaultProps = {\n title: '请选择',\n cardStyle: undefined,\n cardPlacement: 'bottomRight',\n tooltipTitle: undefined,\n btnName: '保存',\n btnType: 'default',\n btnSize: 'default',\n btnIcon: 'save',\n btnDisabled: false,\n btnLoading: false,\n btnOnClick: () => {},\n btnClassName: '',\n btnStyle: { width: '100%' },\n inputMax: undefined,\n inputStyle: {},\n inputLabelName: undefined,\n inputLabelSpan: 6,\n inputWrapperSpan: 18,\n inputHasFeedback: true,\n inputRequired: true,\n inputHelp: '支持中英文、数字、下划线、减号、空格',\n inputRegular: /^[\\u4e00-\\u9fa5a-zA-Z0-9-_\\s]+$/,\n inputPlaceholder: '请输入内容',\n inputAutoFocus: false,\n};\n\nexport default PopoverInput;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/components/Popover/Input.jsx","import Base from './Base';\nimport ReactEcharts from './ReactEcharts';\nimport EchartsEditor from './EchartsEditor';\nimport EchartsPie from './EchartsPie';\nimport EchartsWordCloud from './EchartsWordCloud';\n\nimport Title from './configs/Title';\nimport Theme from './configs/Theme';\nimport Height from './configs/Height';\nimport Legend from './configs/Legend';\nimport Toolbox from './configs/Toolbox';\nimport SeriesPie from './configs/series/Pie';\nimport SeriesWordCloud from './configs/series/WordCloud';\n\n/**\n 基于 EChart 的常用图表\n\n - Base 是最基础的使用\n - ReactEcharts 是封装了 echarts-for-react 组件的组件,目的是为了使用 echart4\n - EchartsEditor 标准的使用方法,将所有的配置项组合,编辑 echarts 图表\n - EchartsPie echarts4.x 饼图配置器\n - EchartsWordCloud 词云 配置器\n\n - 可自由组合的配置项\n - Title 标题\n - Theme 主题、背景颜色\n - Height 高度\n - Legend 图例\n - Toolbox 工具\n - SeriesPie 饼图系列\n - SeriesWordCloud 词云系列\n\n @author Witee<github.com/Witee>\n @date 2018-07-05\n @update 2018-12-07\n*/\n\nconst Chart = Base; // 不能使用 { Base } 格式,否则 <Chart /> 格式将无法使用,只能使用 <Chart.Base />\nChart.ReactEcharts = ReactEcharts;\nChart.EchartsEditor = EchartsEditor;\nChart.EchartsPie = EchartsPie;\nChart.EchartsWordCloud = EchartsWordCloud;\n\nChart.Title = Title;\nChart.Theme = Theme;\nChart.Height = Height;\nChart.Legend = Legend;\nChart.Toolbox = Toolbox;\nChart.SeriesPie = SeriesPie;\nChart.SeriesWordCloud = SeriesWordCloud;\n\nexport default Chart;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/index.jsx","import Common from './Common';\nimport Group from './Group';\n\n/**\n 常用布局\n\n @author Witee<github.com/Witee>\n @date 2018-07-04\n*/\n\nconst Layout = Common;\nLayout.Group = Group;\n\nexport default Layout;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Layout/index.jsx","\nvar content = require(\"!!../../node_modules/css-loader/index.js!./app.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js!./app.css\", function() {\n\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js!./app.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../src/libs/app.css\n// module id = 43\n// module chunks = 0","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n\n\n\n// WEBPACK FOOTER //\n// ../~/style-loader/lib/urls.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Row, Col } from 'antd';\n\n/**\n 基于 EChart 的常用图表 - 基础\n title、description、children 未定义时将不进行显示\n\n @author Witee<github.com/Witee>\n @date 2018-07-05\n*/\n\nconst Base = (props) => {\n const {\n style,\n titleStyle,\n title,\n descriptionStyle,\n description,\n contentStyle,\n children,\n } = props;\n\n return (\n <Row style={style}>\n { (!_.isUndefined(title) || !_.isNull(title))\n ? (\n <Col className=\"margin-top-bottom-middle\" style={titleStyle}>\n {title}\n </Col>\n ) : null\n }\n\n { (!_.isUndefined(description) || !_.isNull(description))\n ? (\n <Col className=\"margin-bottom-middle\" style={descriptionStyle}>\n {description}\n </Col>\n ) : null\n }\n\n { (!_.isUndefined(children) || !_.isNull(children))\n ? (\n <Col style={contentStyle}>\n {children}\n </Col>\n ) : null\n }\n </Row>\n );\n};\n\n\nBase.propTypes = {\n style: PropTypes.object,\n titleStyle: PropTypes.object,\n title: PropTypes.node,\n descriptionStyle: PropTypes.object,\n description: PropTypes.node,\n contentStyle: PropTypes.object,\n children: PropTypes.node,\n};\n\nBase.defaultProps = {\n style: {},\n titleStyle: {},\n title: undefined,\n descriptionStyle: {},\n description: undefined,\n contentStyle: {},\n children: undefined,\n};\n\nexport default Base;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/Base.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Row, Col, Form, Radio, Input, Icon, Tooltip, Popover, InputNumber, Checkbox } from 'antd';\nimport ReactEcharts from 'echarts-for-react';\nimport { TwitterPicker } from 'react-color';\nimport tableUtils from '../../utils/table';\nimport PlaceHolder from '../Placeholder';\nimport DataEditor from '../DataEditor';\nimport help from './images';\nimport './style.css';\n\n/**\n EchartsEditor 是可编辑 echarts 图表配置的组件\n 左侧编辑,右上侧显示,右下侧可以使用表格、文本方式直接编辑数据\n\n 参数 dataSource 的第一列将作为 X 或 Y 轴的数据源;第一行为表头;\n 至少需要 3 列数据,一般为 日期、规则名称、平台、声量\n\n @author Witee<github.com/Witee>\n @date 2018-07-19\n*/\n\nconst colors = ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'];\n\nclass EchartsEditor extends React.Component {\n /**\n 注意: 目前可配置项有 18 项,如果有变化,需要修改\n constructor componentWillReceiveProps handleConfigChange\n */\n constructor(props) {\n super(props);\n\n const {\n title,\n subtitle,\n titlePosition,\n legendPosition,\n xAxisLabel,\n xAxisName,\n yAxisLabel,\n yAxisName,\n numbericAxis,\n dataSource,\n originData,\n seriesColumn,\n seriesConf,\n filters,\n sorter,\n dataRange,\n lastNDays,\n backgroundColor,\n chartHeight,\n displaySaveButton,\n } = props;\n /**\n 至少需要 3 列数据才是合法的\n\n 如果只有 0、1、2 列,则不生成图,不合法;\n 如果大于 2 列,则第 1 列为X轴标签,第 2 列为系列,最后一列为Y轴标签;\n */\n const header = _.get(dataSource, 0, []); // 表头\n let xAxisLabelTmp = null;\n let yAxisLabelTmp = null;\n let seriesColumnTmp = null;\n let seriesConfTmp = null;\n\n /**\n 处理不合法字符,将无效字符改为 -\n */\n const fixedData = tableUtils.fixData(dataSource);\n const fixedOriginData = tableUtils.fixData(originData);\n\n if (header.length > 2) {\n xAxisLabelTmp = _.isNull(xAxisLabel) ? _.get(header, 0, null) : xAxisLabel; // xAxisLabel 为空则使用默认\n yAxisLabelTmp = _.isNull(yAxisLabel) ? _.get(header, (header.length - 1), null) : yAxisLabel;\n seriesColumnTmp = seriesColumn;\n if (_.isNull(seriesColumn)) { // 如果 seriesColumn 为 null,则设置默认值\n seriesColumnTmp = _.get(header, 1, null);\n }\n\n /**\n dataSource 为空列表时同样不生成系列\n 如果设置了系列的过滤,则使用\n */\n const legends = this.getLegend(dataSource, seriesColumnTmp, filters);\n\n seriesConfTmp = seriesConf;\n if (_.isEmpty(seriesConf)) { // 如果 seriesConf 为空,则设置默认值\n _.map(legends, (l) => {\n _.set(seriesConfTmp, [l, 'type'], 'line');\n _.set(seriesConfTmp, [l, 'color'], 'auto');\n _.set(seriesConfTmp, [l, 'colorValue'], _.get(colors, _.random(0, colors.length), '#749f83'));\n });\n }\n }\n\n this.state = {\n title,\n subtitle,\n titlePosition,\n legendPosition,\n xAxisLabel: xAxisLabelTmp,\n xAxisName,\n yAxisLabel: yAxisLabelTmp,\n yAxisName,\n numbericAxis,\n dataSource: fixedData,\n originData: fixedOriginData,\n seriesColumn: seriesColumnTmp, // 生成 series 指定的列,不生成系列,值为 null\n seriesConf: seriesConfTmp, // 保存了所有系列的配置,更新时需要先读取原值\n filters, // DataEditor 中控制过滤条件\n sorter, // DataEditor 中控制排序条件\n dataRange,\n lastNDays,\n backgroundColor,\n chartHeight,\n displaySaveButton,\n };\n }\n\n /**\n 完成加载后回传一次数据,使父层获取初始值\n */\n componentDidMount() {\n this.handleConfigChange();\n }\n\n componentWillReceiveProps(nextProps) {\n const {\n title,\n subtitle,\n titlePosition,\n legendPosition,\n xAxisLabel,\n xAxisName,\n yAxisLabel,\n yAxisName,\n numbericAxis,\n dataSource,\n originData,\n seriesColumn,\n seriesConf,\n filters,\n sorter,\n dataRange,\n lastNDays,\n backgroundColor,\n chartHeight,\n displaySaveButton,\n } = this.props;\n const needUpdate = {};\n\n if (!_.isEqual(title, nextProps.title)) { needUpdate.title = nextProps.title; }\n if (!_.isEqual(subtitle, nextProps.subtitle)) { needUpdate.subtitle = nextProps.subtitle; }\n if (!_.isEqual(titlePosition, nextProps.titlePosition)) { needUpdate.titlePosition = nextProps.titlePosition; }\n if (!_.isEqual(legendPosition, nextProps.legendPosition)) { needUpdate.legendPosition = nextProps.legendPosition; }\n if (!_.isEqual(xAxisLabel, nextProps.xAxisLabel)) { needUpdate.xAxisLabel = nextProps.xAxisLabel; }\n if (!_.isEqual(xAxisName, nextProps.xAxisName)) { needUpdate.xAxisName = nextProps.xAxisName; }\n if (!_.isEqual(yAxisLabel, nextProps.yAxisLabel)) { needUpdate.yAxisLabel = nextProps.yAxisLabel; }\n if (!_.isEqual(yAxisName, nextProps.yAxisName)) { needUpdate.yAxisName = nextProps.yAxisName; }\n if (!_.isEqual(numbericAxis, nextProps.numbericAxis)) { needUpdate.numbericAxis = nextProps.numbericAxis; }\n if (!_.isEqual(dataSource, nextProps.dataSource)) { needUpdate.dataSource = nextProps.dataSource; }\n if (!_.isEqual(originData, nextProps.originData)) { needUpdate.originData = nextProps.originData; }\n if (!_.isEqual(seriesColumn, nextProps.seriesColumn)) { needUpdate.seriesColumn = nextProps.seriesColumn; }\n if (!_.isEqual(seriesConf, nextProps.seriesConf)) { needUpdate.seriesConf = nextProps.seriesConf; }\n if (!_.isEqual(filters, nextProps.filters)) { needUpdate.filters = nextProps.filters; }\n if (!_.isEqual(sorter, nextProps.sorter)) { needUpdate.sorter = nextProps.sorter; }\n if (!_.isEqual(dataRange, nextProps.dataRange)) { needUpdate.dataRange = nextProps.dataRange; }\n if (!_.isEqual(lastNDays, nextProps.lastNDays)) { needUpdate.lastNDays = nextProps.lastNDays; }\n if (!_.isEqual(backgroundColor, nextProps.backgroundColor)) { needUpdate.backgroundColor = nextProps.backgroundColor; }\n if (!_.isEqual(chartHeight, nextProps.chartHeight)) { needUpdate.chartHeight = nextProps.chartHeight; }\n if (!_.isEqual(displaySaveButton, nextProps.displaySaveButton)) { needUpdate.displaySaveButton = nextProps.displaySaveButton; }\n\n if (!_.isEmpty(needUpdate)) {\n this.setState(needUpdate);\n }\n }\n\n onTitleChange = (e) => {\n this.setState({ title: e.target.value });\n this.handleConfigChange({ title: e.target.value });\n }\n\n onSubtitleChange = (e) => {\n this.setState({ subtitle: e.target.value });\n this.handleConfigChange({ subtitle: e.target.value });\n }\n\n onTitlePositionChange = (e) => {\n this.setState({ titlePosition: e.target.value });\n this.handleConfigChange({ titlePosition: e.target.value });\n }\n\n onLegendPositionChange = (e) => {\n this.setState({ legendPosition: e.target.value });\n this.handleConfigChange({ legendPosition: e.target.value });\n }\n\n /**\n 可以自定义颜色,如果设置了 colorValue 则使用此值作为色值\n 注意: 这里没有使用 e.target.value 作为 color 的值,是因为选择 custom 再清空 Input 后,\n 会造成值为 undefined ,所以直接写明了设置为 auto,因为只有两种选择.\n */\n onColorChange = (e, legend, colorValue = false) => {\n let colorType = _.get(e, ['target', 'value'], 'auto');\n if (e === 'custom') {\n colorType = 'custom';\n }\n const { seriesConf } = this.state;\n const tmpSeriesConf = _.cloneDeep(seriesConf);\n if (colorType === 'custom') {\n _.set(tmpSeriesConf, [legend, 'color'], 'custom');\n _.set(tmpSeriesConf, [legend, 'colorValue'], colorValue);\n } else {\n _.set(tmpSeriesConf, [legend, 'color'], 'auto');\n }\n this.setState({ seriesConf: tmpSeriesConf });\n this.handleConfigChange({ seriesConf: tmpSeriesConf });\n }\n\n onChartTypeChange = (e, legend) => {\n const { seriesConf } = this.state;\n const tmpSeriesConf = _.cloneDeep(seriesConf);\n _.set(tmpSeriesConf, [legend, 'type'], e.target.value);\n\n this.setState({ seriesConf: tmpSeriesConf });\n this.handleConfigChange({ seriesConf: tmpSeriesConf });\n }\n\n onXLabelChange = (e) => {\n this.setState({ xAxisLabel: e.target.value });\n this.handleConfigChange({ xAxisLabel: e.target.value });\n }\n\n onXAxisNameChange = (e) => {\n this.setState({ xAxisName: e.target.value });\n this.handleConfigChange({ xAxisName: e.target.value });\n }\n\n onYLabelChange = (e) => {\n this.setState({ yAxisLabel: e.target.value });\n this.handleConfigChange({ yAxisLabel: e.target.value });\n }\n\n onYAxisNameChange = (e) => {\n this.setState({ yAxisName: e.target.value });\n this.handleConfigChange({ yAxisName: e.target.value });\n }\n\n onNumAxisChange = (e) => {\n this.setState({ numbericAxis: e.target.value });\n this.handleConfigChange({ numbericAxis: e.target.value });\n }\n\n onDataRangeChange = (e) => {\n const dataRange = _.get(e, 'target.value', 'total');\n this.setState({ dataRange });\n this.handleConfigChange({ dataRange });\n }\n\n onLastNDaysChange = (lastNDays) => {\n this.setState({ lastNDays });\n this.handleConfigChange({ lastNDays });\n }\n\n onSeriesChange = (e) => {\n const { dataSource, filters } = this.state;\n const legends = this.getLegend(dataSource, e.target.value, filters);\n const seriesConf = {};\n _.map(legends, (l) => {\n _.set(seriesConf, [l, 'type'], 'line');\n _.set(seriesConf, [l, 'color'], 'auto');\n _.set(seriesConf, [l, 'colorValue'], _.get(colors, _.random(0, colors.length), '#749f83'));\n });\n this.setState({ seriesColumn: e.target.value, seriesConf });\n this.handleConfigChange({ seriesColumn: e.target.value, seriesConf });\n }\n\n /**\n dataSource 是所有的数据,配置的过程就是只保留已选择的项,如默认 x 轴只保留 日期 列,\n 然后将保留的配置返回给图表\n */\n getChartOption = (dataSource) => {\n const {\n title,\n subtitle,\n titlePosition,\n legendPosition,\n xAxisLabel,\n xAxisName,\n yAxisLabel,\n numbericAxis,\n yAxisName,\n seriesColumn,\n seriesConf,\n filters,\n sorter,\n backgroundColor,\n displaySaveButton,\n } = this.state;\n\n /**\n 处理默认参数中的过滤、排序\n */\n const filteredAndsortedDataSource = tableUtils.filterAndSorter(dataSource, filters, sorter);\n\n const xAxis = { type: (numbericAxis === 'x' ? 'value' : 'category'), name: xAxisName };\n const yAxis = { type: (numbericAxis === 'y' ? 'value' : 'category'), name: yAxisName };\n\n const legends = this.getLegend(filteredAndsortedDataSource, seriesColumn, filters); // 小于 2 列时 seriesColumn 为null,不生成系列\n\n const series = _.map(legends, (l) => {\n const conf = _.get(seriesConf, l);\n return ({\n name: l,\n type: _.get(conf, 'type', 'line'),\n itemStyle: { color: _.get(conf, 'color', 'auto') === 'custom' ? conf.colorValue : undefined },\n encode: { x: (numbericAxis === 'x' ? l : xAxisLabel), y: (numbericAxis === 'y' ? l : yAxisLabel) },\n });\n });\n\n\n /**\n 图例的默认值,用于单一系列时使用\n */\n const legendConf = { data: legends, top: '10%', left: legendPosition };\n /**\n 数据的默认值,用于单一系列时使用\n */\n let newDatasetSource = filteredAndsortedDataSource;\n\n /**\n 多系列的处理方法\n 1. 根据页面上选择的 [系列]-[取值] 指定的列,获取所有 图例(legends)\n 2. 将原始数据根据图例重新组合成多系列的格式(需要理解 echarts 默认使用 column 作为维度,\n 所以要将 非数值轴 的 label 与 legends 作为表头),如:\n 原数据 日期 平台 声量\n 2018-7-1 微博 1024\n 2018-7-1 微信 2048\n 转换后 日期 微信 微博\n 2018-7-1 1024 2048\n 注意 声量 直接写在了 微信 下面,使 微信 作为了 echarts 使用的维度\n\n 注意: x 、 y 轴可以互换,所以使用 数值轴(numAxis)(默认y轴) 和 非数值轴(unnumAxis)(默认x轴) 作为区分\n\n 指定了 seriesColumn 时,则需要使用定义的列生成多系列及图例(legend)\n */\n if (!_.isNull(seriesColumn)) {\n newDatasetSource = [];\n\n const header = _.get(filteredAndsortedDataSource, 0, []);\n const body = _.slice(filteredAndsortedDataSource, 1);\n\n const unnumbericAxisLabel = numbericAxis === 'x' ? yAxisLabel : xAxisLabel; // 如 日期\n const numbericAxisLabel = numbericAxis === 'x' ? xAxisLabel : yAxisLabel; // 如 声量\n\n /**\n 找到选择的 numAxis、unnumAxis 的 label 对应的 index,再找到 series 的 index,\n 这样就可以从原始数据中根据 index 获取到对应的值\n */\n const unnumAxisIndex = _.findIndex(header, (d) => (d === unnumbericAxisLabel)); // 如 日期 的 index\n const numAxisIndex = _.findIndex(header, (d) => (d === numbericAxisLabel)); // 如 声量 的 index\n const seriesIndex = _.findIndex(header, (d) => (d === seriesColumn));\n\n /**\n 先把 unnumbericAxisLabel 填写到 newDatasetSourceHeader ,\n 再把 legends 的名称追加到 newDatasetSourceHeader 中,生成新的表头\n\n 因为在 series 中使用了 encode 映射,所以顺序不是问题\n */\n let newDatasetSourceHeader = [unnumbericAxisLabel];\n newDatasetSourceHeader = newDatasetSourceHeader.concat(legends); // 新的表头\n\n const tmpData = {};\n _.forEach(body, (b) => {\n // 找到 legend 的 index,即 微博 、 微信 在 legends ([微博, 微信])中的位置,以此顺序保存数据\n const legendIndex = _.findIndex(legends, (l) => (l === b[seriesIndex]));\n // 保存数据,格式: {'2017-7-1': [1024, 2048], ...}\n _.set(tmpData, [b[unnumAxisIndex], legendIndex], _.get(b, numAxisIndex, null));\n });\n\n _.forEach(tmpData, (value, key) => {\n newDatasetSource.push([\n key,\n ...value,\n ]);\n });\n newDatasetSource.unshift(newDatasetSourceHeader);\n }\n\n let saveAsImage = { pixelRatio: 10 };\n if (!displaySaveButton) {\n saveAsImage = undefined;\n }\n\n const chartOption = {\n backgroundColor,\n legend: legendConf,\n title: { text: title, subtext: subtitle, left: titlePosition },\n grid: { containLabel: true, top: '25%' },\n tooltip: {\n trigger: 'axis',\n axisPointer: { type: 'shadow' },\n },\n dataset: { source: newDatasetSource },\n toolbox: { feature: { saveAsImage }, top: '10%' },\n xAxis,\n yAxis,\n series,\n };\n\n return chartOption;\n }\n\n /**\n 通过系列指定的列获取 legend 列表,如 [微博, 微信]\n */\n getLegend = (dataSource = [], column = null, filters = null) => {\n // column 不存在时不生成系列\n if (_.isNull(column)) {\n return [];\n }\n\n /**\n 如果设置了 filter 则系列需要使用此进行过滤\n */\n const filteredColumnContent = _.get(filters, column, null);\n if (_.isArray(filteredColumnContent) && filteredColumnContent.length > 0) {\n return filteredColumnContent;\n }\n const body = _.slice(dataSource, 1);\n const header = _.get(dataSource, 0, []);\n const seriesIndex = _.findIndex(header, (d) => (d === column));\n const grouppedBody = _.groupBy(body, seriesIndex);\n const keys = _.keys(grouppedBody);\n return keys;\n }\n\n /**\n 监听数据编辑器变化\n */\n dataEditorOnChange = (data, filters, sorter, reload) => {\n /**\n 获取在操作 Table 时的过滤、排序条件,方便保存\n reload 用来判断是否将条件清空,为 true 时表示 \"还原\"\n */\n if (reload) {\n this.setState({ filters: {}, sorter: {}, dataRange: 'total' });\n }\n this.setState({ dataSource: data });\n this.handleConfigChange({ dataSource: data, filters, sorter });\n }\n\n /**\n 监听所有配置变化,通过 onChange 返回\n 注意参数 newConfig 必须是对象\n */\n handleConfigChange = (newConfig = {}) => {\n const { onChange } = this.props;\n if (_.isFunction(onChange)) {\n const {\n title,\n subtitle,\n titlePosition,\n legendPosition,\n xAxisLabel,\n xAxisName,\n yAxisLabel,\n yAxisName,\n numbericAxis,\n dataSource,\n seriesColumn,\n seriesConf,\n filters,\n sorter,\n dataRange,\n lastNDays,\n backgroundColor,\n chartHeight,\n displaySaveButton,\n } = this.state;\n const oldConfigs = {\n title,\n subtitle,\n titlePosition,\n legendPosition,\n xAxisLabel,\n xAxisName,\n yAxisLabel,\n yAxisName,\n numbericAxis,\n dataSource,\n seriesColumn,\n seriesConf,\n filters,\n sorter,\n dataRange,\n lastNDays,\n backgroundColor,\n chartHeight,\n displaySaveButton,\n };\n\n const finalConfigs = _.assign(oldConfigs, newConfig);\n\n // 回传\n onChange(finalConfigs);\n }\n }\n\n /**\n 修改图表背景颜色\n */\n handleBackgroundColorChange = ({ hex }) => {\n this.setState({ backgroundColor: hex });\n this.handleConfigChange({ backgroundColor: hex });\n }\n\n /**\n 图表高度设置\n */\n handleChartHeightChange = ({ target: { value } }) => {\n const numberReg = /^\\d+$/;\n if (numberReg.test(value)) {\n this.setState({ chartHeight: value });\n this.handleConfigChange({ chartHeight: value });\n }\n }\n\n /**\n 是否显示下载按钮\n */\n handleSaveButtonCheckboxChange = ({ target: { checked } }) => {\n this.setState({ displaySaveButton: checked });\n this.handleConfigChange({ displaySaveButton: checked });\n }\n\n render() {\n const {\n editable, // 有只读和编辑两种模式,只读模式只显示图表\n style,\n configStyle,\n DataEditorParams,\n ReactEchartsParams,\n } = this.props;\n const {\n title,\n subtitle,\n titlePosition,\n legendPosition,\n xAxisLabel,\n xAxisName,\n yAxisLabel,\n yAxisName,\n numbericAxis,\n dataSource,\n originData,\n seriesColumn,\n seriesConf,\n filters,\n sorter,\n dataRange,\n lastNDays,\n backgroundColor,\n chartHeight,\n displaySaveButton,\n } = this.state;\n\n /**\n X轴和Y轴的数据源,第一行存储的是名称\n */\n const firstRow = dataSource.length > 0 ? dataSource[0] : [];\n const radioOptions = _.map(firstRow, (item) => (\n <Radio key={item} value={item}>{item}</Radio>\n ));\n\n const formItemLayout = {\n labelCol: {\n xs: { span: 24 },\n sm: { span: 6 },\n },\n wrapperCol: {\n xs: { span: 24 },\n sm: { span: 18 },\n },\n };\n\n /**\n x y 轴数值型复选框的功能\n */\n const XYTypeTooltip = 'x 、y 轴中必须有一条为数值轴,即显示数值的轴。如果为数值轴,则表示 [坐标轴标签] 显示为数字范围,如 1 ~ 100;如果不为数值轴,则原样显示;一般情况下 Y 轴为数值轴';\n\n /**\n 如果 dataRange 为 lastNDays 则证明需要过滤\n\n 过程: 获取最大的日期,然后只保留最大日期及前 lastNDays 的数据\n */\n let filteredDataSource = dataSource;\n if (dataRange === 'lastNDays') {\n const header = _.get(dataSource, 0, []);\n let body = _.slice(dataSource, 1);\n const maxDateObj = _.maxBy(body, (d) => (moment(_.get(d, 0, null))));\n const maxDate = _.get(maxDateObj, 0, null);\n if (maxDate) {\n body = _.filter(body, (ds) => (\n moment(_.get(ds, 0, null)).add(lastNDays, 'days') > moment(maxDate)));\n body.unshift(header);\n filteredDataSource = body;\n }\n }\n\n /**\n x y 轴标签列解释\n */\n const XYLabelTooltip = 'x 、y [坐标轴标签] 的取值列,即每个刻度标签对应所选择列的每个值';\n const legends = this.getLegend(filteredDataSource, seriesColumn, filters); // 小于 2 列时 seriesColumn 为null,不生成系列\n const seriesItems = _.map(legends, (legend) => {\n const conf = _.get(seriesConf, legend);\n return (\n <Form.Item {...formItemLayout} label={legend} key={legend}>\n <Form.Item {...formItemLayout}></Form.Item> {/* 占位 */}\n\n <Form.Item {...formItemLayout} label=\"颜色\">\n <Radio.Group value={_.get(conf, 'color', 'auto')} onChange={(e) => this.onColorChange(e, legend)}>\n <Radio value=\"auto\">自动</Radio>\n <Radio value=\"custom\">自定义\n {_.get(conf, 'color', null) === 'custom'\n && (\n <TwitterPicker\n width=\"205px\"\n triangle=\"hide\"\n color={conf.colorValue}\n onChange={(color) => this.onColorChange('custom', legend, color.hex)}\n colors={['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8', '#ABB8C3']}\n />\n )}\n </Radio>\n </Radio.Group>\n </Form.Item>\n\n <Form.Item {...formItemLayout} label=\"类型\">\n <Radio.Group value={_.get(conf, 'type', 'line')} onChange={(e) => this.onChartTypeChange(e, legend)}>\n <Radio value=\"line\">折线图</Radio>\n <Radio value=\"bar\">柱状图</Radio>\n </Radio.Group>\n </Form.Item>\n\n </Form.Item>\n );\n });\n const option = this.getChartOption(filteredDataSource);\n\n return (\n <Row style={style} gutter={8}>\n <Col span={editable ? 8 : 0} style={configStyle}>\n <Popover\n trigger=\"click\"\n overlayStyle={{ width: '50%' }}\n placement=\"topLeft\"\n content={<img src={help} alt=\"帮助信息\" style={{ maxHeight: '100%', maxWidth: '100%' }} />}\n >\n <Tooltip title=\"点击显示帮助信息\">\n <Icon type=\"info-circle-o\" style={{ cursor: 'pointer', position: 'absolute', top: '0px', left: '0px', zIndex: 1 }} />\n </Tooltip>\n </Popover>\n\n <Form>\n <Form.Item {...formItemLayout} label=\"标题\">\n <Form.Item {...formItemLayout}></Form.Item> {/* 占位 */}\n\n <Form.Item {...formItemLayout} label=\"主\">\n <Input placeholder=\"图表标题\" value={title} onChange={this.onTitleChange} />\n </Form.Item>\n\n <Form.Item {...formItemLayout} label=\"副\">\n <Input placeholder=\"图表副标题\" value={subtitle} onChange={this.onSubtitleChange} />\n </Form.Item>\n\n <Form.Item {...formItemLayout} label=\"位置\">\n <Radio.Group value={titlePosition} onChange={this.onTitlePositionChange}>\n <Radio value=\"left\">左</Radio>\n <Radio value=\"center\">中</Radio>\n <Radio value=\"right\">右</Radio>\n </Radio.Group>\n </Form.Item>\n </Form.Item>\n\n <Form.Item {...formItemLayout} label=\"背景颜色\">\n <TwitterPicker\n width=\"205px\"\n triangle=\"hide\"\n color={backgroundColor}\n onChange={this.handleBackgroundColorChange}\n colors={['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8', '#ABB8C3']}\n />\n </Form.Item>\n\n <Form.Item {...formItemLayout} label=\"图表高度\">\n <Input\n size=\"small\"\n style={{ width: '4em' }}\n defaultValue={chartHeight}\n onBlur={this.handleChartHeightChange}\n onPressEnter={this.handleChartHeightChange}\n /> px\n </Form.Item>\n\n <Form.Item {...formItemLayout} label=\"保存图片\">\n <Checkbox onChange={this.handleSaveButtonCheckboxChange} checked={displaySaveButton}>是否显示保存为图片按钮</Checkbox>\n </Form.Item>\n\n <Form.Item\n {...formItemLayout}\n label={<span><Tooltip placement=\"topLeft\" title={XYTypeTooltip}>数值轴 <Icon type=\"question-circle-o\" /></Tooltip></span>}\n >\n <Radio.Group value={numbericAxis} onChange={this.onNumAxisChange}>\n <Radio value=\"x\">X</Radio>\n <Radio value=\"y\">Y</Radio>\n </Radio.Group>\n </Form.Item>\n\n <Form.Item\n {...formItemLayout}\n label=\"动态过滤\"\n >\n <Radio.Group value={dataRange} onChange={this.onDataRangeChange}>\n <Radio value=\"total\">不过滤</Radio>\n <Radio value=\"lastNDays\">保留最后 <InputNumber\n size=\"small\"\n min={1}\n max={99}\n style={{ width: '4em' }}\n value={lastNDays}\n onChange={this.onLastNDaysChange}\n /> 天数据\n </Radio>\n </Radio.Group>\n </Form.Item>\n\n <Form.Item {...formItemLayout} label=\"X轴\">\n <Form.Item {...formItemLayout}></Form.Item> {/* 占位 */}\n\n <Form.Item {...formItemLayout} label=\"名称\">\n <Input value={xAxisName} onChange={this.onXAxisNameChange} />\n </Form.Item>\n\n <Form.Item\n {...formItemLayout}\n label={<span><Tooltip placement=\"topLeft\" title={XYLabelTooltip}>取值 <Icon type=\"question-circle-o\" /></Tooltip></span>}\n >\n <Radio.Group value={xAxisLabel} onChange={this.onXLabelChange}>\n {radioOptions}\n </Radio.Group>\n </Form.Item>\n </Form.Item>\n\n <Form.Item {...formItemLayout} label=\"Y轴\">\n <Form.Item {...formItemLayout}></Form.Item> {/* 占位 */}\n\n <Form.Item {...formItemLayout} label=\"名称\">\n <Input value={yAxisName} onChange={this.onYAxisNameChange} />\n </Form.Item>\n\n <Form.Item\n {...formItemLayout}\n label={<span><Tooltip placement=\"topLeft\" title={XYLabelTooltip}>取值 <Icon type=\"question-circle-o\" /></Tooltip></span>}\n >\n <Radio.Group value={yAxisLabel} onChange={this.onYLabelChange}>\n {radioOptions}\n </Radio.Group>\n </Form.Item>\n </Form.Item>\n\n {/* 选择系列使用的列,然后在下面生成每个系列的编辑项 */}\n <Form.Item {...formItemLayout} label=\"系列\">\n <Form.Item {...formItemLayout} /> {/* 占位 */}\n\n <Form.Item {...formItemLayout} label=\"取值\">\n <Radio.Group value={seriesColumn} onChange={this.onSeriesChange}>\n {radioOptions}\n </Radio.Group>\n </Form.Item>\n\n <Form.Item {...formItemLayout} label=\"位置\">\n <Radio.Group value={legendPosition} onChange={this.onLegendPositionChange}>\n <Radio value=\"left\">左</Radio>\n <Radio value=\"center\">中</Radio>\n <Radio value=\"right\">右</Radio>\n </Radio.Group>\n </Form.Item>\n {seriesItems}\n </Form.Item>\n\n </Form>\n </Col>\n\n <Col span={editable ? 16 : 24}>\n {_.get(filteredDataSource, 0, []).length >= 3\n ? (\n <ReactEcharts\n {..._.assign(\n { option },\n ReactEchartsParams,\n { style: { height: `${chartHeight}px` } } // 覆盖 ReactEchartsParams 中高度的设置\n )}\n />\n )\n : <PlaceHolder text=\"数据不合法,至少需要 3 列,如 日期、平台、声量\" />\n }\n\n {editable\n && (\n <DataEditor\n {..._.assign(\n {\n dataSource: filteredDataSource,\n originData,\n onChange: this.dataEditorOnChange,\n tableParams: { size: 'small' },\n tableFilters: filters,\n tableSorter: sorter,\n },\n DataEditorParams\n )}\n />\n )}\n </Col>\n </Row>\n );\n }\n}\n\n\nEchartsEditor.propTypes = {\n editable: PropTypes.bool,\n onChange: PropTypes.func,\n style: PropTypes.object,\n configStyle: PropTypes.object,\n dataSource: PropTypes.arrayOf(PropTypes.array),\n originData: PropTypes.arrayOf(PropTypes.array),\n ReactEchartsParams: PropTypes.object,\n DataEditorParams: PropTypes.object,\n title: PropTypes.string,\n subtitle: PropTypes.string,\n titlePosition: PropTypes.string,\n legendPosition: PropTypes.string,\n xAxisLabel: PropTypes.string,\n xAxisName: PropTypes.string,\n yAxisLabel: PropTypes.string,\n yAxisName: PropTypes.string,\n numbericAxis: PropTypes.string,\n seriesColumn: PropTypes.string,\n seriesConf: PropTypes.object,\n filters: PropTypes.object,\n sorter: PropTypes.object,\n dataRange: PropTypes.string,\n lastNDays: PropTypes.number,\n backgroundColor: PropTypes.string,\n chartHeight: PropTypes.number,\n displaySaveButton: PropTypes.bool,\n};\n\nEchartsEditor.defaultProps = {\n editable: true,\n onChange: undefined,\n style: {},\n configStyle: { height: '40rem', overflow: 'scroll', padding: '0 0.8rem 0 0', backgroundColor: '#f7f7f7', borderRadius: '4px' },\n dataSource: [[]],\n originData: undefined,\n ReactEchartsParams: { notMerge: true, style: { height: '35em' } },\n DataEditorParams: {},\n title: '图表标题',\n subtitle: '副标题',\n titlePosition: 'left',\n legendPosition: 'center',\n xAxisLabel: null,\n xAxisName: 'X轴',\n yAxisLabel: null,\n yAxisName: 'Y轴',\n numbericAxis: 'y',\n seriesColumn: null,\n seriesConf: {},\n filters: {},\n sorter: {},\n dataRange: 'total',\n lastNDays: 7,\n backgroundColor: '#FFFFFF',\n chartHeight: 420,\n displaySaveButton: true,\n};\n\nexport default EchartsEditor;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/EchartsEditor.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactEcharts from 'echarts-for-react';\nimport { Row, Col, Form } from 'antd';\nimport Title from './configs/Title';\nimport Theme from './configs/Theme';\nimport Height from './configs/Height';\nimport Toolbox from './configs/Toolbox';\nimport Legend from './configs/Legend';\nimport Pie from './configs/series/Pie';\nimport Baseline from '../Baseline';\n\nconst colors = [\n '#2874D7', '#70D12D', '#ECB513', '#1BCFE7', '#B8C0F2',\n '#2ec7c9', '#b6a2de', '#5ab1ef', '#ffb980', '#d87a80',\n '#8d98b3', '#e5cf0d', '#97b552', '#95706d', '#dc69aa',\n '#07a2a4', '#9a7fd1', '#588dd5', '#f5994e', '#c05050',\n '#59678c', '#c9ab00', '#7eb00a', '#6f5553', '#c14089',\n];\n\n/**\n echarts 饼图配置器 - 使用图形化的方式配置 echarts4.x 图表\n\n - 通用说明\n - 除 theme、chartHeight 外其它参数均为 echarts4.x 的标准参数,简称[标准参数]\n - [标准参数]只能是 echarts4.x 的顶级参数\n 即: http://www.echartsjs.com/option.html#title 中 .setOption() 中直接子参数\n - 每一个[标准参数]都返回其所有的配置,如 title = {text: '', ....}\n - 数据需要在本组件外处理完成,并通过[标准参数]中的 dataset 传递,只支持以下一种格式\n 即 (第一列为 dimensions(维度名) ):\n dataset = {\n source: [\n ['浏览方式', '次数'],\n ['直接访问', 335],\n ['邮件营销', 310],\n ['联盟广告', 234],\n ['视频广告', 135],\n ['搜索引擎', 1548],\n ]\n }\n\n\n @author Witee<github.com/Witee>\n @date 2018-12-05\n @update 2018-12-07\n*/\nclass EchartsPie extends React.Component {\n constructor(props) {\n super(props);\n\n const {\n theme,\n chartHeight,\n // [标准参数]\n title,\n backgroundColor,\n toolbox,\n legend,\n series,\n dataset,\n } = props;\n\n this.state = {\n theme,\n chartHeight,\n // [标准参数]\n title,\n backgroundColor,\n toolbox,\n legend,\n series,\n dataset,\n };\n }\n\n /**\n 完成加载后回传一次数据,使父层获取初始值\n */\n componentDidMount() {\n this.handleConfigChange();\n }\n\n componentWillReceiveProps(nextProps) {\n const {\n title,\n theme,\n backgroundColor,\n chartHeight,\n toolbox,\n legend,\n series,\n dataset,\n } = this.props;\n\n const needUpdate = {};\n\n if (!_.isEqual(title, nextProps.title)) { needUpdate.title = nextProps.title; }\n if (!_.isEqual(theme, nextProps.theme)) { needUpdate.theme = nextProps.theme; }\n if (!_.isEqual(backgroundColor, nextProps.backgroundColor)) { needUpdate.backgroundColor = nextProps.backgroundColor; }\n if (!_.isEqual(chartHeight, nextProps.chartHeight)) { needUpdate.chartHeight = nextProps.chartHeight; }\n if (!_.isEqual(toolbox, nextProps.toolbox)) { needUpdate.toolbox = nextProps.toolbox; }\n if (!_.isEqual(legend, nextProps.legend)) { needUpdate.legend = nextProps.legend; }\n if (!_.isEqual(series, nextProps.series)) { needUpdate.series = nextProps.series; }\n if (!_.isEqual(dataset, nextProps.dataset)) { needUpdate.dataset = nextProps.dataset; }\n\n if (!_.isEmpty(needUpdate)) {\n this.setState(needUpdate);\n }\n }\n\n onTitleChange = (title) => {\n this.setState({ title });\n this.handleConfigChange({ title });\n };\n\n onThemeChange = ({ theme, backgroundColor }) => {\n this.setState({ theme, backgroundColor });\n this.handleConfigChange({ theme, backgroundColor });\n };\n\n onChartHeightChange = (chartHeight) => {\n const intChartHeight = _.parseInt(chartHeight);\n this.setState({ chartHeight: intChartHeight });\n this.handleConfigChange({ chartHeight: intChartHeight });\n }\n\n onToolboxChange = (toolbox) => {\n this.setState({ toolbox });\n this.handleConfigChange({ toolbox });\n };\n\n onLegendChange = (legend) => {\n this.setState({ legend });\n this.handleConfigChange({ legend });\n };\n\n onSeriesChange = (series) => {\n this.setState({ series });\n this.handleConfigChange({ series });\n };\n\n getOption = () => {\n const {\n title,\n backgroundColor,\n toolbox,\n legend,\n series,\n dataset,\n } = this.state;\n\n return {\n color: colors,\n backgroundColor,\n title,\n toolbox,\n legend,\n series,\n dataset,\n };\n }\n\n /**\n 监听所有配置变化,通过 onChange 返回\n 注意参数 newConfig 必须是对象\n */\n handleConfigChange = (newConfig = {}) => {\n const { onChange } = this.props;\n if (_.isFunction(onChange)) {\n const {\n title,\n theme,\n backgroundColor,\n chartHeight,\n toolbox,\n legend,\n series,\n dataset,\n } = this.state;\n const oldConfigs = {\n title,\n theme,\n backgroundColor,\n chartHeight,\n toolbox,\n legend,\n series,\n dataset,\n };\n\n const finalConfigs = _.assign(oldConfigs, newConfig);\n\n // 回传\n onChange(finalConfigs);\n }\n }\n\n render() {\n const {\n editable,\n style,\n configStyle,\n colorPickerConfig,\n } = this.props;\n\n const {\n title,\n theme,\n backgroundColor,\n chartHeight,\n toolbox,\n legend,\n series,\n } = this.state;\n\n /**\n 配置区域的高度跟随图表高度\n */\n const newConfigHeight = _.get(configStyle, 'height', `${chartHeight}px`);\n const oldConfigStyle = { height: newConfigHeight, overflow: 'scroll', padding: '0 0.8rem 0 0', backgroundColor: '#f7f7f7', borderRadius: '4px' };\n const newConfigStyle = _.assign(oldConfigStyle, configStyle);\n\n return (\n <Row style={style} gutter={16}>\n {editable && (\n <Col span={editable ? 8 : 0} style={newConfigStyle}>\n <Form>\n <Title\n title={_.cloneDeep(title)}\n onChange={this.onTitleChange}\n />\n\n <Theme\n theme={theme}\n backgroundColor={backgroundColor}\n colorPickerConfig={colorPickerConfig}\n onChange={this.onThemeChange}\n />\n\n <Height\n defaultValue={chartHeight}\n onHeightSet={this.onChartHeightChange}\n />\n\n <Toolbox\n /**\n const { toolbox } = this.state; 是 toolbox 的浅拷贝,对 toolbox 的修改就是对其本身的修改\n 所以需要创建一个新的对象才能使 equal 对比时出现不相等的情况\n */\n toolbox={_.cloneDeep(toolbox)}\n onChange={this.onToolboxChange}\n />\n\n <Legend\n legend={_.cloneDeep(legend)}\n onChange={this.onLegendChange}\n />\n\n <Pie\n series={_.cloneDeep(series)}\n onChange={this.onSeriesChange}\n />\n </Form>\n\n <Baseline />\n </Col>\n )}\n\n <Col span={editable ? 16 : 24}>\n <ReactEcharts\n option={this.getOption()}\n notMerge={false}\n lazyUpdate={false}\n theme={theme}\n style={{ height: `${chartHeight}px` }}\n />\n </Col>\n </Row>\n );\n }\n}\n\nEchartsPie.propTypes = {\n editable: PropTypes.bool,\n style: PropTypes.object,\n configStyle: PropTypes.object,\n title: PropTypes.object,\n theme: PropTypes.oneOf(['default', 'dark']), // 默认已注册的主题\n backgroundColor: PropTypes.string,\n colorPickerConfig: PropTypes.object,\n chartHeight: PropTypes.number,\n toolbox: PropTypes.object,\n legend: PropTypes.object,\n series: PropTypes.arrayOf(PropTypes.object),\n dataset: PropTypes.object,\n onChange: PropTypes.func,\n};\n\nEchartsPie.defaultProps = {\n editable: true,\n style: {},\n configStyle: {},\n title: undefined,\n theme: 'default',\n backgroundColor: '#FFFFFF',\n colorPickerConfig: undefined,\n chartHeight: 420,\n toolbox: { feature: { saveAsImage: { title: '下载', pixelRatio: 5 } }, top: '10%' },\n legend: undefined,\n series: [{ type: 'pie' }],\n dataset: undefined,\n onChange: undefined,\n};\n\nexport default EchartsPie;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/EchartsPie.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactEcharts from 'echarts-for-react';\nimport { Row, Col, Form } from 'antd';\nimport 'echarts-wordcloud';\nimport 'echarts/theme/macarons.js';\nimport Title from './configs/Title';\nimport Theme from './configs/Theme';\nimport Height from './configs/Height';\nimport Toolbox from './configs/Toolbox';\n// import Legend from './configs/Legend';\nimport WordCloud from './configs/series/WordCloud';\nimport Baseline from '../Baseline';\n\nconst colors = [\n '#2874D7', '#70D12D', '#ECB513', '#1BCFE7', '#B8C0F2',\n '#2ec7c9', '#b6a2de', '#5ab1ef', '#ffb980', '#d87a80',\n '#8d98b3', '#e5cf0d', '#97b552', '#95706d', '#dc69aa',\n '#07a2a4', '#9a7fd1', '#588dd5', '#f5994e', '#c05050',\n '#59678c', '#c9ab00', '#7eb00a', '#6f5553', '#c14089',\n];\n\nconst defaultConfigs = {\n type: 'wordCloud',\n shape: 'circle',\n left: 'center',\n top: 'center',\n width: '70%',\n height: '80%',\n rotationStep: 45,\n drawOutOfBound: false,\n gridSize: 8,\n rotationRange: [-90, 90],\n sizeRange: [12, 60],\n textStyle: {\n emphasis: { shadowBlur: 10, shadowColor: '#333' },\n normal: {\n fontWeight: 'normal',\n color: () => (`rgb(${[Math.round(Math.random() * 160), Math.round(Math.random() * 160), Math.round(Math.random() * 160)].join(',')})`),\n },\n },\n};\n\n/**\n echarts 词云图配置器 - 使用图形化的方式配置 echarts4.x 图表\n\n - 除 theme、chartHeight 外其它参数均为 echarts4.x 的标准参数,简称[标准参数]\n - [标准参数]只能是 echarts4.x 的顶级参数\n 即: http://www.echartsjs.com/option.html#title 中 .setOption() 中直接子参数\n - 每一个[标准参数]都返回其所有的配置,如 title = {text: '', ....}\n - 数据需要在本组件外处理完成,并通过[标准参数]中的 dataset 传递,只支持以下一种格式\n 即: 只有两列,(第一行为 dimensions(维度名、表头),使用时排除掉,返回时再添加:\n dataset = {\n source: [\n ['词', '值'],\n ['搞笑幽默', 3535333],\n ['新闻趣事', 786129],\n ['视频音乐', 745129],\n ['八卦杂谈', 692445],\n ]\n }\n 注意:\n - 在实际上,词云的数据是保存在 series[0].data 中,但为了统一,放在了 dataset.source 中,\n 所以在接收 dataset 参数时需要将数据转到 series[0].data 中,在返回时需要做相反操作\n - series[0].data 格式为 [ {name: xxx, value: xxx} ]\n - dataset.source 第一列维度、表头,使用时需要排除,返回时再添加\n\n @author Witee<github.com/Witee>\n @date 2018-12-05\n @update 2018-12-10\n*/\nclass EchartsWordCloud extends React.Component {\n constructor(props) {\n super(props);\n\n const {\n theme,\n chartHeight,\n // [标准参数]\n title,\n backgroundColor,\n toolbox,\n // legend,\n series,\n dataset,\n } = props;\n\n /**\n 首次加载时保存 header,在返回值时会使用\n */\n this.header = _.get(dataset, ['source', 0], []);\n\n const [newSeries, newDataset] = this.exchangeValues('toSeries', series, dataset);\n\n this.state = {\n theme,\n chartHeight,\n // [标准参数]\n title,\n backgroundColor,\n toolbox,\n // legend,\n series: [_.assign(defaultConfigs, newSeries[0])],\n dataset: newDataset,\n };\n }\n\n /**\n 完成加载后回传一次数据,使父层获取初始值\n */\n componentDidMount() {\n this.handleConfigChange();\n }\n\n componentWillReceiveProps(nextProps) {\n const {\n title,\n theme,\n backgroundColor,\n chartHeight,\n toolbox,\n // legend,\n series,\n dataset,\n } = this.props;\n\n const [newSeries, newDataset] = this.exchangeValues('toSeries', series, dataset);\n const [nextSeries, nextDataset] = this.exchangeValues('toSeries', nextProps.series, nextProps.dataset);\n\n const needUpdate = {};\n\n if (!_.isEqual(title, nextProps.title)) { needUpdate.title = nextProps.title; }\n if (!_.isEqual(theme, nextProps.theme)) { needUpdate.theme = nextProps.theme; }\n if (!_.isEqual(backgroundColor, nextProps.backgroundColor)) { needUpdate.backgroundColor = nextProps.backgroundColor; }\n if (!_.isEqual(chartHeight, nextProps.chartHeight)) { needUpdate.chartHeight = nextProps.chartHeight; }\n if (!_.isEqual(toolbox, nextProps.toolbox)) { needUpdate.toolbox = nextProps.toolbox; }\n // if (!_.isEqual(legend, nextProps.legend)) { needUpdate.legend = nextProps.legend; }\n if (!_.isEqual(newSeries, nextSeries)) { needUpdate.series = nextSeries; }\n if (!_.isEqual(newDataset, nextDataset)) { needUpdate.dataset = nextDataset; }\n\n if (!_.isEmpty(needUpdate)) {\n this.setState(needUpdate);\n }\n }\n\n onTitleChange = (title) => {\n this.setState({ title });\n this.handleConfigChange({ title });\n };\n\n onThemeChange = ({ theme, backgroundColor }) => {\n this.setState({ theme, backgroundColor });\n this.handleConfigChange({ theme, backgroundColor });\n };\n\n onChartHeightChange = (chartHeight) => {\n const intChartHeight = _.parseInt(chartHeight);\n this.setState({ chartHeight: intChartHeight });\n this.handleConfigChange({ chartHeight: intChartHeight });\n }\n\n onToolboxChange = (toolbox) => {\n this.setState({ toolbox });\n this.handleConfigChange({ toolbox });\n };\n\n // onLegendChange = (legend) => {\n // this.setState({ legend });\n // this.handleConfigChange({ legend });\n // };\n\n onSeriesChange = (series) => {\n this.setState({ series });\n this.handleConfigChange({ series });\n };\n\n getOption = () => {\n const {\n title,\n backgroundColor,\n toolbox,\n // legend,\n series,\n dataset,\n } = this.state;\n\n return {\n color: colors,\n backgroundColor,\n title,\n toolbox,\n // legend,\n series,\n dataset,\n };\n }\n\n /**\n 监听所有配置变化,通过 onChange 返回\n 注意参数 newConfig 必须是对象\n */\n handleConfigChange = (newConfig = {}) => {\n const { onChange } = this.props;\n if (_.isFunction(onChange)) {\n const {\n title,\n theme,\n backgroundColor,\n chartHeight,\n toolbox,\n // legend,\n series,\n dataset,\n } = this.state;\n\n const [newSeries, newDataset] = this.exchangeValues('toDataset', series, dataset);\n\n const oldConfigs = {\n title,\n theme,\n backgroundColor,\n chartHeight,\n toolbox,\n // legend,\n series,\n dataset,\n };\n\n const finalConfigs = _.assign(oldConfigs, newConfig, { series: newSeries }, { dataset: newDataset });\n\n // 回传\n onChange(finalConfigs);\n }\n }\n\n /**\n 将值在 series[0].data 与 dataset.source 之间移动,并转换格式\n - toDataset 表示将 series[0].data 的值移动到 dataset.source 中\n - toSeries 表示将 dataset.source 的值移动到 series[0].data 中\n\n 数据格式转换:\n - dataset.source 第一列为表头,toSeries 时需要排除掉,toDataset 时需要添加(header 保存在 this.header 中)\n - series[0].data = [{name: xxx, value: xxx}, ...]\n - dataset.source = [[xxx, xxx], ...]\n */\n exchangeValues = (type, series, dataset) => {\n const clonedSeries = _.cloneDeep(series);\n const clonedDataset = _.cloneDeep(dataset);\n\n if (type === 'toDataset') {\n /**\n [{name: xxx, value: xxx}, ...] --> [[xxx, xxx], ...]\n 第一条数据为表头,需要添加\n */\n const data = _.get(clonedSeries, [0, 'data'], []);\n const newData = [];\n _.forEach(data, (d) => {\n newData.push([_.get(d, 'name', null), _.get(d, 'value', null)]);\n });\n\n newData.unshift(this.header);\n\n _.set(clonedDataset, 'source', newData);\n _.unset(clonedSeries, [0, 'data']);\n } else if (type === 'toSeries') {\n /**\n [[xxx, xxx], ...] --> [{name: xxx, value: xxx}, ...]\n 第一条数据为表头,需要排除\n */\n const data = _.get(clonedDataset, 'source', []);\n const body = _.slice(data, 1);\n const newData = [];\n _.forEach(body, (b) => {\n newData.push({\n name: _.get(b, 0, null),\n value: _.get(b, 1, null),\n });\n });\n\n _.set(clonedSeries, [0, 'data'], newData);\n _.unset(clonedDataset, 'source');\n }\n\n return [clonedSeries, clonedDataset];\n }\n\n render() {\n const {\n editable,\n style,\n configStyle,\n colorPickerConfig,\n } = this.props;\n\n const {\n title,\n theme,\n backgroundColor,\n chartHeight,\n toolbox,\n // legend,\n series,\n } = this.state;\n\n /**\n 配置区域的高度跟随图表高度\n */\n const newConfigHeight = _.get(configStyle, 'height', `${chartHeight}px`);\n const oldConfigStyle = { height: newConfigHeight, overflow: 'scroll', padding: '0 0.8rem 0 0', backgroundColor: '#f7f7f7', borderRadius: '4px' };\n const newConfigStyle = _.assign(oldConfigStyle, configStyle);\n\n return (\n <Row style={style} gutter={16}>\n {editable && (\n <Col span={editable ? 8 : 0} style={newConfigStyle}>\n <Form>\n <Title\n title={_.cloneDeep(title)}\n onChange={this.onTitleChange}\n />\n\n <Theme\n theme={theme}\n backgroundColor={backgroundColor}\n colorPickerConfig={colorPickerConfig}\n onChange={this.onThemeChange}\n />\n\n <Height\n defaultValue={chartHeight}\n onHeightSet={this.onChartHeightChange}\n />\n\n <Toolbox\n /**\n const { toolbox } = this.state; 是 toolbox 的浅拷贝,对 toolbox 的修改就是对其本身的修改\n 所以需要创建一个新的对象才能使 equal 对比时出现不相等的情况\n */\n toolbox={_.cloneDeep(toolbox)}\n onChange={this.onToolboxChange}\n />\n\n {/* <Legend\n legend={_.cloneDeep(legend)}\n onChange={this.onLegendChange}\n /> */}\n\n <WordCloud\n series={_.cloneDeep(series)}\n onChange={this.onSeriesChange}\n />\n </Form>\n\n <Baseline />\n </Col>\n )}\n\n <Col span={editable ? 16 : 24}>\n <ReactEcharts\n option={this.getOption()}\n notMerge={false}\n lazyUpdate={false}\n theme={theme}\n style={{ height: `${chartHeight}px` }}\n />\n </Col>\n </Row>\n );\n }\n}\n\nEchartsWordCloud.propTypes = {\n editable: PropTypes.bool,\n style: PropTypes.object,\n configStyle: PropTypes.object,\n title: PropTypes.object,\n theme: PropTypes.oneOf(['default', 'dark']), // 默认已注册的主题\n backgroundColor: PropTypes.string,\n colorPickerConfig: PropTypes.object,\n chartHeight: PropTypes.number,\n toolbox: PropTypes.object,\n // legend: PropTypes.object,\n series: PropTypes.arrayOf(PropTypes.object),\n dataset: PropTypes.object,\n onChange: PropTypes.func,\n};\n\nEchartsWordCloud.defaultProps = {\n editable: true,\n style: {},\n configStyle: {},\n title: undefined,\n theme: 'default',\n backgroundColor: '#FFFFFF',\n colorPickerConfig: undefined,\n chartHeight: 420,\n toolbox: { feature: { saveAsImage: { title: '下载', pixelRatio: 5 } }, top: '10%' },\n // legend: undefined,\n series: [{ type: 'wordCloud' }],\n dataset: undefined,\n onChange: undefined,\n};\n\nexport default EchartsWordCloud;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/EchartsWordCloud.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactEcharts from 'echarts-for-react';\n\n/**\n 基于 EChart 的常用图表 - 基础\n title、description、children 未定义时将不进行显示\n\n @author Witee<github.com/Witee>\n @date 2018-07-05\n*/\n\nconst OCDReactEcharts = (props) => {\n const {\n style,\n ...args\n } = props;\n\n return (\n <div style={style}>\n <ReactEcharts\n {...args}\n />\n </div>\n );\n};\n\n\nOCDReactEcharts.propTypes = {\n style: PropTypes.object,\n};\n\nOCDReactEcharts.defaultProps = {\n style: {},\n};\n\nexport default OCDReactEcharts;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/ReactEcharts.jsx","const help = 'data:image/png;base64,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md27d/PAAw9QV1eHYRicffbZXH311SiKwgcffMCCBQswDIPu3btz++23ExcXF9rXMAyam5t5/PHH+eKLL7BareTn53P55Zej6zpffPEFTz75JF6vl5SUFG6++WYyMzM5ePAgjz32GNu2bcNqtXL++ecze/Zs+fAQQgjxowRPIxoz4nQsCYmULHyRypUr8FRWkjZzFtFDh6FoGpbEJDmdaBckYbQTMQyDhx56iDPOOIOpU6dSVVXFddddx5gxY3A6nTz44IM8/PDDZGVl8cQTT/Doo49yzz33hPb3er0sW7aMffv28fjjj9PY2MicOXPIysqif//+PPDAA9x8880MHDiQt99+m/vvv5+HH36YxYsXU1dXx+OPP05dXR133XUXOTk5DB8+PIxHQwghRGeiKAqYTDh79qL79TdhS8+g9JWX2fvvf+LI6o7JbseR05P0y6/EEhsb7uqKDiRhtJMZM2YM5513HhEREfj9fnw+HyaTibVr15Kbm0tubi6qqnLBBRdw4403hrrzAXw+H59++innnHMOcXFxOJ1Ohg8fzieffAKAzWZj9OjRaJrGxIkTWbBgASUlJaxbt45LL72U2NhY7HY7gwcPZv369RJGhRBC/CSh5Z+SEkmdPgNF02gpKiT7pv/BVX6Amk/WUPvpWpInTQ53VUUHkjDaycyYMQOz2cytt97K9u3bycnJISsri2XLltGtWzdMrd0bKSkpNDY20tLSgtPpDI0zLS8vJy0tLdBloqokJiayfft2KioqSEpKQtMCL4mIiAjsdjvV1dXt9jGZTCQkJLB3795QndxuNy+99BJutxsItOAWFxfT0tJCSUlJxx8kIYQ4SXVr/SufjWB4vTQpCiaThmK1opoteN1umqur8YX5+FitViIjI7FarWGtR1chYbQTURQFi8UCwH333UdpaSlz5sxh6dKlmEwmPG1OuabrOkAoXAapqhq6Lbid2WzGZDKh6zqKomAYBoqi4Pf7sVgsodvg0OQps9nc7j579OgRenxd1/H5fBQWFmK320/MwRBCiE5MPhsBux1t8BDqS0spuPFaVKsNe+/eJI4dhxrm46Np2vdOBBbHl4TRTqSuro5rrrmG+fPn43Q66dmzJ3379qWkpIQePXrw5ptvhoLkd999R48ePdqFRpPJREZGBrt372bkyJHous6+ffvo3bs3GRkZ7N+/H4/H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0zj77LPxer0sXLgQu93O7bffTs+ePQG4++67ee211ygoKKB3797MnDkTs9nM1KlTURSF559/noiICO666y7S09OPVU0hhBBCiB9NMdpOtxYnteA6oYczmUxomobf78fj8WAYBpqmYTabQxOdDhw4wEUXXQQEZtX7fD4ALBYLJpMJwzBC9x8cP9q2i9/r9eL3+9vtcyw+n49169axfPly5s6dezwPgRBC/HzBrlf52hPipCIto52IoijfO7PPZDJht9uPKB86dCiqqobGwJjNZsxm8xH3rShKu0Xy22obTIUQQgghjhcJo12ALE0hhBBCiJOVhNEuQGYFCiGEEOJkJVMKhRBCCCFE2EgYFUIIIYQQYSNhVAghhBBChI2EUSGEEEIIETYSRoUQQgghRNhIGBVCCCGEEGEjYVQIIYQQQoSNhFEhhBBCCBE2EkaFEEIIIUTYSBgVQgghhBBhI2FUCCGEEEKEjYRRIYQQQggRNhJGhRBCCCFE2EgYFUIIIYQQYaOFuwJCCCHEcVdYCDfcAIYRuK4oh2678MJAebDs8cchM7Pj6yiEACSMCiGEOBVlZEBBQSCUHu6ddw5dzswMbCuECBvpphdCCHHqURS46KIf3m769PatpkKIDidhVAghxKlp+vTjs40Q4oSSMCqEEOLUNHo0pKQc+/bUVBg1quPqI4Q4KgmjQgghTk2qCtOmHfv2adMC2wghwkrehUIIIU5d39cNL130QpwUJIwKIYQ4dY0bB/HxR5bHx8PYsR1fHyHEEWRpp05q//79vP/++1x77bWhsl27drFo0SIaGhoYPHgws2bNwmw2h243DAOv18uqVatYs2YNNpuN8847jxEjRmAYBiUlJSxatIiqqir69OnD7NmzcTqdeL1e3n33XTZs2IDT6eTCCy8kLy8vHE9bCCF+Gk2DKVPguefal0+dGrhNCBF20jLayVRVVfH6668zZ84ctmzZEiqvr6/nlltuoV+/flx99dV8/vnnPPvss+329fv9rFmzhhdeeIHp06czYcIEHnroIbZt20ZTUxN33303sbGxXHnllRw4cIAHH3wQn8/He++9x5tvvsns2bM544wzmDt3Lrt37+7opy6EED/P0brjpYteiJOGhNFOxuPx4PV6SU1NRdf1UPmaNWtISkriwgsvpHfv3vzyl79k2bJlGMGzjwBer5cVK1YwadIk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';\n\n\nexport default help;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Chart/images.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Row, Col, Radio, Input, Button } from 'antd';\nimport Table from '../Table';\nimport tableUtils from '../../utils/table';\n\n/**\n 全功能数据编辑器 - 二维表格式,第一行是表头,其它行是数据\n\n 如下:\n dataSource = [\n [\"日期\", \"声量\"]\n [\"2018-07-09\", 58212]\n [\"2018-07-08\", 78254]\n [\"2018-07-07\", 41032]\n [\"2018-07-06\", 12755]\n [\"2018-07-05\", 20145]\n [\"2018-07-04\", 79146]\n [\"2018-07-03\", 91852]\n [\"2018-07-02\", 101852]\n ]\n\n @author Witee<github.com/Witee>\n @date 2018-07-24\n*/\n\nclass Common extends React.Component {\n constructor(props) {\n super(props);\n\n const { dataSource, tableFilters, tableSorter } = props;\n const fixedDataSource = tableUtils.fixData(dataSource);\n const newDataSource = tableUtils.filterAndSorter(fixedDataSource, tableFilters, tableSorter);\n\n this.state = {\n dataEditorType: 'table',\n dataSource: newDataSource,\n filteredInfo: tableFilters,\n sorter: tableSorter,\n };\n }\n\n componentWillReceiveProps(nextProps) {\n const fixedData = tableUtils.fixData(nextProps.dataSource);\n this.setState({ dataSource: fixedData });\n }\n\n /**\n 切换数据的显示方式,表格或文本\n */\n onDataEditorTypeChange = (e) => {\n this.setState({ dataEditorType: e.target.value });\n }\n\n /**\n 监听文本框编辑\n */\n onTextAreaChange = (e) => {\n const { onChange } = this.props;\n\n const splitedData = _.compact(_.split(e.target.value, '\\n'));\n if (_.isFunction(onChange)) { onChange(_.map(splitedData, (d) => (_.split(d, ',')))); }\n }\n\n /**\n 监听表格过滤、排序,并将处理后的结果及过滤、排序条件返回,\n */\n onTableChange = (pagination, filters, sorter) => {\n const { onChange } = this.props;\n const { dataSource } = this.state;\n\n let newDataSource = _.cloneDeep(dataSource);\n\n /**\n 如果数据长度小于等于2,则认为只有表头或表头+一条数据,所以原样返回\n */\n if (newDataSource.length >= 2) {\n /**\n 处理过虑、排序\n */\n newDataSource = tableUtils.filterAndSorter(newDataSource, filters, sorter);\n }\n if (_.isFunction(onChange)) { onChange(newDataSource, filters, sorter); }\n\n /**\n 将过滤条件保存,方便在渲染 columns 时使用\n */\n this.setState({ filteredInfo: filters, sorter });\n }\n\n /**\n 恢复原始数据\n */\n onReloadClick = () => {\n const { onChange, originData } = this.props;\n\n this.setState({ dataSource: originData, filteredInfo: {}, sorter: {} });\n /**\n 恢复之后将原始数据回传\n */\n if (_.isFunction(onChange)) { onChange(originData, null, null, true); }\n }\n\n render() {\n const { title, tableParams, originData } = this.props;\n const { dataEditorType, dataSource, filteredInfo, sorter } = this.state;\n\n /**\n 这里的 rows 分成了 2 种,\n rows = dataSource.slice(1) 用于表格内容的显示\n orginRows = originData.slice(1) 用于表格过滤条件的渲染\n */\n let newDataSource = dataSource;\n const header = _.get(dataSource, 0, []);\n let rows = dataSource.length >= 2 ? dataSource.slice(1) : [];\n const orginRows = _.get(originData, 'length', null) >= 2 ? originData.slice(1) : [];\n /**\n 每一列都添加排序与过滤,其中数值型的使用数值大小排序\n */\n const columns = _.map(header, (h, i) => ({\n key: h,\n title: h,\n dataIndex: h,\n filters: _.uniqBy(_.map(orginRows, (r) => ({ text: `${_.get(r, i, '-')}`, value: _.get(r, i, '-') })), 'text'),\n filteredValue: _.get(filteredInfo, h, null),\n onFilter: (value, record) => (_.toString(_.get(record, h, null)).includes(value)),\n sorter: true, // 在 Table 的 onChange 中进行了排序,并回传至上层,上层再传回,实现排序\n sortOrder: _.get(sorter, 'field', null) === h ? _.get(sorter, 'order', false) : undefined,\n }));\n /**\n 如果设置了sorter,说明需要按此排序,所以对 tableDataSource 作排序处理\n */\n if (!_.isEmpty(sorter) && _.get(sorter, 'field', null) && _.get(sorter, 'order', null)) {\n newDataSource = tableUtils.filterAndSorter(dataSource, filteredInfo, sorter);\n rows = newDataSource.length >= 2 ? newDataSource.slice(1) : [];\n }\n const tableDataSource = _.map(rows, (r, index) => {\n const data = {\n key: `${_.get(r, 0, '')} = ${index}`,\n };\n _.forEach(header, (h, i) => {\n data[h] = _.get(r, i, null);\n });\n return data;\n });\n\n return (\n <Row>\n <Col\n style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}\n className=\"margin-top-bottom-middle\"\n >\n {title}\n <Radio.Group\n value={dataEditorType}\n size=\"small\"\n onChange={this.onDataEditorTypeChange}\n className=\"justify-self-right\"\n >\n <Radio.Button key=\"table\" value=\"table\">表格</Radio.Button>\n <Radio.Button key=\"text\" value=\"text\">文本</Radio.Button>\n </Radio.Group>\n <Button\n icon=\"reload\"\n size=\"small\"\n className=\"margin-left-small\"\n disabled={!originData}\n onClick={this.onReloadClick}\n >\n 还原\n </Button>\n </Col>\n\n <Col>\n {dataEditorType === 'table'\n ? (\n <Table\n dataSource={tableDataSource}\n columns={columns}\n onChange={this.onTableChange}\n {..._.assign(\n {\n size: 'default',\n },\n tableParams\n )}\n />\n )\n : (\n <Input.TextArea\n value={_.join(_.map(newDataSource, (d) => (`${_.join(d, ',')}`)), '\\n')}\n rows={15}\n onChange={this.onTextAreaChange}\n />\n )\n }\n </Col>\n </Row>\n );\n }\n}\n\nCommon.propTypes = {\n title: PropTypes.node,\n originData: PropTypes.arrayOf(PropTypes.array),\n dataSource: PropTypes.arrayOf(PropTypes.array),\n onChange: PropTypes.func.isRequired,\n tableParams: PropTypes.object,\n tableFilters: PropTypes.object,\n tableSorter: PropTypes.object,\n};\n\nCommon.defaultProps = {\n title: <h3>源数据</h3>,\n originData: undefined,\n dataSource: [[]],\n tableParams: {},\n tableFilters: {},\n tableSorter: {},\n};\n\nexport default Common;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/DataEditor/Common.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Row, Col } from 'antd';\nimport OCDTable from '../Table';\nimport tableUtils from '../../utils/table';\n\n/**\n 表格编辑器 - 使用 antd Table 编辑二维表\n\n - onChange 会将 filters、sorter 和经过 filters、sorter 处理的 result 返回\n\n - 推荐使用方法: dataSource 始终传递 [原始数据],即 props.dataSource,\n 父层使用时经过 filters、sorter 处理,或直接使用 onChange 返回的 result 参数,\n 如将 onChange 返回的 result 再次传递给 DataEditor.Table 会由于已有的 filters 选项造成不能生成所有的过滤列表\n\n - filters, sorter 需要在 onChange 返回之后再次传回;\n\n - 输入与输出数据格式均为 echarts4.x 中 dataset 的格式\n 即: 第一行为表头,其它行为数据,每一行中以英文逗号分隔\n dataSource = [\n ['日期', '平台', '声量'],\n ['2018-07-20', '微博', 52872],\n ['2018-07-20', '微信', 8510],\n ['2018-07-21', '微博', 47381],\n ['2018-07-21', '微信', 8195],\n ['2018-07-22', '微博', 37072],\n ['2018-07-22', '微信', 6925],\n ['2018-07-23', '微博', 44665],\n ['2018-07-23', '微信', 7934],\n ['2018-07-24', '微博', 46858],\n ['2018-07-24', '微信', 8889],\n ['2018-07-25', '微博', 30272],\n ['2018-07-25', '微信', 3925],\n ];\n\n @author Witee<github.com/Witee>\n @date 2018-12-06\n*/\n\nclass Table extends React.Component {\n constructor(props) {\n super(props);\n\n const { dataSource, filters, sorter } = props;\n\n this.state = { dataSource, filters, sorter };\n }\n\n componentWillReceiveProps(nextProps) {\n const { dataSource, filters, sorter } = nextProps;\n this.setState({ dataSource, filters, sorter });\n }\n\n /**\n 推荐使用方法: dataSource 应始终保持为 [原始数据],\n filters, sorter 为对[原始数据]的处理方法,result 为处理结果\n sorter 只需要返回 field、order\n\n 注意: pagination 并未使用,所以 dataSource 必须为全部数据\n */\n onTableChange = (pagination, filters, sorter) => {\n const { onChange } = this.props;\n const { dataSource } = this.state;\n\n const newSorter = { field: sorter.field, order: sorter.order };\n\n this.setState({ filters, sorter: newSorter });\n\n if (_.isFunction(onChange)) {\n const fixedDataSource = tableUtils.fixData(dataSource);\n const result = tableUtils.filterAndSorter(fixedDataSource, filters, newSorter);\n\n onChange({ filters, sorter: newSorter, result });\n }\n }\n\n render() {\n const { toolbar, ...args } = this.props;\n const { dataSource, filters, sorter } = this.state;\n\n let tableDataSource = [];\n let columns = [];\n\n const fixedDataSource = tableUtils.fixData(dataSource);\n const newDataSource = tableUtils.filterAndSorter(fixedDataSource, filters, sorter);\n const header = _.get(fixedDataSource, 0, []);\n /**\n 这里有两种 body,\n - body 是排序、过滤后的\n - originBody 是生成过滤列表专用的\n */\n const originBody = _.slice(fixedDataSource, 1);\n const body = _.slice(newDataSource, 1);\n\n /**\n 只有 header 有数据时才会设置 tableDataSource,否则无论怎么操作都不符合 antd Table dataSource 参数格式\n */\n if (_.get(header, 'length', 0) > 0) {\n /**\n 表格标题\n 每一列都添加排序与过滤,其中数值型的使用数值大小排序\n */\n columns = _.map(header, (h, i) => {\n const filterOptions = _.uniqBy(\n _.map(originBody, (r) => {\n const option = _.get(r, i, '-');\n return { text: option, value: option };\n }),\n 'text'\n );\n return {\n title: h,\n dataIndex: h,\n filters: filterOptions,\n filteredValue: _.get(filters, h, null), // 这里要设置成 null,不能是 undefined,否则不能清除 filter 状态\n onFilter: (value, record) => (_.toString(_.get(record, h, null)).includes(value)),\n sorter: true, // 在 Table 的 onChange 中进行了排序,并回传至上层,上层再传回,实现排序\n sortOrder: _.get(sorter, 'field', null) === h ? _.get(sorter, 'order', false) : undefined,\n };\n });\n\n /**\n 表格数据\n 将列表格式的数据转换为 antd Table 需要的格式\n 即:\n old = [\n ['日期', '平台', '声量'],\n ['2018-07-20', '微博', 52872],\n ]\n new = [\n {key: INDEX, '日期': '2018-07-20', '平台': '微博', '声量', 52872},\n ]\n */\n tableDataSource = _.map(body, (value, index) => {\n const objData = _.zipObject(header, value);\n _.set(objData, 'key', `${_.get(value, 0, '')} = ${index}`);\n\n return objData;\n });\n }\n\n /**\n ...args 会将定义处的其它 props 参数都包含进来,\n 所以在使用的时候需要提前删除已定义的参数或不能被覆盖的参数\n */\n const filteredArgs = _.cloneDeep(args);\n const protectedArgs = ['dataSource', 'columns', 'onChange', 'filters', 'sorter'];\n _.map(protectedArgs, (arg) => {\n _.unset(filteredArgs, arg);\n });\n\n return (\n <Row>\n {toolbar && (\n <Col className=\"margin-top-bottom-middle\">\n { toolbar }\n </Col>\n )}\n\n <Col>\n <OCDTable\n dataSource={tableDataSource}\n columns={columns}\n onChange={this.onTableChange}\n {...filteredArgs}\n />\n\n </Col>\n </Row>\n );\n }\n}\n\nTable.propTypes = {\n toolbar: PropTypes.node,\n dataSource: PropTypes.arrayOf(PropTypes.array), // 需要始终传递 [原始数据]\n onChange: PropTypes.func,\n filters: PropTypes.object,\n sorter: PropTypes.object,\n};\n\nTable.defaultProps = {\n toolbar: undefined,\n dataSource: [[]],\n onChange: undefined,\n filters: {},\n sorter: {},\n};\n\nexport default Table;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/DataEditor/Table.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Row, Col, Input } from 'antd';\n\n/**\n 文本编辑器 - 在文本框中编辑二维表\n\n - onChange 会将修改后的 dataSource 返回\n\n - 推荐用法: 父层需要将 onChange 返回的 dataSource 再次传递给 DataEditor.Text 的 dataSource 参数\n\n - 输入与输出数据格式均为 echarts4.x 中 dataset 的格式\n 即: 第一行为表头,其它行为数据,每一行中以英文逗号分隔\n\n dataSource = [\n ['日期', '平台', '声量'],\n ['2018-07-20', '微博', 52872],\n ['2018-07-20', '微信', 8510],\n ['2018-07-21', '微博', 47381],\n ['2018-07-21', '微信', 8195],\n ['2018-07-22', '微博', 37072],\n ['2018-07-22', '微信', 6925],\n ['2018-07-23', '微博', 44665],\n ['2018-07-23', '微信', 7934],\n ['2018-07-24', '微博', 46858],\n ['2018-07-24', '微信', 8889],\n ['2018-07-25', '微博', 30272],\n ['2018-07-25', '微信', 3925],\n ];\n\n @author Witee<github.com/Witee>\n @date 2018-12-04\n*/\n\nclass Text extends React.Component {\n constructor(props) {\n super(props);\n\n const { dataSource } = props;\n\n this.state = { dataSource };\n }\n\n componentWillReceiveProps(nextProps) {\n const { dataSource } = nextProps;\n this.setState({ dataSource });\n }\n\n /**\n 提交,将以逗号分隔的字符串还原成列表\n */\n onTextAreaSubmit = ({ target: { value } }) => {\n const { onChange } = this.props;\n\n if (_.isFunction(onChange)) {\n onChange(this.textToArray(value));\n }\n }\n\n /**\n 监听文档变化\n */\n onTextAreaChange = ({ target: { value } }) => {\n this.setState({ dataSource: this.textToArray(value) });\n }\n\n textToArray = (text) => {\n const newData = [];\n const rawData = _.compact(_.split(text, '\\n'));\n _.forEach(rawData, (v) => {\n newData.push(_.split(v, ','));\n });\n return newData;\n }\n\n\n render() {\n const { toolbar, ...args } = this.props;\n const { dataSource } = this.state;\n\n /**\n 将列表格式的数据,转换成以逗号分隔的数据\n */\n const textData = [];\n _.map(dataSource, (value) => { textData.push(_.join(value, ',')); });\n\n /**\n ...args 会将定义处的其它 props 参数都包含进来,\n 所以在使用的时候需要提前删除已定义的参数或不能被覆盖的参数\n */\n const filteredArgs = _.cloneDeep(args);\n const protectedArgs = ['value', 'onBlur', 'dataSource', 'onChange'];\n _.map(protectedArgs, (arg) => {\n _.unset(filteredArgs, arg);\n });\n\n return (\n <Row>\n {toolbar && (\n <Col className=\"margin-top-bottom-middle\">\n { toolbar }\n </Col>\n )}\n\n <Col>\n {/*\n onChange 只是改变 state 中的值,在 onBlur 时才会回传\n */}\n <Input.TextArea\n value={_.join(textData, '\\n')}\n onBlur={this.onTextAreaSubmit}\n onChange={this.onTextAreaChange}\n {...filteredArgs}\n />\n </Col>\n </Row>\n );\n }\n}\n\nText.propTypes = {\n toolbar: PropTypes.node,\n dataSource: PropTypes.array,\n onChange: PropTypes.func,\n};\n\nText.defaultProps = {\n toolbar: undefined,\n dataSource: [[]],\n onChange: undefined,\n};\n\nexport default Text;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/DataEditor/Text.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Row, Col } from 'antd';\n\n/**\n 常用布局中是基本的使用方法,目的是统一工具栏与内容的间隔\n\n @author Witee<github.com/Witee>\n @date 2018-07-04\n*/\n\nconst Layout = (props) => {\n const {\n style,\n toolbar,\n children,\n } = props;\n\n return (\n <Row style={style}>\n <Col className=\"margin-bottom-middle\">{toolbar}</Col>\n <Col>{children}</Col>\n </Row>\n );\n};\n\n\nLayout.propTypes = {\n style: PropTypes.object,\n toolbar: PropTypes.node,\n children: PropTypes.node,\n};\n\nLayout.defaultProps = {\n style: {},\n toolbar: <div style={{ backgroundColor: 'yellow', minHeight: '3em', minWidth: '35em' }}>toolbar</div>,\n children: <div style={{ backgroundColor: 'grey', minHeight: '15em', minWidth: '35em' }}>children</div>,\n};\n\nexport default Layout;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Layout/Common.jsx","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Row, Col, Input, Button, Popconfirm } from 'antd';\nimport Table from '../Table';\n\n/**\n 常用布局中常用组合方式,工具栏中包含对内容的搜索、删除、添加\n\n @author Witee<github.com/Witee>\n @date 2018-07-04\n*/\n\nconst Layout = (props) => {\n const {\n style,\n searchHidden,\n searchStyle,\n searchPlaceholder,\n onSearch,\n deleteHidden,\n deleteDisabled,\n deleteOnClick,\n text,\n addHidden,\n addDisabled,\n addOnClick,\n tableColumns,\n tableDataSource,\n tableScroll,\n tableLoading,\n tableRowSelection,\n tableTotal,\n tableCurrentPage,\n tableRowClassName,\n tableOnChange,\n tableExpandedRowRender,\n tableExpandedRowKeys,\n tableOnExpand,\n } = props;\n\n return (\n <Row style={style}>\n <Col className=\"margin-bottom-middle\" style={{ display: 'flex', alignItems: 'center' }}>\n {searchHidden || (\n <Input.Search\n style={searchStyle}\n className=\"margin-right-small\"\n placeholder={searchPlaceholder}\n onSearch={onSearch}\n />\n )}\n {deleteHidden\n || (\n <Popconfirm\n title=\"确定删除?\"\n okText=\"确定\"\n cancelText=\"取消\"\n onConfirm={deleteOnClick}\n >\n <Button\n icon=\"delete\"\n disabled={deleteDisabled}\n className=\"margin-right-small\"\n >删除\n </Button>\n </Popconfirm>\n )}\n {text}\n {addHidden\n || (\n <Button\n icon=\"plus\"\n disabled={addDisabled}\n className=\"justify-self-right\"\n onClick={addOnClick}\n >添加\n </Button>\n )}\n </Col>\n <Col>\n <Table\n columns={tableColumns}\n dataSource={tableDataSource}\n scroll={tableScroll}\n loading={tableLoading}\n rowSelection={tableRowSelection}\n total={tableTotal}\n currentPage={tableCurrentPage}\n rowClassName={tableRowClassName}\n onChange={tableOnChange}\n expandedRowRender={tableExpandedRowRender}\n expandedRowKeys={tableExpandedRowKeys}\n onExpand={tableOnExpand}\n />\n </Col>\n </Row>\n );\n};\n\n\nLayout.propTypes = {\n style: PropTypes.object,\n\n searchHidden: PropTypes.bool,\n searchStyle: PropTypes.object,\n searchPlaceholder: PropTypes.string,\n onSearch: PropTypes.func,\n\n deleteHidden: PropTypes.bool,\n deleteDisabled: PropTypes.bool,\n deleteOnClick: PropTypes.func,\n\n text: PropTypes.node,\n\n addHidden: PropTypes.bool,\n addDisabled: PropTypes.bool,\n addOnClick: PropTypes.func,\n\n tableColumns: PropTypes.array,\n tableDataSource: PropTypes.array,\n tableScroll: PropTypes.object,\n tableLoading: PropTypes.bool,\n tableRowSelection: PropTypes.object,\n tableTotal: PropTypes.number,\n tableCurrentPage: PropTypes.number,\n tableRowClassName: PropTypes.func,\n tableOnChange: PropTypes.func,\n tableExpandedRowRender: PropTypes.func,\n tableExpandedRowKeys: PropTypes.array,\n tableOnExpand: PropTypes.func,\n};\n\nLayout.defaultProps = {\n style: {},\n\n searchHidden: false,\n searchStyle: { width: '10em' },\n searchPlaceholder: '输入关键字搜索',\n // eslint-disable-next-line\n onSearch: (value) => { console.log('onSearch: ', value); },\n\n deleteHidden: false,\n deleteDisabled: false,\n // eslint-disable-next-line\n deleteOnClick: (value) => { console.log('onDeleteClick'); },\n\n text: undefined,\n\n addHidden: false,\n addDisabled: false,\n // eslint-disable-next-line\n addOnClick: (value) => { console.log('onAddClick'); },\n\n tableColumns: [],\n tableDataSource: [],\n tableScroll: {},\n tableLoading: undefined,\n tableRowSelection: undefined,\n tableTotal: undefined,\n tableCurrentPage: undefined,\n tableRowClassName: undefined,\n tableOnChange: undefined,\n tableExpandedRowRender: undefined,\n tableExpandedRowKeys: [],\n tableOnExpand: undefined,\n};\n\nexport default Layout;\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/elements/Layout/Group.jsx","import PopoverInput from './components/Popover/Input';\n\nimport Placeholder from './elements/Placeholder';\nimport Input from './elements/Input';\nimport Layout from './elements/Layout';\nimport Chart from './elements/Chart';\nimport DataEditor from './elements/DataEditor';\n\nimport './app.css';\n\nmodule.exports = {\n PopoverInput,\n\n Placeholder,\n Input,\n Layout,\n Chart,\n DataEditor,\n};\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/index.js","\n// 常用 js 正则表达式\n\nconst cnEnNumSpaceUnderlineLine = /^[\\u4e00-\\u9fa5a-zA-Z0-9-_\\s]+$/;\n// 中文和空格\nconst cnSpace = /^[\\u4e00-\\u9fa5\\s]+$/;\n\nexport default {\n cnEnNumSpaceUnderlineLine,\n cnSpace,\n};\n\n\n\n// WEBPACK FOOTER //\n// ../src/libs/utils/regular.js","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/*\\n 定义了一系列控制间距的样式,全部以 em 为单位,即根据 font-size 设置\\n em与px换算公式为: px / font-size = em\\n 以 font-size = 12px 为例\\n small : 4px / 12px = 0.3333em;\\n middle : 8px / 12px = 0.6666em;\\n large : 16px / 12px = 1.3333em;\\n huge : 32px / 12px = 2.6666em;\\n*/\\n\\n/* 元素并列时与左侧的间距 */\\n.margin-left-small {\\n margin-left: 0.3333em;\\n}\\n.margin-left-middle {\\n margin-left: 0.6666em;\\n}\\n.margin-left-large {\\n margin-left: 1.3333em;\\n}\\n.margin-left-huge {\\n margin-left: 2.6666em;\\n}\\n/* 元素并列时与右侧的间距 */\\n.margin-right-small {\\n margin-right: 0.3333em;\\n}\\n.margin-right-middle {\\n margin-right: 0.6666em;\\n}\\n.margin-right-large {\\n margin-right: 1.3333em;\\n}\\n.margin-right-huge {\\n margin-right: 2.6666em;\\n}\\n\\n/* 内边距设置 */\\n.padding-around-small {\\n padding: 0.3333em;\\n}\\n.padding-around-middle {\\n padding: 0.6666em;\\n}\\n.padding-around-large {\\n padding: 1.3333em;\\n}\\n.padding-around-huge {\\n padding: 2.6666em;\\n}\\n\\n/* 外边距设置 */\\n.margin-around-small {\\n margin: 0.3333em;\\n}\\n.margin-around-middle {\\n margin: 0.6666em;\\n}\\n.margin-around-large {\\n margin: 1.3333em;\\n}\\n.margin-around-huge {\\n margin: 2.6666em;\\n}\\n\\n.margin-top-bottom-small {\\n margin-top: 0.3333em;\\n margin-bottom: 0.3333em;\\n}\\n.margin-top-bottom-middle {\\n margin-top: 0.6666em;\\n margin-bottom: 0.6666em;\\n}\\n.margin-top-bottom-large {\\n margin-top: 1.3333em;\\n margin-bottom: 1.3333em;\\n}\\n.margin-top-bottom-huge {\\n margin-top: 2.6666em;\\n margin-bottom: 2.6666em;\\n}\\n\\n.margin-top-small {\\n margin-top: 0.3333em;\\n}\\n.margin-top-middle {\\n margin-top: 0.6666em;\\n}\\n.margin-top-large {\\n margin-top: 1.3333em;\\n}\\n.margin-top-huge {\\n margin-top: 2.6666em;\\n}\\n\\n.margin-bottom-small {\\n margin-bottom: 0.3333em;\\n}\\n.margin-bottom-middle {\\n margin-bottom: 0.6666em;\\n}\\n.margin-bottom-large {\\n margin-bottom: 1.3333em;\\n}\\n.margin-bottom-huge {\\n margin-bottom: 2.6666em;\\n}\\n\\n/* 选择框 */\\n/* 只容纳一个字,如: 日、时 */\\n.select-width-mini {\\n width: 4em;\\n}\\n/* 正常的宽度 */\\n.select-width-default {\\n width: 16.6666em;\\n}\\n\\n.display-flex {\\n display: 'flex' !important;\\n}\\n\\n/* 使用flex布局时默认左对齐,使单独一个元素右对齐,需要在父元素上使用 display: flex */\\n.justify-self-right {\\n margin-left: auto;\\n}\\n\\n/* 水平尾部对齐 */\\n.flex-justify-content-end {\\n display: 'flex';\\n justify-content: 'flex-end';\\n}\\n/* 水平两端对齐 */\\n.flex-justify-content-space-between {\\n display: 'flex';\\n justify-content: 'space-between';\\n}\\n/* 每个项目两侧间隔相等 */\\n.flex-justify-content-space-around {\\n display: 'flex';\\n justify-content: 'space-around';\\n}\\n/* 垂直居中 */\\n.flex-align-items-center {\\n display: 'flex';\\n align-items: 'center';\\n}\\n\\n.font-size-small {\\n font-size: 0.3333em;\\n}\\n.font-size-middle {\\n font-size: 0.6666em;\\n}\\n.font-size-large {\\n font-size: 1.3333em;\\n}\\n.font-size-huge {\\n font-size: 2.6666em;\\n}\\n\\n.font-color-red {\\n color: #f04134;\\n}\\n.font-color-yellow {\\n color: #ffbf00;\\n}\\n\\n.border-color-red,.border-color-red:hover {\\n border-color: #f04134;\\n}\\n.border-color-yellow {\\n border-color: #ffbf00;\\n}\\n\\n/* 光标形状恢复默认 */\\n.cursor-default {\\n cursor : default;\\n}\\n/* 光标变成手形状 */\\n.cursor-pointer {\\n cursor : pointer;\\n}\\n\\n.width-max {\\n width: 100%;\\n}\\n.background-color-white {\\n background-color: '#fff';\\n}\\n\\n/* 解决小型表格的表头 padding 生成的左右露出背景色的问题 */\\n.ant-table-small .ant-table-header > table, .ant-table-small .ant-table-body > table {\\n background-color: #fff;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/css-loader!../src/libs/app.css\n// module id = 58\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".baseline-wrapper {\\n width: 100%;\\n height: 2rem;\\n text-align: center;\\n margin-top: 5rem;\\n}\\n\\n.baseline-line {\\n display: inline-block;\\n width: 30%;\\n border-top: 0.5px dashed #999;\\n border-bottom: 0.5px dashed #999;\\n vertical-align: middle;\\n margin: 0.5rem;\\n}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/css-loader!../src/libs/elements/Baseline/style.css\n// module id = 59\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ant-radio-wrapper.ant-radio-wrapper-checked .twitter-picker {\\n left: -5rem;\\n}\\n\\nform>.ant-form-item>.ant-form-item-label>label {\\n font-weight: 500\\n}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/css-loader!../src/libs/elements/Chart/style.css\n// module id = 60\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!./style.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!./style.css\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!./style.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../src/libs/elements/Baseline/style.css\n// module id = 61\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!./style.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!./style.css\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!./style.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../src/libs/elements/Chart/style.css\n// module id = 62\n// module chunks = 0","module.exports = require(\"antd/es/card\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/card\"\n// module id = 63\n// module chunks = 0","module.exports = require(\"antd/es/card/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/card/style/css\"\n// module id = 64\n// module chunks = 0","module.exports = require(\"antd/es/input-number\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/input-number\"\n// module id = 65\n// module chunks = 0","module.exports = require(\"antd/es/input-number/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/input-number/style/css\"\n// module id = 66\n// module chunks = 0","module.exports = require(\"antd/es/popconfirm\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/popconfirm\"\n// module id = 67\n// module chunks = 0","module.exports = require(\"antd/es/popconfirm/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/popconfirm/style/css\"\n// module id = 68\n// module chunks = 0","module.exports = require(\"antd/es/table\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/table\"\n// module id = 69\n// module chunks = 0","module.exports = require(\"antd/es/table/style/css\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"antd/es/table/style/css\"\n// module id = 70\n// module chunks = 0","module.exports = require(\"echarts-wordcloud\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"echarts-wordcloud\"\n// module id = 71\n// module chunks = 0","module.exports = require(\"echarts/theme/macarons.js\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"echarts/theme/macarons.js\"\n// module id = 72\n// module chunks = 0","module.exports = require(\"moment\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"moment\"\n// module id = 73\n// module chunks = 0"],"sourceRoot":""}
\No newline at end of file